-
Notifications
You must be signed in to change notification settings - Fork 3
Description
Hey folks,
I am reviewing your article and package lammpsio for JOSS.
Overall, the idea behind this package is unique and addresses a real need of the LAMMPS molecular simulation community. I like the convenience it provides to the user in reading/writing LAMMPS data files. The documentation is detailed and accessible via GitHub (thank you @Ladme) and the package is easy to install. This package passes the required JOSS checks.
In order to improve this package and to make sure it reaches a broader audience, the implementation aspect of this package needs a little more work. I have 2 big-picture recommendations and a few minor comments:
-
Add a feature to include force field interactions in the LAMMPS data file: Currently the LAMMPS data file created by this package outputs positions, velocities and topology of the system. Without appropriate force field interactions, the created data file itself is of limited scientific use. It is true that the end-user must choose these interactions specific to their system, but there should be an option to prescribe them in the data file for the user to fully exploit the convenience of working in a Python-based environment.
To implement this, I encourage you to look into moltemplate. You can implement something as simple as writing out user-prescribed pairwise and bonded interaction parameters to the data file. And ideally (but also optionally): have a feature to create a data file with interactions pulled from classical force fields like OPLSAA or GAFF with the task of atom-typing left to the user and to be able to interface with tools like moltemplate/PACKMOL. -
Add a tutorial showing construction of a system other than dimers: The tutorials on the documentation page are nice and very helpful for a beginner to get started with writing/reading/analyzing LAMMPS data files. For a broader MD audience, it will be interesting to show construction of a more advanced system that contains bonds, angles, dihedrals and impropers, e.g. a polymer chain in TIP4P water. For this bullet point, the force-field feature in 1. (above) will come in handy, in the sense that a seasoned molecular-simulator -- working with lammpsio -- will save a lot of time in getting from a state of creating initial geometry to simulating dynamics for their system.
Bonus for the user: showing how lammpsio can create data files with pair interactions generated using relentless or how relentless leverages lammpsio-functionalities would be a plus!
Minor comments:
-
The LAMMPS data file created using lammpsio places the "Masses" section after the "Atoms" section. While LAMMPS supports flexible section order, many users and tools expect (and LAMMPS itself outputs) a conventional order with header → Masses → coefficient sections → Atoms/Velocities → topology (Bonds, Angles, …). Moving Masses (and any coeff sections) near the top would make quick sanity checks easier.
-
I could not find information on whether lammpsio can read LAMMPS binary restart files. It's okay if not supported in the package, but helpful to state this in the documentation.
-
Whether you end up interfacing with moltemplate or not, I encourage you to cite it in your article. It's an open-source tool that is useful in creating LAMMPS data files, with similar use-case as lammpsio.
-
I could not discern if lammpsio can be used in combination with multiprocessing or numba modules in python, which would be useful in parsing through multiple frames of a Snapshot of large dump file. If not, then please consider adding this feature.