CopyKAT: 从高通量单细胞RNAseq数据推断人类肿瘤基因组拷贝数和亚克隆结构

人类肿瘤单细胞RNA测序的一个主要挑战是区分癌细胞和非恶性细胞类型,以及多个肿瘤亚克隆的存在。CopyKAT(Copynumber Karyotype Of Tuments)是一种计算工具,它使用整合的贝叶斯方法来识别单个细胞中5MB分辨率的全基因组非整倍体,将肿瘤细胞与正常细胞分开,并使用高通量的sc-RNAseq数据来识别肿瘤亚克隆。根据RNAseq数据计算DNA拷贝数事件的基本逻辑是,许多相邻基因的基因表达水平可以提供深度信息来推断该区域的基因组拷贝数。CopyKAT估计的拷贝数图谱与全基因组DNA测序得到的实际拷贝数有较高的一致性(80%)。预测肿瘤/正常细胞状态的理论基础是,非整倍体在人类癌症中很常见(90%)。具有广泛的全基因组拷贝数畸变(非整倍体)的细胞被认为是肿瘤细胞,而间质正常细胞和免疫细胞通常具有2N个二倍体或近二倍体的拷贝数谱。在本专题中,我们将介绍如何从10X单细胞RNA数据计算单细胞拷贝数分布、预测肿瘤和正常细胞,以及使用{Copykat}R软件包推断肿瘤亚克隆。

1安装

从GitHub安装copykat

library(devtools)
install_github("navinlabcode/copykat")

当前版本为V1.0.4,要更新,请删除并分离旧版本,然后重新安装。
这个名为exp.rawdata的包中包含一个示例UMI矩阵,该矩阵来自由10X 3'RNAseq protocol测序的乳腺肿瘤。要测试软件包,只需在R/RStudio中发出以下代码行:

copykat.test <- copykat(rawmat=exp.rawdata, sam.name="test")

2 准备readcount输入文件

要运行Copykat,需要准备的唯一输入文件是原始基因表达矩阵,在行中有基因ID,在列中有细胞名称。基因ID可以是基因符号,也可以是集合ID。矩阵值通常是当今高通量单细胞RNAseq数据中唯一分子标识符(UMI)的计数。早期生成的scRNAseq数据可以总结为TPM值或总读取计数,这也应该起作用。下面我将提供一个从10X输出生成此UMI计数矩阵的示例。

从10X genology cellranger V3输出生成输入文件的示例

library(Seurat)
raw <- Read10X(data.dir = data.path.to.cellranger.outs)
raw <- CreateSeuratObject(counts = raw, project = "copycat.test", min.cells = 0, min.features = 0)
exp.rawdata <- as.matrix(raw@assays$RNA@counts)

可以保存矩阵以备将来使用

write.table(exp.rawdata, file="exp.rawdata.txt", sep="\t", quote = FALSE, row.names = TRUE)

在此,我们将使用示例UMI count矩阵exp.rawdata来演示。

3 运行copykat

现在已经准备好了原始的UMI count矩阵,开始运行Copkat。Cellranger输出中的默认基因ID是基因符号,所以我将id.type = "Symbol" or "S"。为了筛选出细胞,我要求每条染色体上至少有5个基因来计算DNA拷贝数,所以ngene.chr=5,当然也可以将其调到ngene.chr=1以保留尽可能多的细胞。要过滤掉基因,我可以调整参数,只保留在细胞的LOW.DR到UP.DR部分中表达的基因。我把DEFAULT LOW.DR=0.05,UP.DR=0.2。我可以调低这些值,以便在分析中保留更多的基因。不过,我需要确保LOW.DR比UP.DR小。
我要求copykat每段至少携带25个基因,故win.size=25。我可以尝试其他选择,每箱15-150个基因。KS.cut是分段参数,取值范围为0到1。增加KS.cut会降低敏感度,即减少分段/断点。通常,它在0.05-0.15的范围内工作。
在这里,我通过设置n.cores=4进行并行计算,默认值为1。
我还通过设置sam.name="test"来给出一个示例名称。
一个令人费解和质疑的观察是,没有一种聚类方法可以适用于所有数据集。在这个版本中,我为聚类添加了一个距离参数,包括"euclidean"距离和相关距离,即 1-"pearson" and "spearman"相关性。一般而言,相关距离倾向于噪声数据,而欧几里德距离倾向于具有较大CN段的数据。
我添加了一个选项,将已知的正常单元名称作为矢量对象输入,默认值为空。
我为只有非整倍体或二倍体细胞的细胞线数据添加了一种模式。通过cell.line="yes"设置此单元格线模式,组织样本的默认值为cell.line="no"。这种细胞系模式使用来自数据变化的合成基线,这并不代表已发表的算法。这种细胞系模式既不能保证成功,也不能保证准确性。
现在运行代码:

copykat.test <- copykat(rawmat=exp.rawdata, 
                        id.type="S", 
                        ngene.chr=5, 
                        win.size=25, 
                        KS.cut=0.1, 
                        sam.name="test", 
                        distance="euclidean", 
                        n.cores=4)

运行包含10,000个以上单个单元格的数据集可能需要一段时间。建议在终端使用"Rscript"运行大数据集,而不是在R/RStudio中以交互方式运行Copkat。
在这一步之后,Copkat自动将计算的拷贝数矩阵、热图和肿瘤/正常预测结果保存在我的工作目录中。我还可以按如下方式从对象中提取它们:

pred.test <- data.frame(copykat.test$prediction)
CNA.test <- data.frame(copykat.test$CNAmat)

