ochsenfeld-lab / nanoreactor_processing

Post-processing code for computational nanoreactor simulations

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Processing of Computational Nanoreactor Simulations

This package implements various tools to automatically post-process and evaluate nanoreactor MD simulations.

Available tools include

  • 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))

Install:

To install nanoreactor_processing type:

$ pip install nanoreactor-processing

Requirements:

  • 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

Basic Usage:

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

Documentation:

Code documentation can be created with pdoc3:

$ pip install pdoc3
$ pdoc3 --html nanoreactor_processing -o doc/

References:

This work:

  1. A. Stan et al., J. Chem. Theory Comput. (2022); https://doi.org/10.1021/acs.jctc.2c00754
  2. A. Stan-Bernhardt et al., ACS Cent. Sci. (2024); https://doi.org/10.1021/acscentsci.3c01403

Other references:

  1. L.-P. Wang et al., Nat. Chem. (2014); https://doi.org/10.1038/nchem.2099
  2. K. Wiberg, Tetrahedron (1968); https://doi.org/10.1016/0040-4020(68)88057-3
  3. G. Landrum, "RDKit: Open-source cheminformatics. https://www.rdkit.org"; https://doi.org/10.5281/zenodo.5085999

About

Post-processing code for computational nanoreactor simulations

License:MIT License


Languages

Language:Python 98.5%Language:Shell 1.5%