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_OpenMMWriter(self): """Create new replica and write MDinput""" from MDSettings import MDSettings from Systems import SolvatedSystem top = osp.join(T.testRoot('pep', 'pep.prmtop')) crd = osp.join(T.testRoot('pep', 'pep.prmcrd')) sys = SolvatedSystem(name='pep', top=top, crd=crd) settings = MDSettings(solvent='WAT', mdProgram='OpenMM', restrMode='HA', restrForce=0.1) self.testdir = T.tempDir() self.r1 = sys + settings self.r1.setName('testOpenMM') T.BROWSER.chdir(self.testdir) # write replica folder and check methods of OpenMMWriter self.r1.createFolder() self.r1.createMDInput() writer = OpenMMWriter(self.r1) self.testdir += os.sep + 'testOpenMM'
def test_NAMDWriter(self): """Create new replica and write MDinput""" from MDSettings import MDSettings from Systems import SolvatedSystem top = osp.join(T.testRoot('pep', 'pep.prmtop')) crd = osp.join(T.testRoot('pep', 'pep.prmcrd')) sys = SolvatedSystem(name='pep', top=top, crd=crd) settings = MDSettings(solvent='WAT', mdProgram='NAMD', restrMode='HA', restrForce=0.1) self.testdir = T.tempDir() self.r1 = sys + settings self.r1.setName('testNAMD') T.BROWSER.chdir(self.testdir) # write replica folder and check methods of AmberWriter self.r1.createFolder() self.r1.createMDInput() writer = NAMDWriter(self.r1) # self.assertEqual(writer.getAmberRestrMask(), ':1-8 & !@H=') # self.assertTrue(writer.writeCommands()) # self.assertTrue(writer.writeReplicaInput()) # self.assertEqual(writer.getReplicaCommands(), checkCommands) self.testdir += os.sep + 'testNAMD'
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_SolvatedSystem(self): top = T.testRoot('pep', 'pep.prmtop') crd = T.testRoot('pep', 'pep.prmcrd') self.f_out = T.tempDir() + os.sep + 'SolvatedSystem' if not os.path.exists(self.f_out): os.mkdir(self.f_out) T.BROWSER.chdir(self.f_out) solvatedsys = SolvatedSystem(name='pep', top=top, crd=crd) solvatedsys.setPDBfromTOPCRD() pdb = solvatedsys.getSolvatedPDB()
def test_CREATEpepProject(self): """Create complete test project""" import shutil print T.testRoot() cfg = T.testRoot('pep', 'pep_amber_mdmix.cfg') off = T.testRoot('pep', 'pep.off') self.f_out = T.tempDir() T.BROWSER.chdir(self.f_out) shutil.copy(cfg, 'pep_amber_mdmix.cfg') shutil.copy(off, 'pep.off') proj = createProject('pep_amber_mdmix.cfg', 'pep_test_project') self.f_out += 'pep_test_project'
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 solvate(self, solvent, suffix=None, tmp=True): """ Solvate system in OFF using solvent *solvent*. A PRMTOP and PRMCRD files will be saved and paths stored to :attr:`top` and :attr:`crd`. :arg solvent: Solvent Instance or Name to fetch the Solvent Instance in the database. :type: str or :class:`~Solvents.Solvent` :arg str suffix: Suffix for output files. Prefix will be the system name. E.g.: ``systemname_suffix.prmtop`` and ``systemname_suffix.prmcrd``. :arg bool tmp: Work in temporary folder. """ if not self.amberOFF: raise SystemError, "Can not solvate if no Amber Object File is assigned." if isinstance(solvent, str): solvent = Solvents.getSolvent(solvent) if not solvent: raise SystemError, 'Invalid solvent instance or name.' # Build a loger just for this method log = logging.getLogger("SystemLogger") log.info("Solvating %s with solvent mixture %s"%(self.name, solvent.name)) suffix = suffix or solvent.name name = '{0}_{1}'.format(self.name, suffix) prmtop = name+'.prmtop' prmcrd = name+'.prmcrd' if tmp: if isinstance(tmp, str): path = tmp else: path = T.tempDir() prmtop = osp.join(path, prmtop) prmcrd = osp.join(path, prmcrd) # Initiate AmberCreateSystem with loaded AmberOFF # Solvate, neutralize self.__initCreate() self.create.solvateOrganic(self.unitName, solvent=solvent) # It will work even if its water self.create.saveAmberParm(self.unitName, prmtop, prmcrd) # Added by Xiaofeng 01/12/2016 parm = AmberParm(prmtop) action = HMassRepartition(parm) action.execute() log.info(str(action)) parm.write_parm(prmtop) # self.__cleanCreate() s = SolvatedSystem(name, prmtop, prmcrd, solvent=solvent.name, ref=self.ref) return s
def test_SettingsManager(self): """SettingsManager test""" f_in = osp.join(T.dataRoot(), 'defaults', 'settings.cfg') self.f_out = osp.join(T.tempDir(), 'settings.cfg') self.m = SettingsManager(f_in, self.f_out, createmissing=True, verbose=self.local) ns = locals() ## fetch local namespace self.m.updateNamespace(ns) ## parse and insert options into namespace if self.local: globals().update(locals()) ## publish namespace for debugging r = self.m.settings2dict()['testparam'] self.assertEqual(r, 42) ## from 'int-testparam = 42' in settings.cfg
def prepare(self): self.fname = T.testRoot() + '/rec/1A2P_rec_original.pdb' self.outPath = T.tempDir()