欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

肿瘤异质性的单细胞转录组分析

最编程 2024-03-13 22:13:38
...

什么是肿瘤异质性?

肿瘤异质性指的是不同肿瘤细胞可以表现出不同的遗传和表型特征,包括核型、基因突变、拷贝数变异、细胞形态、基因表达、蛋白及标志物表达等。由于这些遗传与表型的差异的影响,肿瘤细胞可以出现增殖能力、转移能力以及耐药性等方面差异。

肿瘤异质性分类

肿瘤异质性通常可分为两类:肿瘤间异质性与肿瘤内异质性。肿瘤间异质性指的是不同肿瘤组织之间的异质性,例如不同肿瘤患者之间肿瘤细胞的异质性;而肿瘤内异质性指的是同一肿瘤组织内,不同肿瘤细胞之间的异质性。

以下表示肿瘤间异质性,虽然他们都是肝癌患者,但是每个人肿瘤组织的发生发展方式都是不一样的,从而导致他们在多个组学层次上均存在差异。

image-20200321172217302.png

以下表示肿瘤内异质性,肿瘤内异质性的产生原因非常复杂,与肿瘤的内在特征与肿瘤微环境的需那种压力相关。通常,我们用克隆选择模型与肿瘤干细胞模型解释肿瘤内在特征导致的肿瘤内异质性。

image-20200321173109985.png

肿瘤异质性的临床意义

肿瘤异质性与临床治疗耐药息息相关,现阶段大多数治疗手段没有靶向肿瘤异质性,而是将肿瘤当作同质的群体,从而导致肿瘤药物治疗失败。具体机制如下图:

image-20200321173739987.png

如何研究肿瘤异质性?

在单细胞技术发明之前,研究肿瘤异质性的方法非常有限,主要有以下两类:

①免疫荧光等染色技术

image-20200321173920367.png

②流式细胞术等细胞学技术

image-20200321173946972.png

他们均存在通量较低、应用局限、费时费力等缺点。

而随着单细胞技术,尤其是单细胞基因组与单细胞转录组的发展,肿瘤异质性研究有了巨大突破。

使用单细胞转录组研究肿瘤异质性

今天主要介绍单细胞转录组分析肿瘤异质性的一个重要结论:肿瘤病人间肿瘤细胞异质性较大,非肿瘤细胞异质性较小。

如左图所示,在tSNE降维结果中,不同病人的同种免疫或基质细胞聚在一起,而不同种免疫或基质细胞则分布在不同区域,表明不同病人间同种免疫或基质细胞差异较小。然而,如右图所示,不同病人的肿瘤细胞明显分布在不同的区域,表明肿瘤病人间肿瘤细胞差异较大。

image-20200321175158715.png

我们可以下载数据集GSE103322重复该结论,具体代码如下:

options(stringsAsFactors=FALSE)
library(scater)
library(scran)
library(stringr)
library(reshape2)
library(plyr)

####################################################################
#读取数据,简单整理
raw_tpm_file <- "./HNSCC_all_data.txt"
tmp_data <- read.table(raw_tpm_file,head=T,sep="\t",row.names=1,quote="\'",stringsAsFactors=F)

tmp_data[1:6,1:6]

tumor <- sapply(str_split(colnames(tmp_data),"_"),function(x) x[1])
tumor <- str_sub(tumor,-2,-1)
tumor <- paste0("MEEI",str_replace(tumor,"C",""))
table(tumor)


cell_type <- as.character(tmp_data[5,])
malignant <- as.character(tmp_data[3,]) == "1"   
cell_type[malignant] <- "Malignant"
cell_type[cell_type==0] <- "Unknow" 
table(cell_type)

cell_type[cell_type =="-Fibroblast"]<-"Fibroblast"
table(cell_type)

col_data <- data.frame(tumor=tumor,cellType=cell_type,
                       lymph=as.integer(tmp_data[2,]),
                       row.names=colnames(tmp_data))
#移除注释,构建表达矩阵
remove_rows <- c(1,2,3,4,5)
all_data <- tmp_data[-remove_rows,]


