Intrinsic reaction coordinate
In this tutorial we will show how to use MLatom to find the reaction path that follows the intrinsic reaction coordinate (IRC). IRC starts from the transition state and there is specific tutorial about how to locate transition state with MLatom.
Theory behind
What is IRC
IRC (intrinsic reaction coordinate) is the minimal energy path (MEP) that connects reactant, product, and transition state (TS), in mass weighted coordinates. We can use an additional parameter $s$ as the arc length along the reaction path and define the IRC path as $x(s)$. It’s the solution to the equation:
\(dx(s)/ds = -g(s)/|g(s)|\)
which indicates that the direction of each point on IRC follows the direction of force (definition of MEP). It can be solved with standard numerical integration techniques.
It’s obvious from this equation that TS is not well described, because its energy gradient is zero. Thus, in IRC, the tangent of the curve at TS is the so-called transition vector, i.e., the eigenvector of the TS Hessian corresponding to the negative eigenvalue.
Why to use IRC
check whether the TS connects to the correct reactant and product.
check if intermediate exists
Example with MLatom
In the following jupyter notebook, we will show how to use MLatom to perform IRC calculation starting from the transition state of Diels-Alder reaction between ethene and 1,3-butadiene. The molecular file in .json format can be downloaded here. It stores results from frequency calculations including frequencies, force constants, normal modes, etc., which can be parsed and loaded to standard molecule object in MLatom. The full jupyter notebook can be downloaded here
Tutorial of IRC with MLatom¶
In this jupyter notebook, we will show how to use IRC with MLatom. Simple Diels-Alder reaction between ethene and 1,3-butadiene will be used as the example.
The content is aranged as follows:
- Check transition state
- IRC validation
- Run IRC
- Output from IRC
- Working directory of IRC
- Dive into
ircclass - IRC from input file
import mlatom as ml
1 - Transition state¶
Below shows the transition state we have found with GFN2-xTB.
mol = ml.data.molecule.load('da_ts.json')
mol.view(normal_mode=0, slider=False)
3Dmol.js failed to load for some reason. Please check your browser console for error messages.
print(f"The imaginary frequency: {mol.frequencies[0]:.8} cm-1")
The imaginary frequency: -393.89572 cm-1
MODEL = ml.methods(method='GFN2-xTB')
results = ml.irc(model = MODEL, molecule = mol)
---------------------------10/24/25 16:11:24----------------------------
Parse settings for IRC calculation
------------------------------------------------------------------------
Calculation settings:
model : GFN2-xTB
model_predict_kwargs : {}
program : mlatom
forward : True
backward : True
working_directory : /home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc
overwrite : True
plot : True
plot_filename : irc_plot
dump : True
dump_filename : irc_traj
dump_format : ['json', 'xyz']
verbose : True
Program settings:
None
---------------------------10/24/25 16:11:24----------------------------
Start checking frequencies inside molecule object
------------------------------------------------------------------------
Frequencies found and validated as transition state!
The found imaginary frequency: -393.8957230651818 cm-1
---------------------------10/24/25 16:11:24----------------------------
Finish checking frequencies inside molecule
------------------------------------------------------------------------
---------------------------10/24/25 16:11:24----------------------------
Start IRC calculation with mlatom
------------------------------------------------------------------------
Type of Integrator: lqa
Type of Hessian estimator: bofill
---------------------------10/24/25 16:11:24----------------------------
Start IRC in forward direction.
------------------------------------------------------------------------
Generate initial displacement in forward direction.
10/24/25 16:11:24 | Step 0 in forward direction.
Reaction coordinate 0.1436 in sqrt(amu)*Å
Energy changed -0.1177 kcal/mol
10/24/25 16:11:24 | Step 1 in forward direction.
Reaction coordinate 0.287 in sqrt(amu)*Å
Energy changed -0.3048 kcal/mol
10/24/25 16:11:25 | Step 2 in forward direction.
Reaction coordinate 0.4304 in sqrt(amu)*Å
Energy changed -0.4265 kcal/mol
10/24/25 16:11:25 | Step 3 in forward direction.
Reaction coordinate 0.574 in sqrt(amu)*Å
Energy changed -0.4964 kcal/mol
10/24/25 16:11:26 | Step 4 in forward direction.
Reaction coordinate 0.7176 in sqrt(amu)*Å
Energy changed -0.5291 kcal/mol
10/24/25 16:11:26 | Step 5 in forward direction.
Reaction coordinate 0.8612 in sqrt(amu)*Å
Energy changed -0.5344 kcal/mol
10/24/25 16:11:26 | Step 6 in forward direction.
Reaction coordinate 1.005 in sqrt(amu)*Å
Energy changed -0.5206 kcal/mol
10/24/25 16:11:27 | Step 7 in forward direction.
Reaction coordinate 1.148 in sqrt(amu)*Å
Energy changed -0.4937 kcal/mol
10/24/25 16:11:27 | Step 8 in forward direction.
Reaction coordinate 1.292 in sqrt(amu)*Å
Energy changed -0.4584 kcal/mol
10/24/25 16:11:28 | Step 9 in forward direction.
Reaction coordinate 1.436 in sqrt(amu)*Å
Energy changed -0.4183 kcal/mol
---------------------------10/24/25 16:11:28----------------------------
Start IRC in backward direction.
------------------------------------------------------------------------
Generate initial displacement in backward direction.
10/24/25 16:11:28 | Step 0 in backward direction.
Reaction coordinate 0.1436 in sqrt(amu)*Å
Energy changed -0.1539 kcal/mol
10/24/25 16:11:28 | Step 1 in backward direction.
Reaction coordinate 0.2871 in sqrt(amu)*Å
Energy changed -0.528 kcal/mol
10/24/25 16:11:28 | Step 2 in backward direction.
Reaction coordinate 0.4307 in sqrt(amu)*Å
Energy changed -1.018 kcal/mol
10/24/25 16:11:28 | Step 3 in backward direction.
Reaction coordinate 0.5743 in sqrt(amu)*Å
Energy changed -1.619 kcal/mol
10/24/25 16:11:29 | Step 4 in backward direction.
Reaction coordinate 0.7179 in sqrt(amu)*Å
Energy changed -2.31 kcal/mol
10/24/25 16:11:29 | Step 5 in backward direction.
Reaction coordinate 0.8615 in sqrt(amu)*Å
Energy changed -3.046 kcal/mol
10/24/25 16:11:30 | Step 6 in backward direction.
Reaction coordinate 1.005 in sqrt(amu)*Å
Energy changed -3.758 kcal/mol
10/24/25 16:11:30 | Step 7 in backward direction.
Reaction coordinate 1.149 in sqrt(amu)*Å
Energy changed -4.386 kcal/mol
10/24/25 16:11:30 | Step 8 in backward direction.
Reaction coordinate 1.292 in sqrt(amu)*Å
Energy changed -4.941 kcal/mol
10/24/25 16:11:31 | Step 9 in backward direction.
Reaction coordinate 1.436 in sqrt(amu)*Å
Energy changed -5.442 kcal/mol
---------------------------10/24/25 16:11:31----------------------------
Finish IRC calculation with mlatom
------------------------------------------------------------------------
Path to plot: irc_plot
The saved traj files:
/home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc/traj/irc_traj.json
/home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc/traj/irc_traj_forward.json
/home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc/traj/irc_traj_backward.json
/home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc/traj/irc_traj.json
/home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc/traj/irc_traj_forward.xyz
/home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc/traj/irc_traj_backward.xyz
2.2. Output from IRC¶
By default, MLatom will print out information at each step during IRC calculation.
We will use the above output as an example and provide explanation to each section:
---------------------------10/22/25 09:18:55----------------------------
Parse settings for IRC calculation
------------------------------------------------------------------------
Calculation settings:
model : GFN2-xTB
model_predict_kwargs : {}
program : mlatom
forward : True
backward : True
working_directory : /home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc
overwrite : True
plot : True
plot_filename : irc.png
dump : True
dump_filename : irc_traj
dump_format : ['json', 'xyz']
verbose : True
Program settings:
None
MLatom will firstly parse the settings of IRC. All the avaialble arguments and their assigned values can be checked here. Available programs and their settings will be shown later.
---------------------------10/22/25 09:18:55----------------------------
Start checking frequencies inside molecule
------------------------------------------------------------------------
Frequencies found and validated as transition state!
The found imaginary frequency: -393.8957230651818 cm-1
---------------------------10/22/25 09:18:55----------------------------
Finish checking frequencies inside molecule
------------------------------------------------------------------------
After initializing the settings for IRC, MLatom will check whether frequency and normal mode exist in the molecule passed in. If not, MLatom will perform frequency calculation on this molecule.
---------------------------10/22/25 09:18:55----------------------------
Start IRC calculation with mlatom
------------------------------------------------------------------------
Type of Integrator: lqa
Type of Hessian estimator: bofill
---------------------------10/22/25 09:18:55----------------------------
Start IRC in forward direction.
------------------------------------------------------------------------
Generate initial displacement in forward direction.
10/22/25 09:18:55 | Step 0 in forward direction.
Reaction coordinate 0.1436 in sqrt(amu)*Å
Energy changed -0.1177 kcal/mol
...
Now, MLatom has started to perform IRC calculation. We use LQA algorithm and estimate Hessian with Bofill update scheme. In each IRC step, MLatom will print out the changes in reaction coordinates and the changed reaction.
---------------------------10/22/25 09:19:01----------------------------
Finish IRC calculation with mlatom
------------------------------------------------------------------------
Path to plot: irc_plot
The saved traj files:
/home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc/traj/irc_traj.json
/home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc/traj/irc_traj_forward.json
/home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc/traj/irc_traj_backward.json
/home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc/traj/irc_traj.json
/home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc/traj/irc_traj_forward.xyz
/home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc/traj/irc_traj_backward.xyz
After the calculation has finished, MLatom will print out the location of the saved files. By default, we will dump the plotted IRC curve, it's raw data in .txt format and the trajectory.
2.3 - Working directory of IRC¶
In MLatom, we use working_directory to control the location of temporary files produced by IRC. By default, it will be named as irc under the current directory.
After IRC calculation, there will be several folders created:
calc: The folder to store calculation filesplot: The folder to store plotted irc curve and its raw data in .txt format (energy in Hartree in the first colomn and intrinsic reaction coordinates in the second column)traj: the folder to store the IRC trajectory. The trajectory for both directions is saved in the order:backward (reversed) - TS - forward. Trajectories for each direction will also be dumped.
Plotting can be turned off by setting plot=False. IRC trajectories will not be dumpped if dump is set to False. The format of dumpped trajectories can be changed with dump_format. The available options are json and xyz. They can also be put into a list as ['json', 'xyz']. This way, trajectories with both .json and .xyz formats will be written to the /traj folder.
3 - Dive into irc class¶
irc class handles both IRC calculation and results storage. We have presented how to perform IRC calculation in previous section. Here, we will show how to use irc class to access the IRC results.
3.1 Properties saved in irc instance¶
If you are familiar with data format in MLatom, the IRC results are saved in the format of molecular_database. You can retrieve it from the returned value results of the previous calculation:
results.trajdbresults.ftrajdbresults.btrajdb
But you can still retrieve the trajectory in molecular_trajectory format with:
results.trajresults.ftrajresults.btraj
For example, you can check the end points of forward and backward trajectories
# the end point of backward trajectory
results.trajdb[0].view()
3Dmol.js failed to load for some reason. Please check your browser console for error messages.
The transition state can be easily obtained with:
results.ts_moleculeinmoleculeformatresults.ts_indexreturns the index of TS in either molecular database or trajectory.
# the transition state
results.ts_molecule.view()
3Dmol.js failed to load for some reason. Please check your browser console for error messages.
3.2 Print out the results¶
print(results)
---------------------------10/24/25 16:13:53----------------------------
Results from IRC calculation
------------------------------------------------------------------------
IRC in forward direction
Number of steps 11
Energy decrease 4.3 kcal/mol
Structure of final molecule:
Molecule with 16 atom(s): C, C, C, C, H, H, H, H, H, H, C, C, H, H, H, H
XYZ coordinates, Angstrom
1 C 0.628259 1.494463 0.607480
2 C 1.284951 0.727268 -0.261597
3 C 1.289563 -0.718641 -0.262095
4 C 0.637773 -1.490610 0.606446
5 H 0.137676 1.090856 1.474125
6 H 0.617141 2.567097 0.513086
7 H 1.803817 1.194980 -1.088870
8 H 1.811412 -1.182465 -1.089680
9 H 0.144607 -1.090740 1.473356
10 H 0.633500 -2.563228 0.511311
11 C -1.754708 -0.665706 -0.341058
12 C -1.758868 0.655175 -0.340648
13 H -2.111704 -1.238288 0.498393
14 H -1.442814 -1.232602 -1.201293
15 H -2.119471 1.224975 0.499154
16 H -1.450560 1.224558 -1.200533
IRC in backward direction
Number of steps 11
Energy decrease 27.2 kcal/mol
Structure of final molecule:
Molecule with 16 atom(s): C, C, C, C, H, H, H, H, H, H, C, C, H, H, H, H
XYZ coordinates, Angstrom
1 C 0.280217 1.376757 0.481273
2 C 1.277101 0.679392 -0.279699
3 C 1.281410 -0.670799 -0.280161
4 C 0.289036 -1.375034 0.480351
5 H 0.162719 1.064402 1.511283
6 H 0.272838 2.454967 0.377660
7 H 1.861455 1.227414 -1.005204
8 H 1.869251 -1.214582 -1.006040
9 H 0.169516 -1.064141 1.510567
10 H 0.288473 -2.453191 0.375964
11 C -1.383776 -0.738106 -0.198330
12 C -1.388373 0.729830 -0.197845
13 H -2.059221 -1.209455 0.504046
14 H -1.404072 -1.203896 -1.174902
15 H -2.066832 1.196448 0.504791
16 H -1.411612 1.196100 -1.174126
Index of transition state: 10 (starting from zero)
3.3 Dump and load results¶
If IRC results has been dumped to the traj folder, you can directly load it with
results_loadwd = ml.irc.load('irc') # load from working direcotory
results_load_trajwd = ml.irc.load('irc/traj') # load directly from /traj folder, i.e., the folder contains trajectory files
The loaded trajectories can also be dumped to specific folder with
results_loadwd.dump(working_directory='irc_dump')
The saved traj files: irc_dump/irc_traj.json irc_dump/irc_traj_forward.json irc_dump/irc_traj_backward.json irc_dump/irc_traj.json irc_dump/irc_traj_forward.xyz irc_dump/irc_traj_backward.xyz
4 - IRC from input file/command line¶
IRC calculations can also be done with input file or command line:
irc
GFN2-xTB
jsonfile=da_ts.json
%%bash
$mlatom irc.inp
!---------------------------------------------------------------------------!
! !
! MLatom: a Package for Atomistic Simulations with Machine Learning !
! MLatom 3.19.0 !
! !
! http://mlatom.com/ !
! !
! MIT License (modified to request proper citations) !
! Copyright (c) 2013- Pavlo O. Dral !
! http://dr-dral.com/ !
! !
! Permission is hereby granted, free of charge, to any person obtaining a !
! copy of this software and associated documentation files (the "Software"),!
! to deal in the Software without restriction, including without limitation !
! the rights to use, copy, modify, merge, publish, distribute, sublicense, !
! and/or sell copies of the Software, and to permit persons to whom the !
! Software is furnished to do so, subject to the following conditions: !
! !
! The above copyright notice and this permission notice shall be included !
! in all copies or substantial portions of the Software. !
! When this Software or its derivatives are used !
! in scientific publications, it shall be cited as: !
! !
! Pavlo O. Dral, Fuchun Ge, Yi-Fan Hou, Peikun Zheng, Yuxinxin Chen, !
! Mario Barbatti, Olexandr Isayev, Cheng Wang, Bao-Xin Xue, !
! Max Pinheiro Jr, Yuming Su, Yiheng Dai, Yangtao Chen, Lina Zhang, !
! Shuang Zhang, Arif Ullah, Quanhao Zhang, Yanchi Ou. !
! J. Chem. Theory Comput. 2024, 20, 1193-1213. !
! !
! Pavlo O. Dral, Fuchun Ge, Yi-Fan Hou, Yuxinxin Chen, Peikun Zheng, !
! Bao-Xin Xue, Mikolaj Martyka, Lina Zhang, Jakub Martinka, Quanhao Zhang, !
! Xin-Yu Tong, Arif Ullah, Sebastian V. Pios, Vignesh B. Kumar, Yanchi Ou, !
! Max Pinheiro Jr, Yuming Su, Yiheng Dai, Yangtao Chen, Shuang Zhang, !
! Jinming Hu, Matheus O. Bispo !
! MLatom: A Package for Atomistic Simulations with Machine Learning, !
! version 3.19.0, Xiamen University, Xiamen, China, 2013-2025. !
! !
! The citations for MLatom's interfaces and features shall be eventually !
! included too. See header.py, ref.json and http://mlatom.com. !
! !
! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS !
! OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF !
! MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN !
! NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, !
! DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR !
! OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE !
! USE OR OTHER DEALINGS IN THE SOFTWARE. !
! !
!---------------------------------------------------------------------------!
==============================================================================
MLatom started on 24.10.2025 at 16:15:54
with the following options:
/home/chenyxx/project/MLATOM/aitomic_releases/mlatom/shell_cmd.py irc.inp
Input file content:
______________________________________________________________________________
irc
GFN2-xTB
jsonfile=da_ts.json
ircprog=mlatom
______________________________________________________________________________
==============================================================================
******************************************************************************
You are going to use feature(s) listed below.
Please cite corresponding work(s) in your paper:
GFN2-xTB:
C. Bannwarth, S. Ehlert, S. Grimme,
J. Chem. Theory Comput. 2019, 15, 1652
xtb program:
C. Bannwarth, E. Caldeweyher, S. Ehlert, A. Hansen, P. Pracht,
J. Seibert, S. Spicher, S. Grimme,
WIREs Comput. Mol. Sci., 2020, 11, e01493
Semiempirical extended tight-binding program package xtb.
https://github.com/grimme-lab/xtb
******************************************************************************
---------------------------10/24/25 16:15:54----------------------------
Parse settings for IRC calculation
------------------------------------------------------------------------
IRC working directory /home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc found and overwrite was set to True. The working directory will be recreated.
Calculation settings:
model : GFN2-xTB
model_predict_kwargs : {}
program : mlatom
forward : True
backward : True
working_directory : /home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc
overwrite : True
plot : True
plot_filename : irc_plot
dump : True
dump_filename : irc_traj
dump_format : ['json', 'xyz']
verbose : True
Program settings:
None
---------------------------10/24/25 16:15:54----------------------------
Start checking frequencies inside molecule object
------------------------------------------------------------------------
Frequencies found and validated as transition state!
The found imaginary frequency: -393.8957230651818 cm-1
---------------------------10/24/25 16:15:54----------------------------
Finish checking frequencies inside molecule
------------------------------------------------------------------------
---------------------------10/24/25 16:15:54----------------------------
Start IRC calculation with mlatom
------------------------------------------------------------------------
Type of Integrator: lqa
Type of Hessian estimator: bofill
---------------------------10/24/25 16:15:54----------------------------
Start IRC in forward direction.
------------------------------------------------------------------------
Generate initial displacement in forward direction.
10/24/25 16:15:54 | Step 0 in forward direction.
Reaction coordinate 0.1436 in sqrt(amu)*Å
Energy changed -0.1177 kcal/mol
10/24/25 16:15:55 | Step 1 in forward direction.
Reaction coordinate 0.287 in sqrt(amu)*Å
Energy changed -0.3048 kcal/mol
10/24/25 16:15:55 | Step 2 in forward direction.
Reaction coordinate 0.4304 in sqrt(amu)*Å
Energy changed -0.4265 kcal/mol
10/24/25 16:15:55 | Step 3 in forward direction.
Reaction coordinate 0.574 in sqrt(amu)*Å
Energy changed -0.4964 kcal/mol
10/24/25 16:15:56 | Step 4 in forward direction.
Reaction coordinate 0.7176 in sqrt(amu)*Å
Energy changed -0.5291 kcal/mol
10/24/25 16:15:56 | Step 5 in forward direction.
Reaction coordinate 0.8612 in sqrt(amu)*Å
Energy changed -0.5344 kcal/mol
10/24/25 16:15:56 | Step 6 in forward direction.
Reaction coordinate 1.005 in sqrt(amu)*Å
Energy changed -0.5206 kcal/mol
10/24/25 16:15:57 | Step 7 in forward direction.
Reaction coordinate 1.148 in sqrt(amu)*Å
Energy changed -0.4937 kcal/mol
10/24/25 16:15:57 | Step 8 in forward direction.
Reaction coordinate 1.292 in sqrt(amu)*Å
Energy changed -0.4584 kcal/mol
10/24/25 16:15:58 | Step 9 in forward direction.
Reaction coordinate 1.436 in sqrt(amu)*Å
Energy changed -0.4183 kcal/mol
---------------------------10/24/25 16:15:58----------------------------
Start IRC in backward direction.
------------------------------------------------------------------------
Generate initial displacement in backward direction.
10/24/25 16:15:58 | Step 0 in backward direction.
Reaction coordinate 0.1436 in sqrt(amu)*Å
Energy changed -0.1539 kcal/mol
10/24/25 16:15:58 | Step 1 in backward direction.
Reaction coordinate 0.2871 in sqrt(amu)*Å
Energy changed -0.528 kcal/mol
10/24/25 16:15:58 | Step 2 in backward direction.
Reaction coordinate 0.4307 in sqrt(amu)*Å
Energy changed -1.018 kcal/mol
10/24/25 16:15:58 | Step 3 in backward direction.
Reaction coordinate 0.5743 in sqrt(amu)*Å
Energy changed -1.619 kcal/mol
10/24/25 16:15:59 | Step 4 in backward direction.
Reaction coordinate 0.7179 in sqrt(amu)*Å
Energy changed -2.31 kcal/mol
10/24/25 16:15:59 | Step 5 in backward direction.
Reaction coordinate 0.8615 in sqrt(amu)*Å
Energy changed -3.046 kcal/mol
10/24/25 16:15:59 | Step 6 in backward direction.
Reaction coordinate 1.005 in sqrt(amu)*Å
Energy changed -3.758 kcal/mol
10/24/25 16:16:00 | Step 7 in backward direction.
Reaction coordinate 1.149 in sqrt(amu)*Å
Energy changed -4.386 kcal/mol
10/24/25 16:16:00 | Step 8 in backward direction.
Reaction coordinate 1.292 in sqrt(amu)*Å
Energy changed -4.941 kcal/mol
10/24/25 16:16:01 | Step 9 in backward direction.
Reaction coordinate 1.436 in sqrt(amu)*Å
Energy changed -5.442 kcal/mol
---------------------------10/24/25 16:16:01----------------------------
Finish IRC calculation with mlatom
------------------------------------------------------------------------
Path to plot: irc_plot
The saved traj files:
/home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc/traj/irc_traj.json
/home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc/traj/irc_traj_forward.json
/home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc/traj/irc_traj_backward.json
/home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc/traj/irc_traj.json
/home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc/traj/irc_traj_forward.xyz
/home/chenyxx/project/MLATOM/mlatom_mep/examples/jupyter/irc/traj/irc_traj_backward.xyz
---------------------------10/24/25 16:16:01----------------------------
Results from IRC calculation
------------------------------------------------------------------------
IRC in forward direction
Number of steps 11
Energy decrease 4.3 kcal/mol
Structure of final molecule:
Molecule with 16 atom(s): C, C, C, C, H, H, H, H, H, H, C, C, H, H, H, H
XYZ coordinates, Angstrom
1 C 0.628259 1.494463 0.607480
2 C 1.284951 0.727268 -0.261597
3 C 1.289563 -0.718641 -0.262095
4 C 0.637773 -1.490610 0.606446
5 H 0.137676 1.090856 1.474125
6 H 0.617141 2.567097 0.513086
7 H 1.803817 1.194980 -1.088870
8 H 1.811412 -1.182465 -1.089680
9 H 0.144607 -1.090740 1.473356
10 H 0.633500 -2.563228 0.511311
11 C -1.754708 -0.665706 -0.341058
12 C -1.758868 0.655175 -0.340648
13 H -2.111704 -1.238288 0.498393
14 H -1.442814 -1.232602 -1.201293
15 H -2.119471 1.224975 0.499154
16 H -1.450560 1.224558 -1.200533
IRC in backward direction
Number of steps 11
Energy decrease 27.2 kcal/mol
Structure of final molecule:
Molecule with 16 atom(s): C, C, C, C, H, H, H, H, H, H, C, C, H, H, H, H
XYZ coordinates, Angstrom
1 C 0.280217 1.376757 0.481273
2 C 1.277101 0.679392 -0.279699
3 C 1.281410 -0.670799 -0.280161
4 C 0.289036 -1.375034 0.480351
5 H 0.162719 1.064402 1.511283
6 H 0.272838 2.454967 0.377660
7 H 1.861455 1.227414 -1.005204
8 H 1.869251 -1.214582 -1.006040
9 H 0.169516 -1.064141 1.510567
10 H 0.288473 -2.453191 0.375964
11 C -1.383776 -0.738106 -0.198330
12 C -1.388373 0.729830 -0.197845
13 H -2.059221 -1.209455 0.504046
14 H -1.404072 -1.203896 -1.174902
15 H -2.066832 1.196448 0.504791
16 H -1.411612 1.196100 -1.174126
Index of transition state: 10 (starting from zero)
==============================================================================
Wall-clock time: 6.81 s (0.11 min, 0.00 hours)
MLatom terminated on 24.10.2025 at 16:16:01
==============================================================================
Choice of programs
program can be used to specify different programs for IRC calculation and program_kwargs to pass settings to each program. Currently, the available options are None (the defualt one that uses our built-in implementation), pysisyphus, gaussian and geometric. In general, the recommended program is pysisyphus, which provides various algorithms and settings for customization. If you have dependency problems with it, we also have native implementations of LQA in MLatom to handle most cases.
Built-in implementation
Pros and Cons
- Pros:
Compatible to MLatom and no additional installation
- Cons
Only LQA (Local Quadratic Approximation) is supported
Useful keywords for IRC
n_steps (int): Defaults to10.step_size (float): Defaults to0.1Angstrom in mass-deweighted coordinates.init_length (float): Defaults to0.1Angstrom in mass-deweighted coordinates.hess_est (bool, str): Defaults tobofill. Available options areFalse(hessian calculation in each step),sr1,psb,bofill
pysisyphus
Pysisyphus is a Python package that is designed for exploration of potential energy surfaces in ground- and excited states. It can be easily installed with pip install pysisyphus.
Pros and Cons
- Pros
rich algorithms and settings for customization
- Cons
dependency problems
Useful keywords for IRC
Below we list some commonly used keywords. For full list of keywords available, please check: https://github.com/eljost/pysisyphus/blob/master/pysisyphus/irc/IRC.py
algorithm (str): Available options areeuler,eulerpc,gs,imk,lqa,modekill,rk4. Defaults toeulerpcstep_length (float): Defaults to0.1Bohr in mass weighted coordinates.displ (str): Available options are energy, length, and energy_cubic. Defaults toenergymax_cycles (int): Defaults to125rms_grad_thresh (float): Defaults to1e-3energy_thresh (float): Defaults to1e-6
Gaussian
Pros and Cons
- Pros
The produced .log file can be recognized by many visualization softwares (MLatom can also load it with
ml.molecule.load('myfile.log',format='gaussian'))
- Cons (with interface in MLatom)
Heavy IO
Unable to reuse results of frequency calculation from MLatom
Keywords for IRC
The available keywords for IRC can be found here: https://gaussian.com/irc/. In our implementation, CalcFC is set by default. In this way, the hessian calculations can be handled by MLatom.
To use them in MLatom, they can be passed to irc_kwargs as program_kwargs={'irc_keywords': ['LQA']}. In the Gaussian input file, it will be written as irc(CalcFC,LQA).
geomeTRIC
geomeTRIC is not the recommended choice for IRC. It doesn’t provide any options to choose direction (at the time of implementation). The algorithm it uses is very different from the common one for IRC. To propagate IRC trajectories with geomeTRIC, it must be upgraded to version >=1.1.0
Any questions or suggestions?
If you have further questions, criticism, and suggestions, we would be happy to receive them in English or Chinese via email, Slack (preferred), or QQ (135258964). See our contact page for more information on how to subscribe to updates and follow us on social media.