Exemple #1
0
def benchmark_structure(pdb_in, mon_lib_srv, ener_lib, verbose=False, w=1.0):
    log = StringIO()

    params = mmtbx.model.manager.get_default_pdb_interpretation_params()
    params.pdb_interpretation.peptide_link.ramachandran_restraints = True
    params.pdb_interpretation.ramachandran_plot_restraints.inject_emsley8k_into_oldfield_favored = False
    model = mmtbx.model.manager(model_input=pdb_in,
                                pdb_interpretation_params=params,
                                log=null_out(),
                                build_grm=True)
    grm = model.get_restraints_manager().geometry
    pdb_hierarchy = model.get_hierarchy()
    r0 = ramalyze(pdb_hierarchy=pdb_hierarchy, outliers_only=False)
    atoms = pdb_hierarchy.atoms()
    sites_cart_1 = atoms.extract_xyz().deep_copy()
    sites_cart_2 = sites_cart_1.deep_copy()
    assert (grm is not None)
    e = grm.energies_sites(sites_cart=sites_cart_1)
    b0 = e.bond_deviations()[-1]
    a0 = e.angle_deviations()[-1]
    flags = cctbx.geometry_restraints.flags.flags(default=True)
    lbfgs = geometry_minimization.lbfgs(
        sites_cart=sites_cart_1,
        correct_special_position_tolerance=1.0,
        geometry_restraints_manager=grm,
        geometry_restraints_flags=flags,
        lbfgs_termination_params=scitbx.lbfgs.termination_parameters(
            max_iterations=500))
    a1 = lbfgs.rmsd_angles
    b1 = lbfgs.rmsd_bonds
    atoms.set_xyz(sites_cart_1)
    r1 = ramalyze(pdb_hierarchy=pdb_hierarchy, outliers_only=False)
    rama_params = ramachandran.master_phil.fetch().extract(
    ).ramachandran_plot_restraints
    rama_manager = ramachandran.ramachandran_manager(pdb_hierarchy,
                                                     rama_params, log)
    grm.set_ramachandran_restraints(rama_manager)
    lbfgs = geometry_minimization.lbfgs(
        sites_cart=sites_cart_2,
        correct_special_position_tolerance=1.0,
        geometry_restraints_manager=grm,
        geometry_restraints_flags=flags,
        lbfgs_termination_params=scitbx.lbfgs.termination_parameters(
            max_iterations=500))
    a2 = lbfgs.rmsd_angles
    b2 = lbfgs.rmsd_bonds
    atoms.set_xyz(sites_cart_2)
    r2 = ramalyze(pdb_hierarchy=pdb_hierarchy, outliers_only=False)
    return group_args(a0=a0,
                      a1=a1,
                      a2=a2,
                      b0=b0,
                      b1=b1,
                      b2=b2,
                      r0=r0,
                      r1=r1,
                      r2=r2)
