diff --git a/.github/workflows/cont_int.yml b/.github/workflows/cont_int.yml new file mode 100644 index 00000000..377cef79 --- /dev/null +++ b/.github/workflows/cont_int.yml @@ -0,0 +1,89 @@ +name: CI + +on: + push: + branches: + - main + pull_request: + branches: + - main + types: [opened, synchronize, reopened, ready_for_review] + schedule: + - cron: '0 0 * * *' + + +jobs: + build: + runs-on: ubuntu-latest + defaults: + run: + shell: bash -el {0} + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Checkout RMG-Py + uses: actions/checkout@v3 + with: + repository: ReactionMechanismGenerator/RMG-Py + path: RMG-Py + ref: main + fetch-depth: 1 + + - name: Checkout RMG-database + uses: actions/checkout@v3 + with: + repository: ReactionMechanismGenerator/RMG-database + path: RMG-database + ref: main + fetch-depth: 1 + + - name: Set up AutoTST + uses: conda-incubator/setup-miniconda@v2 + with: + environment-file: environment.yml + miniforge-variant: Mambaforge + miniforge-version: latest + activate-environment: tst_env + use-mamba: true + + - name: Update Environment + run: | + mamba env update -f environment.yml + + - name: Add AUTOTST to ENV + run: | + export AUTOTST=$(pwd) + export PYTHONPATH=$PYTHONPATH:$AUTOTST + echo 'export PYTHONPATH=$PYTHONPATH:'"$(pwd)" >> $GITHUB_ENV + echo 'export PATH=$PATH:'"$(pwd)" >> $GITHUB_ENV + echo 'export PYTHONPATH=$PYTHONPATH:'"$(pwd)" >> ~/.bashrc + echo 'export PATH=$PATH:'"$(pwd)" >> ~/.bashrc + + - name: Install RMG-Py + run: | + cd RMG-Py + mamba env create -f environment.yml + cd .. + + - name: Cythonize RMG-Py + run: | + cd RMG-Py + conda activate rmg_env + make + echo "PYTHONPATH=$(pwd):$PYTHONPATH" >> $GITHUB_ENV + echo "PATH=$(pwd):$PATH" >> $GITHUB_ENV + echo "export rmgpy_path=$(pwd)" >> $GITHUB_ENV + echo "PYTHONPATH=$(pwd):$PYTHONPATH" >> ~/.bashrc + echo "PATH=$(pwd):$PATH" >> ~/.bashrc + echo "export rmgpy_path=$(pwd)" >> ~/.bashrc + + - name: Unittest + run: | + source ~/.bashrc + conda activate tst_env + make unittests + \ No newline at end of file diff --git a/.gitignore b/.gitignore index 5b3e5770..7b2a05fd 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,6 @@ *.symm *.ase *.com -*.log + *.ts *.kinetics diff --git a/autotst/calculator/gaussian.py b/autotst/calculator/gaussian.py index 550093c7..a0af1442 100644 --- a/autotst/calculator/gaussian.py +++ b/autotst/calculator/gaussian.py @@ -35,9 +35,9 @@ import cclib.io import autotst -from ..reaction import Reaction, TS -from ..species import Species, Conformer -from ..geometry import Torsion +from autotst.reaction import Reaction, TS +from autotst.species import Species, Conformer +from autotst.geometry import Torsion import ase import ase.calculators.gaussian @@ -179,7 +179,8 @@ def get_rotor_calc(self, addsec=[addsec[:-1]]) ase_gaussian.atoms = self.conformer.ase_molecule - del ase_gaussian.parameters['force'] + if 'force' in ase_gaussian.parameters: + del ase_gaussian.parameters['force'] return ase_gaussian def get_conformer_calc(self): @@ -232,7 +233,8 @@ def get_conformer_calc(self): extra=f"opt=(calcfc,maxcycles=900,{self.convergence}) freq IOP(7/33=1,2/16=3) scf=(maxcycle=900)", multiplicity=self.conformer.rmg_molecule.multiplicity) ase_gaussian.atoms = self.conformer.ase_molecule - del ase_gaussian.parameters['force'] + if 'force' in ase_gaussian.parameters: + del ase_gaussian.parameters['force'] return ase_gaussian def get_shell_calc(self): @@ -293,7 +295,8 @@ def get_shell_calc(self): addsec=[combos] ) ase_gaussian.atoms = self.conformer.ase_molecule - del ase_gaussian.parameters['force'] + if 'force' in ase_gaussian.parameters: + del ase_gaussian.parameters['force'] return ase_gaussian @@ -353,7 +356,9 @@ def get_center_calc(self): addsec=[addsec[:-1]] ) ase_gaussian.atoms = self.conformer.ase_molecule - del ase_gaussian.parameters['force'] + + if 'force' in ase_gaussian.parameters: + del ase_gaussian.parameters['force'] return ase_gaussian @@ -399,7 +404,8 @@ def get_overall_calc(self): extra="opt=(ts,calcfc,noeigentest,maxcycles=900) freq scf=(maxcycle=900) IOP(7/33=1,2/16=3)", multiplicity=self.conformer.rmg_molecule.multiplicity) ase_gaussian.atoms = self.conformer.ase_molecule - del ase_gaussian.parameters['force'] + if 'force' in ase_gaussian.parameters: + del ase_gaussian.parameters['force'] return ase_gaussian @@ -444,7 +450,8 @@ def get_irc_calc(self): multiplicity=self.conformer.rmg_molecule.multiplicity ) ase_gaussian.atoms = self.conformer.ase_molecule - del ase_gaussian.parameters['force'] + if 'force' in ase_gaussian.parameters: + del ase_gaussian.parameters['force'] return ase_gaussian diff --git a/autotst/calculator/gaussian_test.py b/autotst/calculator/gaussian_test.py index 0b9b14e2..ad6ec121 100644 --- a/autotst/calculator/gaussian_test.py +++ b/autotst/calculator/gaussian_test.py @@ -34,10 +34,12 @@ import cclib.io import autotst -from ..reaction import Reaction, TS -from ..species import Species, Conformer -from ..geometry import Torsion -from .gaussian import Gaussian +from autotst.common import AUTOTST_PATH +from autotst.reaction import Reaction, TS +from autotst.species import Species, Conformer +from autotst.geometry import Torsion +from autotst.calculator.gaussian import Gaussian + import ase import ase.calculators.gaussian @@ -48,7 +50,7 @@ class TestGaussian(unittest.TestCase): def setUp(self): - os.environ["PATH"] = os.path.expandvars("$AUTOTST/test/bin:") + os.environ["PATH"] + os.environ["PATH"] = os.path.join(AUTOTST_PATH, "test/bin") + os.pathsep + os.environ["PATH"] rxn = Reaction(label='C+[O]O_[CH3]+OO') ts = rxn.ts["forward"][0] ts.get_molecules() @@ -105,11 +107,11 @@ def test_irc_calc(self): self.assertIsInstance(calc_dict,dict) def tearDown(self): - if os.path.exists(os.path.expandvars("$AUTOTST/autotst/calculator/ts")): - shutil.rmtree(os.path.expandvars("$AUTOTST/autotst/calculator/ts")) - if os.path.exists(os.path.expandvars("$AUTOTST/autotst/calculator/species")): - shutil.rmtree(os.path.expandvars("$AUTOTST/autotst/calculator/species")) - + if os.path.exists(os.path.join(AUTOTST_PATH, "calculator/ts")): + shutil.rmtree(os.path.join(AUTOTST_PATH, "calculator/ts")) + if os.path.exists(os.path.join(AUTOTST_PATH, "calculator/species")): + shutil.rmtree(os.path.join(AUTOTST_PATH, "calculator/species")) + if __name__ == "__main__": unittest.main(testRunner=unittest.TextTestRunner(verbosity=2)) diff --git a/autotst/calculator/orca_test.py b/autotst/calculator/orca_test.py index 95223684..90889948 100644 --- a/autotst/calculator/orca_test.py +++ b/autotst/calculator/orca_test.py @@ -31,15 +31,17 @@ import unittest import os, shutil -from .orca import Orca -from ..species import Conformer +from autotst.common import AUTOTST_PATH +from autotst.calculator.orca import Orca +from autotst.species import Conformer + + class TestOrca(unittest.TestCase): def setUp(self): conf = Conformer(smiles='C') - self.orca = Orca(conformer=conf, directory=os.path.expandvars( - "$AUTOTST/autotst/calculator/fod")) + self.orca = Orca(conformer=conf, directory=os.path.join(AUTOTST_PATH,"calculator/fod")) def test_load_conformer_attributes(self): charge = 0 @@ -59,21 +61,17 @@ def test_write_fod_input(self): self.assertTrue(os.path.exists(os.path.join(self.orca.directory,'C_fod.inp'))) def test_check_normal_termination(self): - path = os.path.expandvars( - "$AUTOTST/test/bin/log-files/C_fod.log") + path = os.path.join(AUTOTST_PATH,"test/bin/log-files/C_fod.log") self.assertTrue(self.orca.check_normal_termination(path)) def test_read_fod_log(self): - path = os.path.expandvars( - "$AUTOTST/test/bin/log-files/C_fod.log") + path = os.path.join(AUTOTST_PATH,"test/bin/log-files/C_fod.log") fod = self.orca.read_fod_log(path) self.assertEquals(float(0.000025),fod) def tearDown(self): - - if os.path.exists(os.path.expandvars("$AUTOTST/autotst/calculator/fod")): - shutil.rmtree(os.path.expandvars( - "$AUTOTST/autotst/calculator/fod")) + if os.path.exists(os.path.join(AUTOTST_PATH,"calculator/fod")): + shutil.rmtree(os.path.join(AUTOTST_PATH,"calculator/fod")) if __name__ == "__main__": unittest.main(testRunner=unittest.TextTestRunner(verbosity=2)) diff --git a/autotst/calculator/statmech_test.py b/autotst/calculator/statmech_test.py index 30d67693..df87ec87 100644 --- a/autotst/calculator/statmech_test.py +++ b/autotst/calculator/statmech_test.py @@ -29,8 +29,9 @@ ########################################################################## import unittest, os, sys, shutil -from ..reaction import Reaction -from .statmech import StatMech +from autotst.common import AUTOTST_PATH +from autotst.reaction import Reaction +from autotst.calculator.statmech import StatMech import rmgpy.reaction import rmgpy.kinetics @@ -40,7 +41,7 @@ def setUp(self): self.reaction.get_labeled_reaction() self.reaction.generate_reactants_and_products() - directory = os.path.expandvars("$AUTOTST/test") + directory = os.path.join(AUTOTST_PATH, "test") if not os.path.exists(os.path.join(directory, "ts", self.reaction.label)): os.makedirs(os.path.join(directory, "ts", self.reaction.label)) if not os.path.exists(os.path.join(directory, "ts", self.reaction.label, self.reaction.label + ".log")): @@ -66,13 +67,13 @@ def setUp(self): def tearDown(self): try: - directory = os.path.expandvars("$AUTOTST/test") + directory = os.path.join(AUTOTST_PATH, "test") if os.path.exists(os.path.join(directory, "ts")): shutil.rmtree(os.path.join(directory, "ts")) if os.path.exists(os.path.join(directory, "species")): shutil.rmtree(os.path.join(directory, "species")) - for head, _, files in os.walk(os.path.expandvars("$AUTOTST")): + for head, _, files in os.walk(AUTOTST_PATH): for fi in files: if fi.endswith(".symm"): os.remove(os.path.join(head, fi)) diff --git a/autotst/calculator/vibrational_analysis_test.py b/autotst/calculator/vibrational_analysis_test.py index 5ff6cad5..a99f0c00 100644 --- a/autotst/calculator/vibrational_analysis_test.py +++ b/autotst/calculator/vibrational_analysis_test.py @@ -36,9 +36,10 @@ import cclib.io import rmgpy import rmgpy.molecule -from ..reaction import Reaction, TS -from ..species import Species, Conformer -from .vibrational_analysis import percent_change, VibrationalAnalysis +from autotst.common import AUTOTST_PATH +from autotst.reaction import Reaction, TS +from autotst.species import Species, Conformer +from autotst.calculator.vibrational_analysis import percent_change, VibrationalAnalysis class VibrationalAnalysisTest(unittest.TestCase): @@ -48,7 +49,7 @@ def setUp(self): self.ts = self.reaction.ts["forward"][0] self.ts.get_molecules() - directory = os.path.expandvars("$AUTOTST/test") + directory = os.path.join(AUTOTST_PATH,"test") if not os.path.exists(os.path.join(directory, "ts", self.reaction.label, "conformers")): os.makedirs(os.path.join(directory, "ts", self.reaction.label, "conformers")) if not os.path.exists(os.path.join(directory, "ts", self.reaction.label, self.reaction.label + ".log")): @@ -140,11 +141,11 @@ def test_validate(self): if __name__ == "__main__": unittest.main(testRunner=unittest.TextTestRunner(verbosity=2)) try: - directory = os.path.expandvars("$AUTOTST/test") + directory = os.path.join(AUTOTST_PATH, "test") if os.path.exists(os.path.join(directory, "ts")): shutil.rmtree(os.path.join(directory, "ts")) - for head, _, files in os.walk(os.path.expandvars("$AUTOTST")): + for head, _, files in os.walk(AUTOTST_PATH): for fi in files: if fi.endswith(".symm"): os.remove(os.path.join(head, fi)) diff --git a/autotst/common.py b/autotst/common.py new file mode 100644 index 00000000..d2edd623 --- /dev/null +++ b/autotst/common.py @@ -0,0 +1,22 @@ +""" + +This module contains common functions that are used throughout AutoTST +Therefore, it should not import any other AutoTST modules to avoid circular imports + +""" + +import os + +import rmgpy + + +# Absolute path to the AutoTST directory +AUTOTST_PATH = os.path.dirname(os.path.abspath(__file__)) +# Absolute path to the AutoTST database directory - One directory above AUTOTST_PATH +AUTOTST_DATABASE_PATH = os.path.abspath(os.path.join(AUTOTST_PATH, os.pardir)) +# Abolsute path to RMG-Py directory +RMG_PY_PATH = os.path.abspath(os.path.dirname(os.path.dirname(rmgpy.__file__))) +# Absolute path to the RMG-database directory +RMG_DATABASE_PATH = os.path.abspath(os.path.dirname(os.path.dirname(rmgpy.settings['database.directory']))) + +VERSION = "1.0.0" diff --git a/autotst/data/base_test.py b/autotst/data/base_test.py index 5986031f..76700949 100644 --- a/autotst/data/base_test.py +++ b/autotst/data/base_test.py @@ -34,8 +34,9 @@ import logging import numpy as np import autotst -from ..reaction import Reaction -from .base import QMData, DistanceData, TransitionStates, TransitionStateDepository, TSGroups +from autotst.common import AUTOTST_PATH, AUTOTST_DATABASE_PATH +from autotst.reaction import Reaction +from autotst.data.base import QMData, DistanceData, TransitionStates, TransitionStateDepository, TSGroups import rmgpy import rmgpy.data.rmg @@ -61,7 +62,7 @@ def test_get_qmdata(self): A method that is designed to obtain the QM data for a transitionstate or molecule Returns a qmdata object """ - self.qmdata.get_qmdata(os.path.expandvars("$AUTOTST/test/bin/log-files/CC+[O]O_[CH2]C+OO_forward_0.log")) + self.qmdata.get_qmdata(os.path.join(AUTOTST_PATH, "test", "bin", "log-files", "CC+[O]O_[CH2]C+OO_forward_0.log")) self.assertEqual(self.qmdata.ground_state_degeneracy, 2) self.assertAlmostEqual(self.qmdata.molecular_mass[0], 126.1, places=1) @@ -155,7 +156,7 @@ def setUp(self): self.settings = { "file_path": os.path.join( - os.path.expandvars("$AUTOTST"), "database", "H_Abstraction", "TS_training", "reactions.py" + os.path.join(AUTOTST_DATABASE_PATH, "database", "H_Abstraction", "TS_training", "reactions.py") ), "local_context": {"DistanceData":DistanceData}, "global_context": {'__builtins__': None} @@ -177,7 +178,7 @@ def setUp(self): self.settings = { "file_path": os.path.join( - os.path.expandvars("$AUTOTST"), "database", "H_Abstraction", "TS_groups.py" + os.path.join(AUTOTST_DATABASE_PATH, "database", "H_Abstraction", "TS_groups.py") ), "local_context": {"DistanceData":DistanceData}, "global_context": {'__builtins__': None} diff --git a/autotst/data/inputoutput_test.py b/autotst/data/inputoutput_test.py index a32eea21..7457ef0f 100644 --- a/autotst/data/inputoutput_test.py +++ b/autotst/data/inputoutput_test.py @@ -35,9 +35,10 @@ import shutil import numpy as np import autotst -from ..reaction import Reaction -from .base import QMData, DistanceData -from .inputoutput import InputOutput +from autotst.common import AUTOTST_PATH +from autotst.reaction import Reaction +from autotst.data.base import QMData, DistanceData +from autotst.data.inputoutput import InputOutput import rmgpy.kinetics class TestInputOutput(unittest.TestCase): @@ -46,11 +47,11 @@ def setUp(self): self.reaction = Reaction("CC+[O]O_[CH2]C+OO") self.io = InputOutput( reaction=self.reaction, - directory=os.path.expandvars("$AUTOTST/test/") + directory=os.path.join(AUTOTST_PATH, "test") ) try: os.makedirs(os.path.join( - os.path.expandvars("$AUTOTST/test/"), + AUTOTST_PATH, "ts", self.reaction.label )) @@ -58,11 +59,12 @@ def setUp(self): try: shutil.copy( os.path.join( - os.path.expandvars("$AUTOTST/test/bin/log-files"), + os.path.join(AUTOTST_PATH,"test","bin","log-files"), self.reaction.label + "_forward_0.log" ), os.path.join( - os.path.expandvars("$AUTOTST/test/"), + AUTOTST_PATH, + "test", "ts", self.reaction.label, self.reaction.label + ".log" @@ -77,7 +79,8 @@ def test_ts_file_path(self): self.assertEqual( path, os.path.join( - os.path.expandvars("$AUTOTST/test/"), + AUTOTST_PATH, + "test", "ts", self.reaction.label, self.reaction.label + ".ts" @@ -89,7 +92,8 @@ def test_kinetics_file_path(self): self.assertEqual( path, os.path.join( - os.path.expandvars("$AUTOTST/test/"), + AUTOTST_PATH, + "test", "ts", self.reaction.label, self.reaction.label + ".kinetics" diff --git a/autotst/data/update.py b/autotst/data/update.py index c1dbc5f7..a113ce41 100644 --- a/autotst/data/update.py +++ b/autotst/data/update.py @@ -34,9 +34,10 @@ import pandas as pd import numpy as np from collections import defaultdict, OrderedDict -from ..species import Species, Conformer -from ..reaction import Reaction, TS -from .base import * +from autotst.common import AUTOTST_PATH +from autotst.species import Species, Conformer +from autotst.reaction import Reaction, TS +from autotst.data.base import * import rmgpy import rmgpy.molecule import rmgpy.data.base @@ -395,8 +396,7 @@ def update_databases(reactions, method='', short_desc='', reaction_family='', ov # logging.warning( # 'Defaulting to reaction family of {}'.format(reaction_family)) - general_path = os.path.join(os.path.expandvars( - '$AUTOTST'), 'database', reaction_family, 'TS_training') + general_path = os.path.join(AUTOTST_PATH, 'database', reaction_family, 'TS_training') dict_path = os.path.join(general_path, 'dictionary.txt') old_reactions_path = os.path.join(general_path, 'reactions.py') @@ -469,7 +469,7 @@ def TS_Database_Update(families, path=None, auto_save=False): assert isinstance( families, list), "Families must be a list. If singular family, still keep it in list" acceptable_families = os.listdir(os.path.join( - os.path.expandvars("$AUTOTST"), "database")) + AUTOTST_PATH, "database")) for family in families: assert isinstance( family, str), "Family names must be provided as strings" @@ -555,8 +555,7 @@ def __init__(self, family, rmg_database, path=None): if path is not None: self.path = path else: - self.path = os.path.join(os.path.expandvars( - "$AUTOTST"), "database", family) + self.path = os.path.join(AUTOTST_PATH, "database", family) self.family = family diff --git a/autotst/geometry_test.py b/autotst/geometry_test.py index 18c7fe87..7b0682b3 100644 --- a/autotst/geometry_test.py +++ b/autotst/geometry_test.py @@ -29,7 +29,7 @@ ########################################################################## import unittest -from .geometry import Bond, Angle, Torsion, CisTrans, ChiralCenter +from autotst.geometry import Bond, Angle, Torsion, CisTrans, ChiralCenter class TestBond(unittest.TestCase): def setUp(self): diff --git a/autotst/job/job_test.py b/autotst/job/job_test.py index 3a39ea1d..1c060dc4 100644 --- a/autotst/job/job_test.py +++ b/autotst/job/job_test.py @@ -30,6 +30,7 @@ import os, sys, subprocess, shutil import unittest +from autotst.common import AUTOTST_PATH from autotst.reaction import Reaction, TS from autotst.species import Species, Conformer from autotst.data.base import TransitionStates @@ -42,10 +43,11 @@ class JobTest(unittest.TestCase): def setUp(self): - os.environ["PATH"] = os.path.expandvars("$AUTOTST/test/bin:") + os.environ["PATH"] + os.environ["PATH"] = os.path.join(AUTOTST_PATH, "test/bin") + os.pathsep + os.environ["PATH"] + os.environ["TEST_STATUS"] = "None" self.reaction = Reaction("CC+[O]O_[CH2]C+OO") - self.calculator = Gaussian(directory=os.path.expandvars("$AUTOTST/test")) + self.calculator = Gaussian(directory=os.path.join(AUTOTST_PATH, "test")) self.job = Job( reaction=self.reaction, calculator=self.calculator, @@ -77,7 +79,7 @@ def test_setup2(self): def test_read_log(self): - path = os.path.expandvars("$AUTOTST/test/bin/log-files/CC_0.log") + path = os.path.join(AUTOTST_PATH, "test/bin/log-files/CC_0.log") atoms = self.job.read_log(path) @@ -133,7 +135,8 @@ def test_calculate_species(self): self.job.calculate_species(species) for smiles in species.conformers.keys(): self.assertTrue(os.path.exists(os.path.join( - os.path.expandvars("$AUTOTST/test/species/"), + AUTOTST_PATH, + "test/species", smiles, smiles + ".log" ))) diff --git a/autotst/reaction.py b/autotst/reaction.py index 0c8ba995..cf47dc21 100644 --- a/autotst/reaction.py +++ b/autotst/reaction.py @@ -49,9 +49,9 @@ import rmgpy.exceptions import autotst -from .data.base import DistanceData, TransitionStateDepository, TSGroups, TransitionStates -from .species import Species, Conformer -from .geometry import Torsion, Angle, Bond, CisTrans, ChiralCenter +from autotst.data.base import DistanceData, TransitionStateDepository, TSGroups, TransitionStates +from autotst.species import Species, Conformer +from autotst.geometry import Torsion, Angle, Bond, CisTrans, ChiralCenter FORMAT = "%(filename)s:%(lineno)d %(funcName)s %(levelname)s %(message)s" logging.basicConfig(format=FORMAT, level=logging.INFO) diff --git a/autotst/reaction_test.py b/autotst/reaction_test.py index 51701290..5713c07c 100644 --- a/autotst/reaction_test.py +++ b/autotst/reaction_test.py @@ -35,8 +35,8 @@ import rmgpy.reaction import rmgpy.molecule import rmgpy.data.rmg -from .reaction import Reaction, TS -from .data.base import TransitionStates +from autotst.reaction import Reaction, TS +from autotst.data.base import TransitionStates class TestReaction(unittest.TestCase): def setUp(self): diff --git a/autotst/species.py b/autotst/species.py index 7c0c4402..bdb73eda 100644 --- a/autotst/species.py +++ b/autotst/species.py @@ -28,7 +28,7 @@ # ########################################################################## -from .geometry import CisTrans, Torsion, Angle, Bond, ChiralCenter +from autotst.geometry import CisTrans, Torsion, Angle, Bond, ChiralCenter import numpy as np import os, logging diff --git a/autotst/species_test.py b/autotst/species_test.py index 73e4e9b2..4f1db58a 100644 --- a/autotst/species_test.py +++ b/autotst/species_test.py @@ -38,8 +38,8 @@ import rmgpy.molecule import autotst -from .geometry import Bond, Angle, Torsion, CisTrans, ChiralCenter -from .species import Species, Conformer +from autotst.geometry import Bond, Angle, Torsion, CisTrans, ChiralCenter +from autotst.species import Species, Conformer class TestConformer(unittest.TestCase): def setUp(self): diff --git a/test/bin/g16 b/autotst/test/bin/g16 similarity index 100% rename from test/bin/g16 rename to autotst/test/bin/g16 diff --git a/test/bin/log-files/CC+[O]O_[CH2]C+OO_forward_0.log b/autotst/test/bin/log-files/CC+[O]O_[CH2]C+OO_forward_0.log similarity index 100% rename from test/bin/log-files/CC+[O]O_[CH2]C+OO_forward_0.log rename to autotst/test/bin/log-files/CC+[O]O_[CH2]C+OO_forward_0.log diff --git a/test/bin/log-files/CC+[O]O_[CH2]C+OO_forward_center_0.log b/autotst/test/bin/log-files/CC+[O]O_[CH2]C+OO_forward_center_0.log similarity index 100% rename from test/bin/log-files/CC+[O]O_[CH2]C+OO_forward_center_0.log rename to autotst/test/bin/log-files/CC+[O]O_[CH2]C+OO_forward_center_0.log diff --git a/test/bin/log-files/CC+[O]O_[CH2]C+OO_forward_shell_0.log b/autotst/test/bin/log-files/CC+[O]O_[CH2]C+OO_forward_shell_0.log similarity index 100% rename from test/bin/log-files/CC+[O]O_[CH2]C+OO_forward_shell_0.log rename to autotst/test/bin/log-files/CC+[O]O_[CH2]C+OO_forward_shell_0.log diff --git a/test/bin/log-files/CC+[O]O_[CH2]C+OO_reverse_0.log b/autotst/test/bin/log-files/CC+[O]O_[CH2]C+OO_reverse_0.log similarity index 100% rename from test/bin/log-files/CC+[O]O_[CH2]C+OO_reverse_0.log rename to autotst/test/bin/log-files/CC+[O]O_[CH2]C+OO_reverse_0.log diff --git a/test/bin/log-files/CC+[O]O_[CH2]C+OO_reverse_center_0.log b/autotst/test/bin/log-files/CC+[O]O_[CH2]C+OO_reverse_center_0.log similarity index 100% rename from test/bin/log-files/CC+[O]O_[CH2]C+OO_reverse_center_0.log rename to autotst/test/bin/log-files/CC+[O]O_[CH2]C+OO_reverse_center_0.log diff --git a/test/bin/log-files/CC+[O]O_[CH2]C+OO_reverse_shell_0.log b/autotst/test/bin/log-files/CC+[O]O_[CH2]C+OO_reverse_shell_0.log similarity index 100% rename from test/bin/log-files/CC+[O]O_[CH2]C+OO_reverse_shell_0.log rename to autotst/test/bin/log-files/CC+[O]O_[CH2]C+OO_reverse_shell_0.log diff --git a/test/bin/log-files/CC_0.log b/autotst/test/bin/log-files/CC_0.log similarity index 100% rename from test/bin/log-files/CC_0.log rename to autotst/test/bin/log-files/CC_0.log diff --git a/test/bin/log-files/C[CH2]_0.log b/autotst/test/bin/log-files/C[CH2]_0.log similarity index 100% rename from test/bin/log-files/C[CH2]_0.log rename to autotst/test/bin/log-files/C[CH2]_0.log diff --git a/test/bin/log-files/C_fod.log b/autotst/test/bin/log-files/C_fod.log similarity index 100% rename from test/bin/log-files/C_fod.log rename to autotst/test/bin/log-files/C_fod.log diff --git a/test/bin/log-files/OO_0.log b/autotst/test/bin/log-files/OO_0.log similarity index 100% rename from test/bin/log-files/OO_0.log rename to autotst/test/bin/log-files/OO_0.log diff --git a/test/bin/log-files/[CH3]+CC(F)(F)F_C+[CH2]C(F)(F)F.log b/autotst/test/bin/log-files/[CH3]+CC(F)(F)F_C+[CH2]C(F)(F)F.log similarity index 100% rename from test/bin/log-files/[CH3]+CC(F)(F)F_C+[CH2]C(F)(F)F.log rename to autotst/test/bin/log-files/[CH3]+CC(F)(F)F_C+[CH2]C(F)(F)F.log diff --git a/test/bin/log-files/[O]O_0.log b/autotst/test/bin/log-files/[O]O_0.log similarity index 100% rename from test/bin/log-files/[O]O_0.log rename to autotst/test/bin/log-files/[O]O_0.log diff --git a/test/bin/sbatch b/autotst/test/bin/sbatch similarity index 100% rename from test/bin/sbatch rename to autotst/test/bin/sbatch diff --git a/test/bin/squeue b/autotst/test/bin/squeue similarity index 100% rename from test/bin/squeue rename to autotst/test/bin/squeue diff --git a/environment.yml b/environment.yml index 0bf87d6d..934b0caa 100644 --- a/environment.yml +++ b/environment.yml @@ -1,17 +1,184 @@ name: tst_env channels: - - defaults - - cantera - - pytorch + - rmg - anaconda - conda-forge + - defaults dependencies: - - python - - rmg::rmg == 3.0.0 - - conda-forge::ase - - conda-forge::cclib >= 1.7.0 - - conda-forge::py3dmol - - rmg::rdkit >= 2019.03.4 - - codecov - - nose - - matplotlib + - _libgcc_mutex=0.1 + - _openmp_mutex=4.5 + - algopy=0.5.7 + - ase=3.22.1 + - biopython=1.79 + - blas=1.0 + - bottleneck=1.3.5 + - brotli=1.0.9 + - brotli-bin=1.0.9 + - brotli-python=1.0.9 + - bzip2=1.0.8 + - c-ares=1.19.1 + - ca-certificates=2023.7.22 + - cached-property=1.5.2 + - cached_property=1.5.2 + - cairo=1.16.0 + - cantera=2.6.0 + - cclib=1.7.2 + - certifi=2023.7.22 + - cffi=1.15.1 + - charset-normalizer=3.2.0 + - click=8.1.3 + - conda=22.9.0 + - conda-package-handling=2.0.2 + - conda-package-streaming=0.8.0 + - coolprop=6.4.1 + - cryptography=38.0.2 + - cycler=0.11.0 + - expat=2.5.0 + - fftw=3.3.9 + - flask=2.2.3 + - fmt=9.1.0 + - fontconfig=2.14.2 + - fonttools=4.38.0 + - freetype=2.12.1 + - gettext=0.21.1 + - glib=2.76.4 + - glib-tools=2.76.4 + - gmp=6.2.1 + - gprof2dot=2017.9.19 + - h5py=3.7.0 + - hdf5=1.12.2 + - icu=58.2 + - idna=3.4 + - importlib-metadata=4.11.4 + - intel-openmp=2021.4.0 + - itsdangerous=2.1.2 + - jinja2=3.1.2 + - joblib=1.3.0 + - jpeg=9e + - keyutils=1.6.1 + - kiwisolver=1.4.4 + - krb5=1.21.1 + - lcms2=2.14 + - ld_impl_linux-64=2.40 + - lerc=4.0.0 + - libaec=1.0.6 + - libblas=3.9.0 + - libboost=1.67.0 + - libbrotlicommon=1.0.9 + - libbrotlidec=1.0.9 + - libbrotlienc=1.0.9 + - libcantera=2.6.0 + - libcblas=3.9.0 + - libcurl=8.2.1 + - libdeflate=1.14 + - libedit=3.1.20191231 + - libev=4.33 + - libexpat=2.5.0 + - libffi=3.4.2 + - libgcc-ng=13.1.0 + - libgfortran-ng=13.1.0 + - libgfortran5=13.1.0 + - libglib=2.76.4 + - libgomp=13.1.0 + - libiconv=1.17 + - liblapack=3.9.0 + - libnghttp2=1.52.0 + - libnsl=2.0.0 + - libopenblas=0.3.23 + - libpng=1.6.39 + - libsqlite=3.42.0 + - libssh2=1.11.0 + - libstdcxx-ng=13.1.0 + - libtiff=4.4.0 + - libuuid=2.38.1 + - libwebp-base=1.3.1 + - libxcb=1.13 + - libxml2=2.9.9 + - libzlib=1.2.13 + - lpsolve=5.5.2.5 + - lpsolve55=5.5 + - lz4-c=1.9.4 + - markupsafe=2.1.1 + - matplotlib-base=3.5.3 + - metis=5.1.1 + - mkl=2021.4.0 + - mkl-service=2.4.0 + - mpfr=4.2.0 + - mpmath=1.2.1 + - munkres=1.1.4 + - ncurses=6.4 + - nose=1.3.7 + - numdifftools=0.9.41 + - numexpr=2.8.4 + - numpy=1.21.6 + - openbabel=3.0.0 + - openjpeg=2.5.0 + - openssl=3.1.1 + - packaging=23.1 + - pandas=1.3.5 + - patsy=0.5.3 + - pcre2=10.40 + - periodictable=1.5.2 + - pillow=9.2.0 + - pip=23.2.1 + - pixman=0.38.0 + - psutil=5.9.3 + - pthread-stubs=0.4 + - py-boost=1.67.0 + - pyaml=23.5.9 + - pycosat=0.6.4 + - pycparser=2.21 + - pydas=1.0.3 + - pydqed=1.0.3 + - pyopenssl=23.2.0 + - pyparsing=3.1.0 + - pyrdl=1.1.2 + - pysocks=1.7.1 + - python=3.7.12 + - python-dateutil=2.8.2 + - python_abi=3.7 + - pytz=2023.3 + - pyyaml=6.0 + - quantities=0.12.3 + - rdkit=2020.03.3.0 + - readline=8.2 + - requests=2.31.0 + - ruamel_yaml=0.15.80 + - scikit-learn=1.0.2 + - scipy=1.7.3 + - setuptools=59.8.0 + - six=1.16.0 + - sqlite=3.42.0 + - statsmodels=0.13.2 + - suitesparse=5.10.1 + - sundials=5.7.0 + - tbb=2021.7.0 + - threadpoolctl=3.1.0 + - tk=8.6.12 + - toolz=0.12.0 + - typing-extensions=4.7.1 + - typing_extensions=4.7.1 + - unicodedata2=14.0.0 + - urllib3=2.0.4 + - werkzeug=2.2.3 + - wheel=0.41.0 + - xorg-kbproto=1.0.7 + - xorg-libice=1.1.1 + - xorg-libsm=1.2.4 + - xorg-libx11=1.8.4 + - xorg-libxau=1.0.11 + - xorg-libxdmcp=1.1.3 + - xorg-libxext=1.3.4 + - xorg-libxrender=0.9.10 + - xorg-renderproto=0.11.1 + - xorg-xextproto=7.3.0 + - xorg-xproto=7.0.31 + - xz=5.2.6 + - yaml=0.2.5 + - yaml-cpp=0.7.0 + - zipp=3.15.0 + - zlib=1.2.13 + - zstandard=0.18.0 + - zstd=1.5.2 + - pip: + - py3dmol==2.0.3