1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
//! # molrs
//!
//! Unified molecular simulation toolkit. A single crate whose sub-systems are
//! feature-gated modules: `core` (always on) plus `io`, `compute`, `smiles`,
//! `ff`, `conformer`, and `signal`.
//!
//! ```toml
//! molcrafts-molrs = { version = "0.1", features = ["io", "smiles"] }
//! ```
//!
//! Then:
//!
//! ```ignore
//! use molrs::Frame; // core (always available)
//! use molrs::io::read_xyz; // feature = "io"
//! use molrs::smiles::parse; // feature = "smiles"
//! ```
//!
//! ## Features
//!
//! - `io` — file I/O (PDB, XYZ, LAMMPS, CHGCAR, Cube, Zarr)
//! - `compute` — trajectory analysis (RDF, MSD, clustering, tensors)
//! - `smiles` — SMILES/SMARTS parser (lives in `io`)
//! - `ff` — force fields (MMFF94, PME, typifier)
//! - `conformer` — 3D conformer generation
//! - `signal` — signal processing (FFT-based ACF, windowing, frequency grids)
//! - `full` — everything above
//!
//! Core flags: `rayon` (default), `zarr`, `filesystem`, `blas`.
//!
//! ## Molecular packing
//!
//! The Packmol port lives in the standalone `molcrafts-molpack` crate
//! (<https://github.com/MolCrafts/molpack>); add it as a separate dependency
//! when needed.
// Let in-crate paths refer to this crate by its public name `molrs::` (e.g.
// `molrs::Frame`, `molrs::io::read_xyz`), matching how downstream code and
// doctests spell them. Sub-system modules below were absorbed from the former
// `molrs-*` member crates and rely on this alias for their cross-module paths.
extern crate self as molrs;
// Core is always compiled and its public surface is re-exported at the crate
// root, so `molrs::Frame`, `molrs::system::…`, `molrs::error::…` resolve exactly
// as they did when core was a separate crate.
pub use crate*;
// `serde::Serialize`/`Deserialize` for the core model (Frame/Block/Column/
// SimBox). Impls only; no public items. Enabled by `serde` (and by `stream`).
/// Live `Frame` streaming: a WASM-clean, MolRec-aligned transport encoding
/// (MessagePack / JSON) over the `serde`-serializable core model. Not in `full`.
// `smiles` is a sub-module of `io`; expose it at the top level for ergonomics.
pub use cratesmiles;