bio_forge/lib.rs
1#![doc(
2 html_logo_url = "https://raw.githubusercontent.com/TKanX/bio-forge/main/assets/logo.svg",
3 html_favicon_url = "https://raw.githubusercontent.com/TKanX/bio-forge/main/assets/logo.svg"
4)]
5
6//! # BioForge
7//!
8//! **BioForge** is a pure-Rust molecular preparation engine that ingests experimental macromolecular files, reconciles them with curated residue templates, and emits topology-aware structures ready for simulation or analysis. The crate favors deterministic workflows, strong typing, and clean error surfaces so pipelines remain auditable from parsing to solvation.
9//!
10//! ## Features
11//!
12//! - **High-fidelity templates** – Embedded TOML templates for proteins, nucleic acids, and solvent ensure reproducible coordinates, elements, and bonding across runs.
13//! - **Ergonomic structure model** – Lightweight `Atom`, `Residue`, `Chain`, and `Structure` types backed by `nalgebra` power geometric manipulation and metadata-aware queries.
14//! - **Versatile I/O** – Buffered readers and writers for PDB, mmCIF, and MOL2 share a common context that normalizes residue aliases and captures precise diagnostics.
15//! - **Compositional operations** – Cleaning, repairing, hydrogenation, solvation, topology building, and transforms live under `ops`, producing interoperable results with a unified error type.
16//! - **Topology reconstruction** – `Topology` and `Bond` exports allow downstream force-field assignment or connectivity validation without re-parsing raw coordinates.
17
18mod db;
19mod model;
20mod utils;
21
22pub mod io;
23pub mod ops;
24pub mod templates;
25
26pub use model::atom::Atom;
27pub use model::chain::Chain;
28pub use model::grid::{Grid, GridNeighborhood};
29pub use model::residue::Residue;
30pub use model::structure::Structure;
31pub use model::template::Template;
32pub use model::topology::{Bond, Topology};
33pub use model::types::{
34 BondOrder, Element, Point, ResidueCategory, ResiduePosition, StandardResidue,
35};
36
37#[cfg(feature = "parallel")]
38pub use utils::parallel;