Skip to main content

chematic_mol/
lib.rs

1#![forbid(unsafe_code)]
2//! `chematic-mol` — SDF/MOL V2000 file format reader and writer for chematic.
3//!
4//! # Overview
5//! - [`mol2000`]: parse and write individual MOL V2000 (Ctab) blocks.
6//! - [`sdf`]: iterate over multi-molecule SDF files.
7//!
8//! # Quick start
9//! ```rust
10//! use chematic_mol::{parse_mol, write_mol, SdfReader};
11//! use chematic_mol::mol2000::MolMetadata;
12//!
13//! let mol_str = "ethanol\n  prog\n\n  3  2  0  0  0  0  0  0  0  0  0 V2000\n    0.0000    0.0000    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0\n    1.5000    0.0000    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0\n    3.0000    0.0000    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0\n  1  2  1  0\n  2  3  1  0\nM  END\n";
14//! let (mol, meta) = parse_mol(mol_str).unwrap();
15//! assert_eq!(mol.atom_count(), 3);
16//! let written = write_mol(&mol, &meta);
17//! ```
18
19pub mod cdxml;
20pub mod cif;
21pub mod cjson;
22pub mod cml;
23pub mod error;
24pub mod gaussian;
25pub mod ket;
26pub mod mol2000;
27pub mod mol2_tripos;
28pub mod mol3000;
29pub mod pdbqt;
30pub mod rxn;
31pub mod sdf;
32
33// Convenient re-exports at crate root.
34pub use error::MolParseError;
35// Re-export MolParseError under the alias MolError as specified by the public API.
36pub use cdxml::{CdxmlError, parse_cdxml, parse_cdxml_all};
37pub use cif::{CifError, CifResult, UnitCell, parse_cif, write_cif};
38pub use cjson::{CjsonError, parse_cjson, write_cjson};
39pub use cml::{CmlError, parse_cml, write_cml};
40pub use error::MolParseError as MolError;
41pub use gaussian::{GaussianError, GaussianLogResult, parse_gaussian_log, parse_gjf, write_gjf};
42pub use ket::{KetError, parse_ket, parse_ket_3d, write_ket, write_ket_3d};
43pub use mol2_tripos::{Mol2Error, parse_mol2, write_mol2};
44pub use mol2000::{
45    MolMetadata, parse_mol, parse_mol_with_coords, parse_sdf_with_coords, write_mol,
46    write_mol_with_coords, write_sdf, write_sdf_with_charges,
47};
48pub use mol3000::{parse_mol_v3000, parse_mol_v3000_with_coords, write_mol_v3000};
49pub use pdbqt::{PdbqtError, autodock_atom_type, parse_pdbqt, write_pdbqt};
50pub use rxn::{RxnParseError, parse_rxn_file, write_rxn_file};
51pub use sdf::{SdfReader, SdfRecord, SdfRecordReader};