Esempio n. 1
0
    def test_load(self):
        myparam = parameters.Parameters()  #default
        self.assertEqual(myparam.parameters["a_eff"], 6.22, 9)

        myparam = parameters.Parameters(parameters=data.Mullins_2006)
        self.assertEqual(myparam.parameters["a_eff"], 7.5, 9)

        myparam = parameters.Parameters(parameters=here + "/Hsieh_2010.json")
        self.assertEqual(myparam.parameters["a_eff"], 7.25, 9)
Esempio n. 2
0
    def test_dump(self):
        myparam = parameters.Parameters()
        s = myparam.dump_to_string()
        param = json.loads(s)
        self.assertEqual(param["a_eff"], 6.22, 9)

        myparam.dump_to_json("/tmp/tmp.json")
        with open("/tmp/tmp.json", 'r') as f:
            param = json.load(f)
            self.assertEqual(param["a_eff"], 6.22, 9)
Esempio n. 3
0
    def test_infinity_dilution(self):
        myparam = parameters.Parameters()
        sigma1 = sigma.Sigma(mol1, myparam)
        sigma1.write_sigma_file = False
        sigma1.kernel()
        sigma2 = sigma.Sigma(mol2, myparam)
        sigma2.write_sigma_file = False
        sigma2.kernel()

        myac = ac.AC([mol1, mol2], x, T, [sigma1, sigma2], myparam)
        myac.solve_gamma_thresh = 1e-6
        myac.solve_gamma_maxiter = 500
        self.assertTrue(
            np.allclose(myac.kernel(), np.asarray([10.05122252, 0.0])))
Esempio n. 4
0
 def test_infinity_dilution3(self):
     myparam = parameters.Parameters(data.Hsieh_2010)
     sigma1 = sigma.Sigma(mol1, myparam)
     sigma1.write_sigma_file = False
     sigma1.split_sigma = True
     sigma1.kernel()
     sigma2 = sigma.Sigma(mol2, myparam)
     sigma2.write_sigma_file = False
     sigma2.split_sigma = True
     sigma2.kernel()
     myac = ac.AC([mol1, mol2], x, T, [sigma1, sigma2], myparam)
     myac.solve_gamma_thresh = 1e-6
     myac.solve_gamma_maxiter = 500
     self.assertTrue(
         np.allclose(myac.kernel(), np.asarray([8.81631154, 0.0])))
Esempio n. 5
0
 def test_dispersion(self):
     myparam = parameters.Parameters(data.Hsieh_2010)
     sigma1 = sigma.Sigma(mol1, myparam)
     sigma1.write_sigma_file = False
     sigma1.split_sigma = True
     sigma1.kernel()
     sigma2 = sigma.Sigma(mol2, myparam)
     sigma2.write_sigma_file = False
     sigma2.split_sigma = True
     sigma2.kernel()
     myac = ac.AC([mol1, mol2], x, T, [sigma1, sigma2], myparam)
     myac.solve_gamma_thresh = 1e-6
     myac.solve_gamma_maxiter = 500
     myac.dispersion = True
     self.assertTrue(
         np.allclose(myac.kernel(), np.asarray([9.55918891, 0.])))
Esempio n. 6
0
import os
import numpy as np
from pycosmosac.param import data, parameters
from pycosmosac.cosmo import cosmo
from pycosmosac.sigma import sigma
from pycosmosac.ac import ac
from pycosmosac.utils import thermo
'''
An example to compute hydration free energy of carbofuran
'''

path = os.path.abspath(os.path.dirname(__file__)) + "/"

#load parameters
myparam = parameters.Parameters(parameters=data.BIOSAC_SVP_GEPOL)

#compute sigma profile for solute
solute = "carbofuran"
mol1 = cosmo.Cosmo().load(path + solute + ".cosmo")
sigma1 = sigma.Sigma(mol1, myparam)
#whether or not to write the sigma file
sigma1.write_sigma_file = False
sigma1.sigma_filename = solute + ".sigma"
#default bounds for the grid; if "bounds too narrow" error occures, increase the numbers
sigma1.bounds = [-0.025, 0.025]
sigma1.kernel()

