Пример #1
0
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
Пример #2
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 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)
Пример #4
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"
Пример #5
0
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)