StructOpt
structopt is a Python package and CLI to quickly clean and optimize protein structures from
predicted or experimental sources (.pdb, .cif, .mmcif).
It combines:
PDBFixerfor structure cleanup.- OpenMM minimization (implicit solvent by default).
- Optional short MD refinement.
- Optional GAFF small-molecule handling (for ligands like
LIG1).
Install
Install from PyPI:
pip install structopt
If you want ligand/GAFF support, also install openmmforcefields in the same environment.
Depending on your platform, it may be easier to use the provided mamba environment for that setup.
Install From Source
Sync the project environment with uv:
uv sync
To include dev tools:
uv sync --group dev
For GAFF ligand support from source, install openmmforcefields, rdkit, and AmberTools
in the active environment. If your package index cannot resolve those, use mamba:
mamba env create -f environment.mamba.yml
mamba activate structopt
pip install -e .
CLI
Run the command below to see all the possible options you can have for your optimisation
uv run structopt optimize --help
Example:
uv run structopt optimize tests/data/geraniol_model_0.cif
Useful options:
uv run structopt optimize tests/data/geraniol_model_0.cif \
--mode both \
--ph 7.2 \
--ligand-name LIG1 \
--npt-steps 50000 \
--temperature 300 \
--pressure 1.0
If GAFF ligand parametrization cannot be inferred from the structure alone, provide an SDF:
uv run structopt optimize tests/data/geraniol_model_0.cif \
--ligand-name LIG1 \
--ligand-sdf path/to/ligand.sdf
Notes
- Default cleanup adds hydrogens at pH
7.2. - Minimization uses explicit by default or possibly implicit solvent (
gbn2orobc2). - MD refinement uses short explicit-solvent NPT by default.
- For GAFF workflows, install AmberTools in your environment.
Metadata
Release files for structopt 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| structopt-0.2.0.tar.gz | 1.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| structopt-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.1 MB
Release files / structopt-0.2.0.tar.gz
| Download URL | structopt-0.2.0.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8953bb50dc413c2ce7c968cd367b1e495842020a0b004a3355de58e0ee70afc5
|
|
BLAKE2b-256 checksum How to use checksums |
3d07afee3d4af5634d0ef05e60361b54efaf639ef70077fee0a89c965e1ea388
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 5, 2026.
Transparency logRelease files / structopt-0.2.0-py3-none-any.whl
| Download URL | structopt-0.2.0-py3-none-any.whl |
|---|---|
| Size | 19.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3d0133ebcbe15c6deba0665ae9d0672a91288d79a53dbc40725f027205edbc9f
|
|
BLAKE2b-256 checksum How to use checksums |
6b339dde8e8d34261fe114ee41f2f72da4e73f3b11e871638b1cd6b6231fbf50
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 5, 2026.
Transparency log