Esempio n. 1
0
def run(args, log = sys.stdout):
  cmdline = mmtbx.command_line.load_model_and_data(
    args          = args,
    master_phil   = get_master_phil(),
    create_fmodel = False,
    out           = log)
  params = cmdline.params
  fmodel = create_fmodel(
    f_obs            = cmdline.f_obs,
    r_free_flags      = cmdline.r_free_flags,
    xray_structure    = cmdline.xray_structure,
    log               = log,
    target_name       = params.refinement_target_name,
    update_all_scales = params.update_all_scales)
  data_weight=None
  if(params.restraints == "cctbx"):
    grm = restraints.get_grm(
      file_name = cmdline.pdb_file_names[0]).restraints_manager
    restraints_manager = restraints.from_cctbx(
      geometry_restraints_manager = grm)
  else:
    assert params.restraints == "qm"
    ### check the total charge and spin
    restraints_manager = restraints.from_qm(
      pdb_hierarchy = cmdline.pdb_hierarchy.deep_copy(),
      calculator    = Mopac(label='./ase/ase',charge="0", spin=0,
                            job_type='1SCF GRADIENTS AUX(0,PRECISION=9)',
                            RELSCF=None,functional='PM7'))
  states = mmtbx.utils.states(
    pdb_hierarchy  = cmdline.pdb_hierarchy,
    xray_structure = cmdline.xray_structure)
  states.add(sites_cart = cmdline.xray_structure.sites_cart())
  print "params.data_weight:", params.data_weight
  print "params.restraints:", params.restraints
  #####
  geometry_rmsd_manager=restraints.get_grm(
    file_name = cmdline.pdb_file_names[0]).restraints_manager
  macro_cycle.run(
    fmodel                 = fmodel,
    states                 = states,
    pdb_hierarchy          = cmdline.pdb_hierarchy,
    restraints_manager     = restraints_manager,
    number_of_macro_cycles = params.number_of_macro_cycles,
    file_label             = params.restraints,
    data_weight            = params.data_weight,
    file_out_prefix        = params.file_out_prefix,
    use_convergence_test   = params.use_convergence_test,
    max_bond_rmsd          = params.max_bond_rmsd,
    geometry_rmsd_manager  = geometry_rmsd_manager)
Esempio n. 2
0
def get_model_stat(file_name):
  grm = restraints.get_grm(file_name = file_name)
  r = model_statistics.geometry(
    pdb_hierarchy      = grm.pdb_hierarchy,
    restraints_manager = grm.restraints_manager,
    molprobity_scores  = True)
  # XXX very runtime inefficient
  distances = flex.double()
  xyz = grm.pdb_hierarchy.atoms().extract_xyz()
  bond_proxies_simple = grm.restraints_manager.geometry.pair_proxies(
    sites_cart = xyz).bond_proxies.simple
  for i, site_i in enumerate(xyz):
    for j, site_j in enumerate(xyz):
      if(j>i):
        bonded = False
        for proxy in bond_proxies_simple:
          p1 = list(proxy.i_seqs)
          p2 = [i,j]
          p1.sort()
          p2.sort()
          if(p1==p2): bonded=True
        if(not bonded):
          dist_ij = math.sqrt(
            (site_i[0]-site_j[0])**2+
            (site_i[1]-site_j[1])**2+
            (site_i[2]-site_j[2])**2)
          distances.append(dist_ij)
  min_nonbonded_distance = flex.min(distances)
  # bond(rmsd), bond(max), angle(rmsd), angle(max), etc..
  #print r.b_mean, r.b_max, r.a_min, r.a_max, r.clashscore, min_nonbonded_distance
  return min_nonbonded_distance, r.b_max , r.a_max