Reproducibility and data provenance
crabWURCS bundles its runtime data and never downloads chemistry tables while converting user input.
crabwurcs-pdb/data/pdb_carbohydrate_components.tsvrecords the wwPDB CCD snapshot date, source URL, checksum, and regeneration command.- GlycoShape-derived notation and molecular tables document their columns and
regeneration scripts under each crate's
data/directory. - SNFG documentation images are generated by
cargo run -p crabwurcs --example generate_docs_assets.
Release validation runs formatting, warning-free Clippy, all targets and doctests, Python wheel tests, version consistency checks, and Cargo package construction from a clean checkout.
WURCS normalization conformance
The bundled GlycoShape IUPAC table is an offline regression oracle. It parses all populated condensed and extended fields (1,780 notations across 942 bundled rows), normalizes each source WURCS, and compares the result with a WURCS written from the IUPAC graph. Any parse/write failure is treated as a test failure:
cargo test -p crabwurcs --test glycoshape_iupac_conformance -- --nocapture
GlyCosmos verification is opt-in so normal builds remain deterministic and offline. The ignored test posts the bundled source WURCS strings to the documented GlycanFormatConverter API and requires its response to equal crabWURCS's normalized WURCS:
CRABWURCS_RUN_GLYCOSMOS=1 \
cargo test -p crabwurcs --test glycosmos_conformance -- --ignored --nocapture
The live check defaults to 25 distinct WURCS records. Set
CRABWURCS_GLYCOSMOS_LIMIT=0 (or all) to exercise the complete bundled
corpus, or set CRABWURCS_GLYCOSMOS_API to use a compatible versioned endpoint.
The default endpoint is the documented 2.8.2 JSON route:
https://api.glycosmos.org/glycanformatconverter/2.8.2/wurcs2wurcs.