def benchmark_structure (pdb_in, mon_lib_srv, ener_lib, verbose=False, w=1.0) :
  params = pdb_interpretation.master_params.extract()
  processed_pdb_file = pdb_interpretation.process(
    mon_lib_srv=mon_lib_srv,
    ener_lib=ener_lib,
    params=params,
    pdb_inp=pdb_in,
    log=StringIO())
  log = StringIO()
  pdb_hierarchy = processed_pdb_file.all_chain_proxies.pdb_hierarchy
  r0 = ramalyze(pdb_hierarchy=pdb_hierarchy, outliers_only=False)
  atoms = pdb_hierarchy.atoms()
  sites_cart_1 = atoms.extract_xyz().deep_copy()
  sites_cart_2 = sites_cart_1.deep_copy()
  grm = processed_pdb_file.geometry_restraints_manager()
  assert (grm is not None)
  e = grm.energies_sites(sites_cart=sites_cart_1)
  b0 = e.bond_deviations()[-1]
  a0 = e.angle_deviations()[-1]
  flags = cctbx.geometry_restraints.flags.flags(default=True)
  lbfgs = geometry_minimization.lbfgs(
    sites_cart=sites_cart_1,
    correct_special_position_tolerance=1.0,
    geometry_restraints_manager=grm,
    geometry_restraints_flags=flags,
    lbfgs_termination_params=scitbx.lbfgs.termination_parameters(
        max_iterations=500))
  a1 = lbfgs.rmsd_angles
  b1 = lbfgs.rmsd_bonds
  atoms.set_xyz(sites_cart_1)
  r1 = ramalyze(pdb_hierarchy=pdb_hierarchy, outliers_only=False)
  rama_params = ramachandran.master_phil.fetch().extract()
  rama_manager = ramachandran.ramachandran_manager(
      pdb_hierarchy, None, rama_params, log)
  grm.set_ramachandran_restraints(rama_manager)
  lbfgs = geometry_minimization.lbfgs(
    sites_cart=sites_cart_2,
    correct_special_position_tolerance=1.0,
    geometry_restraints_manager=grm,
    geometry_restraints_flags=flags,
    lbfgs_termination_params=scitbx.lbfgs.termination_parameters(
        max_iterations=500))
  a2 = lbfgs.rmsd_angles
  b2 = lbfgs.rmsd_bonds
  atoms.set_xyz(sites_cart_2)
  r2 = ramalyze(pdb_hierarchy=pdb_hierarchy, outliers_only=False)
  return group_args(
    a0=a0,
    a1=a1,
    a2=a2,
    b0=b0,
    b1=b1,
    b2=b2,
    r0=r0,
    r1=r1,
    r2=r2)
