class Test( BT.BiskitTest ): """Test AmberParmBuilder""" TAGS = [ BT.EXE ] def prepare(self): root = T.testRoot('amber/leap/') self.ref = PDBModel( T.testRoot('amber/leap/1HPT_solvated.pdb')) self.refdry = root + '1HPT_dry.pdb' self.dryparm = tempfile.mktemp('.parm', 'dry_') self.drycrd = tempfile.mktemp('.crd', 'dry_') self.drypdb = tempfile.mktemp('.pdb', 'dry_') self.wetparm = tempfile.mktemp('.parm', 'wet_') self.wetcrd = tempfile.mktemp('.crd', 'wet_') self.wetpdb = tempfile.mktemp('.pdb', 'wet_') self.leapout = tempfile.mktemp('.out', 'leap_') def cleanUp(self): if not self.DEBUG: T.tryRemove( self.dryparm ) T.tryRemove( self.drycrd ) T.tryRemove( self.drypdb ) T.tryRemove( self.wetparm ) T.tryRemove( self.wetcrd ) T.tryRemove( self.wetpdb ) T.tryRemove( self.leapout ) def test_AmberParmMirror(self): """AmberParmBuilder.parmMirror test""" ref = self.ref mask = N0.logical_not( ref.maskH2O() ) ## keep protein and Na+ ion self.mdry = ref.compress( mask ) self.a = AmberParmBuilder( self.mdry, verbose=self.local, leap_out=self.leapout, debug=self.DEBUG ) self.a.parmMirror(f_out=self.dryparm, f_out_crd=self.drycrd ) self.a.parm2pdb( self.dryparm, self.drycrd, self.drypdb ) self.m1 = PDBModel(self.drypdb) self.m2 = PDBModel(self.refdry) eq = N0.array( self.m1.xyz == self.m2.xyz ) self.assertTrue( eq.all() ) def test_AmberParmSolvated( self ): """AmberParmBuilder.parmSolvated test""" ## remove waters and hydrogens self.mdry = self.ref.compress( self.ref.maskProtein() ) self.mdry = self.mdry.compress( self.mdry.maskHeavy() ) self.a = AmberParmBuilder( self.mdry, leap_out=self.leapout, verbose=self.local, debug=self.DEBUG) self.a.parmSolvated( self.wetparm, f_out_crd=self.wetcrd, f_out_pdb=self.wetpdb, box=2.5 ) self.m3 = PDBModel( self.wetpdb ) m3prot = self.m3.compress( self.m3.maskProtein() ) refprot= self.ref.compress( self.ref.maskProtein() ) refprot.xplor2amber() self.assertEqual( self.ref.lenChains(), self.m3.lenChains() ) self.assertEqual( refprot.atomNames(), m3prot.atomNames() )
class Test(BT.BiskitTest): """Test class """ def prepare(self): from biskit import LogFile import tempfile def test_PDBCleaner(self): """PDBCleaner general test""" ## Loading PDB... self.c = PDBCleaner(t.testRoot() + '/rec/1A2P_rec_original.pdb', log=self.log, verbose=self.local) self.m = self.c.process() self.assertAlmostEqual(self.m.mass(), 34029.0115499993, 7) def test_DNACleaning(self): """PDBCleaner DNA test""" ## Loading PDB... self.c = PDBCleaner(t.testRoot() + 'amber/entropy/0_com.pdb', log=self.log, verbose=self.local) self.dna = self.c.process(amber=True) self.assertAlmostEqual(self.dna.mass(), 26953.26, 1) def test_Capping(self): """PDBCleaner.capTerminals test""" ## Loading PDB... self.model = PDBModel(t.testRoot() + '/rec/1A2P_rec_original.pdb') self.c = PDBCleaner(self.model, log=self.log, verbose=self.local) self.m2 = self.c.capTerminals(breaks=True) self.assertTrue(self.m2.atomNames() == self.model.atomNames()) self.m3 = self.model.clone() self.m3.removeRes([10, 11, 12, 13, 14, 15]) self.m4 = self.m3.clone() self.c = PDBCleaner(self.m3, log=self.log, verbose=self.local) self.m3 = self.c.capTerminals(breaks=True, capC=[0], capN=[0, 1]) self.assertEqual( self.m3.takeChains([0]).sequence()[:18], 'XVINTFDGVADXXKLPDN') if self.local: self.log.add('\nTesting automatic chain capping...\n') self.c = PDBCleaner(self.m4, log=self.log, verbose=self.local) self.m4 = self.c.capTerminals(auto=True) self.assertEqual( self.m4.takeChains([0]).sequence()[:18], 'XVINTFDGVADXXKLPDN') def test_capping_internal(self): self.m3 = PDBModel(t.testRoot('pdbclean/foldx_citche.pdb')) self.m3 = self.m3.takeChains([1]) # pick second chain; has chain break self.c3 = PDBCleaner(self.m3, verbose=self.local, log=self.log) m = self.c3.capACE(self.m3, 1, checkgap=False) self.assertEqual( m.lenChains(breaks=True) - 1, self.m3.lenChains(breaks=True))
class Test(BT.BiskitTest): """Test class """ def prepare(self): from biskit import LogFile import tempfile def test_PDBCleaner( self ): """PDBCleaner general test""" ## Loading PDB... self.c = PDBCleaner( t.testRoot() + '/rec/1A2P_rec_original.pdb', log=self.log, verbose=self.local) self.m = self.c.process() self.assertAlmostEqual( self.m.mass(), 34029.0115499993, 7 ) def test_DNACleaning( self ): """PDBCleaner DNA test""" ## Loading PDB... self.c = PDBCleaner( t.testRoot() + 'amber/entropy/0_com.pdb', log=self.log, verbose=self.local ) self.dna = self.c.process(amber=True) self.assertAlmostEqual( self.dna.mass(), 26953.26, 1 ) def test_Capping( self ): """PDBCleaner.capTerminals test""" ## Loading PDB... self.model = PDBModel(t.testRoot() + '/rec/1A2P_rec_original.pdb') self.c = PDBCleaner( self.model, log=self.log, verbose=self.local ) self.m2 = self.c.capTerminals( breaks=True ) self.assertTrue( self.m2.atomNames() == self.model.atomNames() ) self.m3 = self.model.clone() self.m3.removeRes( [10,11,12,13,14,15] ) self.m4 = self.m3.clone() self.c = PDBCleaner( self.m3, log=self.log, verbose=self.local ) self.m3 = self.c.capTerminals( breaks=True, capC=[0], capN=[0,1]) self.assertEqual( self.m3.takeChains([0]).sequence()[:18], 'XVINTFDGVADXXKLPDN' ) if self.local: self.log.add( '\nTesting automatic chain capping...\n' ) self.c = PDBCleaner( self.m4, log=self.log, verbose=self.local ) self.m4 = self.c.capTerminals( auto=True ) self.assertEqual( self.m4.takeChains([0]).sequence()[:18], 'XVINTFDGVADXXKLPDN' ) def test_capping_internal(self): self.m3 = PDBModel(t.testRoot('pdbclean/foldx_citche.pdb')) self.m3 = self.m3.takeChains([1]) # pick second chain; has chain break self.c3 = PDBCleaner(self.m3, verbose=self.local, log=self.log) m = self.c3.capACE(self.m3, 1, checkgap=False) self.assertEqual(m.lenChains(breaks=True) -1, self.m3.lenChains(breaks=True))