Skip to main content

molrs/
lib.rs

1//! # molrs
2//!
3//! A Rust library providing core molecular modeling functionality.
4//!
5//! ## Features
6//!
7//! - Element data and lookup by atomic number or symbol
8//! - Core data structures, geometry, IO, and neighbor-list algorithms
9//! - Type-safe molecular representations
10//!
11//! ## Examples
12//!
13//! ### Element lookup
14//!
15//! ```
16//! use molrs::Element;
17//!
18//! // Look up elements by atomic number
19//! let hydrogen = Element::by_number(1).unwrap();
20//! assert_eq!(hydrogen.symbol(), "H");
21//!
22//! // Or by symbol (case-insensitive)
23//! let h = Element::by_symbol("h").unwrap();
24//! assert_eq!(h.name(), "Hydrogen");
25//! ```
26//!
27//! ### Packing (moved to `molrs-pack`)
28//!
29//! ```ignore
30//! use molrs_pack::Molpack;
31//!
32//! let mut packer = Molpack::new(None).with_precision(1e-3);
33//! let _ = &mut packer;
34//! ```
35
36#![allow(missing_docs)]
37#![warn(rustdoc::missing_crate_level_docs)]
38
39// Embedded data files
40pub mod data;
41
42// Modules formerly in core/
43pub mod atomistic;
44pub mod block;
45pub mod coarsegrain;
46pub mod element;
47pub mod forcefield;
48pub mod frame;
49pub mod gasteiger;
50pub mod gen3d;
51pub mod hydrogens;
52pub mod mapping;
53pub mod molgraph;
54pub mod potential;
55pub mod region;
56pub mod rings;
57pub mod rotatable;
58pub mod stereo;
59pub mod topology;
60pub mod types;
61pub mod typifier;
62
63// Analysis compute modules
64pub mod compute;
65
66// Other top-level modules
67pub mod error;
68pub mod io;
69pub mod math;
70pub mod neighbors;
71pub mod smiles;
72
73// Public re-exports for common types
74pub use atomistic::Atomistic;
75pub use block::Block;
76pub use coarsegrain::CoarseGrain;
77pub use element::Element;
78pub use error::MolRsError;
79pub use frame::Frame;
80pub use gasteiger::{GasteigerCharges, compute_gasteiger_charges};
81pub use gen3d::{
82    EmbedAlgorithm, ForceFieldKind, Gen3DOptions, Gen3DReport, Gen3DSpeed, StageKind, StageReport,
83    generate_3d,
84};
85pub use hydrogens::{add_hydrogens, implicit_h_count, remove_hydrogens};
86pub use mapping::{CGMapping, WeightScheme};
87pub use molgraph::{Atom, AtomId, Bead, Bond, BondId, MolGraph, PropValue};
88pub use rings::{RingInfo, find_rings};
89pub use stereo::{
90    BondStereo, TetrahedralStereo, assign_bond_stereo_from_3d, assign_stereo_from_3d,
91    chiral_volume, find_chiral_centers,
92};
93pub use topology::Topology;
94
95// Typifier re-exports
96pub use typifier::Typifier;
97pub use typifier::mmff::{MMFFAtomProp, MMFFEquiv, MMFFParams, MMFFTypifier};
98
99// SMILES/SMARTS re-exports
100pub use smiles::{parse_smarts, parse_smiles, to_atomistic};
101
102// Re-export IO functions for convenience
103pub use forcefield::xml::{read_forcefield_xml, read_forcefield_xml_str};
104pub use io::lammps_data::read_lammps_data;
105pub use io::pdb::{read_pdb_frame, write_pdb_frame};
106pub use io::xyz::{read_xyz_frame, read_xyz_traj, write_xyz_frame};
107
108// Zarr I/O re-exports (only with "zarr" feature)
109#[cfg(all(feature = "zarr", feature = "filesystem"))]
110pub use io::zarr::Archive;
111#[cfg(feature = "zarr")]
112pub use io::zarr::{
113    Provenance, SimulationStore, TrajectoryConfig, TrajectoryFrame, TrajectoryReader,
114    TrajectoryWriter, UnitSystem,
115};