def test_SystemPDB(self): pdb = T.testRoot('pep','pep.pdb') self.f_out = T.tempDir()+os.sep+'SystemPDB' if not os.path.exists(self.f_out): os.mkdir(self.f_out) T.BROWSER.chdir(self.f_out) self.r1 = System(amberPDB=pdb) solvatedsys = self.r1.solvate('WAT', tmp=self.f_out)
def test_TrajCluster(self): """TrajCluster test""" from Biskit.EnsembleTraj import traj2ensemble traj = T.load( T.testRoot()+'/lig_pcr_00/traj.dat') traj = traj2ensemble( traj ) aMask = traj.ref.mask( lambda a: a['name'] in ['CA','CB','CG'] ) traj = traj.thin( 1 ) traj.fit( aMask, verbose=self.local ) self.tc = TrajCluster( traj, verbose=self.local ) ## check how many clusters that are needed with the given criteria n_clusters = self.tc.calcClusterNumber( min_clst=3, max_clst=15, rmsLimit=0.7, aMask=aMask ) ## cluster self.tc.cluster( n_clusters, aMask=aMask ) if self.local: member_frames = self.tc.memberFrames() print 'There are %i clusters where the members are:'%n_clusters for i in range(n_clusters): print 'Cluster %i (%i members): %s'%( i+1, len(member_frames[i]), member_frames[i] )
def test_autoprepare_2(self): """Test main AutoPrepare class. Prepare PDBID 1a0o chains A, B == [0,1]""" f_check = T.testRoot('autoprepare', '1yer_h.pdb') self.prepare = AutoPrepare(pdbid='1yer', chains=[0,1]) self.checkpdb = bi.PDBModel(f_check) # self.savePdb(osp.join(T.testRoot(),'1a0o_prepared.pdb')) self.comparePDB(self.prepare.getPdb(), self.checkpdb)
def test_molUtils( self ): """molUtils test""" from Biskit import PDBModel S = self ## load a structure S.m = PDBModel( t.testRoot()+'/lig/1A19.pdb' ) S.model_1 = S.m.compress( S.m.maskProtein() ) ## now sort in standard order S.model_2 = sortAtomsOfModel( S.model_1) ## compare the atom order cmp = [] for a in S.model_1.atomRange(): cmp += [ cmpAtoms( S.model_1.atoms[a], S.model_2.atoms[a] )] self.assertEqual( N.sum(cmp), 159 ) ## get the primaty sequence as a string S.seq = S.model_1.sequence() ## convert it to a list of three letter code S.seq=single2longAA(S.seq) ## convert it to a list in one letter code S.seq=singleAA(S.seq) self.assertEqual( ''.join(S.seq), S.model_1.sequence() )
def test_TrajCluster(self): """TrajCluster test""" from Biskit.EnsembleTraj import traj2ensemble traj = T.load(T.testRoot() + '/lig_pcr_00/traj.dat') traj = traj2ensemble(traj) aMask = traj.ref.mask(lambda a: a['name'] in ['CA', 'CB', 'CG']) traj = traj.thin(1) traj.fit(aMask, verbose=self.local) self.tc = TrajCluster(traj, verbose=self.local) ## check how many clusters that are needed with the given criteria n_clusters = self.tc.calcClusterNumber(min_clst=3, max_clst=15, rmsLimit=0.7, aMask=aMask) ## cluster self.tc.cluster(n_clusters, aMask=aMask) if self.local: member_frames = self.tc.memberFrames() print 'There are %i clusters where the members are:' % n_clusters for i in range(n_clusters): print 'Cluster %i (%i members): %s' % ( i + 1, len(member_frames[i]), member_frames[i])
def test_molUtils(self): """molUtils test""" from Biskit import PDBModel S = self ## load a structure S.m = PDBModel(t.testRoot() + '/lig/1A19.pdb') S.model_1 = S.m.compress(S.m.maskProtein()) ## now sort in standard order S.model_2 = sortAtomsOfModel(S.model_1) ## compare the atom order cmp = [] for a in S.model_1.atomRange(): cmp += [cmpAtoms(S.model_1.atoms[a], S.model_2.atoms[a])] self.assertEqual(N0.sum(cmp), 159) ## get the primaty sequence as a string S.seq = S.model_1.sequence() ## convert it to a list of three letter code S.seq = single2longAA(S.seq) ## convert it to a list in one letter code S.seq = singleAA(S.seq) self.assertEqual(''.join(S.seq), S.model_1.sequence())
def test_SystemOFF(self): """Create System from OFF""" off = T.testRoot('pep', 'pep.off') self.f_out = T.tempDir() + os.sep + 'SystemOFF' if not os.path.exists(self.f_out): os.mkdir(self.f_out) T.BROWSER.chdir(self.f_out) self.r1 = System(amberOFF=off) solvatedsys = self.r1.solvate('WAT', tmp=self.f_out)
def test_SolventCreation(self): """SolventManager Solvent creation test""" f_in = osp.join(T.testRoot(), 'solvents', 'solvent_template.cfg') self.f_out = osp.join(T.tempDir(), 'solvent.db') self.m = SolventManager() solv = self.m.createSolvent(f_in) # print solv.getProbeByName('CT').mask self.m.saveSolvent(solv, db=self.f_out) self.assertEqual(str(solv), str(self.m.getSolvent('ETA', self.f_out)))
def test_PCRModel(self): """PCRModel test""" ## Loading PDB... self.m_com = PCRModel(t.testRoot() + "/com/1BGS.psf", t.testRoot() + "/com/1BGS.pdb") self.m_rec = PCRModel(t.testRoot() + "/rec/1A2P.psf", t.testRoot() + "/rec/1A2P.pdb") ## remove waters self.m_com = self.m_com.compress(self.m_com.maskProtein()) self.m_rec = self.m_rec.compress(self.m_rec.maskProtein()) ## fit the complex structure to the free receptor m_com_fit = self.m_com.magicFit(self.m_rec) ## calculate the rmsd between the original complex and the ## one fitted to the free receptor rms = m_com_fit.rms(self.m_com, fit=0) if self.local: print 'Rmsd between the two complex structures: %.2f Angstrom' % rms self.assertAlmostEqual(rms, 58.7844130314, 4)
def test_PCRModel( self ): """PCRModel test""" ## Loading PDB... self.m_com = PCRModel( t.testRoot() + "/com/1BGS.psf", t.testRoot() + "/com/1BGS.pdb" ) self.m_rec = PCRModel( t.testRoot() + "/rec/1A2P.psf", t.testRoot() + "/rec/1A2P.pdb" ) ## remove waters self.m_com = self.m_com.compress( self.m_com.maskProtein() ) self.m_rec = self.m_rec.compress( self.m_rec.maskProtein() ) ## fit the complex structure to the free receptor m_com_fit = self.m_com.magicFit( self.m_rec ) ## calculate the rmsd between the original complex and the ## one fitted to the free receptor rms = m_com_fit.rms(self.m_com, fit=0) if self.local: print 'Rmsd between the two complex structures: %.2f Angstrom'%rms self.assertAlmostEqual(rms, 58.7844130314, 4)
def test_OFFManager(self): """OFFManager test""" f_in = T.testRoot('solvents','ETAWAT20.off') self.m = OFFManager(offFile=f_in) self.assertEqual(self.m.getUnits(), ['ETA','ETAWAT20','WAT']) self.assertEqual(self.m.getResidueList('ETAWAT20',unique=True), ['WAT','ETA']) self.assertAlmostEqual(self.m.getVolume('ETAWAT20'), 7988.43038, 4) self.assertFalse(self.m.getVolume('ETA')) self.assertFalse(self.m.isParameter('ETA')) res = self.m.getResidue('ETA') self.assertEqual(res.charge, 0) self.assertEqual(res.connectivity[0], (1,2))
def test_QualSlave(self): """QualSlave test""" import os jobs = {0: T.testRoot() + '/lig_pcr_00/traj.dat'} self.feps = '%s/rms_traj.eps' % os.path.dirname(jobs[0]) slave = QualSlave() slave.initialize({'verbose': 0}) r = slave.go(jobs) if self.VERBOSITY > 2: self.log.write('eps written to ' + self.feps) self.assert_(os.path.exists(self.feps))
def test_QualSlave(self): """QualSlave test""" import os jobs = {0: T.testRoot() + '/lig_pcr_00/traj.dat'} self.feps = '%s/rms_traj.eps' % os.path.dirname( jobs[0] ) slave = QualSlave() slave.initialize( {'verbose':0} ) r = slave.go( jobs ) if self.VERBOSITY > 2: self.log.write('eps written to ' + self.feps ) self.assert_( os.path.exists( self.feps ) )
def test_ReduceCoordinates(self): """ReduceCoordinates test""" self.m = PDBModel(T.testRoot() + '/com/1BGS.pdb') self.m = self.m.compress(N.logical_not(self.m.maskH2O())) self.m.atoms.set('test', range(len(self.m))) self.red = ReduceCoordinates(self.m, 4) self.mred = self.red.reduceToModel() if self.local: print '\nAtoms before reduction %i' % self.m.lenAtoms() print 'Atoms After reduction %i' % self.mred.lenAtoms() self.assertEqual(self.mred.lenAtoms(), 445)
def test_ReduceCoordinates(self): """ReduceCoordinates test""" self.m = PDBModel( T.testRoot()+'/com/1BGS.pdb' ) self.m = self.m.compress( N.logical_not( self.m.maskH2O() ) ) self.m.atoms.set('test', range(len(self.m))) self.red = ReduceCoordinates( self.m, 4 ) self.mred = self.red.reduceToModel() if self.local: print '\nAtoms before reduction %i'% self.m.lenAtoms() print 'Atoms After reduction %i'% self.mred.lenAtoms() self.assertEqual( self.mred.lenAtoms(), 445 )
def test_Pymoler(self): """Pymoler test""" self.traj = T.load( T.testRoot() + '/lig_pcr_00/traj.dat' ) self.pm = Pymoler( full=0, verbose=self.local ) mname = self.pm.addMovie( [ self.traj[i] for i in range(0,100,20) ] ) sel = self.pm.makeSel({'residue':29}) ## self.pm.add('show stick, %s' % sel) self.pm.add('show surface, %s' % sel) self.pm.add('mplay') if not self.local: self.pm.add('quit') self.pm.run() ## old style call "pm.show()" also works self.assert_( self.pm.pid is not None )
def test_Pymoler(self): """Pymoler test""" self.traj = T.load(T.testRoot() + '/lig_pcr_00/traj.dat') self.pm = Pymoler(full=0, verbose=self.local) mname = self.pm.addMovie([self.traj[i] for i in range(0, 100, 20)]) sel = self.pm.makeSel({'residue': 29}) ## self.pm.add('show stick, %s' % sel) self.pm.add('show surface, %s' % sel) self.pm.add('mplay') if not self.local: self.pm.add('quit') self.pm.run() ## old style call "pm.show()" also works self.assert_(self.pm.pid is not None)
def checkSite(self): "Control wether the site has changed the form. If so, exit as everything will fail." # Check that html website is similar to the content when this module was written import difflib checkhtml = open(T.testRoot('pdb2pqr_html.txt'),'r').read() webhtml = self._html.read() ratio = difflib.SequenceMatcher(lambda x: x == " ", checkhtml, webhtml).ratio() if ratio < 0.9: self.log.warn('Website seems different since this module was coded. Similarity: %3f'%ratio) # Check form has mandatory controls controls = set([c.name for c in self.br.form.controls]) if controls != PDB2PQRInterface.KNOWNCONTROLS: # Something has changed! # First check if all mandatory controls are there self.log.warning("Changes in webserver form.") if PDB2PQRInterface.MANDATORYCONTROLS < controls: return True else: raise FormChange, "Missing controls in form: ", PDB2PQRInterface.MANDATORYCONTROLS - controls else: return True
def test_Trajectory(self): """Trajectory test""" ## f = T.testRoot() + '/lig_pc2_00/pdb/' ## allfiles = os.listdir( f ) ## pdbs = [] ## for fn in allfiles: ## try: ## if (fn[-7:].upper() == '.PDB.GZ'): ## pdbs += [f + fn] ## except: ## pass ## ref = pdbs[0] ## traj = Trajectory( pdbs[:3], ref, rmwat=0 ) ## Loading self.traj = T.load(T.testRoot() + '/lig_pcr_00/traj.dat') ## sort frames after frameNames self.traj.sortFrames() ## sort atoms self.traj.sortAtoms() ## remove waters self.traj = self.traj.compressAtoms( N.logical_not(self.traj.ref.maskH2O())) ## get fluctuation on a residue level r1 = self.traj.getFluct_local(verbose=self.local) ## fit backbone of frames to reference structure self.traj.fit(ref=self.traj.ref, mask=self.traj.ref.maskBB(), verbose=self.local) self.assertAlmostEqual(N.sum(self.traj.profile('rms')), 58.101235746353879, 2)
def setOFF(self, amberOFF, unitname=None): """ Save Amber Object file as :class:`OFFManager.OFFManager` object in :attr:`amberOFF`. :attr:`unitName` will be set. :arg str amberOFF: Path to amber object file. :arg str unitname: Name of the unit we should use in the future. If not given, automatically take the first unit found in the file. """ from OFFManager import OFFManager # Special case: test # Grab off from testing directory if amberOFF.lower() == 'test': print "WORKING WITH A TEST SYSTEM!" amberOFF = T.testRoot('pep', 'pep.off') self.name = 'testsystem' self.sysFilePath = self.name + '.msys' self.amberOFF = OFFManager(amberOFF) if not unitname: units = self.amberOFF.getUnits() unitname = units[0] self.unitName = unitname self.__createRef()
def test_Trajectory(self): """Trajectory test""" ## f = T.testRoot() + '/lig_pc2_00/pdb/' ## allfiles = os.listdir( f ) ## pdbs = [] ## for fn in allfiles: ## try: ## if (fn[-7:].upper() == '.PDB.GZ'): ## pdbs += [f + fn] ## except: ## pass ## ref = pdbs[0] ## traj = Trajectory( pdbs[:3], ref, rmwat=0 ) ## Loading self.traj = T.load(T.testRoot() + '/lig_pcr_00/traj.dat') ## sort frames after frameNames self.traj.sortFrames() ## sort atoms self.traj.sortAtoms() ## remove waters self.traj = self.traj.compressAtoms( N.logical_not( self.traj.ref.maskH2O()) ) ## get fluctuation on a residue level r1 = self.traj.getFluct_local( verbose=self.local ) ## fit backbone of frames to reference structure self.traj.fit( ref=self.traj.ref, mask=self.traj.ref.maskBB(), verbose=self.local ) self.assertAlmostEqual( N.sum( self.traj.profile('rms') ), 58.101235746353879, 2 )
def prepare(self): self.f = os.path.join(tools.testRoot(), 'eedensity/3tgi.ezd.gz') self.p = None
def test_PDB2PQR_byID(self): """Test PDB2PQR interface. Protonate PDB selected by ID. """ pqr_check = PQRParseFile(T.testRoot('autoprepare', '1yer.pqr')).getModel() self.b = PDB2PQRInterface() pqr_out = self.b.protonatePDB(pdbid='1yer',twait=2) self.comparePDB(pqr_out, pqr_check)
def prepare(self): self.fname = T.testRoot() + '/rec/1A2P_rec_original.pdb' self.outPath = T.tempDir()
def test_PepSettingsParser(self): """Parse settings config file""" cfg = T.testRoot('pep', 'pep_amber_mdmix.cfg') settings = MDSettingsConfigFileParser().parse(cfg) assert len(settings) == 2 assert settings[0].trajfrequency == 2000
def test_PepSystemParser(self): """Parse system config file""" cfg = T.testRoot('pep', 'pep_amber_mdmix.cfg') system = SystemConfigFileParser().parse(cfg)
def test_PepReplica(self): rfile = T.testRoot('pep', 'pep_mdmix', 'MD', '')
def prepare(self): self.f = T.testRoot() + '/amber/sim.rst' self.fref = T.testRoot() + '/amber/1HPT_0.pdb' self.p = AmberRstParser(self.f)
def prepare( self ): self.f = os.path.join( tools.testRoot(), 'eedensity/3tgi.ezd.gz' ) self.p = None
def test_PepSettingsParserMulti(self): """Parse settings config file with multiple MDSETTINGS entries""" cfg = T.testRoot('pep', 'multisettings.cfg') settings = MDSettingsConfigFileParser().parse(cfg) assert len(settings) == 5 assert settings[-1].trajfrequency == 500
def prepare(self): root = T.testRoot() + '/amber/' self.finp = root + 'sim.crd.gz' self.fref = root + '1HPT_0.pdb' self.fout = tempfile.mktemp('.dat', 'traj_')
def prepare(self): self.f = T.testRoot()+'/amber/sim.rst' self.fref = T.testRoot()+'/amber/1HPT_0.pdb' self.p = AmberRstParser( self.f )