How to explore, interpret and download the single-cell data in CnidoSite.
The Single-cell Data page lists every single-cell dataset in CnidoSite with its source accession, tissue, stage and cell count. A dataset is included when a public deposit provides a count matrix (or raw reads sufficient to produce one) that our pipeline can read. Where it does not, the row is still listed, with its accession, marked not re-analysed — so that a gap is visible rather than silent.
Datasets that pass that test get an interactive Cell Atlas, a marker gene table, and per-gene expression plots. Currently 2 dataset(s) (50,602 cells, 69 cell types) are interactive; the rest of the index states why not.
| Action | Effect |
|---|---|
| Drag | pan |
| Scroll | zoom in and out |
| Shift-drag | select the cells inside a region |
| Click a legend entry | isolate that group; click again to release |
| Click a cell | read its cell type, cluster, library and QC values |
| Colour cells by | cell type, cluster, library, three QC metrics, or one gene |
Why the default is one colour, not many. A UMAP places every cell next to every other cell, so colour alone cannot tell 27 — let alone 60 — cell types apart; no palette fixes that. The default therefore shows one group at a time against grey, which is unambiguous and readable for any colour vision. Switch to the full palette when you want the overview, and use the legend, hover and click-to-isolate to identify groups. Colour is never the only channel carrying identity.
Use Colour cells by → gene, or open Gene Expression and type a gene. The map is coloured by expression on a single-hue ramp, and the panel below gives the mean per cell type. Cells that do not express the gene are drawn in a neutral fill, deliberately: on a sequential ramp, "not expressed" must not look like "expressed a little".
Only genes ranked as markers in that dataset have expression files. The search box autocompletes from those genes, and if you ask for one that is not available the page says so rather than showing an empty plot.
Markers are ranked by the Wilcoxon rank-sum test within each cell type against all other cells. Filter on log2 fold change and percent detected, not on the adjusted p-value: at tens of thousands of cells that p-value is minute for almost every gene and carries no information. The table shows both, and the percent-detected column is the honest one.
Datasets are not filtered by one fixed rule, because they come from different studies, platforms and tissues. Where the source publication states per-cell thresholds they are reproduced exactly; where it does not, outliers are called per library by median absolute deviation. The full procedure is recorded per dataset, with the figures actually applied:
Each dataset's own panel is on its Cell Atlas page under Quality control for this dataset, and the whole table is on Single-cell Data. Two cases are worth knowing about, because they are the ones most easily misread:
Every file the viewer reads is a static file, so downloading a dataset and viewing it are the same operation — there is no separate export step and no API key.
| What | Where |
|---|---|
| A dataset's viewer files | /singlecell_data/<dataset_id>/ — see the manifest below |
| Format specification | docs/asset_format.md, with a worked decoder |
| The QC table | meta/qc_dataset_table.tsv, or the SQL in sql/ |
| Source data | the BioProject / GEO link on each row of Single-cell Data |
Each dataset directory holds:
| File | Contents |
|---|---|
manifest.json | metadata, category tables, QC summary, provenance — start here |
embedding.bin | float32[n × 2] UMAP coordinates |
cellmeta.bin | uint16[n × 3] cell type / cluster / library index |
qc.bin | float32[n × 3] counts / genes / MT% |
composition.json | cell counts per cell type per library |
markers.json | ranked markers per cell type |
genes.json | index of genes that have an expression file |
expression/<gene>.bin.gz | sparse per-cell expression, one file per gene |
All values are little-endian. A -1.0 in qc.bin means
"not computed", not a measurement — see the format specification for the
worked example.
Every view has a permalink, so a figure can point at exactly what was shown:
cell_atlas.php?dataset=ID&type=<cell type> — isolate a cell typecell_atlas.php?dataset=ID&gene=<gene>&mode=gene — colour by a genegene_exp.php?dataset=ID&gene=<gene> — feature plot and distributioncell_marker.php?dataset=ID&cell_type=<name>&gene=<gene> — the marker tableEach dataset records the pipeline version and processing date that produced it, so an atlas can be traced to the code and the date it was built.
If a dataset is missing, a gene has no expression data when you expect it to, or a figure looks wrong, please tell us — with the permalink if you have it. The inclusion criterion in section 1 is meant to make omissions checkable, and we would rather hear about one than not.