def exercise_emringer_residue_scan(): pdb_file = libtbx.env.find_in_repositories( relative_path="phenix_regression/mmtbx/em_ringer/tst_emringer_model.pdb", test=os.path.isfile) map_file = libtbx.env.find_in_repositories( relative_path="phenix_regression/mmtbx/em_ringer/tst_emringer_map.ccp4", test=os.path.isfile) assert (not None in [pdb_file, map_file]) results, scoring, rolling = emringer.run([pdb_file, map_file], out=null_out()) # Make sure the right number of residues (22 out of 28) get scanned assert len(results)==22 modelled_list = [290.742121792,192.844056257,45.4781110306,294.247825632,303.618891108,58.7694040824,331.70068496,46.7136045049,290.167261226,304.261231829,282.651244586,268.729721112,195.972333785,305.321933311,314.81066224,286.028424514,311.180807466,313.004918133,296.67781565,296.949191638,169.644245088,192.496265164] peak_list = [270,180,260,75,305,30,310,90,265,270,270,240,280,260,310,285,295,100,260,165,155,200] peak_rhos = [0.175600306502,0.351591946536,0.206238983746,0.3269057296,0.68375562882,0.251143527693,0.29106077218,0.199922124642,0.298461589197,0.563313760047,0.412696803251,0.511080434089,0.310001828446,0.228239176285,0.563148497472,0.490755919184,0.200978032127,0.274929619102,0.299229846335,0.179215798655,0.150783734124,0.210869945593] for i in range(22): # Make sure the modelled angle is correctly read assert approx_equal(results[i]._angles[1].angle_current, modelled_list[i]) # Make sure the peak is chosen correctly assert approx_equal(results[i]._angles[1].peak_chi, peak_list[i]) # Make sure the peak rhos are correct assert approx_equal(results[i]._angles[1].peak_rho, peak_rhos[i]) results, scoring2, rolling2 = emringer.run([pdb_file, map_file, "rolling_window_threshold=0.5"], out=null_out()) assert rolling.threshold == 0 assert rolling2.threshold == 0.5 #print rolling.results_a[0] #print rolling2.results_a[0] # just making sure this doesn't break! results, scoring2, rolling = emringer.run([pdb_file, map_file, "sampling_angle=2"], out=null_out())
def exercise_emringer_insertion_codes(): """ Checks that emringer doesn't crash when there are insertion codes. The correctness of output is not checked. """ pdb_file = libtbx.env.find_in_repositories( relative_path="phenix_regression/mmtbx/em_ringer/tst_emringer_insertion_codes_model.pdb", test=os.path.isfile) map_file = libtbx.env.find_in_repositories( relative_path="phenix_regression/mmtbx/em_ringer/tst_emringer_map.ccp4", test=os.path.isfile) assert (not None in [pdb_file, map_file]) results, scoring, rolling = emringer.run([pdb_file, map_file], out=null_out())
def exercise_emringer_out_of_bounds(): pdb_file = libtbx.env.find_in_repositories( relative_path="phenix_regression/mmtbx/em_ringer/tst_emringer_model.pdb", test=os.path.isfile) map_file = libtbx.env.find_in_repositories( relative_path="phenix_regression/mmtbx/em_ringer/tst_emringer_map.ccp4", test=os.path.isfile) assert (not None in [pdb_file, map_file]) pdb_in = any_file(pdb_file) xyz = pdb_in.file_object.hierarchy.atoms().extract_xyz() xyz += flex.vec3_double(xyz.size(), (200., 0.0, 0.0)) pdb_in.file_object.hierarchy.atoms().set_xyz(xyz) with open("tst_emringer_shifted.pdb", "w") as f: f.write(pdb_in.file_object.hierarchy.as_pdb_string( crystal_symmetry=pdb_in.file_object.input.crystal_symmetry())) args = ["tst_emringer_shifted.pdb", map_file] try: results, s, r = emringer.run(args, out=null_out()) except Sorry as e: pass else: raise Exception_expected
def get_emringer(pdb_file, map_file): result = emringer.run(args=[pdb_file, map_file], out=null_out(), verbose=False)[1].score return result