glass.bio blog

Astral: a map of healthy and diseased human cell types

Astral is a map of public human single-cell RNA-seq data. Each point is one cluster of cells from one sample. Every cluster has a cell type label and is placed by its gene expression, so clusters with similar expression sit near each other, whichever study they came from. You can open it at demo.glass.bio/astral.

Samples
26,948
Linked papers
2,243
Cells
191.2M
Clusters
381,087
Coarse types
15
Fine types
48
  1. Lymphocytes 32.50%
  2. Myeloid immune cells 13.40%
  3. Epithelial cells 11.30%
  4. Cell lines 8.27%
  5. Connective tissue cells 7.77%
  6. Neural cells 7.24%
  7. Blood-lineage cells 5.90%
  8. Glial cells 3.49%
  9. Immune cells 2.97%
  10. Endothelial cells 2.86%
  11. Endocrine cells 1.34%
  12. Trophoblasts 1.33%
  13. Muscle cells 0.73%
  14. Pigment cells 0.69%
  15. Trabecular meshwork cells 0.19%

Cancer and disease

Astral holds 20,028 samples from patients and donors. 5,300 of them come from cancer, covering 311 distinct cancer diagnoses across 685 papers. Another 7,080 samples come from other diseases, led by COVID-19, Alzheimer disease, idiopathic pulmonary fibrosis, and Crohn disease.

A T cell cluster from a melanoma biopsy can be compared directly with T cells from healthy blood, or from any other tumor type in the atlas.

  1. Plasma cell myeloma 352
  2. Glioblastoma 304
  3. Acute myeloid leukemia 269
  4. Ovarian carcinoma 256
  5. Breast cancer 247
  6. Melanoma 233
  7. Lung adenocarcinoma 157
  8. Colorectal cancer 146
  9. Head and neck squamous cell carcinoma 142
  10. Esophageal squamous cell carcinoma 122
  11. Non-small cell lung carcinoma 122
  12. Triple-negative breast carcinoma 106
  13. Prostate cancer 96
  14. Neuroblastoma 93
  15. Pancreatic ductal adenocarcinoma 88

How to use Astral

Gene expression

Color the map by any gene, or by several genes at once, to see where they are expressed across every cluster in the atlas.

Add to cart and merge

Add clusters from any study to the cart. When you have the populations you want, ask Marble to merge them into one dataset you can analyze further in Glass.

Similarity search

Select a cluster to draw lines to its most similar clusters in other samples. Use it to find the same cell type in other studies, tissues, or diseases.

Upload your own data

Upload your own dataset to Glass and project it onto the map. Your clusters land next to the public clusters they most resemble.

How we built Astral

  1. Alignment

    We started from Arc Institute's scBaseCount, which reprocesses public single-cell data from GEO. Every sample is aligned to the same reference genome with the same pipeline, so counts from different studies are directly comparable.

  2. Processing and clustering

    Each sample was processed and clustered on its own. The median sample has 13 clusters.

  3. Annotation

    Marble, our biology agent, labeled every cluster. It uses the cluster's gene expression together with the sample metadata and the literature. This produced 172,709 distinct annotated cell types.

  4. Ontology mapping

    We used semantic processing to group similar labels, and mapped the groups onto a cell type hierarchy with two levels: 48 fine types and 15 coarse lineages. "Naive CD8+ T cells" and "Effector memory CD8+ T cells (GZMK+)" are both categorized as CD8+ T cells, then Lymphocytes.

  5. Shared map

    Dimensionality reduction turns each cluster's gene expression profile into two coordinates. All 381,087 clusters from every study share one 2D map, where clusters with similar gene expression sit close together.

  6. Similarity index

    We built a search index over gene expression. Selecting a cluster returns its seven most similar clusters from other samples, which quickly finds similar cells in other studies.

  7. Serving it fast

    Hundreds of thousands of clusters, expression for 36,601 genes, labels, and a similarity index add up to far more than a browser can take at once. Most of the work went into the layer underneath: compact purpose-built formats for every piece of data, precomputing everything that can be precomputed, and loading only what the current view needs. Panning, coloring by a gene, and similarity search all happen without waiting on heavy queries.