This repository is currently under development...
QCArchive Reaction Workflow (QCARWorkflow) can process molecular dynamic (MD) simulation trajectories and generate optimized reactants, products, and transition state structures.[1] It employs QCArchive Infrastructure to achieve efficient data storage and computing resource distribution.[2] QCARWorkflow can communicate with geomeTRIC[3] and Psi4[4] to refine MD simulation trajectories. The workflow is consist of four main functions, dsoptimize
, smoothing
, neb
, and optimize
. The first function dsoptimize
locates minima on potential energy surfaces (PES) by optimizing molecular geometries of evenly sampled initial MD trajectories. smoothing
function will detect potential reaction pathways from the result of dsoptimize
and smooth them to provide good initial inputs for the nudged elastic band (NEB) method.[5] neb
performs the NEB method to locate a rough transition state (TS) structure. The optimize
function then optimizes the gussed TS structures (NEB results) to locate the first order saddle points. The next step is the Intrinsic Reaction Coordinate method starting with the optimized TS structure to confirm its validity.[6] Finally, two end points of the IRC (reactant and product) result will be optimized.
[1] Wang, L.-P.; McGibbon, R. T.; Pande, V. S.; Martinez, T.J. Automated Discovery and Refinement of Reactive Molecular Dynamics Pathways. J. Chem. Theory Comput. 2016, 12(2), 638–649.https://pubs.acs.org/doi/abs/10.1021/acs.jctc.5b00830
[2] Smith, D. G. A.; Altarawy, D.; Burns, L. A.; Welborn, M.;Naden, L. N.; Ward, L.; Ellis, S.; Pritchard, B. P.; Crawford,T. D. The MOLSSI QCARCHIVE Project: An Open‐source Platform to Compute, Organize, and Share Quantum Chemistry Data. WIREs Comput. Mol. Sci. 2020.https://doi.org/10.1002/wcms.1491
[3] Wang, L.-P.; Song, C. Geometry Optimization Made Simple with Translation and Rotation Coordinates. J. Chem. Phys. 2016, 144 (21), 214108.https://doi.org/10.1063/1.4952956
[4] Turney, J.M.; Simmonett, A.C.; Parrish, R.M.; Hohenstein, E.G.; Evangelista, F.A.; Fermann, J.T.; Mintz, B.J.; Burns, L.A.; Wilke, J.J.; Abrams, M.L.; Russ, N.J.; Leininger, M.L.; Janssen, C.L.; Seidl, E.T.; Allen, W.D.; Schaefer, H.F.; King, R.A.; Valeev, E.F.; Sherrill, C.D.; Crawford, T.D. Psi4: an open‐source ab initio electronic structure program. WIREs Comput. Mol. Sci. 2012 2: 556-565.https://doi.org/10.1002/wcms.93
[5] Henkelman, G.; Uberuaga B.P.; Jonsson H. A climbing image nudged elastic band method for finding saddle points and minimum energy paths. J. Chem. Phys. 2000, 113 (22).https://doi.org/10.1063/1.1329672
[6] Gonzalez, C.; Schlegel H. B. An improved algorithm for reaction path following. J. Chem. Phys. 1989, 90 (4), 2154-2161.https://doi.org/10.1063/1.456010
Author: Heejune Park
Contact Email: heepark@ucdavis.edu
Commands below will create a conda environment with dependencies named qcarw.
conda update conda
conda env create -f environment.yml
conda activate qcarw
or
conda update conda
conda config --add channel conda-forge
conda config --add channel psi4/label/dev
conda create --name qcarw --file requirements.txt
conda activate qcarw
Now we need to install geomeTRIC and QCARWorkflow.
Install geomeTRIC from the neb
branch of a forked github repository:
https://github.com/hjnpark/geomeTRIC/tree/neb
The following command will clone the specific branch.
git clone -b neb git@github.com:hjnpark/geomeTRIC.git
This branch of geomeTRIC can perform the NEB and IRC method. It will be merged into the master branch in the future.
QCARWorkflow can be installed in the conda environment now.
python setup.py install
Done!
QCFractal server handles data storage and job submissions.
qcfractal-server init
The command above will create a server. Next, we can add users to the server.
qcfractal-server user add User1 --password 1234 --permissions admin
User1
is the ID and 1234
is the password.
--permissions
is user permissions for qcfractal-server
. admin
allows all possible permissions (read, write, compute, and queue).
More details can be found here.
Now running the command below will start the server.
qcfractal-server start
Once the server is running, qcfractal-manager
needs to be submitted to computing resources.
qcfractal-manager --fractal-uri=https://localhost:7777/ --verify False -u User1 -p 1234
You might need to change localhost
to the local machine name where qcfractal-server start
is running if the computing resources and the local machine are different. qcfractal-server info
command in terminal will provide the server information.
Once the qcfractal server and manager are ready, we can submit jobs.
Once the package and dependencies are successfully installed and qcfractal server and manager are running, executing command below will run a full refinement procedure with default arguments where initial_MD.xyz is the input MD trajectory.
qcarw-refine initial_MD.xyz --user User1 --password 1234
qcarw-refine -h
will show all the parameters with their default values. Similarly, commands below can be used to run individual steps.
qcarw-dsoptimize initial_MD.xyz --user User1 --password 1234
qcarw-smooth initial_MD.xyz --user User1 --password 1234
qcarw-neb neb_input.xyz --user User1 --password 1234
qcarw-optimize opt_input.xyz --user User1 --password 1234
qcarw-irc ts.xyz --user User1 --password 1234
qcarw-[function] -h
will show all the parameters that can be modified.
Most of the Internal Server Error can be fixed by restarting the qcfractal server and manager. QCARWorkflow sometimes ends jobs without any error messages. This problem can be occurred when error status jobs are resubmitted to the server. Restarting the server can help in this case as well. qcfractal-server rarely won't start due to the corruption of write-ahead log (WAL) and control information. This is usually caused by improper shutdown of the server. In this case, you need to reset the WAL by running the following command.
pg_resetwal -f -D ~/.qca/qcfractal/postgres
The full documentation of QCArchive Infrastructure can be found here. It contains all the information regarding different compartments and APIs.