####################################################################
#过滤细胞数较少的样本和细胞类型
all_data <- data.matrix(all_data)
boxplot(all_data[,1:6])

all_data[1:6,1:6]
ncol(all_data)
nrow(all_data)
all_data=all_data[apply(all_data,1, function(x) sum(x>0) > ncol(all_data)/2),]
nrow(all_data)


sce <- SingleCellExperiment(
  assays = list(exprs=all_data),
  colData = col_data
)
table(sce$tumor)

sce<-sce[,!sce$cellType == "Unknow"]

nontumor_stats <- table(sce$cellType)
nontumor_select <- names(nontumor_stats)[nontumor_stats>=50]
selected_nontumor_sce <- sce[,sce$cellType %in% nontumor_select]

tumor_sample_stats <- table(sce$tumor)
tumor_sample_select <- names(tumor_sample_stats)[tumor_sample_stats>=200]
selected_sce <- sce[,sce$tumor %in% tumor_sample_select]

table(selected_sce$tumor)
table(selected_sce$cellType)

selected_tumor_sce <- selected_sce[,selected_sce$cellType=="Malignant"]
selected_nontumor_sce <- selected_sce[,selected_sce$cellType!="Malignant"]

####################################################################
#肿瘤细胞tSNE
set.seed(12345)
library("Rtsne")
tsne_out <- Rtsne(t(assay(selected_tumor_sce,"exprs")),initial_dims=20,perplexity = 30, max_iter = 5000)
tmp <- data.frame(x=tsne_out$Y[,1],y=tsne_out$Y[,2],group = colData(selected_tumor_sce)$tumor)
g <- ggplot(tmp) + geom_point(aes(x, y, colour = group), size = 1) +
  labs(x = "tSNE1",y = "tSNE2") +theme_bw() + ggtitle("Malignant cells")
ggsave("tumor_tsne.pdf",g,width=4,height=3)

####################################################################
#非肿瘤细胞tSNE
tsne_out <- Rtsne(t(assay(selected_nontumor_sce,"exprs")),initial_dims=20,perplexity=30, max_iter = 5000)
tmp <- data.frame(x=tsne_out$Y[,1],y=tsne_out$Y[,2],group = colData(selected_nontumor_sce)$tumor)

g <- ggplot(tmp) + geom_point(aes(x, y, colour = group), size = 1) +
  labs(x = "tSNE1",y = "tSNE2") +theme_bw() + ggtitle("Non-malignant cells_1")
ggsave("nontumor_tsne_tumorColor.pdf",g,width=4,height=3)
tmp <- data.frame(x=tsne_out$Y[,1],y=tsne_out$Y[,2],group = colData(selected_nontumor_sce)$cellType)
g <- ggplot(tmp) + geom_point(aes(x, y, colour = group), size = 1) +
  labs(x = "tSNE1",y = "tSNE2") +theme_bw() + ggtitle("Non-malignant cells_2")
ggsave("nontumor_tsne_cellTypeColor.pdf",g,width=4,height=3)


得到的结果与文献一致。

nontumor_tsne_cellTypeColor.jpg
nontumor_tsne_tumorColor.jpg
tumor_tsne.jpg

文献引用:

Wheeler, David A., Lewis R. Roberts, and Cancer Genome Atlas Research Network. "Comprehensive and integrative genomic characterization of hepatocellular carcinoma." Cell 169.7 (2017): 1327.

Lawson, Devon A., et al. "Tumour heterogeneity and metastasis at single-cell resolution." Nature cell biology 20.12 (2018): 1349-1360.

Alizadeh, Ash A., et al. "Toward understanding and exploiting tumor heterogeneity." Nature medicine 21.8 (2015): 846.

Thul, Peter J., et al. "A subcellular map of the human proteome." Science 356.6340 (2017): eaal3321.

Puram, Sidharth V., et al. "Single-cell transcriptomic analysis of primary and metastatic tumor ecosystems in head and neck cancer." Cell 171.7 (2017): 1611-1624.