Design goals
Readable, reproducible, portable
No exotic dependencies—just CSV and YAML. Semantic versions and explicit citations make calibration assets citable and verifiable.
Structure
- Long tables with normalized identifiers (ISO country codes, ISIC/HS/GTAP sectors, factor names, time).
- Single
valuecolumn. Units and price base documented in metadata. - Completeness checks for Cartesian keys and missing values via validators.
Provenance
- Metadata records sources, licenses, citations, checksums, generator version, and timestamp.
- Supports semantic versioning (
major.minor.patch) tied to data changes. - Ready for DOI minting (e.g., Zenodo) alongside code and papers.
Specification
What goes into a .ice file?
Flat CSV tables plus a YAML manifest. Keys first, value last, with explicit citations and semantic versions.
Minimal contract
- UTF-8 CSVs, one table per file. Keys first, then
value. - Normalized identifiers: ISO country codes, sector codes, factor labels, time.
metadata.yamlwith description, version, timestamp, sources, license, and contacts.- Per-table schema: key names, types, descriptions, and units for
value.
Lifecycle
- Build:
generate_ice(tables, metadata, "baseline.ice") - Inspect:
list_tables(),extract_table() - Validate:
validate_ice()for completeness and types - Version and cite: semantic versioning, checksum, DOI via Zenodo
Workflow
Build, validate, share
Use icetools (R) or your own scripts to construct tables, generate .ice archives, and publish to the library with checksums.
Build
Assemble tables as CSV and craft metadata.yaml with schema, sources, license, and notes.
Validate
Run validate_ice() to enforce completeness and types. Record checksum and semantic version.
Share
Package as .ice, publish alongside replication code, and add an entry to the library.