4 浏览预测结果

现在我们来看一下预测结果。预测的非整倍体细胞被推测为肿瘤细胞;二倍体细胞被推测为间质正常细胞。请注意,过滤后的单元格不包括在结果中。我正在讨论是否应该将所有单元格都包括在结果中。

head(pred.test)

CNA矩阵的前3列是基因组坐标,行是按照基因组顺序220KB的条带。

head(CNA.test[ , 1:5])

Copykat还会为估计的拷贝数生成热图。行是单个细胞,列是基因组顺序的220kb的条带。

my_palette <- colorRampPalette(rev(RColorBrewer::brewer.pal(n = 3, name = "RdBu")))(n = 999)

chr <- as.numeric(CNA.test$chrom) %% 2+1
rbPal1 <- colorRampPalette(c('black','grey'))
CHR <- rbPal1(2)[as.numeric(chr)]
chr1 <- cbind(CHR,CHR)

rbPal5 <- colorRampPalette(RColorBrewer::brewer.pal(n = 8, name = "Dark2")[2:1])
com.preN <- pred.test$copykat.pred
pred <- rbPal5(2)[as.numeric(factor(com.preN))]

cells <- rbind(pred,pred)
col_breaks = c(seq(-1,-0.4,length=50),seq(-0.4,-0.2,length=150),seq(-0.2,0.2,length=600),seq(0.2,0.4,length=150),seq(0.4, 1,length=50))

heatmap.3(t(CNA.test[,4:ncol(CNA.test)]),dendrogram="r", distfun = function(x) parallelDist::parDist(x,threads =4, method = "euclidean"), hclustfun = function(x) hclust(x, method="ward.D2"),
            ColSideColors=chr1,RowSideColors=cells,Colv=NA, Rowv=TRUE,
            notecol="black",col=my_palette,breaks=col_breaks, key=TRUE,
            keysize=1, density.info="none", trace="none",
            cexRow=0.1,cexCol=0.1,cex.main=1,cex.lab=0.1,
            symm=F,symkey=F,symbreaks=T,cex=1, cex.main=4, margins=c(10,10))

legend("topright", paste("pred.",names(table(com.preN)),sep=""), pch=15,col=RColorBrewer::brewer.pal(n = 8, name = "Dark2")[2:1], cex=0.6, bty="n")

5 定义非整倍体肿瘤细胞亚群

我观察到二倍体和非整倍体细胞。下一步是提取在非整倍体肿瘤中被认为是肿瘤细胞的非整倍体细胞,以确定单个肿瘤细胞的两个拷贝数亚群。

tumor.cells <- pred.test$cell.names[which(pred.test$copykat.pred=="aneuploid")]
tumor.mat <- CNA.test[, which(colnames(CNA.test) %in% tumor.cells)]
hcc <- hclust(parallelDist::parDist(t(tumor.mat),threads =4, method = "euclidean"), method = "ward.D2")
hc.umap <- cutree(hcc,2)

rbPal6 <- colorRampPalette(RColorBrewer::brewer.pal(n = 8, name = "Dark2")[3:4])
subpop <- rbPal6(2)[as.numeric(factor(hc.umap))]
cells <- rbind(subpop,subpop)

heatmap.3(t(tumor.mat),dendrogram="r", distfun = function(x) parallelDist::parDist(x,threads =4, method = "euclidean"), hclustfun = function(x) hclust(x, method="ward.D2"),
            ColSideColors=chr1,RowSideColors=cells,Colv=NA, Rowv=TRUE,
            notecol="black",col=my_palette,breaks=col_breaks, key=TRUE,
            keysize=1, density.info="none", trace="none",
            cexRow=0.1,cexCol=0.1,cex.main=1,cex.lab=0.1,
            symm=F,symkey=F,symbreaks=T,cex=1, cex.main=4, margins=c(10,10))

legend("topright", c("c1","c2"), pch=15,col=RColorBrewer::brewer.pal(n = 8, name = "Dark2")[3:4], cex=0.9, bty='n')

现在我已经定义了两个具有主要亚克隆差异的亚群,我可以进一步比较它们的基因表达谱,并评估亚克隆拷贝数变化的基因剂量效应。
最后,我还在copykat中添加了一些有用的注释数据:

full.anno: the full annotation of 56051 genes (hg38) including absolute positions, chr, start, end, ensemble id, gene symbol and G band.

DNA.hg20: the coordinates in hg38 of the 220kb variable bins excluding Y chromosome.

cyclegenes: that are removed from copykat analysis.

exp.rawdata: UMI matrix from a breast tumor.

最后,在含有少量CNA的儿科和血液肿瘤病例中,CopyKAT很难预测肿瘤和正常细胞。CopyKAT提供了两种方法来绕过这一点,以给出特定的输出:1)输入来自同一数据集的已知正常细胞的细胞名称向量;2)或者尝试搜索T细胞。

reference

Gao, R., Bai, S., Henderson, Y. C., Lin, Y., Schalck, A., Yan, Y., Kumar, T., Hu, M., Sei, E., Davis, A., Wang, F., Shaitelman, S. F., Wang, J. R., Chen, K., Moulder, S., Lai, S. Y. & Navin, N. E. (2021). Delineating copy number and clonal substructure in human tumors from single-cell transcriptomes. Nat Biotechnol. doi:10.1038/s41587-020-00795-2.
https://github.com/navinlabcode/copykat#step-1-installation

你可能感兴趣的:(CopyKAT: 从高通量单细胞RNAseq数据推断人类肿瘤基因组拷贝数和亚克隆结构)