Versions and citation
Cancer Basemap publishes one kind of release, a folder of Parquet files plus a DuckDB database, in two places. They hold the same tables in the same layout. They differ in how long they last and how you use them (ADR-0001). Releases lists the ones available now.
| Version | Where | Changes? | Kept | Use it by |
|---|---|---|---|---|
latest/ |
https://basemap.cancerdatasci.org/data/latest/ |
with each release | always the newest | querying in place |
| Dated | https://basemap.cancerdatasci.org/data/v{YYYY-MM-DD}/ |
never | the newest release of each of the 12 newest months that had one | querying in place |
| Tag | Hugging Face dataset seandavis/cancerbasemap, git tag YYYY-MM-DD |
never | permanently, every release | downloading, then querying locally |
A release is cut on the 1st of each month, and by hand when a correction or a large new source release can’t wait. latest/ and the dated folders on R2 are served for querying in place: DuckDB ATTACH, read_parquet and the playground all read them over HTTPS. Every release is also pushed to Hugging Face and tagged with its date, and tags are never deleted. A tag is the version to cite. Download one, then query it locally.
R2 keeps the newest release of each of the 12 newest months that had a release. A release that a same-month correction replaced is deleted 7 days after the correction. So a dated folder is a short-to-medium-term pin, not an archive; anything older, or replaced, is on Hugging Face only, where the release keeps its tag.
Which one to use
- Exploring, or building something that should track the sources: use
latest/. - An analysis you’ll rerun soon: pin a dated folder.
- A paper, a report, a shared pipeline, or anything that must stay reproducible or that you’ll cite: download the Hugging Face tag
YYYY-MM-DD.
Pin a dated folder
Replace latest/ with a date. Each dated folder’s cancerbasemap.duckdb reads its own Parquet files, so the views stay pinned too:
ATTACH 'https://basemap.cancerdatasci.org/data/v2026-12-01/cancerbasemap.duckdb' AS basemap (READ_ONLY);To see which dates are available, open Releases or the folder listing. A dated folder can disappear: when its month ages out of the 12 newest, or 7 days after a same-month correction replaces it. Use a tag for anything that must stay reproducible.
Use a tag
Every release that passes the gate is copied to the Hugging Face dataset seandavis/cancerbasemap and tagged with its date (the R2 folder v2026-12-01/ is the tag 2026-12-01). Files sit at the repository root in the same layout as R2 (measure/observation.parquet, …).
Download the release with the hf command-line tool (in huggingface_hub; uvx --from huggingface_hub hf runs it without installing), then query the local files:
hf download seandavis/cancerbasemap --repo-type dataset --revision 2026-12-01 \
--local-dir cancerbasemap-2026-12-01
duckdb -c "SELECT count(*) FROM 'cancerbasemap-2026-12-01/measure/observation.parquet'"--include 'measure/*' downloads only some of the files. A Hugging Face token (hf auth login) raises the download rate limits.
Don’t query the archive in place with hf:// paths. Hugging Face limits anonymous requests, one query can make hundreds, and repeated queries soon fail with HTTP 429. For in-place queries use latest/ or a dated folder.
Cite Cancer Basemap
Cite the release you used by its tag (e.g. seandavis/cancerbasemap@2026-12-01), and its DOI if the dataset page for that tag shows one. A tag is permanent even after its R2 folder is deleted.
If you used a dated folder, its date is the tag. Also record the release and git_sha from its manifest.json. Each table also names the upstream source and release it came from, and each source keeps its own terms; cite those sources as they ask (see Sources).
The manifest
Every version has a manifest.json:
curl -s https://basemap.cancerdatasci.org/data/latest/manifest.jsonDuckDB reads it directly. The provenance fields of the current latest/:
SELECT release, published_at, git_sha
FROM read_json('https://basemap.cancerdatasci.org/data/latest/manifest.json');And the row count of each published table:
SELECT t.schema, t."table", t.row_count
FROM read_json('https://basemap.cancerdatasci.org/data/latest/manifest.json'),
unnest(tables) AS u(t)
ORDER BY t.schema, t."table";releaseis the release date andgit_shathe commit of the pipeline code that built it.provenancelists each upstream release the data was built from.tablesgives each table’spath,row_count,bytes,sha256, comment and column docs.