molframe 0.6.4

A batteries-included structural bioinformatics engine
Documentation
[package]
name = "molframe"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
description = "A batteries-included structural bioinformatics engine"

[dependencies]
molframe-core.workspace = true
molframe-engine.workspace = true
molframe-adapters = { workspace = true, optional = true }
molframe-audit = { workspace = true, optional = true }
molframe-bcif = { workspace = true, optional = true }
molframe-cif = { workspace = true, optional = true }
molframe-chem = { workspace = true, optional = true }
molframe-spatial = { workspace = true, optional = true }
molframe-geom = { workspace = true, optional = true }
molframe-fx = { workspace = true, optional = true }
molframe-ic = { workspace = true, optional = true }
molframe-interop = { workspace = true, optional = true }
molframe-modelcif = { workspace = true, optional = true }
molframe-pdb = { workspace = true, optional = true }
molframe-query = { workspace = true, optional = true }
molframe-xtal = { workspace = true, optional = true }
molframe-surface = { workspace = true, optional = true }
molframe-analysis = { workspace = true, optional = true }
molframe-validate = { workspace = true, optional = true }
molframe-seq = { workspace = true, optional = true }
molframe-compare = { workspace = true, optional = true }
molframe-traj = { workspace = true, optional = true }
serde.workspace = true
serde_json.workspace = true
thiserror.workspace = true
toml.workspace = true

[dev-dependencies]
criterion.workspace = true
flate2.workspace = true
molframe-bench.workspace = true
sha2.workspace = true
tempfile.workspace = true

[[test]]
name = "golden_tests"
required-features = ["full"]

[[test]]
name = "golden_workflows"
required-features = ["full"]

[[test]]
name = "assembly_query"
required-features = ["full"]

[[test]]
name = "writer_metadata"
required-features = ["full"]

[[test]]
name = "ncs_real"
required-features = ["full"]

[[test]]
name = "modelcif_real"
required-features = ["full"]

[[bench]]
name = "facade"
harness = false
required-features = ["full"]

[[bench]]
name = "golden"
harness = false
required-features = ["full"]

[features]
# Core + the two basic structure formats: pure-Rust, no C toolchain, no
# numeric stack, no network. Everything else is opt-in.
default = ["mmcif", "pdb", "chemistry", "spatial"]

# One format per feature, so a caller that reads one does not link the others.
mmcif = ["dep:molframe-cif", "molframe-engine/mmcif"]
bcif = ["mmcif", "dep:molframe-bcif", "molframe-engine/bcif"]
modelcif = ["mmcif", "dep:molframe-modelcif", "molframe-engine/modelcif"]
pdb = ["dep:molframe-pdb", "molframe-engine/pdb"]

# Geometric kernels.
geometry = ["dep:molframe-geom", "molframe-engine/geometry"]
ic = ["geometry", "dep:molframe-ic", "molframe-engine/ic"]
query = ["dep:molframe-query", "molframe-engine/query"]
spatial = ["query", "dep:molframe-spatial", "molframe-engine/spatial"]
chemistry = ["dep:molframe-chem", "molframe-engine/chemistry"]
# The default-flow tables (bonding reach, covalent radii, Bondi radii, metal
# sites) compiled in as the table store's last layer, so a read perceives
# bonds, and bonds and surface area resolve, with no profile and no
# filesystem (wasm, a clean machine). Registered tables and the profile on
# disk still win over them.
embedded-tables = ["chemistry", "molframe-chem/embedded-tables"]
# Arrow and Parquet together — pulls in molframe-interop (not separable without
# splitting that crate).
interop = ["dep:molframe-interop", "molframe-engine/interop"]
# Neutral byte acquisition, of which network fetch is one client; this is
# what covers reqwest/rustls.
adapters = ["dep:molframe-adapters", "dep:molframe-chem", "molframe-engine/adapters"]
crystal = ["dep:molframe-xtal", "spatial", "molframe-engine/crystal"]

# Analysis domains over the kernels above.
surface = ["spatial", "dep:molframe-surface", "molframe-engine/surface"]
# Pulls in faer.
analysis = ["spatial", "geometry", "chemistry", "dep:molframe-analysis", "surface", "molframe-engine/analysis"]
validation = ["spatial", "geometry", "chemistry", "dep:molframe-validate", "molframe-engine/validation"]
sequence = ["chemistry", "dep:molframe-seq", "molframe-engine/sequence"]
compare = ["geometry", "chemistry", "sequence", "dep:molframe-compare", "molframe-engine/compare"]
trajectory = ["dep:molframe-traj", "molframe-engine/trajectory"]
audit = ["analysis", "dep:molframe-audit", "molframe-engine/audit"]
motif = ["geometry", "chemistry", "dep:molframe-fx", "molframe-engine/motif"]

# Ways of getting bytes in.
gzip = ["molframe-core/gzip", "molframe-engine/gzip"]
zstd = ["molframe-core/zstd", "molframe-engine/zstd"]
mmap = ["molframe-core/mmap", "molframe-engine/mmap"]

full = ["mmcif", "bcif", "modelcif", "pdb", "geometry", "ic", "query", "spatial", "chemistry", "crystal", "surface", "analysis", "validation", "sequence", "compare", "trajectory", "audit", "motif", "adapters", "interop", "gzip", "zstd", "mmap"]

[lints]
workspace = true