def test_5ala_3_hop(self): """ Regression test to make sure if only one basis set is specified we get the correct input file FMO with HOP """ filename = "temp.inp" otherfile = self.fixtures + "/5ala_3_hop.fixture" molecule = fileToMol("tests/5ala.xyz") fragmentation = Fragmentation(molecule) fragmentation.setFMOHOPFragmentation() fragmentation.setQMBasis('3-21G') fragmentation.beginFragmentation() fragmentation.doFragmentation() fragmentation.finishFragmentation() directories = {'share':'share'} gamessfmo = GamessFMO(fragmentation, directories) gamessfmo.setCentralFragmentID(1) gamessfmo.setBoundariesFromString("1.0") gamessfmo.setup() gamessfmo.writeFile(filename) generated = ReadStringListFromFile(filename) fixture = ReadStringListFromFile(otherfile) self.assertEqual(len(generated), len(fixture)) for i in range(len(fixture)): self.assertEqual(generated[i], fixture[i]) self.delete_file(filename)
def test_qmmm_advanced_2(self): """ 2 qm fragments in qm/mm interface with bond breaking """ filename = "temp.inp" molecule = fileToMol("tests/5ala.xyz") fragmentation = Fragmentation(molecule, defaults=FragItDataPE) fragmentation.beginFragmentation() fragmentation.doFragmentation() fragmentation.finishFragmentation() ref_fragments = copy.deepcopy(fragmentation.getFragments()[:]) self.assertEqual(len(ref_fragments), 5) qmmm = QMMM(fragmentation, [2, 3]) qmfrag, qmcharge = qmmm.pop_qm_fragment() new_fragments = copy.deepcopy(fragmentation.getFragments()[:]) self.assertEqual(len(new_fragments), 5) self.assertEqual(len(qmfrag), len(ref_fragments[1]) + len(ref_fragments[2]) + 2) # two atoms added to QM region from two fragments self.assertEqual(len(new_fragments[0]), len(ref_fragments[0]) + 1) # one atom added to MM region for one fragment self.assertEqual(len(new_fragments[3]), len(ref_fragments[3]) + 1) # one atom added to MM region for one fragment
def test_2form8wat_2(self): filename = "temp.inp" otherfile = self.fixtures + "/2form8wat_2.fixture" molecule = fileToMol("tests/2form8wat.pdb") fragmentation = Fragmentation(molecule) fragmentation.beginFragmentation() fragmentation.doFragmentation() fragmentation.finishFragmentation() fragmentation.setFMOEFPWatersFromLayer(1) directories = {'share':''} gamessfmo = GamessFMO(fragmentation, directories) gamessfmo.setCentralFragmentID(1) gamessfmo.setBoundariesFromString("3.0") gamessfmo.setup() gamessfmo.writeFile(filename) generated = ReadStringListFromFile(filename) fixture = ReadStringListFromFile(otherfile) self.assertEqual(len(generated), len(fixture)) ignoring = False for i in range(len(fixture)): if "EFRAG" in generated[i] or "EFRAG" in fixture[i]: ignoring = True if ignoring: if "END" in generated[i] or "END" in fixture[i]: ignoring = False if not ignoring: self.assertEqual(generated[i], fixture[i]) self.delete_file(filename)
def test_2form8wat_2(self): filename = "temp.inp" otherfile = self.fixtures + "/2form8wat_2.fixture" molecule = fileToMol("tests/2form8wat.pdb") fragmentation = Fragmentation(molecule, defaults=FragItDataFMO) fragmentation.beginFragmentation() fragmentation.doFragmentation() fragmentation.finishFragmentation() fragmentation.setFMOEFPWatersFromLayer(1) directories = {'share': ''} gamessfmo = GamessFMO(fragmentation, directories) gamessfmo.setCentralFragmentID(1) gamessfmo.setBoundariesFromString("3.0") gamessfmo.setup() gamessfmo.writeFile(filename) generated = ReadStringListFromFile(filename) fixture = ReadStringListFromFile(otherfile) self.assertEqual(len(generated), len(fixture)) ignoring = False for i in range(len(fixture)): if "EFRAG" in generated[i] or "EFRAG" in fixture[i]: ignoring = True if ignoring: if "END" in generated[i] or "END" in fixture[i]: ignoring = False if not ignoring: self.assertEqual(generated[i], fixture[i]) self.delete_file(filename)
def test_5ala_3_hop(self): """ Correct input for HOP with one basis """ filename = "temp.inp" otherfile = self.fixtures + "/5ala_3_hop.fixture" molecule = fileToMol("tests/5ala.xyz") fragmentation = Fragmentation(molecule, defaults=FragItDataFMO) fragmentation.setFMOHOPFragmentation() fragmentation.setQMBasis('3-21G') fragmentation.beginFragmentation() fragmentation.doFragmentation() fragmentation.finishFragmentation() directories = {'share': 'share'} gamessfmo = GamessFMO(fragmentation, directories) gamessfmo.setCentralFragmentID(1) gamessfmo.setBoundariesFromString("1.0") gamessfmo.setup() gamessfmo.writeFile(filename) generated = ReadStringListFromFile(filename) fixture = ReadStringListFromFile(otherfile) self.assertEqual(len(generated), len(fixture)) for i in range(len(fixture)): self.assertEqual(generated[i], fixture[i]) self.delete_file(filename)
def test_qmmm_simple_2(self): """ 2 qm fragments in qm/mm interface without bond breaking """ filename = "temp.inp" molecule = fileToMol("tests/watercluster4.xyz") fragmentation = Fragmentation(molecule, defaults=FragItDataPE) fragmentation.beginFragmentation() fragmentation.doFragmentation() fragmentation.finishFragmentation() ref_fragments = fragmentation.getFragments() self.assertEqual(len(ref_fragments), 4) qmmm = QMMM(fragmentation, [1, 3]) # extracts fragments 1 and 3 qmfrag, qmcharge = qmmm.pop_qm_fragment() new_fragments = fragmentation.getFragments() self.assertEqual(qmfrag, [1, 2, 3, 7, 8, 9]) self.assertEqual(len(new_fragments), 4) self.assertEqual(new_fragments[0], [-1, -1, -1]) self.assertEqual(new_fragments[2], [-1, -1, -1])
def test_water_3(self): filename = "temp.inp" otherfile = self.fixtures + "/water_3.fixture" molecule = fileToMol("tests/watercluster4.xyz") fragmentation = Fragmentation(molecule) fragmentation.beginFragmentation() fragmentation.doFragmentation() fragmentation.finishFragmentation() directories = {'share':''} gamessfmo = GamessFMO(fragmentation, directories) gamessfmo.setCentralFragmentID(1) gamessfmo.setup() gamessfmo.writeFile(filename) generated = ReadStringListFromFile(filename) fixture = ReadStringListFromFile(otherfile) self.assertEqual(len(generated), len(fixture)) for i in range(len(fixture)): self.assertEqual(generated[i], fixture[i]) self.delete_file(filename)
def test_water_3(self): filename = "temp.inp" otherfile = self.fixtures + "/water_3.fixture" molecule = fileToMol("tests/watercluster4.xyz") fragmentation = Fragmentation(molecule, defaults=FragItDataFMO) fragmentation.beginFragmentation() fragmentation.doFragmentation() fragmentation.finishFragmentation() directories = {'share': ''} gamessfmo = GamessFMO(fragmentation, directories) gamessfmo.setCentralFragmentID(1) gamessfmo.setup() gamessfmo.writeFile(filename) generated = ReadStringListFromFile(filename) fixture = ReadStringListFromFile(otherfile) self.assertEqual(len(generated), len(fixture)) for i in range(len(fixture)): self.assertEqual(generated[i], fixture[i]) self.delete_file(filename)
def test_qmmm_simple_1(self): """ 1 qm fragment in qm/mm interface without bond breaking """ filename = "temp.inp" molecule = fileToMol("tests/watercluster4.xyz") fragmentation = Fragmentation(molecule, defaults=FragItDataPE) fragmentation.beginFragmentation() fragmentation.doFragmentation() fragmentation.finishFragmentation() ref_fragments = fragmentation.getFragments() self.assertEqual(len(ref_fragments), 4) qmmm = QMMM(fragmentation, [1]) # extracts first fragment (for user this is #1) qmfrag, qmcharge = qmmm.pop_qm_fragment() new_fragments = fragmentation.getFragments() self.assertEqual(qmfrag, [1, 2, 3]) # extracts first fragment self.assertEqual(len(new_fragments), 4) # must leave all fragments intact self.assertEqual(new_fragments[0], [-1, -1, -1]) # -1 signals "DO NOT USE"
def test_qmmm_advanced_3(self): """ 1 qm fragment + cov bound in qm/mm interface with bond breaking """ filename = "temp.inp" m1 = fileToMol("tests/5ala.xyz") frag1 = Fragmentation(m1, defaults=FragItDataPE) frag1.beginFragmentation() frag1.doFragmentation() frag1.finishFragmentation() qm1 = QMMM(frag1, [2, 3, 4]) qmf1, qmq1 = qm1.pop_qm_fragment() m2 = fileToMol("tests/5ala.xyz") frag2 = Fragmentation(m2, defaults=FragItDataPE) frag2.values['qmmm']['includecovalent'] = True frag2.beginFragmentation() frag2.doFragmentation() frag2.finishFragmentation() qm2 = QMMM(frag2, [3]) qmf2, qmq2 = qm2.pop_qm_fragment() # must produce identical results self.assertEqual(len(qmf1), len(qmf2)) self.assertEqual(frag1.getFragments(), frag2.getFragments())
def test_5ala_2_afo(self): filename = "temp.inp" otherfile = self.fixtures + "/5ala_2_afo.fixture" molecule = fileToMol("tests/5ala.xyz") fragmentation = Fragmentation(molecule) fragmentation.setQMBasis('3-21G:6-31G(d)') fragmentation.beginFragmentation() fragmentation.doFragmentation() fragmentation.finishFragmentation() directories = {'share':'share'} gamessfmo = GamessFMO(fragmentation, directories) gamessfmo.setCentralFragmentID(1) gamessfmo.setBoundariesFromString("1.0") gamessfmo.setup() gamessfmo.writeFile(filename) generated = ReadStringListFromFile(filename) fixture = ReadStringListFromFile(otherfile) self.assertEqual(len(generated), len(fixture)) for i in range(len(fixture)): self.assertEqual(generated[i], fixture[i]) self.delete_file(filename)
def test_qmmm_advanced_1(self): """ 1 qm fragment in qm/mm interface with bond breaking """ filename = "temp.inp" molecule = fileToMol("tests/5ala.xyz") fragmentation = Fragmentation(molecule, defaults=FragItDataPE) fragmentation.beginFragmentation() fragmentation.doFragmentation() fragmentation.finishFragmentation() ref_fragments = copy.deepcopy(fragmentation.getFragments()[:]) self.assertEqual(len(ref_fragments), 5) qmmm = QMMM(fragmentation, [1]) # extracts first fragment (for user this is #1) qmfrag, qmcharge = qmmm.pop_qm_fragment() new_fragments = fragmentation.getFragments()[:] self.assertEqual(len(new_fragments), 5) self.assertEqual(len(qmfrag), len(ref_fragments[0]) + 1) # one atom added to QM region self.assertEqual(len(new_fragments[1]), len(ref_fragments[1]) + 1) # one atom added to MM region
class TestGamessFMOOutputModule(unittest.TestCase): def setUp(self): self.molecule = fileToMol("tests/watercluster4.xyz") self.fragmentation = Fragmentation(self.molecule) self.fixtures = 'tests/gamess-fmo-fixtures' def delete_file(self,filename): try: f = open(filename) except IOError: return finally: f.close() os.remove(filename) def test_water_1(self): filename = "temp.inp" otherfile = self.fixtures + "/water_1.fixture" gamessfmo = GamessFMO(self.fragmentation) gamessfmo.setup() gamessfmo.writeFile(filename) generated = ReadStringListFromFile(filename) fixture = ReadStringListFromFile(otherfile) self.assertEqual(len(generated), len(fixture)) for i in range(len(fixture)): self.assertEqual(generated[i], fixture[i]) self.delete_file(filename) def test_water_2(self): filename = "temp.inp" otherfile = self.fixtures + "/water_2.fixture" self.fragmentation.beginFragmentation() self.fragmentation.doFragmentation() self.fragmentation.finishFragmentation() gamessfmo = GamessFMO(self.fragmentation) gamessfmo.setup() gamessfmo.writeFile(filename) generated = ReadStringListFromFile(filename) fixture = ReadStringListFromFile(otherfile) self.assertEqual(len(generated), len(fixture)) for i in range(len(fixture)): self.assertEqual(generated[i], fixture[i]) self.delete_file(filename) def test_water_3(self): filename = "temp.inp" otherfile = self.fixtures + "/water_3.fixture" self.fragmentation.beginFragmentation() self.fragmentation.doFragmentation() self.fragmentation.finishFragmentation() gamessfmo = GamessFMO(self.fragmentation) gamessfmo.setCentralFragmentID(1) gamessfmo.setup() gamessfmo.writeFile(filename) generated = ReadStringListFromFile(filename) fixture = ReadStringListFromFile(otherfile) self.assertEqual(len(generated), len(fixture)) for i in range(len(fixture)): self.assertEqual(generated[i], fixture[i]) self.delete_file(filename) def test_water_4(self): filename = "temp.inp" otherfile = self.fixtures + "/water_4.fixture" self.fragmentation.beginFragmentation() self.fragmentation.doFragmentation() self.fragmentation.finishFragmentation() gamessfmo = GamessFMO(self.fragmentation) gamessfmo.setCentralFragmentID(1) gamessfmo.setBoundariesFromString("1.0") gamessfmo.setup() gamessfmo.writeFile(filename) generated = ReadStringListFromFile(filename) fixture = ReadStringListFromFile(otherfile) self.assertEqual(len(generated), len(fixture)) for i in range(len(fixture)): self.assertEqual(generated[i], fixture[i]) self.delete_file(filename) def test_water_5(self): filename = "temp.inp" otherfile = self.fixtures + "/water_5.fixture" self.fragmentation.beginFragmentation() self.fragmentation.doFragmentation() self.fragmentation.finishFragmentation() gamessfmo = GamessFMO(self.fragmentation) gamessfmo.setCentralFragmentID(1) gamessfmo.setBoundariesFromString("1.0") gamessfmo.setActiveAtomsDistance(1.0) gamessfmo.setBufferMaxDistance(1.0) gamessfmo.setup() gamessfmo.writeFile(filename) generated = ReadStringListFromFile(filename) fixture = ReadStringListFromFile(otherfile) self.assertEqual(len(generated), len(fixture)) for i in range(len(fixture)): self.assertEqual(generated[i], fixture[i]) self.delete_file(filename)