Metadata-Version: 2.4
Name: htpolynet
Version: 2.1.0
Summary: Automated MD System Builder for Amorphous Network Polymers
Project-URL: Source, https://github.com/AbramsGroup/htpolynet
Project-URL: Documentation, https://htpolynet.readthedocs.io/
Project-URL: Bug Tracker, https://github.com/AbramsGroup/htpolynet/issues
Author-email: Cameron F Abrams <cfa22@drexel.edu>
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Chemistry
Requires-Python: >=3.9
Requires-Dist: gputil>=1.4
Requires-Dist: matplotlib>=3.5
Requires-Dist: networkx>=3.2
Requires-Dist: numpy>=1.24
Requires-Dist: pandas>=2
Requires-Dist: parmed>=4
Requires-Dist: pyyaml>=6
Requires-Dist: requests>=2.28
Requires-Dist: scipy>=1.10
Requires-Dist: setuptools
Provides-Extra: dev
Requires-Dist: pytest; extra == 'dev'
Provides-Extra: smiles
Requires-Dist: rdkit; extra == 'smiles'
Description-Content-Type: text/markdown

# htpolynet
> High-Throughput Polymer Network Atomistic Simulations

htpolynet is a Python utility for generating atomistic models of cross-linked polymer networks together with appropriate topology and parameter files required for molecular dynamics simulations using Gromacs.  It is intended as a fully automated system builder requiring as inputs only the molecular structures of any monomer species, a description of the polymerization chemistry, and a handful of options describing desired system size and composition.  htpolynet uses the Generalized Amber Force Field for atom-typing and parameter generation.

## Installation

From PyPI:
```bash
pip install htpolynet
```

From conda-forge:
```bash
conda install -c conda-forge htpolynet
```

From source:
```bash
git clone git@github.com:AbramsGroup/htpolynet.git
cd htpolynet
pip install -e .
```

Once installed, the user has access to the main ``htpolynet`` command.

IMPORTANT NOTES: The programs ``antechamber``, ``parmchk2`` and ``tleap`` from AmberTools must be in your path.  These can be installed using the ``ambertools`` package from ``conda-forge`` or compiled from source.  You also need Gromacs installed so ``gmx`` is in your path.  The examples show how to build input monomer structures using OpenBabel, so to use them you need ``obabel`` in your path as well.

## Docker

As an alternative to a local installation, a prebuilt container image is published at ``ghcr.io/abramsgroup/htpolynet``.  It bundles htpolynet together with Gromacs, AmberTools, and OpenBabel, so no additional dependencies are required on the host beyond Docker (and, optionally, the NVIDIA Container Toolkit for GPU runs).

Run htpolynet against a configuration file in the current directory:
```bash
docker run --rm -v $(pwd):/work ghcr.io/abramsgroup/htpolynet run config.yaml
```

With GPU support:
```bash
docker run --rm --gpus all -v $(pwd):/work ghcr.io/abramsgroup/htpolynet run config.yaml
```

A Docker Compose file is also provided in [docker/compose.yml](docker/compose.yml) for a shorter invocation (``docker compose run --rm htpolynet run config.yaml``).  See [docs/source/user-guide/container-usage.rst](docs/source/user-guide/container-usage.rst) for the full story, including Singularity/Apptainer use on HPC systems.

## Documentation

Please consult documentation at [abramsgroup.github.io/htpolynet](https://abramsgroup.github.io/htpolynet/).

## Meta

Cameron F. Abrams – cfa22@drexel.edu

Distributed under the MIT license. See ``LICENSE`` for more information.

[https://github.com/cameronabrams](https://github.com/cameronabrams/)

[https://github.com/AbramsGroup](https://github.com/AbramsGroup/)

## Contributing

1. Fork it (<https://github.com/AbramsGroup/htolynet/fork>)
2. Create your feature branch (`git checkout -b feature/fooBar`)
3. Commit your changes (`git commit -am 'Add some fooBar'`)
4. Push to the branch (`git push origin feature/fooBar`)
5. Create a new Pull Request

