def exercise(): from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs base = "tst_pick_ca" mtz_file, pdb_file = generate_calcium_inputs(file_base=base, anonymize=True) time.sleep(2) args = [ "\"%s\"" % pdb_file, "\"%s\"" % mtz_file, "wavelength=1.1", "nproc=1", "use_phaser=False", "fpp_ratio_max=1.2" ] result = easy_run.fully_buffered("mmtbx.water_screen %s" % " ".join(args)).raise_if_errors() n_ca = 0 for line in result.stdout_lines: if "Probable cation: CA+2" in line: n_ca += 1 if (n_ca != 1): print("\n".join(result.stdout_lines)) raise RuntimeError("Expected 1 Ca2+, found %d" % n_ca) os.remove(pdb_file) os.remove(mtz_file) os.remove(os.path.splitext(pdb_file)[0][:-4] + ".pdb") os.remove(os.path.splitext(pdb_file)[0][:-4] + "_fmodel.eff") print("OK")
def exercise(): try : import svm # import dependency import svmutil # import dependency except ImportError : print "libsvm not available, skipping this test" return from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs base = "tst_pick_ca_svm" mtz_file, pdb_file = generate_calcium_inputs(file_base=base, anonymize=True) args = ["\"%s\"" % pdb_file, "\"%s\"" % mtz_file, "wavelength=1.1", "nproc=1", "use_phaser=False", "use_svm=True", "elements=CA,ZN"] result = easy_run.fully_buffered("mmtbx.water_screen %s" % " ".join(args) ).raise_if_errors() os.remove(pdb_file) os.remove(mtz_file) # "zn_frag_hoh.pdb" => "zn_frag_fmodel.eff" os.remove(os.path.splitext(pdb_file)[0][:-4] + ".pdb") os.remove(os.path.splitext(pdb_file)[0][:-4] + "_fmodel.eff") n_ca = 0 for line in result.stdout_lines: if ("Final choice: CA" in line): n_ca += 1 if (n_ca != 1): print "\n".join(result.stdout_lines) raise RuntimeError("Expected 1 Ca2+, found %d" % n_ca) print "OK"
def exercise_omit_atom_selection(): # combine an omit selection with a CCP4 map selection - this used to crash from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs import mmtbx.command_line.maps mtz_file, pdb_file = generate_calcium_inputs( file_base="tst_mmtbx_maps_misc2") with open("tst_mmtbx_maps_misc2.eff", "w") as f: f.write("""\ maps { map { map_type = 2mFo-DFc format = xplor *ccp4 file_name = tst_mmtbx_maps_misc2.ccp4 region = *selection cell atom_selection = "resname HOH" } }""") mmtbx.command_line.maps.run(args=[ mtz_file, pdb_file, "tst_mmtbx_maps_misc2.eff", "omit.selection=\"resname TRP\"", "prefix=tst_mmtbx_maps_misc2", ], log=null_out())
def exercise () : from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs from mmtbx.command_line import find_peaks_holes mtz_file, pdb_file = generate_calcium_inputs( file_base = "tst_find_peaks_holes", anonymize = True) out = StringIO() peaks_holes = find_peaks_holes.run( args=[pdb_file, mtz_file], out=out) peaks_holes.save_pdb_file(file_name="tst_fph_peaks.pdb", log=null_out()) p = easy_pickle.dumps(peaks_holes) s = peaks_holes.get_summary() sp = easy_pickle.dumps(s) out2 = StringIO() s.show(out=out2) lines = out2.getvalue().splitlines() assert (""" anomalous H2O (anomalous > 3): 1""" in lines) assert (""" anomalous non-water atoms: 0""" in lines) assert (""" mFo-DFc > 9: 0""" in lines) peaks_holes = find_peaks_holes.run( args=[pdb_file, mtz_file, "filter_peaks_by_2fofc=1.0"], out=null_out()) out3 = StringIO() peaks_holes.get_summary().show(out=out3) lines = out3.getvalue().splitlines() assert (""" anomalous > 3: 0""" in lines) out3 = StringIO() peaks_holes = find_peaks_holes.run( args=[pdb_file, mtz_file, "include_peaks_near_model=True",], out=out3) lines = out3.getvalue().splitlines() assert (""" mFo-DFc > 9: 1""" in lines) os.remove(mtz_file) os.remove(pdb_file)
def exercise () : try : import svm # import dependency import svmutil # import dependency except ImportError : print "libsvm not available, skipping this test" return from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs base = "tst_pick_ca_svm" mtz_file, pdb_file = generate_calcium_inputs(file_base=base, anonymize=True) args = ["\"%s\"" % pdb_file, "\"%s\"" % mtz_file, "wavelength=1.1", "nproc=1", "use_phaser=False", "use_svm=True", "elements=CA,ZN"] result = easy_run.fully_buffered("mmtbx.water_screen %s" % " ".join(args) ).raise_if_errors() os.remove(pdb_file) os.remove(mtz_file) # "zn_frag_hoh.pdb" => "zn_frag_fmodel.eff" os.remove(os.path.splitext(pdb_file)[0][:-4] + ".pdb") os.remove(os.path.splitext(pdb_file)[0][:-4] + "_fmodel.eff") n_ca = 0 for line in result.stdout_lines: if ("Final choice: CA" in line) : n_ca += 1 if (n_ca != 1) : print "\n".join(result.stdout_lines) raise RuntimeError("Expected 1 Ca2+, found %d" % n_ca) print "OK"
def exercise_calcium_substitution () : from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs from iotbx.file_reader import any_file anom_mtz_file, pdb_file = generate_calcium_inputs( file_base = "tst_isomorphous_difference_misc_anom", anonymize = False) hoh_file = generate_calcium_inputs( file_base = "tst_isomorphous_difference_misc_hoh", anonymize = True)[1] mtz_file = "tst_isomorphous_difference_misc.mtz" args = [ "phenix.fmodel", hoh_file, "high_resolution=1.5", "r_free_flags_fraction=0.1", "type=real", "output.file_name=" + mtz_file ] easy_run.fully_buffered(args).raise_if_errors() time.sleep(2) assert os.path.isfile(mtz_file) minus_mtz_file = "tst_isomorphous_difference_misc_anon_minus.mtz" args = [ "phenix.fobs_minus_fobs_map", "f_obs_1_file=" + anom_mtz_file, "f_obs_2_file=" + mtz_file, pdb_file, "omit_selection=\"element CA\"", "multiscale=True", "output_file=" + minus_mtz_file, ] result = easy_run.fully_buffered(args).raise_if_errors() assert os.path.isfile(minus_mtz_file) assert ("1 atoms selected for removal" in result.stdout_lines) f = any_file(minus_mtz_file) coeffs = f.file_server.miller_arrays[0] fft_map = coeffs.fft_map(resolution_factor=0.25) minus_map = fft_map.apply_sigma_scaling().real_map_unpadded() pdb_in = any_file(pdb_file) hierarchy = pdb_in.file_object.hierarchy xrs = pdb_in.file_object.xray_structure_simple() for i_seq, atom in enumerate(hierarchy.atoms()) : if (atom.element == "CA") : site_frac = xrs.sites_frac()[i_seq] val = minus_map.eight_point_interpolation(site_frac) assert (val > 40)
def exercise_calcium_substitution(): from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs from iotbx.file_reader import any_file anom_mtz_file, pdb_file = generate_calcium_inputs( file_base="tst_isomorphous_difference_misc_anom", anonymize=False) hoh_file = generate_calcium_inputs( file_base="tst_isomorphous_difference_misc_hoh", anonymize=True)[1] mtz_file = "tst_isomorphous_difference_misc.mtz" args = [ "phenix.fmodel", hoh_file, "high_resolution=1.5", "r_free_flags_fraction=0.1", "type=real", "output.file_name=" + mtz_file ] easy_run.fully_buffered(args).raise_if_errors() time.sleep(2) assert os.path.isfile(mtz_file) minus_mtz_file = "tst_isomorphous_difference_misc_anon_minus.mtz" args = [ "phenix.fobs_minus_fobs_map", "f_obs_1_file=" + anom_mtz_file, "f_obs_2_file=" + mtz_file, pdb_file, "omit_selection=\"element CA\"", "multiscale=True", "output_file=" + minus_mtz_file, ] result = easy_run.fully_buffered(args).raise_if_errors() assert os.path.isfile(minus_mtz_file) assert ("1 atoms selected for removal" in result.stdout_lines) f = any_file(minus_mtz_file) coeffs = f.file_server.miller_arrays[0] fft_map = coeffs.fft_map(resolution_factor=0.25) minus_map = fft_map.apply_sigma_scaling().real_map_unpadded() pdb_in = any_file(pdb_file) hierarchy = pdb_in.file_object.hierarchy xrs = pdb_in.file_object.xray_structure_simple() for i_seq, atom in enumerate(hierarchy.atoms()): if (atom.element == "CA"): site_frac = xrs.sites_frac()[i_seq] val = minus_map.eight_point_interpolation(site_frac) assert (val > 40)
def exercise_1 () : from mmtbx.regression import make_fake_anomalous_data import mmtbx.maps.utils import mmtbx.utils from iotbx.file_reader import any_file mtz_file, pdb_file = make_fake_anomalous_data.generate_calcium_inputs( "tst_map_utils") # create_map_from_pdb_and_mtz mfn1 = "tst_map_utils_1.mtz" mmtbx.maps.utils.create_map_from_pdb_and_mtz( pdb_file=pdb_file, mtz_file=mtz_file, output_file=mfn1, fill=False, out=null_out()) assert (os.path.isfile(mfn1)) maps_in = any_file(mfn1) assert (len(maps_in.file_server.miller_arrays) == 3) # generate_water_omit_map pdb_in = any_file(pdb_file) hierarchy = pdb_in.file_object.hierarchy xrs = pdb_in.file_object.xray_structure_simple() mtz_in = any_file(mtz_file) f_obs = mtz_in.file_server.miller_arrays[0] 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, scattering_table="n_gaussian", xray_structures=[xrs], bulk_solvent_correction=False, skip_twin_detection=True) omit = mmtbx.maps.utils.generate_water_omit_map( fmodel=fmodel, pdb_hierarchy=hierarchy, log=null_out()) assert (omit.n_waters == 3) mfn2 = "tst_map_utils_2.mtz" pdbfn2 = "tst_map_utils_2.pdb" omit.write_map_coeffs(mfn2) omit.write_pdb_file(pdbfn2) for fn in [mfn1, mfn2, pdbfn2] : os.remove(fn)
def exercise(): from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs base = "tst_validate_ca" mtz_file, pdb_file = generate_calcium_inputs(file_base=base, anonymize=False) time.sleep(2) args = ["\"%s\"" % pdb_file, "\"%s\"" % mtz_file, "wavelength=1.12", "nproc=1"] result = easy_run.fully_buffered("mmtbx.validate_ions %s" % " ".join(args) ).raise_if_errors() n_ca, n_bad = 0, 0 for line in result.stdout_lines: if "| CA" in line: n_ca += 1 if "!!!" in line: n_bad += 1 assert n_ca == 1 and n_bad == 0 for ext in [".pdb", ".mtz", "_fmodel.eff"]: os.remove(base + ext) print("OK")
def exercise () : from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs base = "tst_validate_ca" mtz_file, pdb_file = generate_calcium_inputs(file_base=base, anonymize=False) time.sleep(2) args = ["\"%s\"" % pdb_file, "\"%s\"" % mtz_file, "wavelength=1.12", "nproc=1"] result = easy_run.fully_buffered("mmtbx.validate_ions %s" % " ".join(args) ).raise_if_errors() n_ca, n_bad = 0, 0 for line in result.stdout_lines: if "| CA" in line: n_ca += 1 if "!!!" in line: n_bad += 1 assert n_ca == 1 and n_bad == 0 for ext in [".pdb", ".mtz", "_fmodel.eff"]: os.remove(base + ext) print "OK"
def exercise_1(): from mmtbx.regression import make_fake_anomalous_data import mmtbx.maps.utils import mmtbx.utils from iotbx.file_reader import any_file mtz_file, pdb_file = make_fake_anomalous_data.generate_calcium_inputs( "tst_map_utils") # create_map_from_pdb_and_mtz mfn1 = "tst_map_utils_1.mtz" mmtbx.maps.utils.create_map_from_pdb_and_mtz(pdb_file=pdb_file, mtz_file=mtz_file, output_file=mfn1, fill=False, out=null_out()) assert (os.path.isfile(mfn1)) maps_in = any_file(mfn1) assert (len(maps_in.file_server.miller_arrays) == 3) # generate_water_omit_map pdb_in = any_file(pdb_file) hierarchy = pdb_in.file_object.hierarchy xrs = pdb_in.file_object.xray_structure_simple() mtz_in = any_file(mtz_file) f_obs = mtz_in.file_server.miller_arrays[0] 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, scattering_table="n_gaussian", xray_structures=[xrs], bulk_solvent_correction=False, skip_twin_detection=True) omit = mmtbx.maps.utils.generate_water_omit_map(fmodel=fmodel, pdb_hierarchy=hierarchy, log=null_out()) assert (omit.n_waters == 3) mfn2 = "tst_map_utils_2.mtz" pdbfn2 = "tst_map_utils_2.pdb" omit.write_map_coeffs(mfn2) omit.write_pdb_file(pdbfn2) for fn in [mfn1, mfn2, pdbfn2]: os.remove(fn)
def exercise () : from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs base = "tst_pick_ca" mtz_file, pdb_file = generate_calcium_inputs(file_base=base, anonymize=True) time.sleep(2) args = ["\"%s\"" % pdb_file, "\"%s\"" % mtz_file, "wavelength=1.1", "nproc=1", "use_phaser=False", "fpp_ratio_max=1.2"] result = easy_run.fully_buffered("mmtbx.water_screen %s" % " ".join(args) ).raise_if_errors() n_ca = 0 for line in result.stdout_lines: if "Probable cation: CA+2" in line: n_ca += 1 if (n_ca != 1) : print "\n".join(result.stdout_lines) raise RuntimeError("Expected 1 Ca2+, found %d" % n_ca) os.remove(pdb_file) os.remove(mtz_file) os.remove(os.path.splitext(pdb_file)[0][:-4] + ".pdb") os.remove(os.path.splitext(pdb_file)[0][:-4] + "_fmodel.eff") print "OK"
def exercise_omit_atom_selection () : # combine an omit selection with a CCP4 map selection - this used to crash from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs import mmtbx.command_line.maps mtz_file, pdb_file = generate_calcium_inputs( file_base="tst_mmtbx_maps_misc2") open("tst_mmtbx_maps_misc2.eff", "w").write("""\ maps { map { map_type = 2mFo-DFc format = xplor *ccp4 file_name = tst_mmtbx_maps_misc2.ccp4 region = *selection cell atom_selection = "resname HOH" } }""") mmtbx.command_line.maps.run(args=[ mtz_file, pdb_file, "tst_mmtbx_maps_misc2.eff", "omit.selection=\"resname TRP\"", "prefix=tst_mmtbx_maps_misc2", ], log=null_out())