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)
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