Skip to content

PSP is a python toolkit for predicting atomic-level structural models for a range of polymer geometries.

License

Notifications You must be signed in to change notification settings

Ramprasad-Group/PSP

Repository files navigation

PolymerStructurePredictor (PSP) Open In Colab

Three-dimensional atomic-level models of polymers are necessary prerequisites for physics-based simulation studies. Polymer structure predictor (PSP) is capable of generating a hierarchy of polymer models, ranging from oligomers to infinite chains to crystals to amorphous models, using a simplified molecular-input line-entry system (SMILES) string of the polymer repeat unit as the primary input. The output structures and accompanying force field (GAFF2/OPLS-AA) parameter files are provided for downstream DFT and MD simulations.

PSP generates models for monomers, linear and loop oligomers, infinite polymer chains, crystal, and amorphous structures using SMILES strings.

Contributors

  • Harikrishna Sahu
  • Huan Tran
  • Kuan-Hsuan Shen
  • Joseph Montoya
  • Rampi Ramprasad

License & copyright

Ramprasad Group, Georgia Tech, USA
Ramprasad Group website
Licensed under the MIT License.

Contact

All queries regarding the usage of PSP should be addressed to: [email protected].

We highly recommend interested individuals join the PSP group. This allows you to participate in discussions and keeps you updated on issues, bug fixes, and latest developments.

Reference

If you use PSP, please cite:
Sahu, H.; Shen, K.-H.; Montoya, J. H.; Tran, H.; Ramprasad, R. Polymer Structure Predictor (PSP): A Python Toolkit for Predicting Atomic-Level Structural Models for a Range of Polymer Geometries, J. Chem. Theory Comput., 2022.

Installation

PSP requires the following packages to be installed in order to function properly:

  • RDKit v2020.09.1.0
  • Open Babel v3.1.1
  • PACKMOL v20.2.2
  • PySIMM v0.2.3
  • LAMMPS
  • AmberTools21 (optional, only needed for the get_gaff2() function in the AmorphousBuilder)
  • LigParGen dependencies (optional, only needed for the get_opls() function in the AmorphousBuilder)

It should be noted that all dependencies must be installed separately and tested to ensure that they all function. We recommend using Anaconda python, and creating a fresh conda environment for PSP (e. g. conda create -n MY_ENV_NAME).

RDKit and OpenBabel are available as conda packages and can be installed using the instructions provided in the following links (1)https://anaconda.org/rdkit/rdkit and (2)https://anaconda.org/conda-forge/openbabel.

The deatiled intructions for the installation of PACKMOL package can be found at the following URL: http://leandro.iqm.unicamp.br/m3g/packmol/home.shtml. Make sure to include the path for PACKMOL executable as an environment variable "PACKMOL_EXEC" in ~/.bashrc file.

LAMMPS can be installed separately or along with PySIMM. Make sure to add the PySIMM package to your PYTHONPATH and add PySIMM and LAMMPS command-line tools to your PATH as mentioned in the PySIMM documentation.

Ambertools is available as a conda package and can be installed using the instructions provided in the following links: https://ambermd.org/AmberTools.php. Make sure to include the path for the Antechamber executable as an environment variable "ANTECHAMBER_EXEC" in ~/.bashrc file.

Following that, source your ~/.bashrc file. PSP will look for PATHs for PACKMOL, PySIMM, LAMMPS, and Antechamber while performing its tasks.

LigParGen and its dependencies: LigParGen requires the BOSS executable. Obtain a copy of it and set $BOSSdir variable in bash. For more information, see http://zarbi.chem.yale.edu/ligpargen and http://zarbi.chem.yale.edu/software.html. To make LigParGen compatible with PSP, we updated it to include the following features: (1) the ability to store the output files in a user-defined directory; and (2) compatibility with the recent versions of Open Babel (v3.1.1), NetworkX (v2.5), and pandas (v1.2.4). Take note that we have not yet installed NetworkX; ensure that this is done. The updated LigParGen source code is redistributed as part of the PSP package.

Once all dependencies are installed, clone the PSP repository and install it using the setup.py included in the package.

python setup.py install

NOTE: A colab notebook that demonstrates the step-by-step installation procedure and installs PSP and its dependencies has been provided. Open In Colab