Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
  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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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])
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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)