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. - QEq charge equilibration — computes electronegativity-equalized partial atomic charges using the
cheqlibrary, with configurable total charge constraints. - 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_chargesoptionally computes QEq partial charges viacheq. - 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
Add dreid-forge to your Cargo.toml:
[]
= "0.1.0"
Example: Parameterizing a Molecule
use ;
use ;
Example: Reading PDB and Writing LAMMPS
use File;
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
- 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 |
bio-forge |
Biomolecular structure preparation (cleaning, protonation, solvation, topology) |
License
This project is licensed under the MIT License — see the LICENSE file for details.