All workflows

Molecular dynamics

Ligand Parameterization

Parameterize a small-molecule ligand with ACPype and the GAFF force field, then emit GROMACS topology files. OpenBabel adds and minimizes the hydrogens first.

ACPypeGAFFOpenBabelGROMACSBioExcel biobbconda

What this workflow does

This workflow generates GROMACS-compatible force-field parameters for a small molecule. It uses the GAFF (General AMBER Force Field) through ACPype.

The workflow fetches a ligand structure from the RCSB by its PDB ligand code. It adds hydrogen atoms with OpenBabel at pH 7.4. It then minimizes the hydrogen positions with OpenBabel and GAFF. The last stage runs ACPype and writes the .gro, .itp, and .top files.

Those three files are the input that a GROMACS protein-ligand simulation needs. This workflow is the standard first step before a complex MD setup.

The compute problem

Ligand parameterization is short but brittle. The whole run takes about a minute on one CPU core. No stage needs a GPU.

The difficulty is the software stack, not the compute. ACPype depends on AmberTools. OpenBabel depends on its own chemistry libraries. The three tools have different install paths and different version constraints. A local install that works today breaks after an unrelated upgrade.

The second difficulty is scale. One ligand is cheap. A library of 5,000 ligands is 5,000 independent runs. At that point you want the parameterize stage on a many-core node, and you want the fetch stage to stay off it. A fetch stage that waits on the RCSB holds a compute reservation for no reason.

How Horus solves it

Horus builds the conda environment from conda_env.yaml. It provisions OpenBabel, ACPype, AmberTools, and the biobb stack on the first run. Later runs reuse the cached environment. You do not manage the stack by hand.

Each stage declares an executor. For a single ligand, all four stages run in the local conda environment. For a library, move the parameterize stage to a many-core node with one executor: change. The runtime.command string does not change.

The packages here (biobb_io, biobb_chemistry) have native osx-arm64 conda builds. The workflow runs on Apple Silicon without Docker and without emulation. The AMBER-based workflows in this collection need the Docker executor on the same hardware.

Horus also tracks the file dependencies between the stages. The MOL2 file from add_hydrogens reaches minimize_hydrogens without a copy command. If you rerun after you change the pH, Horus reruns only the affected stages.

Pipeline

fetch_ligand       Fetch ligand structure from the PDB (biobb)
   │
add_hydrogens      Add hydrogen atoms at pH 7.4 (OpenBabel)
   │
minimize_hydrogens Energetically minimize hydrogen positions (OpenBabel + GAFF)
   │
parameterize       Generate GROMACS force-field parameters (ACPype / GAFF)
                   → ligand.params.gro  ligand.params.itp  ligand.params.top

Inputs and outputs

Inputs

This workflow has no file inputs. It fetches the ligand from the PDB. Set the ligand code in configs/fetch_ligand.yaml.

Outputs land in workflow_results/results/:

  • ligand.pdb: the raw ligand structure from the RCSB.
  • ligand.H.mol2: the ligand with added hydrogens.
  • ligand.H.min.pdb: the hydrogen-minimized ligand.
  • ligand.params.gro: the GROMACS structure file.
  • ligand.params.itp: the GROMACS include topology with the GAFF parameters.
  • ligand.params.top: the GROMACS top file.

The files configs/add_h.yaml and configs/minimize_h.yaml control the pH, the force field, and the convergence criteria.

Run the workflow

Install the horus-runtime and the plugins one time:

uv sync

If you do not have uv, install it first:

curl -LsSf https://astral.sh/uv/install.sh | sh

You can also install the packages with pip:

pip install horus-runtime horus-environments

Then run the workflow:

uv run horus run workflow.yaml

The first run builds the conda environment. This takes a few minutes.

References

Run this workflow

The workflow is open source. Clone the pantheon repository and run it with the horus-runtime engine. To run it on managed compute without a cluster of your own, join the Temple Compute OS waitlist.