Example #1
0
    def _run(self, molName):

        self.molName = molName

        logger.info("Molecule: {}".format(self.molName))

        molFile = os.path.join(home("test-charge"), self.molName + ".mol2")
        self.mol = Molecule(molFile)

        self.new_mols = {}
        self.extras = {}

        self.new_mols["Gasteiger"] = fitGasteigerCharges(self.mol)
        try:
            self.new_mols["AM1-BCC"] = fitChargesWithAntechamber(self.mol,
                                                                 type="bcc")
        except:
            pass

        qm = Psi4()
        qm.theory = "B3LYP"
        qm.basis = "6-311++G**"

        workDir = os.path.join("tmp", self.molName)
        os.makedirs(workDir, exist_ok=True)

        for factor in [-10, -5, -4, -3, -2, -1]:
            logger.info("Factor: {}".format(factor))
            key = "ESP b {}".format(factor)
            np.random.seed(20181114)  # Make ESP grid generation deterministic
            self.new_mols[key], self.extras[key] = fitESPCharges(
                self.mol, qm, workDir, restraint_factor=10**factor)
Example #2
0
    def setUp(self):

        self.testDir = None

        molFile = os.path.join(home("test-qm"), "H2-0.74.mol2")
        self.h2_074 = Molecule(molFile)

        molFile = os.path.join(home("test-qm"), "H2-1.00.mol2")
        self.h2_100 = Molecule(molFile)

        molFile = os.path.join(home("test-qm"), "H2O2-90.mol2")
        self.h2o2_90 = Molecule(molFile)

        molFile = os.path.join(home("test-qm"), "Br.mol2")
        self.Br = Molecule(molFile)

        self.e_tol = 1e-5 if isinstance(self.qm, TeraChem) else 1e-10
Example #3
0
    def setUp(self):

        self.maxDiff = None

        from parameterize.home import home
        from moleculekit.molecule import Molecule

        molFile = os.path.join(home("test-fftype"), "benzamidine.mol2")
        self.mol = Molecule(molFile, guessNE=["bonds"], guess=["angles", "dihedrals"])
Example #4
0
    def setUp(self):
        from parameterize.home import home
        from moleculekit.molecule import Molecule
        from parameterize.parameterization.detect import detectEquivalentAtoms
        from parameterize.parameterization.fftype import fftype

        molFile = os.path.join(home("test-param"), "glycol.mol2")
        mol = Molecule(molFile)
        self.equivalents = detectEquivalentAtoms(mol)
        _, self.mol = fftype(mol, method="GAFF2")
Example #5
0
    def setUp(self):
        from parameterize.home import home
        from moleculekit.molecule import Molecule

        molFile = os.path.join(home("test-param"), "H2O2.mol2")
        mol = Molecule(molFile, guessNE="bonds", guess=("angles", "dihedrals"))
        self.mol = mol
        self.esp = ESP()
        self.esp.molecule = self.mol

        # Precalculating here for the tests
        equivalents = detectEquivalentAtoms(self.esp.molecule)
        self.esp._equivalent_atom_groups = equivalents[0]
        self.esp._equivalent_group_by_atom = equivalents[2]
Example #6
0
    def test_rtf_prm(self):

        from parameterize.home import home
        from parameterize.parameterization.writers import writeRTF, writePRM

        refDir = home(dataDir="test-fftype/benzamidine")
        with TemporaryDirectory() as resDir:
            parameters, mol = fftype(self.mol, method="CGenFF_2b6")
            writeRTF(mol, parameters, 0, os.path.join(resDir, "cgenff.rtf"))
            writePRM(mol, parameters, os.path.join(resDir, "cgenff.prm"))

            for testFile in ("cgenff.rtf", "cgenff.prm"):
                with self.subTest(testFile=testFile):
                    # Get rid of the first linw with parameterize version string
                    with open(os.path.join(refDir, testFile)) as refFile:
                        refData = refFile.readlines()[1:]
                    with open(os.path.join(resDir, testFile)) as resFile:
                        resData = resFile.readlines()[1:]
                    self.assertListEqual(refData, resData, msg=testFile)
Example #7
0
            if old_atom != new_atom:
                molecule.atomtype[neighbor] = new_atom
                logger.info("Change atom {} type: {} --> {}".format(
                    neighbor, old_atom, new_atom))

            # Change the P--O bond type
            bond_index = graph.edges[(node, neighbor)]["index"]
            old_bond = molecule.bondtype[bond_index]
            if old_bond != new_bond:
                molecule.bondtype[bond_index] = new_bond
                logger.info("Change bond {}--{} type: {} --> {}".format(
                    *molecule.bonds[bond_index], old_bond, new_bond))

    return molecule


if __name__ == "__main__":

    from moleculekit.molecule import Molecule
    from parameterize.charge import fitGasteigerCharges

    import sys
    import doctest

    # Prevent HTMD importing inside doctest to fail if importing gives text output
    from parameterize.home import home

    home()

    sys.exit(doctest.testmod().failed)
Example #8
0
    def setUp(self):

        self.maxDiff = None  # Make the diff to be complete
        self.dataDir = home(dataDir="test-param")
        self.testDir = os.environ.get("TESTDIR", tempname())
Example #9
0
    def setUp(self):
        from parameterize.home import home

        self.refDir = home(dataDir="test-fftype")