DREID-Forge
DREID-Forge is a high-performance, pure-Rust library for automated DREIDING force field parameterization. It orchestrates atom typing, partial charge calculation, and potential energy function generation to produce simulation-ready inputs for both biological macromolecules and arbitrary chemical systems—all without leaving the Rust type system.
Highlights
- Automated atom typing — assigns DREIDING atom types (e.g.,
C_3,O_R,N_2) based on element, hybridization, and local bonding environment via thedreid-typercrate. - Flexible charge assignment — supports global QEq charge equilibration via
cheq, or hybrid mode combining classical force field charges for biomolecules (AMBER/CHARMM) with QEq for ligands viaffcharge. - Embedded QEq for ligands — polarizes ligand charges based on the surrounding protein electrostatic environment using efficient spatial indexing.
- Comprehensive potential generation — produces bond (harmonic/Morse), angle (theta-harmonic/cosine-harmonic), dihedral, improper, van der Waals (LJ 12-6/Exp-6), and hydrogen bond potentials.
- Format interoperability — reads PDB, mmCIF, MOL2, and SDF structures with optional biomolecular preparation (cleaning, protonation, solvation); exports to BGF and complete LAMMPS simulation packages.
- Rust-first ergonomics — no FFI, no global mutable state, edition 2024, and a carefully designed public API with comprehensive RustDoc documentation.
Parameterization Pipeline at a Glance
flowchart LR
Input[System] --> Intermediate[IntermediateSystem]
Intermediate --> Typer[Atom Typing]
Typer --> Charge[Charge Calculation]
Charge --> ParamGen[Parameter Generation]
ParamGen --> Output[ForgedSystem]
- Convert —
IntermediateSystem::from_systembuilds neighbor lists and prepares bonds for physical order assignment. - Type —
assign_atom_typesdelegates todreid-typerto assign DREIDING atom types and enumerate angles, dihedrals, and impropers. - Charge —
assign_chargescomputes partial charges using QEq (global or embedded) or classical force field parameters. - Generate —
generate_parametersproduces all bonded and non-bonded potential parameters according to DREIDING rules. - Output — The resulting
ForgedSystemis ready for export to BGF or LAMMPS formats.
Quick Start
For CLI Users
Install the latest DREID-Forge CLI binary from the releases page or via cargo:
Once the dforge binary is installed, you can parameterize a molecule in a single step:
Explore the complete parameterization pipeline and more options in the user manual and browse the examples directory for runnable walkthroughs.
For Library Developers
DREID-Forge is also available as a library crate. Add it to your Cargo.toml dependencies:
[]
= "0.3.0"
Example: Parameterizing a Molecule
use ;
use ;
Example: Reading PDB and Writing LAMMPS
use File;
use ;
use ;
use ;
Example: Hybrid Charges for Protein-Ligand Systems
use File;
use BufReader;
use ;
use ;
use ;
use ;
Tip: For small molecules without biological context, use
ChemReaderwith MOL2 or SDF formats instead.
For detailed usage instructions and configuration options, refer to the API Documentation.
Documentation
- CLI User Manual — detailed explanation of command-line usage and options.
- API Documentation — comprehensive reference for all public types and functions.
- Architecture Overview — detailed explanation of the internal design, algorithms, and data flow.
Dependencies
dreid-forge builds on several specialized crates:
| Crate | Purpose |
|---|---|
dreid-typer |
DREIDING atom type assignment and topology enumeration |
cheq |
Charge equilibration (QEq) solver with embedded field support |
ffcharge |
Classical force field charges for proteins, nucleic acids, water, and ions |
bio-forge |
Biomolecular structure preparation (cleaning, protonation, solvation, topology) |
License
This project is licensed under the MIT License — see the LICENSE file for details.