def benchmark_structure(pdb_in, mon_lib_srv, ener_lib, verbose=False, w=1.0):
    params = pdb_interpretation.master_params.extract()
    processed_pdb_file = pdb_interpretation.process(mon_lib_srv=mon_lib_srv,
                                                    ener_lib=ener_lib,
                                                    params=params,
                                                    pdb_inp=pdb_in,
                                                    log=StringIO())
    log = StringIO()
    pdb_hierarchy = processed_pdb_file.all_chain_proxies.pdb_hierarchy
    r0 = ramalyze(pdb_hierarchy=pdb_hierarchy, outliers_only=False)
    atoms = pdb_hierarchy.atoms()
    sites_cart_1 = atoms.extract_xyz().deep_copy()
    sites_cart_2 = sites_cart_1.deep_copy()
    grm = processed_pdb_file.geometry_restraints_manager()
    assert (grm is not None)
    e = grm.energies_sites(sites_cart=sites_cart_1)
    b0 = e.bond_deviations()[-1]
    a0 = e.angle_deviations()[-1]
    flags = cctbx.geometry_restraints.flags.flags(default=True)
    lbfgs = geometry_minimization.lbfgs(
        sites_cart=sites_cart_1,
        correct_special_position_tolerance=1.0,
        geometry_restraints_manager=grm,
        geometry_restraints_flags=flags,
        lbfgs_termination_params=scitbx.lbfgs.termination_parameters(
            max_iterations=500))
    a1 = lbfgs.rmsd_angles
    b1 = lbfgs.rmsd_bonds
    atoms.set_xyz(sites_cart_1)
    r1 = ramalyze(pdb_hierarchy=pdb_hierarchy, outliers_only=False)
    rama_params = ramachandran.master_phil.fetch().extract()
    rama_manager = ramachandran.ramachandran_manager(pdb_hierarchy, None,
                                                     rama_params, log)
    grm.set_ramachandran_restraints(rama_manager)
    lbfgs = geometry_minimization.lbfgs(
        sites_cart=sites_cart_2,
        correct_special_position_tolerance=1.0,
        geometry_restraints_manager=grm,
        geometry_restraints_flags=flags,
        lbfgs_termination_params=scitbx.lbfgs.termination_parameters(
            max_iterations=500))
    a2 = lbfgs.rmsd_angles
    b2 = lbfgs.rmsd_bonds
    atoms.set_xyz(sites_cart_2)
    r2 = ramalyze(pdb_hierarchy=pdb_hierarchy, outliers_only=False)
    return group_args(a0=a0,
                      a1=a1,
                      a2=a2,
                      b0=b0,
                      b1=b1,
                      b2=b2,
                      r0=r0,
                      r1=r1,
                      r2=r2)
 def run(self, random_seed):
     tmp = self.xray_structure.deep_copy_scatterers()
     # Shake and minimize to get variable starting points
     tmp.shake_sites_in_place(rms_difference=None, mean_distance=5)
     sites_cart_ = tmp.sites_cart()
     minimized = geometry_minimization.lbfgs(
         sites_cart=sites_cart_,
         correct_special_position_tolerance=1.0,
         geometry_restraints_manager=self.restraints_manager.geometry,
         geometry_restraints_flags=self.grf,
         lbfgs_exception_handling_params=self.
         lbfgs_exception_handling_params,
         lbfgs_termination_params=scitbx.lbfgs.termination_parameters(
             max_iterations=50))
     tmp = tmp.replace_sites_cart(new_sites=sites_cart_)
     #
     random.seed(random_seed)
     flex.set_random_seed(random_seed)
     sa.run(params=self.params,
            xray_structure=tmp,
            real_space=True,
            target_map=self.map_data,
            restraints_manager=self.restraints_manager,
            wx=self.weight,
            wc=1.,
            verbose=False)
     return tmp
 def run(self, random_seed):
   tmp = self.xray_structure.deep_copy_scatterers()
   # Shake and minimize to get variable starting points
   tmp.shake_sites_in_place(
     rms_difference = None,
     mean_distance  = 5)
   sites_cart_ = tmp.sites_cart()
   minimized = geometry_minimization.lbfgs(
     sites_cart                        = sites_cart_,
     correct_special_position_tolerance= 1.0,
     geometry_restraints_manager       = self.restraints_manager.geometry,
     geometry_restraints_flags         = self.grf,
     lbfgs_exception_handling_params   = self.lbfgs_exception_handling_params,
     lbfgs_termination_params          = scitbx.lbfgs.termination_parameters(
       max_iterations=50))
   tmp = tmp.replace_sites_cart(new_sites = sites_cart_)
   #
   random.seed(random_seed)
   flex.set_random_seed(random_seed)
   sa.run(
     params             = self.params,
     xray_structure     = tmp,
     real_space         = True,
     target_map         = self.map_data,
     restraints_manager = self.restraints_manager,
     wx                 = self.weight,
     wc                 = 1.,
     verbose            = False)
   return tmp
 def geometry_minimization(self,
                           selection=None,
                           bond=True,
                           nonbonded=True,
                           angle=True,
                           dihedral=True,
                           chirality=True,
                           planarity=True,
                           max_number_of_iterations=500,
                           number_of_macro_cycles=5,
                           rmsd_bonds_termination_cutoff=0,
                           rmsd_angles_termination_cutoff=0):
     """
 Perform geometry minimization on a selection of boxed atoms.
 """
     from mmtbx.refinement import geometry_minimization
     from cctbx import geometry_restraints
     from scitbx.array_family import flex
     import scitbx.lbfgs
     if (selection is None):
         selection = self.selection_in_box
     if (type(selection).__name__ == 'size_t'):
         selection = flex.bool(self.n_sites_box,
                               False).set_selected(selection, True)
     lbfgs_termination_params = scitbx.lbfgs.termination_parameters(
         max_iterations=max_number_of_iterations)
     geometry_restraints_flags = geometry_restraints.flags.flags(
         bond=bond,
         nonbonded=nonbonded,
         angle=angle,
         dihedral=dihedral,
         chirality=chirality,
         planarity=planarity)
     site_labels = self.box.xray_structure_box.scatterers().extract_labels()
     for i in range(number_of_macro_cycles):
         sites_cart = self.box.xray_structure_box.sites_cart()
         exception_handling_params = scitbx.lbfgs.exception_handling_parameters(
             ignore_line_search_failed_step_at_lower_bound=True)
         minimized = geometry_minimization.lbfgs(
             sites_cart=sites_cart,
             correct_special_position_tolerance=1.0,
             geometry_restraints_manager=self.geo_box,
             geometry_restraints_flags=geometry_restraints_flags,
             lbfgs_termination_params=lbfgs_termination_params,
             lbfgs_exception_handling_params=exception_handling_params,
             sites_cart_selection=selection,
             rmsd_bonds_termination_cutoff=rmsd_bonds_termination_cutoff,
             rmsd_angles_termination_cutoff=rmsd_angles_termination_cutoff,
             site_labels=site_labels)
         self.update_coordinates(sites_cart)
