The Tumor Microenvironment Transcriptomic Atlas (TMEAtlas)
TMEAtlas is an interactive computational tool from the Longaker Lab that allows users to independently interrogate pan-cancer tumor microenvironment cell atlas data to advance their own research projects
This site provides 1) visualization of existing pan-cancer pan-cancer tumor microenvironment cell atlas with data from 10.7 million cells from nearly 2,000 scRNA-seq tumor samples across 36 solid cancers. 2) For researchers to upload their own datasets to compare on the pan-cancer tumor microenvironment cell atlas transcriptome.
Please note that this a beta version of the TMEAtlas website, and we are actively making improvements. We appreciate your patience and welcome any feedback via email at januszyk@stanford.edu.
© Stanford University 2024
About
Overview of TMEAtlas
The tumor microenvironment (TME) plays pivotal but conflicting roles in disease progression and therapeutic response. Pan-cancer analysis of cells within the TME, including both the stromal and immune components, are needed to clarify these cell types’ roles given the breadth and diversity of human tumor pathology. In the article 'Conservation of the Tumor Microenvironment across Organs and Species in Thousands of Samples' submitted by Januszyk, M., Lu, J., et. al., we curate the largest pan-cancer tumor microenvironment cell atlas to date with data from 10.7 million cells from nearly 2,000 human and mouse scRNA-seq tumor samples across 36 solid cancers. This TME atlas serves as an interactive web portal for users to independently interrogate these data. Further, this web atlas is accompanied by the scTME software package that will allow users to use our consensus cell type nomenclature to annotate new scRNA-seq datasets (TMEAtlas).
Image sources
Homepage: Tumor Microenvironment image: www.cancercenter.com/community/blog/2023/08/tumor-microenvironment.
Human Overview
The Human Atlas is composed of 9.5 million cells from 2,076 samples from 134 scRNA-seq datasets of human solid-organ cancers. Cancer-associated fibroblasts (CAFs) are the predominant non-tumor stromal cell in the TME. Our analysis of 445,724 human CAFs resulted in the delineation of four transcriptionally distinct CAF populations: apCAFs, iCAFs, mCAFs, and ssCAFs. The conservation of CAF populations across tumor types suggests a conserved role for CAFs in solid organ tumors."
© Stanford University 2024
Mouse Overview
The Mouse Atlas is composed of 1.2 million cells from 339 samples from 40 scRNA-seq datasets of mouse solid-organ cancers.
© Stanford University 2024
scTME vignette
Author: Michael Januszyk
Date: 2024-04-03
The scTME vignette tutorial details steps to load data and run scTME on a query dataset. The prerequisite data files required to run this algorithm can be found in the 'Downloads' tab.
Load and Prepare Data
Code:
require(devtools) install_github('michaeljanuszyk/scTME') library(scTME) library(SingleCellExperiment)
First download the companion reference SingleCellExperiment object for scTME from TMEAtlas –> Analyze Data -> Download –> scTME_reference_dataset.rds
scTME_reference_dataset <- readRDS("scTME_reference_dataset.rds")
Then download a heavily down-sampled (1,000 total cells) from the Nieto 2021 immune cell atlas (A single-cell tumor immune atlas for precision oncology), made available at TMEAtlas –> Analyze Data -> Download –> nieto_2021_downsampled1k.rds There is also a 10k cells object available here, which was used for the accompanying manuscript, but we’ll use the smaller one now to reduce processing time.
query_dataset <- readRDS("nieto_2021_downsampled1k.rds") query_dataset ## class: SingleCellExperiment ## dim: 4419 1000 ## metadata(0): ## assays(3): '' counts logcounts ## rownames(4419): FUCA2 GCLC ... DDX47 LRRD1 ## rowData names(0): ## colnames(1000): MEL2_1_W543939 BC_4_X1358280816245109_2_1_1_4 ... ## PAN_23_T23_CTCTGGTAGAGGTAGA ## SC_8_bcc.su008.post.tcell_TAGGCATAGAAAGTGG ## colData names(6): metaNames cancer ... lv2_annot cluster ## reducedDimNames(0): ## mainExpName: NULL ## altExpNames(0):
Note that this is a SingleCellExperiment object. Seurat objects can also be passed to scTME, but the program will immediately try to convert this object to a SingleCellExperiment object, and may throw errors from that conversion.
names(colData(query_dataset)) ## [1] "metaNames" "cancer" "tissue" "lv1_annot" "lv2_annot" "cluster"
We can see that the Nieto dataset has two levels of annotations (lv1_annot and lv2_annot), which are the final assignments made in that group’s study. We have also added a “cluster” parameter which represents the sorted order of the lv2_annot values. This allows us to blindly evaluate cells for this short vignette.
names(colData(query_dataset)) table(query_dataset$lv1_annot) ## ## B cells B cells proliferative CD4 effector memory ## 75 3 69 ## CD4 naive-memory CD4 recently activated CD4 transitional memory ## 93 45 14 ## CD8 cytotoxic CD8 effector memory CD8 pre-exhausted ## 131 21 15 ## CD8 terminally exhausted cDC Macro. and mono. prolif. ## 75 4 3 ## Macrophages SPP1 Mast cells mDC ## 17 5 19 ## Monocytes NK pDC ## 25 45 5 ## Plasma B cells T cells naive T cells proliferative ## 21 81 41 ## T cells regulatory T helper cells TAMs C1QC ## 65 33 72 ## TAMs proinflamatory ## 23 table(query_dataset$lv2_annot) ## ## B cells activated B cells memory ## 5 35 ## B cells naive B cells proliferative ## 3 3 ## B cells unswitched memory CD4 activated ## 31 26 ## CD4 effector memory RA CD4 memory stem cells ## 64 165 ## CD4 resident effector memory CD4 transitional memory ## 67 27 ## CD8 activated CD8 cytotoxic ## 17 104 ## CD8 exhausted CD8 IFN activated ## 98 1 ## DC1 DC2 CD1C+ ## 1 21 ## DC3 LAMP3 DC4 CD1C- ## 3 8 ## Macro. and mono. prolif. Macrophages CXCL10 ## 5 1 ## Macrophages SPP1 Mast cells ## 13 1 ## Monocytes tumor infiltrating NK ## 31 66 ## pDC Plasma B cells ## 5 20 ## T cells proliferative T cells regulatory ## 40 54 ## T helper/Th17 TAMs C1QC ## 6 79 table(query_dataset$cluster) ## ## 1 10 11 12 13 14 15 16 17 18 19 2 20 21 22 23 24 25 26 28 ## 5 27 17 104 98 1 1 21 3 8 5 35 1 13 1 31 66 5 20 40 ## 29 3 30 31 4 5 6 7 8 9 ## 54 3 6 79 3 31 26 64 165 67
Run scTME on the query dataset
Now we can go ahead and run scTME. This function accepts up to 6 parameters: obj: The SingleCellExperiment object on which to run (“query_dataset” here) clusters: The corresponding groupings in which to evaluate (e.g., “obj\(seurat_clusters" or for this example: "query_dataset\)cluster”) ref: The SingleCellExperiment object powering scTME (scTME_reference_dataset). This is not currently included with the scTME due to size constraints level: This defaults to “1”, which evaluates the query dataset against the 8 parent populations identified in the scTME dataset. It can optionally be set to “2”, in which case the query is evaluated against all 50 subopulations identified in this dataset. max.cells: In order to improve runtime, this value can be used to automatically downsample the query dataset. It defaults to 50,000 which should be enough for most query datasets return.details: By default, scTME returns a list of the most likely cell type prediction for each input cluster and thereby infers assignments per cell. This is returned as a cell-wise list of predictions. If this parameter is set to TRUE, then the program additionally returns the prediction strength information as the second element of the returned list object.
res = scTME( query_dataset, query_dataset$cluster, scTME_reference_dataset, level=2, return.details = F ) ## Loading required package: SingleR ## Warning: useNames = NA is deprecated. Instead, specify either useNames = TRUE ## or useNames = TRUE. query_dataset$prediction = res
Compare annotations
We can now, for example, compare these predictions from this atlas against those originally assigned by Nieto. (Using the 10k cells object results in higher fidelity than the 1k object)
table( query_dataset$prediction, query_dataset$lv2_annot) ## ## B cells activated B cells memory B cells naive ## Lym B germinal RGS13+ 0 0 0 ## Lym B mem BANK1+ 0 35 0 ## Lym B naive AFF3+ 5 0 3 ## Lym Plasma JCHAIN+ 0 0 0 ## Lym T CD4+/CD40LG+ 0 0 0 ## Lym T CD8+/GZMK+ 0 0 0 ## Lym T CD8+/ISG15+ 0 0 0 ## Lym Tex CD8+/PDCD1+ 0 0 0 ## Lym Tfh NR3C1+ 0 0 0 ## Lym Treg FOXP3+ 0 0 0 ## Mye DC cDC1 CLEC9A+ 0 0 0 ## Mye DC cDC2 CD1C+ 0 0 0 ## Mye DC mregDC LAMP3+ 0 0 0 ## Mye DC pDC TCF4+ 0 0 0 ## Mye Mac MARCO+ 0 0 0 ## Mye Mast CPA3+ 0 0 0 ## Mye Mono CD14+ 0 0 0 ## Mye Mono CD16+ 0 0 0 ## ## B cells proliferative B cells unswitched memory ## Lym B germinal RGS13+ 3 0 ## Lym B mem BANK1+ 0 0 ## Lym B naive AFF3+ 0 31 ## Lym Plasma JCHAIN+ 0 0 ## Lym T CD4+/CD40LG+ 0 0 ## Lym T CD8+/GZMK+ 0 0 ## Lym T CD8+/ISG15+ 0 0 ## Lym Tex CD8+/PDCD1+ 0 0 ## Lym Tfh NR3C1+ 0 0 ## Lym Treg FOXP3+ 0 0 ## Mye DC cDC1 CLEC9A+ 0 0 ## Mye DC cDC2 CD1C+ 0 0 ## Mye DC mregDC LAMP3+ 0 0 ## Mye DC pDC TCF4+ 0 0 ## Mye Mac MARCO+ 0 0 ## Mye Mast CPA3+ 0 0 ## Mye Mono CD14+ 0 0 ## Mye Mono CD16+ 0 0 ## ## CD4 activated CD4 effector memory RA ## Lym B germinal RGS13+ 0 0 ## Lym B mem BANK1+ 0 0 ## Lym B naive AFF3+ 0 0 ## Lym Plasma JCHAIN+ 0 0 ## Lym T CD4+/CD40LG+ 0 0 ## Lym T CD8+/GZMK+ 0 0 ## Lym T CD8+/ISG15+ 0 0 ## Lym Tex CD8+/PDCD1+ 0 0 ## Lym Tfh NR3C1+ 26 64 ## Lym Treg FOXP3+ 0 0 ## Mye DC cDC1 CLEC9A+ 0 0 ## Mye DC cDC2 CD1C+ 0 0 ## Mye DC mregDC LAMP3+ 0 0 ## Mye DC pDC TCF4+ 0 0 ## Mye Mac MARCO+ 0 0 ## Mye Mast CPA3+ 0 0 ## Mye Mono CD14+ 0 0 ## Mye Mono CD16+ 0 0 ## ## CD4 memory stem cells CD4 resident effector memory ## Lym B germinal RGS13+ 0 0 ## Lym B mem BANK1+ 0 0 ## Lym B naive AFF3+ 0 0 ## Lym Plasma JCHAIN+ 0 0 ## Lym T CD4+/CD40LG+ 165 0 ## Lym T CD8+/GZMK+ 0 0 ## Lym T CD8+/ISG15+ 0 0 ## Lym Tex CD8+/PDCD1+ 0 0 ## Lym Tfh NR3C1+ 0 67 ## Lym Treg FOXP3+ 0 0 ## Mye DC cDC1 CLEC9A+ 0 0 ## Mye DC cDC2 CD1C+ 0 0 ## Mye DC mregDC LAMP3+ 0 0 ## Mye DC pDC TCF4+ 0 0 ## Mye Mac MARCO+ 0 0 ## Mye Mast CPA3+ 0 0 ## Mye Mono CD14+ 0 0 ## Mye Mono CD16+ 0 0 ## ## CD4 transitional memory CD8 activated CD8 cytotoxic ## Lym B germinal RGS13+ 0 0 0 ## Lym B mem BANK1+ 0 0 0 ## Lym B naive AFF3+ 0 0 0 ## Lym Plasma JCHAIN+ 0 0 0 ## Lym T CD4+/CD40LG+ 0 0 0 ## Lym T CD8+/GZMK+ 0 0 104 ## Lym T CD8+/ISG15+ 0 17 0 ## Lym Tex CD8+/PDCD1+ 0 0 0 ## Lym Tfh NR3C1+ 27 0 0 ## Lym Treg FOXP3+ 0 0 0 ## Mye DC cDC1 CLEC9A+ 0 0 0 ## Mye DC cDC2 CD1C+ 0 0 0 ## Mye DC mregDC LAMP3+ 0 0 0 ## Mye DC pDC TCF4+ 0 0 0 ## Mye Mac MARCO+ 0 0 0 ## Mye Mast CPA3+ 0 0 0 ## Mye Mono CD14+ 0 0 0 ## Mye Mono CD16+ 0 0 0 ## ## CD8 exhausted CD8 IFN activated DC1 DC2 CD1C+ ## Lym B germinal RGS13+ 0 0 0 0 ## Lym B mem BANK1+ 0 0 0 0 ## Lym B naive AFF3+ 0 0 0 0 ## Lym Plasma JCHAIN+ 0 0 0 0 ## Lym T CD4+/CD40LG+ 0 0 0 0 ## Lym T CD8+/GZMK+ 0 0 0 0 ## Lym T CD8+/ISG15+ 0 0 0 0 ## Lym Tex CD8+/PDCD1+ 98 1 0 0 ## Lym Tfh NR3C1+ 0 0 0 0 ## Lym Treg FOXP3+ 0 0 0 0 ## Mye DC cDC1 CLEC9A+ 0 0 1 0 ## Mye DC cDC2 CD1C+ 0 0 0 21 ## Mye DC mregDC LAMP3+ 0 0 0 0 ## Mye DC pDC TCF4+ 0 0 0 0 ## Mye Mac MARCO+ 0 0 0 0 ## Mye Mast CPA3+ 0 0 0 0 ## Mye Mono CD14+ 0 0 0 0 ## Mye Mono CD16+ 0 0 0 0 ## ## DC3 LAMP3 DC4 CD1C- Macro. and mono. prolif. ## Lym B germinal RGS13+ 0 0 0 ## Lym B mem BANK1+ 0 0 0 ## Lym B naive AFF3+ 0 0 0 ## Lym Plasma JCHAIN+ 0 0 0 ## Lym T CD4+/CD40LG+ 0 0 0 ## Lym T CD8+/GZMK+ 0 0 0 ## Lym T CD8+/ISG15+ 0 0 0 ## Lym Tex CD8+/PDCD1+ 0 0 0 ## Lym Tfh NR3C1+ 0 0 0 ## Lym Treg FOXP3+ 0 0 0 ## Mye DC cDC1 CLEC9A+ 0 0 0 ## Mye DC cDC2 CD1C+ 0 0 5 ## Mye DC mregDC LAMP3+ 3 0 0 ## Mye DC pDC TCF4+ 0 0 0 ## Mye Mac MARCO+ 0 0 0 ## Mye Mast CPA3+ 0 0 0 ## Mye Mono CD14+ 0 0 0 ## Mye Mono CD16+ 0 8 0 ## ## Macrophages CXCL10 Macrophages SPP1 Mast cells ## Lym B germinal RGS13+ 0 0 0 ## Lym B mem BANK1+ 0 0 0 ## Lym B naive AFF3+ 0 0 0 ## Lym Plasma JCHAIN+ 0 0 0 ## Lym T CD4+/CD40LG+ 0 0 0 ## Lym T CD8+/GZMK+ 0 0 0 ## Lym T CD8+/ISG15+ 1 0 0 ## Lym Tex CD8+/PDCD1+ 0 0 0 ## Lym Tfh NR3C1+ 0 0 0 ## Lym Treg FOXP3+ 0 0 0 ## Mye DC cDC1 CLEC9A+ 0 0 0 ## Mye DC cDC2 CD1C+ 0 0 0 ## Mye DC mregDC LAMP3+ 0 0 0 ## Mye DC pDC TCF4+ 0 0 0 ## Mye Mac MARCO+ 0 13 0 ## Mye Mast CPA3+ 0 0 1 ## Mye Mono CD14+ 0 0 0 ## Mye Mono CD16+ 0 0 0 ## ## Monocytes tumor infiltrating NK pDC Plasma B cells ## Lym B germinal RGS13+ 0 0 0 0 ## Lym B mem BANK1+ 0 0 0 0 ## Lym B naive AFF3+ 0 0 0 0 ## Lym Plasma JCHAIN+ 0 0 0 20 ## Lym T CD4+/CD40LG+ 0 66 0 0 ## Lym T CD8+/GZMK+ 0 0 0 0 ## Lym T CD8+/ISG15+ 0 0 0 0 ## Lym Tex CD8+/PDCD1+ 0 0 0 0 ## Lym Tfh NR3C1+ 0 0 0 0 ## Lym Treg FOXP3+ 0 0 0 0 ## Mye DC cDC1 CLEC9A+ 0 0 0 0 ## Mye DC cDC2 CD1C+ 0 0 0 0 ## Mye DC mregDC LAMP3+ 0 0 0 0 ## Mye DC pDC TCF4+ 0 0 5 0 ## Mye Mac MARCO+ 0 0 0 0 ## Mye Mast CPA3+ 0 0 0 0 ## Mye Mono CD14+ 31 0 0 0 ## Mye Mono CD16+ 0 0 0 0 ## ## T cells proliferative T cells regulatory T helper/Th17 ## Lym B germinal RGS13+ 0 0 0 ## Lym B mem BANK1+ 0 0 0 ## Lym B naive AFF3+ 0 0 0 ## Lym Plasma JCHAIN+ 0 0 0 ## Lym T CD4+/CD40LG+ 0 0 0 ## Lym T CD8+/GZMK+ 0 0 0 ## Lym T CD8+/ISG15+ 0 0 0 ## Lym Tex CD8+/PDCD1+ 40 0 0 ## Lym Tfh NR3C1+ 0 0 6 ## Lym Treg FOXP3+ 0 54 0 ## Mye DC cDC1 CLEC9A+ 0 0 0 ## Mye DC cDC2 CD1C+ 0 0 0 ## Mye DC mregDC LAMP3+ 0 0 0 ## Mye DC pDC TCF4+ 0 0 0 ## Mye Mac MARCO+ 0 0 0 ## Mye Mast CPA3+ 0 0 0 ## Mye Mono CD14+ 0 0 0 ## Mye Mono CD16+ 0 0 0 ## ## TAMs C1QC ## Lym B germinal RGS13+ 0 ## Lym B mem BANK1+ 0 ## Lym B naive AFF3+ 0 ## Lym Plasma JCHAIN+ 0 ## Lym T CD4+/CD40LG+ 0 ## Lym T CD8+/GZMK+ 0 ## Lym T CD8+/ISG15+ 0 ## Lym Tex CD8+/PDCD1+ 0 ## Lym Tfh NR3C1+ 0 ## Lym Treg FOXP3+ 0 ## Mye DC cDC1 CLEC9A+ 0 ## Mye DC cDC2 CD1C+ 0 ## Mye DC mregDC LAMP3+ 0 ## Mye DC pDC TCF4+ 0 ## Mye Mac MARCO+ 79 ## Mye Mast CPA3+ 0 ## Mye Mono CD14+ 0 ## Mye Mono CD16+ 0
scTME_reference_dataset.rds:
Download
nieto_2021_downsampled1k.rds:
Download