#compute sigma profile for solvent
solvent = "h2o"
mol2 = cosmo.Cosmo().load(path + solvent + ".cosmo")
sigma2 = sigma.Sigma(mol2, myparam)
Esempio n. 7
0
import os
import unittest
import numpy as np
from pycosmosac.param import parameters, data
from pycosmosac.cosmo import cosmo
from pycosmosac.sigma import sigma
from pycosmosac.utils import misc

here = os.path.abspath(os.path.dirname(__file__))

mycosmo = cosmo.Cosmo()
mol = mycosmo.load(here+"/h2o.cosmo")

param1 = parameters.Parameters()
sigma1 = sigma.Sigma(mol, param1)
sigma1.write_sigma_file = False
sigma1.kernel()

param3 = parameters.Parameters(data.Hsieh_2010)
sigma3 = sigma.Sigma(mol, param3)
sigma3.split_sigma = True
sigma3.write_sigma_file = False
sigma3.kernel()

class KnownValues(unittest.TestCase):
    def test_sigma(self):
        self.assertAlmostEqual(misc.fp(sigma1.pA), -1.917622937152116, 8)

    def test_sigma3(self):
        self.assertTrue(np.allclose(sigma3.pA, sigma3.pA_nhb + sigma3.pA_oh + sigma3.pA_ot))
        self.assertAlmostEqual(misc.fp(sigma3.pA_nhb), 0.049856600131970685, 8)
Esempio n. 8
0
        lngamma = lngamma_c(self.mols, self.x, self.parameters.parameters)
        if not self.split_sigma:
            lngamma += lngamma_r(self.mols, self.sigmas, self.x, self.T, self.parameters.parameters, self.solve_gamma_thresh, self.solve_gamma_maxiter)
        else:
            lngamma += lngamma_r3(self.mols, self.sigmas, self.x, self.T, self.parameters.parameters, self.solve_gamma_thresh, self.solve_gamma_maxiter)
        if self.dispersion:
            lngamma += lngamma_dsp(self.mols, self.sigmas, self.x, self.parameters.parameters)
        return lngamma


if __name__ == "__main__":
    from pycosmosac.param import parameters, data
    from pycosmosac.cosmo import cosmo
    from pycosmosac.sigma import sigma

    myparam = parameters.Parameters()

    mol1 = cosmo.Cosmo().load("./test/butane.cosmo")
    sigma1 = sigma.Sigma(mol1, myparam)
    sigma1.write_sigma_file = False
    sigma1.kernel()

    mol2 = cosmo.Cosmo().load("./test/h2o.cosmo")
    sigma2 = sigma.Sigma(mol2, myparam)
    sigma2.write_sigma_file = False
    sigma2.kernel()

    x = [0., 1.]
    T = 298.15
    myac = AC([mol1,mol2], x, T, [sigma1,sigma2], myparam)
    print(myac.kernel() - np.asarray([10.05271196, 0.0]))
Esempio n. 9
0
        ac.AC.__init__(self, mols, x, T, sigmas, parameters)
        self.comb = True

    def kernel(self):
        mu = mu_s(self.mols, self.sigmas, self.x, self.T, self.parameters.parameters)
        if self.comb:
            mu += mu_c(self.mols, self.x, self.T, self.parameters.parameters)
        return mu


if __name__ == "__main__":
    from pycosmosac.param import parameters, data
    from pycosmosac.cosmo import cosmo
    from pycosmosac.sigma import sigma

    myparam = parameters.Parameters(data.COSMORS)

    mol1 = cosmo.Cosmo().load("./test/butane.cosmo")
    sigma1 = sigma.Sigma(mol1, myparam)
    sigma1.write_sigma_file = False
    sigma1.kernel()

    mol2 = cosmo.Cosmo().load("./test/h2o.cosmo")
    sigma2 = sigma.Sigma(mol2, myparam)
    sigma2.write_sigma_file = False
    sigma2.kernel()

    x = [0., 1.]
    T = 298.15
    myrs = RS([mol1,mol2], x, T, [sigma1,sigma2], myparam)
    print(myrs.kernel())