Exemple #7
0
 def geometry_minimization (self,
     selection=None,
     bond=True,
     nonbonded=True,
     angle=True,
     dihedral=True,
     chirality=True,
     planarity=True,
     max_number_of_iterations=500,
     number_of_macro_cycles=5,
     rmsd_bonds_termination_cutoff  = 0,
     rmsd_angles_termination_cutoff = 0) :
   """
   Perform geometry minimization on a selection of boxed atoms.
   """
   from mmtbx.refinement import geometry_minimization
   from cctbx import geometry_restraints
   from scitbx.array_family import flex
   import scitbx.lbfgs
   if (selection is None) :
     selection = self.selection_in_box
   if (type(selection).__name__ == 'size_t') :
     selection = flex.bool(self.n_sites_box, False).set_selected(selection, True)
   lbfgs_termination_params = scitbx.lbfgs.termination_parameters(
     max_iterations = max_number_of_iterations)
   geometry_restraints_flags = geometry_restraints.flags.flags(
     bond               = bond,
     nonbonded          = nonbonded,
     angle              = angle,
     dihedral           = dihedral,
     chirality          = chirality,
     planarity          = planarity)
   site_labels = self.box.xray_structure_box.scatterers().extract_labels()
   for i in xrange(number_of_macro_cycles):
     sites_cart = self.box.xray_structure_box.sites_cart()
     exception_handling_params = scitbx.lbfgs.exception_handling_parameters(
       ignore_line_search_failed_step_at_lower_bound = True)
     minimized = geometry_minimization.lbfgs(
       sites_cart                  = sites_cart,
       correct_special_position_tolerance = 1.0,
       geometry_restraints_manager = self.geo_box,
       geometry_restraints_flags   = geometry_restraints_flags,
       lbfgs_termination_params    = lbfgs_termination_params,
       lbfgs_exception_handling_params = exception_handling_params,
       sites_cart_selection        = selection,
       rmsd_bonds_termination_cutoff = rmsd_bonds_termination_cutoff,
       rmsd_angles_termination_cutoff = rmsd_angles_termination_cutoff,
       site_labels=site_labels)
     self.update_coordinates(sites_cart)
Exemple #8
0
def regularize_geometry(xray_structure, restraints_manager, params):
  from mmtbx.refinement import geometry_minimization as gm
  import scitbx.lbfgs
  sites_cart = xray_structure.sites_cart()
  minimized = gm.lbfgs(
    sites_cart = sites_cart,
    correct_special_position_tolerance = 1.0,
    geometry_restraints_manager = restraints_manager.geometry,
    geometry_restraints_flags = gm.geometry_restraints.flags.flags(default=True),
    rmsd_bonds_termination_cutoff=params.rmsd_bonds_target,
    rmsd_angles_termination_cutoff=params.rmsd_angles_target,
    lbfgs_termination_params=scitbx.lbfgs.termination_parameters(
      max_iterations=500))
  xray_structure = xray_structure.replace_sites_cart(new_sites = sites_cart)
  return xray_structure
