コード例 #1
0
  def test_create_ncs_domain_pdb_files(self):
    """ check that files are created for each NCS group as expected """
    # it should create 3 files (by number of found NCS groups) and write
    # there all atoms from NCS groups except chains excluded in exclude_chains
    if have_phenix:
      fn = 'SimpleNCSFromPDB_test.pdb'
      open(fn,'w').write(pdb_str_3)
      prefix = 'test_create_ncs_domain_pdb_files'
      obj = simple_ncs_from_pdb(
        pdb_file=fn,
        quiet=True,
        exclude_chains=['D','E'],
        suppress_print=True,
        write_ncs_domain_pdb=True,
        ncs_domain_pdb_stem=prefix)

      fn_gr0 = prefix + '_group_1.pdb'
      fn_gr1 = prefix + '_group_2.pdb'
      fn_gr2 = prefix + '_group_3.pdb'

      self.assertEqual(obj.ncs_obj.number_of_ncs_groups,3)
      pdb_inp_0 = pdb.input(file_name=fn_gr0)
      pdb_inp_1 = pdb.input(file_name=fn_gr1)
      pdb_inp_2 = pdb.input(file_name=fn_gr2)
      self.assertEqual(pdb_inp_0.atoms().size(),6)
      self.assertEqual(pdb_inp_1.atoms().size(),8)
      self.assertEqual(pdb_inp_2.atoms().size(),4)
    else:
      print "phenix not available, skipping test_create_ncs_domain_pdb_files()"
      pass
コード例 #2
0
  def test_spec_reading(self):
    """ verify creating and processing spec """
    if have_phenix:
      # print sys._getframe().f_code.co_name
      # creating a spec file
      params = master_params.extract()
      xrs = self.pdb_inp.xray_structure_simple()
      xrs_unit_cell = xrs.orthorhombic_unit_cell_around_centered_scatterers(
        buffer_size=8)
      self.ph.adopt_xray_structure(xrs_unit_cell)
      of = open("test_ncs_spec.pdb", "w")
      print >> of, self.ph.as_pdb_string(crystal_symmetry=xrs.crystal_symmetry())
      of.close()
      # create a spec file
      ncs_from_pdb=simple_ncs_from_pdb(
        pdb_file="test_ncs_spec.pdb",
        quiet=True,
        log=null_out(),
        params=params)

      # reading and processing the spec file
      trans_obj = ncs.input(
        file_name="simple_ncs_from_pdb.ncs_spec",
        # spec_file_str=test_ncs_spec,  # use output string directly
        pdb_hierarchy_inp = self.pdb_obj)

      # test created object
      self.assertEqual(len(trans_obj.transform_chain_assignment),3)
      expected = "(chain 'A' and (resseq 151:159)) or (chain 'D' and (resseq 1:7))"
      self.assertEqual(trans_obj.ncs_selection_str,expected)
      # check that static parts are included in NCS and ASU
      self.assertEqual(len(trans_obj.ncs_atom_selection),3*9+2*7+3+3)
      self.assertEqual(trans_obj.ncs_atom_selection.count(True),9+7+3+3)
      #
      expected = {
        "chain 'A' and (resseq 151:159)":
          ["chain 'B' and (resseq 151:159)","chain 'C' and (resseq 151:159)"],
        "chain 'D' and (resseq 1:7)":
          ["chain 'E' and (resseq 1:7)"]}
      self.assertEqual(trans_obj.ncs_to_asu_selection,expected)

      # check ncs_transform
      group_ids = [x.ncs_group_id for x in trans_obj.ncs_transform.itervalues()]
      tran_sn = {x.serial_num for x in trans_obj.ncs_transform.itervalues()}
      group_keys = {x for x in trans_obj.ncs_transform.iterkeys()}
      r1 = trans_obj.ncs_transform['004'].r
      r2 = trans_obj.ncs_transform['002'].r
      #
      self.assertEqual(len(group_ids),5)
      self.assertEqual(set(group_ids),{1,2})
      self.assertEqual(tran_sn,{1,2,3,4,5})
      self.assertEqual(group_keys,{'001', '002', '003', '004', '005'})
      #
      self.assertTrue(r1.is_r3_identity_matrix())
      expected_r = matrix.sqr(
        [0.4966,0.8679,-0.0102,-0.6436,0.3761,0.6666,0.5824,-0.3245,0.7453])
      d = r2 - expected_r.transpose()
      d = map(abs,d)
      self.assertTrue(max(d)<0.01)
    else:
      print "phenix not available, skipping test_spec_reading()"
      pass