molcrafts-molpack 0.1.2

Faithful Rust port of Packmol molecular packing (split off from molrs)
Documentation
# 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

```python
import molrs
from molpack import InsideBoxRestraint, Molpack, Target

frame = molrs.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

<div class="molpack-next-cards" markdown>

- **[Installation]installation.md** — pip install and verification
- **[Quickstart]getting-started.md** — first pack end-to-end
- **[Targets]guide/targets.md** — templates, counts, fixed placement
- **[Restraints]guide/restraints.md** — geometric and collective restraints
- **[Packer]guide/packer.md** — builder options, diagnostics, handlers
- **[Periodic boundaries]guide/periodic-boundaries.md** — PBC rules
- **[Examples]examples.md** — Packmol-equivalent workloads
- **[API reference]api-reference.md** — class-by-class summary

</div>

## See also

- Rust crate: [`molcrafts-molpack`]https://crates.io/crates/molcrafts-molpack  the underlying engine
- [`molcrafts-molrs`]https://pypi.org/project/molcrafts-molrs/ — frame I/O and
  the `Frame` data model (installed as a dependency)