import iotbx.pdb
from cctbx.array_family import flex
from cctbx import maptbx
from cctbx import maptbx
import mmtbx.real_space   

def ccp4_map(cs, file_name, map_data):
  from iotbx import ccp4_map
  ccp4_map.write_ccp4_map(
      file_name=file_name,
      unit_cell=cs.unit_cell(),
      space_group=cs.space_group(),
      map_data=map_data,
      labels=flex.std_string([""]))

def exercise():
  pdb_inp = iotbx.pdb.input(file_name="model.pdb")
  xrs = pdb_inp.xray_structure_simple()
  crystal_gridding = maptbx.crystal_gridding(
    unit_cell        = xrs.unit_cell(),
    space_group_info = xrs.space_group_info(),
    symmetry_flags   = maptbx.use_space_group_symmetry,
    step             = 0.1)
  m = mmtbx.real_space.sampled_model_density(
    xray_structure = xrs,
    n_real         = crystal_gridding.n_real()).data()
  ccp4_map(cs=xrs.crystal_symmetry(), file_name="model_map.ccp4", map_data=m)
  
if (__name__ == "__main__"):
  exercise()