Exemple #9
0
def regularize_geometry(xray_structure, restraints_manager, params):
  from mmtbx.refinement import geometry_minimization as gm
  import scitbx.lbfgs
  sites_cart = xray_structure.sites_cart()
  minimized = gm.lbfgs(
    sites_cart = sites_cart,
    correct_special_position_tolerance = 1.0,
    geometry_restraints_manager = restraints_manager.geometry,
    geometry_restraints_flags = gm.geometry_restraints.flags.flags(default=True),
    rmsd_bonds_termination_cutoff=params.rmsd_bonds_target,
    rmsd_angles_termination_cutoff=params.rmsd_angles_target,
    lbfgs_termination_params=scitbx.lbfgs.termination_parameters(
      max_iterations=500))
  xray_structure = xray_structure.replace_sites_cart(new_sites = sites_cart)
  return xray_structure
Exemple #10
0
def adiabatic_mapping (pdb_hierarchy,
                       restraints_manager,
                       start_coords,
                       end_coords,
                       params,
                       nsteps=10,
                       verbose=False,
                       out=None) :
  """
  Linear interpolation with energy minimization.  The number of minimizer
  cycles should be kept low to prevent each "frame" from snapping back to the
  starting coordinates.  Interpolating the dihedral restraint target angles
  may help remediate this problem.
  """
  from mmtbx.refinement import geometry_minimization
  from cctbx import geometry_restraints
  import scitbx.lbfgs
  if (start_coords.size() != end_coords.size()) :
    raise RuntimeError("Coordinate size mismatch: %d versus %d" %
      (start_coords.size(), end_coords.size()))
  grm = restraints_manager
  include_dihedrals = (params.interpolate_dihedrals or
                       (not params.exclude_dihedrals))
  grm_flags = geometry_restraints.flags.flags(
    default=True,
    dihedral=include_dihedrals)
  term_params = scitbx.lbfgs.termination_parameters(
    max_iterations=params.n_min_steps)
  dihedral_steps = []
  n = nsteps - 1
  if (params.interpolate_dihedrals) :
    # FIXME this needs work - should find the optimal path instead of the
    # simplistic assumption currently made
    for proxy in grm.dihedral_proxies :
      sites1 = []
      sites2 = []
      for k in range(4) :
        sites1.append(start_coords[proxy.i_seqs[k]])
        sites2.append(end_coords[proxy.i_seqs[k]])
      dihe_start = geometry_restraints.dihedral(
        sites=sites1,
        angle_ideal=0,
        weight=1).angle_model
      dihe_end = geometry_restraints.dihedral(
        sites=sites2,
        angle_ideal=0,
        weight=1).angle_model
      delta = (dihe_end - dihe_start) / n
      dihedral_steps.append(delta)
      proxy.weight = 0.1
  m = morph(pdb_hierarchy)
  m.add_frame(start_coords)
  current_xyz = start_coords
  final_xyz = end_coords
  while n > 0 :
    print >> out, "Interpolation step %d" % (nsteps - n)
    if (verbose) :
      print >> out, ""
    new_xyz = current_xyz.deep_copy()
    dxyz = (final_xyz - new_xyz) * (1. / n)
    new_xyz += dxyz
    if (params.minimize) :
      if (params.interpolate_dihedrals) :
        for k, proxy in enumerate(grm.dihedral_proxies) :
          proxy.angle_ideal += dihedral_steps[k]
      minimized = geometry_minimization.lbfgs(
        sites_cart=new_xyz,
        geometry_restraints_manager=grm,
        geometry_restraints_flags=grm_flags,
        lbfgs_termination_params=term_params)
      if (verbose) :
        n_iter = minimized.minimizer.iter()
        print >> out, ""
        print >> out, "Number of minimization iterations:", n_iter
        print >> out, ""
        print >> out, "Energies at end of minimization:"
        minimized.final_target_result.show(f=out)
    print >> out, "RMS coordinate change: %.3f" % current_xyz.rms_difference(new_xyz)
    m.add_frame(new_xyz)
    n -= 1
    current_xyz = new_xyz
  m.add_frame(final_xyz)
  return m