def exercise_rejoin(): from mmtbx.building.alternate_conformations.tst_build_simple import pdb_raw pdb_in = iotbx.pdb.hierarchy.input(pdb_string=pdb_raw) hierarchy = pdb_in.hierarchy params = alternate_conformations.rejoin_phil.extract() n_modified = alternate_conformations.rejoin_split_single_conformers( pdb_hierarchy=hierarchy, params=params, model_error_ml=0.5, log=null_out()) assert (n_modified == 3), n_modified # Gln5 # split residue 6 without changing coordinates, set occupancy very low chain = hierarchy.only_model().chains()[0] rg6 = chain.residue_groups()[5] ag = rg6.only_atom_group().detached_copy() for atom in ag.atoms(): atom.occ = 0.05 for atom in rg6.atoms(): atom.occ = 0.95 rg6.only_atom_group().altloc = 'A' ag.altloc = 'B' rg6.append_atom_group(ag) n_modified = alternate_conformations.rejoin_split_single_conformers( pdb_hierarchy=hierarchy.deep_copy(), params=params, model_error_ml=0.5, log=null_out()) assert (n_modified == 1), n_modified # now with higher B-factors for all atoms for atom in hierarchy.atoms(): atom.b = atom.b * 10 n_modified = alternate_conformations.rejoin_split_single_conformers( pdb_hierarchy=hierarchy, params=params, log=null_out()) assert (n_modified == 1), n_modified
def run(args, out=sys.stdout): from mmtbx.building import alternate_conformations import iotbx.phil cmdline = iotbx.phil.process_command_line_with_files( args=args, master_phil=master_phil, float_def="model_error_ml", pdb_file_def="file_name") params = cmdline.work.extract() assert (params.file_name is not None) pdb_in = cmdline.get_file(params.file_name) hierarchy = pdb_in.file_object.construct_hierarchy() xrs = pdb_in.file_object.xray_structure_simple() n_modified = alternate_conformations.rejoin_split_single_conformers( pdb_hierarchy=hierarchy, crystal_symmetry=xrs, model_error_ml=params.model_error_ml, params=params, verbose=True, log=out) alternate_conformations.finalize_model( pdb_hierarchy=hierarchy, xray_structure=hierarchy.extract_xray_structure( crystal_symmetry=pdb_in.file_object.xray_structure_simple()), set_b_iso=True, convert_to_isotropic=True) if (n_modified == 0): print >> out, "No residues modified." else: open("rejoined.pdb", "w").write(hierarchy.as_pdb_string()) print >> out, "wrote rejoined.pdb"
def rejoin(self): make_sub_header("Re-joining identical conformers", out=self.out) pdb_hierarchy = self.pdb_hierarchy.deep_copy() n_modified = alternate_conformations.rejoin_split_single_conformers( pdb_hierarchy=pdb_hierarchy, crystal_symmetry=self.fmodel.xray_structure, model_error_ml=self.fmodel.model_error_ml(), params=self.params.merging, reset_occupancies=self.params.refinement. constrain_correlated_occupancies, verbose=self.verbose, log=self.out) if (n_modified > 0): self.pdb_hierarchy = pdb_hierarchy xray_structure = self.pdb_hierarchy.extract_xray_structure( crystal_symmetry=self.fmodel.xray_structure) self.fmodel.update_xray_structure(xray_structure) self.map_file = None alternate_conformations.finalize_model( pdb_hierarchy=self.pdb_hierarchy, xray_structure=self.pdb_hierarchy.extract_xray_structure( crystal_symmetry=self.fmodel.xray_structure), set_b_iso=None, convert_to_isotropic=False) return (n_modified > 0)
def run (args, out=sys.stdout) : from mmtbx.building import alternate_conformations import iotbx.phil cmdline = iotbx.phil.process_command_line_with_files( args=args, master_phil=master_phil, float_def="model_error_ml", pdb_file_def="file_name") params = cmdline.work.extract() assert (params.file_name is not None) pdb_in = cmdline.get_file(params.file_name) hierarchy = pdb_in.file_object.construct_hierarchy() xrs = pdb_in.file_object.xray_structure_simple() n_modified = alternate_conformations.rejoin_split_single_conformers( pdb_hierarchy=hierarchy, crystal_symmetry=xrs, model_error_ml=params.model_error_ml, params=params, verbose=True, log=out) alternate_conformations.finalize_model( pdb_hierarchy=hierarchy, xray_structure=hierarchy.extract_xray_structure( crystal_symmetry=pdb_in.file_object.xray_structure_simple()), set_b_iso=True, convert_to_isotropic=True) if (n_modified == 0) : print >> out, "No residues modified." else : open("rejoined.pdb", "w").write(hierarchy.as_pdb_string()) print >> out, "wrote rejoined.pdb"
def exercise_rejoin () : from mmtbx.building.alternate_conformations.tst_build_simple import pdb_raw pdb_in = iotbx.pdb.hierarchy.input(pdb_string=pdb_raw) hierarchy = pdb_in.hierarchy params = alternate_conformations.rejoin_phil.extract() n_modified = alternate_conformations.rejoin_split_single_conformers( pdb_hierarchy=hierarchy, params=params, model_error_ml=0.5, log=null_out()) assert (n_modified == 3), n_modified # Gln5 # split residue 6 without changing coordinates, set occupancy very low chain = hierarchy.only_model().chains()[0] rg6 = chain.residue_groups()[5] ag = rg6.only_atom_group().detached_copy() for atom in ag.atoms() : atom.occ = 0.05 for atom in rg6.atoms() : atom.occ = 0.95 rg6.only_atom_group().altloc = 'A' ag.altloc = 'B' rg6.append_atom_group(ag) n_modified = alternate_conformations.rejoin_split_single_conformers( pdb_hierarchy=hierarchy.deep_copy(), params=params, model_error_ml=0.5, log=null_out()) assert (n_modified == 1), n_modified # now with higher B-factors for all atoms for atom in hierarchy.atoms() : atom.b = atom.b * 10 n_modified = alternate_conformations.rejoin_split_single_conformers( pdb_hierarchy=hierarchy, params=params, log=null_out()) assert (n_modified == 1), n_modified
def rejoin (self) : make_sub_header("Re-joining identical conformers", out=self.out) pdb_hierarchy = self.pdb_hierarchy.deep_copy() n_modified = alternate_conformations.rejoin_split_single_conformers( pdb_hierarchy=pdb_hierarchy, crystal_symmetry=self.fmodel.xray_structure, model_error_ml=self.fmodel.model_error_ml(), params=self.params.merging, reset_occupancies=self.params.refinement.constrain_correlated_occupancies, verbose=self.verbose, log=self.out) if (n_modified > 0) : self.pdb_hierarchy = pdb_hierarchy xray_structure = self.pdb_hierarchy.extract_xray_structure( crystal_symmetry=self.fmodel.xray_structure) self.fmodel.update_xray_structure(xray_structure) self.map_file = None alternate_conformations.finalize_model( pdb_hierarchy=self.pdb_hierarchy, xray_structure=self.pdb_hierarchy.extract_xray_structure( crystal_symmetry=self.fmodel.xray_structure), set_b_iso=None, convert_to_isotropic=False) return (n_modified > 0)