def exercise_cns_input () : from mmtbx.regression import make_fake_anomalous_data pdb_file, mtz_file = make_fake_anomalous_data.generate_cd_cl_inputs( file_base="tst_cmdline_cns") from iotbx.file_reader import any_file mtz_in = any_file("tst_cmdline_cns.mtz") f_obs = mtz_in.file_server.miller_arrays[0].average_bijvoet_mates() flags = mtz_in.file_server.miller_arrays[1].average_bijvoet_mates() f = open("tst_cmdline_cns.hkl", "w") out = StringIO() f_obs.export_as_cns_hkl( file_object=out, r_free_flags=flags) # get rid of embedded symmetry for line in out.getvalue().splitlines() : if (not "{" in line) : f.write("%s\n" % line) f.close() cmdline = mmtbx.command_line.load_model_and_data( args=["tst_cmdline_cns.pdb", "tst_cmdline_cns.hkl"], master_phil=mmtbx.command_line.generic_simple_input_phil(), process_pdb_file=False, create_fmodel=True, out=null_out()) out = StringIO() cmdline.crystal_symmetry.show_summary(f=out) assert (out.getvalue() == """\ Unit cell: (21.362, 23.436, 23.594, 90, 90, 90) Space group: P 1 (No. 1) """), out.getvalue()
def exercise(): from mmtbx.command_line import refine_anomalous_substructure from mmtbx.regression.make_fake_anomalous_data import generate_cd_cl_inputs pdb_file, mtz_file = generate_cd_cl_inputs(file_base="tst_anom_ref") groups = refine_anomalous_substructure.run(args=[pdb_file, mtz_file], out=null_out()) assert len(groups) == 2
def exercise_anomalous_maps_misc(): from mmtbx.regression.make_fake_anomalous_data import generate_cd_cl_inputs import mmtbx.utils from iotbx import file_reader mtz_file, pdb_file = generate_cd_cl_inputs(file_base="tst_mmtbx_maps_misc") pdb_in = file_reader.any_file(pdb_file) hierarchy = pdb_in.file_object.hierarchy xrs = pdb_in.file_object.xray_structure_simple() for s in xrs.scatterers(): if (s.scattering_type == "Cd2+"): s.fp = -0.29 s.fdp = 2.676 s.flags.set_use_fp_fdp(True) mtz_in = file_reader.any_file(mtz_file) f_obs = mtz_in.file_server.miller_arrays[0] flags = mtz_in.file_server.miller_arrays[0] flags = flags.customized_copy(data=flags.data() == 1) fmodel = mmtbx.utils.fmodel_simple(f_obs=f_obs, r_free_flags=flags, xray_structures=[xrs], scattering_table="n_gaussian", skip_twin_detection=True) map_coeffs = fmodel.map_coefficients(map_type="anom_residual", exclude_free_r_reflections=True) map_anom = map_coeffs.fft_map( resolution_factor=0.25).apply_sigma_scaling().real_map_unpadded() for s in xrs.scatterers(): if (s.scattering_type == "Cd2+"): assert (map_anom.eight_point_interpolation(s.site) < 0) elif (s.scattering_type == 'Cl1-'): assert (map_anom.eight_point_interpolation(s.site) > 10) # this simply checks whether anomalous data will cause problems when # mixed with other options (i.e. array size errors) map2 = fmodel.map_coefficients(map_type="2mFo-DFc", exclude_free_r_reflections=True)
def exercise () : from mmtbx.command_line import refine_anomalous_substructure from mmtbx.regression.make_fake_anomalous_data import generate_cd_cl_inputs mtz_file, pdb_file = generate_cd_cl_inputs( file_base = "tst_mmtbx_substructure") # XXX for some reason even though I'm using synthetic data, it ends up with # an extra water with a peak height of 3.1 anom_groups = refine_anomalous_substructure.run( args=[mtz_file, pdb_file, "skip_twin_detection=True", "map_sigma_min=4"], out=null_out()) assert (len(anom_groups) == 2) print "OK"
def exercise(): from mmtbx.command_line import refine_anomalous_substructure from mmtbx.regression.make_fake_anomalous_data import generate_cd_cl_inputs mtz_file, pdb_file = generate_cd_cl_inputs( file_base="tst_mmtbx_substructure") # XXX for some reason even though I'm using synthetic data, it ends up with # an extra water with a peak height of 3.1 anom_groups = refine_anomalous_substructure.run(args=[ mtz_file, pdb_file, "skip_twin_detection=True", "map_sigma_min=4" ], out=null_out()) assert (len(anom_groups) == 2) print("OK")
def exercise_example () : from mmtbx.regression import make_fake_anomalous_data pdb_file, mtz_file = make_fake_anomalous_data.generate_cd_cl_inputs( file_base="tst_cmdline_example") script = os.path.join(libtbx.env.dist_path("mmtbx"), "examples", "simple_command_line_cc.py") assert os.path.isfile(script) args = [ "mmtbx.python", "\"%s\"" % script, pdb_file, mtz_file, "skip_twin_detection=True", ] result = easy_run.fully_buffered(" ".join(args)).raise_if_errors() assert ("""CC(obs-calc): 0.999""" in result.stdout_lines)
def exercise () : from mmtbx.command_line import compute_map_coefficients from mmtbx.regression.make_fake_anomalous_data import generate_cd_cl_inputs from iotbx import file_reader mtz_file, pdb_file = generate_cd_cl_inputs( file_base="tst_map_coeffs_simple") args = [mtz_file, pdb_file, "map_type=anom_residual", "skip_twin_detection=True"] out = StringIO() compute_map_coefficients.run(args=args, out=out) assert """Using wavelength = 1.116 from PDB header""" in out.getvalue() assert os.path.isfile("tst_map_coeffs_simple_anom_residual.mtz") mtz_in = file_reader.any_file("tst_map_coeffs_simple_anom_residual.mtz") assert (mtz_in.file_server.miller_arrays[0].info().label_string() == "ANOM_DIFF,PHANOM_DIFF") print "OK"
def exercise_anomalous_maps_misc () : from mmtbx.regression.make_fake_anomalous_data import generate_cd_cl_inputs import mmtbx.utils from iotbx import file_reader mtz_file, pdb_file = generate_cd_cl_inputs( file_base = "tst_mmtbx_maps_misc") pdb_in = file_reader.any_file(pdb_file) hierarchy = pdb_in.file_object.hierarchy xrs = pdb_in.file_object.xray_structure_simple() for s in xrs.scatterers() : if (s.scattering_type == "Cd2+") : s.fp = -0.29 s.fdp = 2.676 s.flags.set_use_fp_fdp(True) mtz_in = file_reader.any_file(mtz_file) f_obs = mtz_in.file_server.miller_arrays[0] flags = mtz_in.file_server.miller_arrays[0] flags = flags.customized_copy(data=flags.data()==1) fmodel = mmtbx.utils.fmodel_simple( f_obs=f_obs, r_free_flags=flags, xray_structures=[xrs], scattering_table="n_gaussian", skip_twin_detection=True) map_coeffs = fmodel.map_coefficients( map_type="anom_residual", exclude_free_r_reflections=True) map_anom = map_coeffs.fft_map( resolution_factor=0.25).apply_sigma_scaling().real_map_unpadded() for s in xrs.scatterers() : if (s.scattering_type == "Cd2+") : assert (map_anom.eight_point_interpolation(s.site) < 0) elif (s.scattering_type == 'Cl1-') : assert (map_anom.eight_point_interpolation(s.site) > 10) # this simply checks whether anomalous data will cause problems when # mixed with other options (i.e. array size errors) map2 = fmodel.map_coefficients( map_type="2mFo-DFc", exclude_free_r_reflections=True)
def exercise () : from mmtbx.regression.make_fake_anomalous_data import generate_cd_cl_inputs from mmtbx.command_line import mtz2map import mmtbx.utils from iotbx import file_reader from scitbx.array_family import flex mtz_file, pdb_file = generate_cd_cl_inputs(file_base = "tst_mmtbx_mtz2map") pdb_in = file_reader.any_file(pdb_file) hierarchy = pdb_in.file_object.hierarchy xrs = pdb_in.file_object.xray_structure_simple() mtz_in = file_reader.any_file(mtz_file) f_obs = mtz_in.file_server.miller_arrays[0] f_obs_mean = f_obs.average_bijvoet_mates() flags = mtz_in.file_server.miller_arrays[1] flags = flags.customized_copy(data=flags.data()==1) fmodel = mmtbx.utils.fmodel_simple( f_obs=f_obs, r_free_flags=flags, xray_structures=[xrs], scattering_table="n_gaussian", skip_twin_detection=True) assert f_obs.anomalous_flag() mtz_data = f_obs.as_mtz_dataset(column_root_label="F") #mtz_data.add_miller_array( # miller_array=f_obs.average_bijvoet_mates(), # column_root_label="F_mean") mtz_data.add_miller_array( miller_array=fmodel.f_model(), column_root_label="FMODEL") mtz_data.add_miller_array( miller_array=fmodel.f_model().average_bijvoet_mates().phases(deg=True), column_root_label="PHI", column_types="P") mtz_data.add_miller_array( miller_array=f_obs_mean.customized_copy( data=flex.double(f_obs_mean.data().size(), 0.95), sigmas=None).set_observation_type(None), column_root_label="FOM", column_types="W") two_fofc_map = fmodel.map_coefficients(map_type="2mFo-DFc") fofc_map = fmodel.map_coefficients(map_type="mFo-Dfc") anom_map = fmodel.map_coefficients(map_type="anom") mtz_data.add_miller_array( miller_array=two_fofc_map.average_bijvoet_mates(), column_root_label="2FOFCWT") mtz_data.add_miller_array( miller_array=fmodel.map_coefficients(map_type="mFo-DFc"), column_root_label="FOFCWT") mtz_data.add_miller_array( miller_array=fmodel.map_coefficients(map_type="anom"), column_root_label="ANOM") mtz_data.add_miller_array(flags, column_root_label="FreeR_flag") map_file = "tst_mmtbx_mtz2map_map_coeffs.mtz" mtz_data.mtz_object().write(map_file) # exercise defaults with PDB file file_info = mtz2map.run([pdb_file, map_file], log=null_out()) file_info = [ (os.path.basename(fn), desc) for fn, desc in file_info ] assert (file_info == [ ('tst_mmtbx_mtz2map_map_coeffs_2mFo-DFc.ccp4', 'CCP4 map'), ('tst_mmtbx_mtz2map_map_coeffs_mFo-DFc.ccp4', 'CCP4 map'), ('tst_mmtbx_mtz2map_map_coeffs_anom.ccp4', 'CCP4 map'), ('tst_mmtbx_mtz2map_map_coeffs_4.ccp4', 'CCP4 map') ]) # without PDB file file_info_2 = mtz2map.run([map_file], log=null_out()) file_info_2 = [ (os.path.basename(fn), desc) for fn, desc in file_info_2 ] assert file_info_2 == file_info, file_info_2 # with FMODEL file_info_3 = mtz2map.run([pdb_file, map_file, "include_fmodel=True"], log=null_out()) file_info_3 = [ (os.path.basename(fn), desc) for fn, desc in file_info_3 ] assert (file_info_3 == [ ('tst_mmtbx_mtz2map_map_coeffs_fmodel.ccp4', 'CCP4 map'), ('tst_mmtbx_mtz2map_map_coeffs_2mFo-DFc.ccp4', 'CCP4 map'), ('tst_mmtbx_mtz2map_map_coeffs_mFo-DFc.ccp4', 'CCP4 map'), ('tst_mmtbx_mtz2map_map_coeffs_anom.ccp4', 'CCP4 map'), ('tst_mmtbx_mtz2map_map_coeffs_5.ccp4', 'CCP4 map') ]) # exercise bad parameter try : file_info = mtz2map.run([pdb_file, "1yjp_mtz2map_map_coeffs.mtz", "output.directory=1yjp_mtz2map_map_coeffs.mtz"], log=null_out()) except Sorry : pass else : raise Exception_expected # bad atom selection try : file_info = mtz2map.run([pdb_file, map_file, "selection=\"resname ZN\""], log=null_out()) except Sorry, s : assert (str(s) == "No atoms found matching the specified selection.")
def exercise(): from mmtbx.regression.make_fake_anomalous_data import generate_cd_cl_inputs from mmtbx.command_line import mtz2map import mmtbx.utils from iotbx import file_reader from scitbx.array_family import flex mtz_file, pdb_file = generate_cd_cl_inputs(file_base="tst_mmtbx_mtz2map") pdb_in = file_reader.any_file(pdb_file) hierarchy = pdb_in.file_object.hierarchy xrs = pdb_in.file_object.xray_structure_simple() mtz_in = file_reader.any_file(mtz_file) f_obs = mtz_in.file_server.miller_arrays[0] f_obs_mean = f_obs.average_bijvoet_mates() flags = mtz_in.file_server.miller_arrays[1] flags = flags.customized_copy(data=flags.data() == 1) fmodel = mmtbx.utils.fmodel_simple(f_obs=f_obs, r_free_flags=flags, xray_structures=[xrs], scattering_table="n_gaussian", skip_twin_detection=True) assert f_obs.anomalous_flag() mtz_data = f_obs.as_mtz_dataset(column_root_label="F") #mtz_data.add_miller_array( # miller_array=f_obs.average_bijvoet_mates(), # column_root_label="F_mean") mtz_data.add_miller_array(miller_array=fmodel.f_model(), column_root_label="FMODEL") mtz_data.add_miller_array( miller_array=fmodel.f_model().average_bijvoet_mates().phases(deg=True), column_root_label="PHI", column_types="P") mtz_data.add_miller_array(miller_array=f_obs_mean.customized_copy( data=flex.double(f_obs_mean.data().size(), 0.95), sigmas=None).set_observation_type(None), column_root_label="FOM", column_types="W") two_fofc_map = fmodel.map_coefficients(map_type="2mFo-DFc") fofc_map = fmodel.map_coefficients(map_type="mFo-Dfc") anom_map = fmodel.map_coefficients(map_type="anom") mtz_data.add_miller_array( miller_array=two_fofc_map.average_bijvoet_mates(), column_root_label="2FOFCWT") mtz_data.add_miller_array( miller_array=fmodel.map_coefficients(map_type="mFo-DFc"), column_root_label="FOFCWT") mtz_data.add_miller_array( miller_array=fmodel.map_coefficients(map_type="anom"), column_root_label="ANOM") mtz_data.add_miller_array(flags, column_root_label="FreeR_flag") map_file = "tst_mmtbx_mtz2map_map_coeffs.mtz" mtz_data.mtz_object().write(map_file) # exercise defaults with PDB file file_info = mtz2map.run([pdb_file, map_file], log=null_out()) file_info = [(os.path.basename(fn), desc) for fn, desc in file_info] assert (file_info == [ ('tst_mmtbx_mtz2map_map_coeffs_2mFo-DFc.ccp4', 'CCP4 map'), ('tst_mmtbx_mtz2map_map_coeffs_mFo-DFc.ccp4', 'CCP4 map'), ('tst_mmtbx_mtz2map_map_coeffs_anom.ccp4', 'CCP4 map'), ('tst_mmtbx_mtz2map_map_coeffs_4.ccp4', 'CCP4 map') ]) # without PDB file file_info_2 = mtz2map.run([map_file], log=null_out()) file_info_2 = [(os.path.basename(fn), desc) for fn, desc in file_info_2] assert file_info_2 == file_info, file_info_2 # with FMODEL file_info_3 = mtz2map.run([pdb_file, map_file, "include_fmodel=True"], log=null_out()) file_info_3 = [(os.path.basename(fn), desc) for fn, desc in file_info_3] assert (file_info_3 == [ ('tst_mmtbx_mtz2map_map_coeffs_fmodel.ccp4', 'CCP4 map'), ('tst_mmtbx_mtz2map_map_coeffs_2mFo-DFc.ccp4', 'CCP4 map'), ('tst_mmtbx_mtz2map_map_coeffs_mFo-DFc.ccp4', 'CCP4 map'), ('tst_mmtbx_mtz2map_map_coeffs_anom.ccp4', 'CCP4 map'), ('tst_mmtbx_mtz2map_map_coeffs_5.ccp4', 'CCP4 map') ]) # exercise bad parameter try: file_info = mtz2map.run([ pdb_file, "1yjp_mtz2map_map_coeffs.mtz", "output.directory=1yjp_mtz2map_map_coeffs.mtz" ], log=null_out()) except Sorry: pass else: raise Exception_expected # bad atom selection try: file_info = mtz2map.run( [pdb_file, map_file, "selection=\"resname ZN\""], log=null_out()) except Sorry, s: assert (str(s) == "No atoms found matching the specified selection.")