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,778 notations across 942 bundled rows; a GlyTouCan accession and a damaged string stored in the IUPAC column are not notations and are excluded), 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.