This package implements various tools to automatically post-process and evaluate nanoreactor MD simulations.
-
Automated molecule recognition [1] from ab initio nanoreactor simulations [2] based on Wiberg Bond Orders [3]
-
Automated network construction [1]
-
RDKit [4] based event recognition
-
stored list of reactions for further refinement
-
-
Visualization tools (plots, molecular grids, PyMOL movie (available only directly from GitHub repository))
To install nanoreactor_processing type:
$ pip install nanoreactor-processing
- python >= 3.8
- numpy >= 1.23
- scipy >= 1.8
- pandas >= 1.4
- networkx >= 2.8
- matplotlib >= 3.5
- seaborn >= 0.11
- pyvis >= 0.2
- rdkit >= 2021.03.4
To use the functions implemented in nanoreactor_processing you should be able to generate files with the following format from your MD simulation:
Trajectory: .xyz file
Format:
1 number of atoms
2 TIME: time step
3 elem x y z
4 elem x y z
.
.
Bond order file: only the upper triangular matrix needs to be stored
Format:
1 TIME: time step
2 wbo(0,1)
3 wbo(0,2)
4 wbo(0,3)
.
.
To start the automated post-processing for your ab initio nanoreactor simulations you have to first create a NanoSim object:
import nanoreactor_processing
from nanoreactor_processing import *
from nanoreactor_processing import NanoSim
from nanoreactor_processing import NanoNetwork
nanoSim = NanoSim(path_to_traj, path_to_bo_file)
# apply functions to your newly created object to generate fragments and compute SMILES:
nanoSim.generate_frag_lists()
nanoSim.generate_mols_smiles()
...
If you have already generated the fragment file (mols file), then you can also include it as an argument to speed up the evaluation:
...
nanoSim = NanoSim(path_to_traj, path_to_bo_file, path_to_mols_file)
...
To generate the reaction network use the stored data frame:
...
df = read_write_utils.read_trafo_df(path_to_df)
reactions_list = nanoreactor_network.construct_reactions_list(df)
nanoNet = NanoNetwork()
nanoNet.create_network(reactions_list)
...
If you encounter any problems with the Draw module in RDKit try to add the following line to your script:
from rdkit.Chem.Draw import IPythonConsole
The scripts for generating a PyMOL movie from your trajectory and data frame are available only at GitHub as they require PyMOL as an interpreter. A free version of PyMOL can be installed with:
$ apt-get install pymol
Code documentation can be created with pdoc3:
$ pip install pdoc3
$ pdoc3 --html nanoreactor_processing -o doc/
This work:
- A. Stan et al., J. Chem. Theory Comput. (2022); https://doi.org/10.1021/acs.jctc.2c00754
- A. Stan-Bernhardt et al., ACS Cent. Sci. (2024); https://doi.org/10.1021/acscentsci.3c01403
Other references:
- L.-P. Wang et al., Nat. Chem. (2014); https://doi.org/10.1038/nchem.2099
- K. Wiberg, Tetrahedron (1968); https://doi.org/10.1016/0040-4020(68)88057-3
- G. Landrum, "RDKit: Open-source cheminformatics. https://www.rdkit.org"; https://doi.org/10.5281/zenodo.5085999