Python¶
Packmol-grade molecular packing in Rust, with a first-class Python binding.
molpack arranges \(N\) molecule types under geometric restraints without
overlaps. The engine is a faithful port of Packmol's GENCAN-driven algorithm
(Martínez et al. 2009); five canonical workloads stay pinned against Packmol
reference output.
At a glance¶
import molrs
from molpack import InsideBoxRestraint, Molpack, Target
frame = molrs.io.read_pdb("water.pdb")
water = (
Target(frame, count=100)
.with_name("water")
.with_restraint(InsideBoxRestraint([0.0, 0.0, 0.0], [40.0, 40.0, 40.0]))
)
packer = Molpack().with_tolerance(2.0).with_seed(42)
frame = packer.pack([water], max_loops=200)
print(f"packed {frame['atoms'].nrows} atoms")
Next steps¶
Installation
pip install and verification.
Quickstart
First pack end-to-end.
Targets
Templates, counts, fixed placement.
Restraints
Geometric and collective restraints.
Packer
Builder options, diagnostics, handlers.
Periodic boundaries
PBC rules and validation.
Examples
Packmol-equivalent workloads.
API reference
Class-by-class summary.
See also¶
- Rust crate:
molcrafts-molpack— the underlying engine molcrafts-molrs— frame I/O and theFramedata model (installed as a dependency)