def run_test2(): ''' Test - occupancy determination for ligands - adp determination for ligands and neighbors Tests are combined to decrease computing time (restraints manager is slow). ''' pdb_fname = libtbx.env.find_in_repositories( relative_path="mmtbx/regression/pdbs/two_chains_ligand_water.pdb", test=os.path.isfile) pdb_inp = iotbx.pdb.input(pdb_fname) model = mmtbx.model.manager(model_input = pdb_inp) model.set_log(null_out()) params = iotbx.phil.parse( input_string=master_params_str, process_includes=True).extract() vl_manager = validate_ligands.manager( model = model, fmodel = None, params = params.validate_ligands, log = null_out) vl_manager.run() tst_get_occupancies(vl_manager = vl_manager) tst_get_adps(vl_manager = vl_manager)
def run_test1(): ''' Test if iselection for ligand PG5 (chain A resseq 201) is correct. ''' pdb_fname = libtbx.env.find_in_repositories( relative_path="mmtbx/regression/pdbs/one_chain_ligand_water.pdb", test=os.path.isfile) pdb_inp = iotbx.pdb.input(pdb_fname) model = mmtbx.model.manager(model_input = pdb_inp) model.set_log(null_out()) params = iotbx.phil.parse( input_string=master_params_str, process_includes=True).extract() # do not place H atoms for this test #params.validate_ligands.place_hydrogens = False vl_manager = validate_ligands.manager( model = model, fmodel = None, params = params.validate_ligands, log = null_out()) vl_manager.run() tst_get_ligands(vl_manager = vl_manager) tst_get_overlaps(vl_manager = vl_manager)
def run(self): print('Using model file:', self.data_manager.get_default_model_name()) print('Using reflection file:', self.data_manager.get_default_miller_array_name()) cs = self.get_crystal_symmetry() model = self.data_manager.get_model() ph = model.get_hierarchy() xrs = model.get_xray_structure() if self.data_manager.get_default_miller_array_name(): f_obs, r_free_flags = self.get_fobs_rfree(crystal_symmetry = cs) print('\nInput data...', file=self.logger) print(' Reflection data:', f_obs.info().labels, file=self.logger) if (r_free_flags is not None): print(' Free-R flags:', r_free_flags.info().labels, file=self.logger) else: print(' Free-R flags: not present or not found', file=self.logger) fmodel = mmtbx.f_model.manager( f_obs = f_obs, r_free_flags = r_free_flags, xray_structure = xrs) # TODO: delete this keyword for production if self.params.update_scales: fmodel.update_all_scales() print('\nWorking crystal symmetry after inspecting all inputs:', file=self.logger) cs.show_summary(f=self.logger) # This is the new class, currently a stub but will be developed # winter 2018/spring 2019 by DL and NWM #t0 = time.time() ligand_manager = validate_ligands.manager( model = model, nproc = self.params.nproc, log = self.logger) ligand_manager.run() ligand_manager.print_ligand_counts() ligand_manager.print_ligand_occupancies() ligand_manager.print_adps() #print('time running manager: ', time.time()-t0) # TODO # DL: Eventually, delete "old" call below, but leave it for now to keep the # funcitonality alive, just in case if self.params.ligand_code and self.data_manager.get_default_miller_array_name() is not None: if (not(self.params.ligand_code is None or self.params.ligand_code[0] is None)): make_sub_header("Validating ligands", out=self.logger) for ligand_code in self.params.ligand_code : validations = mmtbx.validation.ligands.validate_ligands( pdb_hierarchy = ph, fmodel = fmodel, ligand_code = ligand_code, reference_structure = self.params.reference_structure, only_segid = self.params.only_segid) if (validations is None): raise Sorry("No ligands named '%s' found." % ligand_code) mmtbx.validation.ligands.show_validation_results(validations=validations, out = self.logger, verbose = self.params.verbose)
def tst_get_occupancies(): pdb_inp = iotbx.pdb.input(lines=pdb_str_2.split("\n"), source_info=None) model = mmtbx.model.manager(model_input=pdb_inp) vl_manager = validate_ligands.manager(model=model, log=null_out) vl_manager.run() assert (len(vl_manager) == 4) id_tuple_answer = [('', 'A', ' 2'), ('', 'A', ' 3'), ('', 'A', ' 4'), ('', 'A', ' 5')] ligand_dict_length_answer = [2, 1, 1, 1] occupancy_answer = [] for id_tuple, id_tuple_answer, length_answer in zip( vl_manager.keys(), id_tuple_answer, ligand_dict_length_answer): ligand_dict = vl_manager[id_tuple] assert (id_tuple == id_tuple_answer) assert (len(ligand_dict) == length_answer) for altloc, lr in ligand_dict.items(): occs = lr.get_occupancies() id_str = lr.id_str if (id_str.strip() == 'A 2' and altloc == 'A'): assert (occs.occ_mean == 0.56) if (id_str.strip() == 'A 2' and altloc == 'B'): assert (occs.occ_mean == 0.44) if (id_str.strip() == 'A 3'): assert (occs.occ_mean == 0.65) if (id_str.strip() == 'A 4'): assert (occs.occ_mean == 0.48) if (id_str.strip() == 'A 5'): assert (occs.occ_mean == 0.67)
def tst_get_ligands(): pdb_inp = iotbx.pdb.input(lines=pdb_str_1.split("\n"), source_info=None) model = mmtbx.model.manager(model_input=pdb_inp) vl_manager = validate_ligands.manager(model=model, log=null_out) vl_manager.run() assert (len(vl_manager) == 1) for id_tuple, ligand_dict in vl_manager.items(): assert (id_tuple == ('', 'A', ' 201')) lr = ligand_dict[''] assert (list( lr.isel) == [84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95])
def run_test1(): """Test if iselection for ligand PG5 (chain A resseq 201) is correct.""" pdb_inp = iotbx.pdb.input(lines=pdb_str_1.split("\n"), source_info=None) model = mmtbx.model.manager(model_input=pdb_inp) params = iotbx.phil.parse(input_string=master_params_str, process_includes=True).extract() # do not place H atoms for this test #params.validate_ligands.place_hydrogens = False fn = filenames[0] vl_manager = validate_ligands.manager(model=model, model_fn=fn, params=params.validate_ligands, log=null_out) vl_manager.run() tst_get_ligands(vl_manager=vl_manager) tst_get_nbos(vl_manager=vl_manager)
def run_test2(): ''' Test - occupancy determination for ligands - adp determination for ligands and neighbors Tests are combined to decrease computing time (restraints manager is slow). ''' pdb_inp = iotbx.pdb.input(lines=pdb_str_2.split("\n"), source_info=None) model = mmtbx.model.manager(model_input=pdb_inp) model.set_log(null_out()) params = iotbx.phil.parse(input_string=master_params_str, process_includes=True).extract() vl_manager = validate_ligands.manager(model=model, fmodel=None, params=params.validate_ligands, log=null_out) vl_manager.run() tst_get_occupancies(vl_manager=vl_manager) tst_get_adps(vl_manager=vl_manager)