Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >CNS图表复现13—使用inferCNV来区分肿瘤细胞的恶性与否

CNS图表复现13—使用inferCNV来区分肿瘤细胞的恶性与否

作者头像
生信技能树jimmy
发布于 2020-11-02 02:24:45
发布于 2020-11-02 02:24:45
10.2K10
代码可运行
举报
文章被收录于专栏:单细胞天地单细胞天地
运行总次数:0
代码可运行

分享是一种态度

前言

CNS图表复现之旅前面我们已经进行了12讲,你可以点击图表复现话题回顾。如果你感兴趣也想加入交流群,自己去:你要的rmarkdown文献图表复现全套代码来了(单细胞)找到我们的拉群小助手哈。

我在CNS图表复现09—上皮细胞可以区分为恶性与否,简单演示了,第一次分群后选择上皮细胞后继续分群,第1,2,7,14,21,23,25 是跨越病人的聚类情况,所以初步判定它们这些亚群是正常的上皮细胞。因为目前主流看法是每个病人的恶性肿瘤细胞都是没办法跨越病人进行聚类的。

但最常规做法是使用inferCNV算法可以区分细胞恶性与否。比如online 29 April 2020的文章《Single-Cell Transcriptome Analysis Reveals Intratumoral Heterogeneity in ccRCC, which Results in Different Clinical Outcomes》,就是选取ccRCC的3个病例的21个样本(12个肿瘤,9个对照),质控后总计24550个细胞使用inferCNV算法可以区分成为7786个非恶性,16764个恶性细胞。

回到我们的这个文章,首先看看文章对的描述:

inferCNV方法描述

文章运行inferCNV算法后的结果图表在附件:

inferCNV算法结果图表

我们在《单细胞天地》多次分享过inferCNV分析的教程使用inferCNV分析单细胞转录组中拷贝数变异 , 还专门强调了:infercnv输入文件的制作

制作3个文件

下面的代码,基于很多前面步骤产生的文件,所以请务必查看前面的10讲教程哈。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rm(list=ls())
options(stringsAsFactors = F)
library(Seurat)
library(ggplot2)
load(file = 'first_sce.Rdata')  
load(file = 'phe-of-first-anno.Rdata')
sce=sce.first
table(phe$immune_annotation)
sce@meta.data=phe 
table(phe$immune_annotation,phe$seurat_clusters) 
# BiocManager::install("infercnv")
library(infercnv)

epi.cells  <- row.names(sce@meta.data)[which(phe$immune_annotation=='epi')]
length(epi.cells)
epiMat=as.data.frame(GetAssayData(subset(sce, cells=epi.cells)))

cells.use <- row.names(sce@meta.data)[which(phe$immune_annotation=='stromal')]
length(cells.use)
sce <-subset(sce, cells=cells.use)  
sce 
load(file = 'phe-of-subtypes-stromal.Rdata')
sce@meta.data=phe
DimPlot(sce, reduction = "tsne", group.by = "singleR")
table(phe$singleR)
fib.cells  <-  row.names(sce@meta.data)[phe$singleR=='Fibroblasts']
endo.cells  <-  row.names(sce@meta.data)[phe$singleR=='Endothelial_cells']
fib.cells=sample(fib.cells,800)
endo.cells=sample(endo.cells,800)
fibMat=as.data.frame(GetAssayData(subset(sce, cells=fib.cells)))
endoMat=as.data.frame(GetAssayData(subset(sce, cells=endo.cells)))

dat=cbind(epiMat,fibMat,endoMat)
groupinfo=data.frame(v1=colnames(dat),
                     v2=c(rep('epi',ncol(epiMat)),
                          rep('spike-fib',300),
                          rep('ref-fib',500),
                          rep('spike-endo',300),
                          rep('ref-endo',500)))

library(AnnoProbe)
geneInfor=annoGene(rownames(dat),"SYMBOL",'human')
colnames(geneInfor)
geneInfor=geneInfor[with(geneInfor, order(chr, start)),c(1,4:6)]
geneInfor=geneInfor[!duplicated(geneInfor[,1]),]
length(unique(geneInfor[,1]))
head(geneInfor)
## 这里可以去除性染色体
# 也可以把染色体排序方式改变
dat=dat[rownames(dat) %in% geneInfor[,1],]
dat=dat[match( geneInfor[,1], rownames(dat) ),] 
dim(dat)
expFile='expFile.txt'
write.table(dat,file = expFile,sep = '\t',quote = F)
groupFiles='groupFiles.txt'
head(groupinfo)
write.table(groupinfo,file = groupFiles,sep = '\t',quote = F,col.names = F,row.names = F)
head(geneInfor)
geneFile='geneFile.txt'
write.table(geneInfor,file = geneFile,sep = '\t',quote = F,col.names = F,row.names = F)

table(groupinfo[,2])

 
       epi   ref-endo    ref-fib spike-endo  spike-fib 
      5444        500        500        300        300 

代码挺简单的,如果你的R语言还不错,很容易看懂,就是之前我们把单细胞已经分好群了,这个时候取全部的上皮细胞,以及部分Fibroblasts和Endothelial_cells细胞来一起运行inferCNV流程。

这个时候Fibroblasts和Endothelial_cells细胞是正常的二倍体细胞,而全部的上皮细胞里面就会根据CNV情况来区分成为恶性与否的肿瘤细胞。

有一个包(annoprobe)需要安装

上面的代码里面我的方法,采用了annoprobe获取基因坐标,安装annoprobe的代码超级简单:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(remotes)
# https://git-scm.com/downloads 
# 居然有些人电脑里面没有git软件,可怕!!!
url='https://gitee.com/jmzeng/annoprobe.git'
install_git(url)

当然,你也可以自行前往下载gtf文件或者其它方法获取基因的坐标信息,自己制作 geneInfor 变量后写入基因坐标文件。

安装annoprobe的时候不要更新如何其它R包哈 :

基本上都可以安装成功:

但是我看有学生反馈,安装的时候提示他的电脑缺乏git软件,我就很纳闷了,一个搞生物信息学数据分析的电脑里面,怎么可能没有git软件呢?就算是没有,马上去下载git安装也可以啊!!!

运行infercnv

因为前面已经做好了3个文件,所以下面的代码无需改变,直接运行即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
infercnv_obj = CreateInfercnvObject(raw_counts_matrix=expFile,
                                    annotations_file=groupFiles,
                                    delim="\t",
                                    gene_order_file= geneFile,
                                    ref_group_names=c("WT"))  ## 这个取决于自己的分组信息里面的

infercnv_obj = infercnv::run(infercnv_obj,
                             cutoff=1, # cutoff=1 works well for Smart-seq2, and cutoff=0.1 works well for 10x Genomics
                             out_dir=tempfile(), 
                             cluster_by_groups=TRUE, 
                             denoise=TRUE,
                             HMM=TRUE)

运行起来还是蛮快的,20min搞定全部分析 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
INFO [2020-10-15 17:31:04] ::process_data:Start
INFO [2020-10-15 17:31:04] Creating output path /var/folders/2x/l4fzfvy17gz94j1sz6klhyjh0000gn/T//Rtmph8chdX/file4bcc7985a2a0
INFO [2020-10-15 17:31:04] Checking for saved results.
INFO [2020-10-15 17:31:04] 

 STEP 1: incoming data
 # 此处省略----
 STEP 21: Denoising
INFO [2020-10-15 17:53:44] Quantiles of plotted data range: 0.598977210060562,1.00469525380699,1.00469525380699,1.00469525380699,1.40102278993944
INFO [2020-10-15 17:53:46] plot_cnv_observations:Writing observation data to /var/folders/2x/l4fzfvy17gz94j1sz6klhyjh0000gn/T//Rtmph8chdX/file4bcc7985a2a0/infercnv.observations.txt
INFO [2020-10-15 17:53:48] plot_cnv_references:Start
INFO [2020-10-15 17:53:48] Reference data size: Cells= 1000 Genes= 366
INFO [2020-10-15 17:53:48] plot_cnv_references:Number reference groups= 2
INFO [2020-10-15 17:53:48] plot_cnv_references:Plotting heatmap.
INFO [2020-10-15 17:53:48] Colors for breaks:  #00008B,#24249B,#4848AB,#6D6DBC,#9191CC,#B6B6DD,#DADAEE,#FFFFFF,#EEDADA,#DDB6B6,#CC9191,#BC6D6D,#AB4848,#9B2424,#8B0000
INFO [2020-10-15 17:53:48] Quantiles of plotted data range: 0.598977210060562,1.00469525380699,1.00469525380699,1.00469525380699,1.40102278993944
INFO [2020-10-15 17:53:48] plot_cnv_references:Writing reference data to /var/folders/2x/l4fzfvy17gz94j1sz6klhyjh0000gn/T//Rtmph8chdX/file4bcc7985a2a0/infercnv.references.txt

因为前面我没有修改 输出路径,仍然是在 tempfile() ,所以需要自己进入这个临时文件夹,把全部的分析结果拷贝出来。

有意思的是,我的结果有点诡异,明明是作为二倍体正常细胞参考集的Fibroblasts和Endothelial_cells细胞居然也是在某些染色体上面有明显的CNV情况。

如下所示:

infercnv

不知道为什么我的ref居然不是很干净的样子?后面我们来慢慢探讨第一次运行inferCNV得到这个诡异的结果的原因。

10X单细胞转录组数据是否可以inferCNV

这个文章的单细胞转录组数据来源于smart-seq2技术,但是现在单细胞转录组领域其实是10X数据的天下,那么10X转录组数据是否可以inferCNV呢?早在2018年就有文章,是 Comprehensive analysis of immune evasion in breast cancer by single-cell RNA-seq , 链接是. doi: http://dx.doi.org/10.1101/368605 bioRxiv preprint first posted online Jul. 13, 2018; 就是使用10X转录组数据来推断CNV信息。因为**10X技术出来的单个细胞的reads数量太少,检测到的基因数量太少,**但是inferCNV更新后有一个参数是cutoff ,就很清楚的指出来了:cutoff=1 works well for Smart-seq2, and cutoff=0.1 works well for 10x Genomics 说明它应用于10X单细胞转录组数据是没有问题的。

10X单细胞转录组数据处理流程在我们单细胞天地有详细介绍:

如果你查看10X单细胞转录组的cellranger报告,会发现显示平均每个细胞的测序数据量是45K条reads。当然,并不是10x一个技术是这样单个细胞的reads数量太少,检测到的基因数量太少。比如文章:Li et al., Dysfunctional CD8 T Cells Form a Proliferative, Dynamically Regulated Compartment within Human Melanoma, Cell (2019), https://doi.org/10.1016/j.cell.2018.11.043 :同样的,平均每个细胞也就40K左右的reads数量啦。

往期回顾

细胞身份何以在分裂中得以保持?

CNS图表复现12—检查原文的细胞亚群的标记基因

狼来了!聊个天就能做生信分析的人工智能是否要替代一大波生信人员?




如果你对单细胞转录组研究感兴趣,但又不知道如何入门,也许你可以关注一下下面的课程

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 单细胞天地 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
你这个文章和你的配图不一致呀?图片的文献是Therapy-Induced Evolution of Human Lung Cancer Revealed by Single-Cell RNA Sequencing
你这个文章和你的配图不一致呀?图片的文献是Therapy-Induced Evolution of Human Lung Cancer Revealed by Single-Cell RNA Sequencing
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
CNS图表复现15—inferCNV流程输入数据差异大揭秘
CNS图表复现之旅前面我们已经进行了14讲,你可以点击图表复现话题回顾。如果你感兴趣也想加入交流群,自己去:你要的rmarkdown文献图表复现全套代码来了(单细胞)找到我们的拉群小助手哈。
生信技能树jimmy
2020/11/02
2.6K0
CNS图表复现15—inferCNV流程输入数据差异大揭秘
为什么胃癌并不使用拷贝数来判断恶性的肿瘤上皮细胞呢
并非所有恶性肿瘤上皮细胞都表现出拷贝数变化(Copy Number Variations, CNVs),但拷贝数变化是许多癌症的共同特征。以下是一些相关的要点:
生信技能树
2024/11/21
840
为什么胃癌并不使用拷贝数来判断恶性的肿瘤上皮细胞呢
CNS图表复现16—inferCNV结果解读及利用
我们的CNS图表复现之旅已经开始,你可以点击图表复现话题回顾。如果你感兴趣也想加入交流群,可以去:你要的rmarkdown文献图表复现全套代码来了(单细胞)找到我们的拉群小助手哈。
生信技能树jimmy
2020/11/02
12.6K0
CNS图表复现16—inferCNV结果解读及利用
单细胞转录组之拷贝数变异分析
拷贝数变异(Copy number variation, CNV):基因组发生重排而导致的,一般指长度1 kb 以上的基因组片段的拷贝数增加或者减少, 主要表现为亚显微水平的重复或者缺失。因此称为“微”缺失或重复变异。
青青青山
2022/07/07
3.4K0
单细胞转录组之拷贝数变异分析
比较copykat和infercnv这两个从单细胞转录组数据推断肿瘤拷贝数变异技术差异
如果是现在才看到这个系列的小伙伴建议自己去先读一下CELL杂志的文章:Therapy-Induced Evolution of Human Lung Cancer Revealed by Single-Cell RNA Sequencing ,因为作者提供了全套代码,在:https://github.com/czbiohub/scell_lung_adenocarcinoma ,研究者们共收集到30位患者的49份活检样本(biopsy),分为三种类型:治疗前(TKI naive [TN]),靶向治疗后肿瘤消退或稳定(RD, residual disease state)以及靶向治疗后肿瘤仍然增长(PD, upon subsequent progressive disease),这样单细胞转录组数据就非常丰富!
生信技能树
2021/12/04
3.6K0
比较copykat和infercnv这两个从单细胞转录组数据推断肿瘤拷贝数变异技术差异
CNS图表复现14—检查文献的inferCNV流程
CNS图表复现之旅前面我们已经进行了13讲,你可以点击图表复现话题回顾。如果你感兴趣也想加入交流群,自己去:你要的rmarkdown文献图表复现全套代码来了(单细胞)找到我们的拉群小助手哈。
生信技能树jimmy
2020/11/02
3K0
CNS图表复现14—检查文献的inferCNV流程
CNS图表复现09—上皮细胞可以区分为恶性与否
如果你也想加入交流群,自己去:你要的rmarkdown文献图表复现全套代码来了(单细胞)找到我们的拉群小助手哈。
生信技能树jimmy
2020/10/19
1.6K0
CNS图表复现09—上皮细胞可以区分为恶性与否
单细胞实战之inferCNV——入门到进阶(中级篇3)
在前两讲中,我们已经完整介绍了CD4+ T细胞的提取及其亚群细分的流程。本讲将聚焦于单细胞分析领域中的重要工具——inferCNV,用于判断不同细胞亚群的CNV变化。尽管本讲内容在课程的连贯性上可能略显跳跃,但考虑到该工具在肿瘤研究中的重要性和以及其技术难度相对较低,我们仍在中级篇阶段对其进行回顾和学习。
凑齐六个字吧
2025/03/30
2240
单细胞实战之inferCNV——入门到进阶(中级篇3)
运行耗时比较长的代码就需要后台运行了
在Linux或者Unix系统中,你可以使用nohup命令和&符号来在后台运行R脚本。这样即使你关闭了终端,你的R脚本也会继续运行。以下是一个例子,假设你的R脚本名为myscript.R:
生信技能树
2023/09/04
1K0
运行耗时比较长的代码就需要后台运行了
infercnv的cluster_by_groups参数影响后续层次聚类文件读取函数
因为教程跨越了不同时间周期,软件更新,数据集的特异性,导致很多小伙伴follow不同系统的教程会得到不一样的报错。
生信技能树
2022/03/03
1.7K0
CNS图表复现20—第三次分群,以T细胞为例
前面我们展现了 CNS图表复现08—肿瘤单细胞数据第一次分群通用规则,然后呢,第二次分群的上皮细胞可以细分恶性与否,免疫细胞呢,细分可以成为: B细胞,T细胞,巨噬细胞,树突细胞等等。实际上每个免疫细胞亚群仍然可以继续精细的划分,以文章为例:
生信技能树jimmy
2020/12/11
1K0
CNS图表复现20—第三次分群,以T细胞为例
infercnv输入文件的制作
示例文件 gencode_downsampled.EXAMPLE_ONLY_DONT_REUSE.txt 里面是:
生信技能树jimmy
2020/03/27
1.8K0
CNS图表复现07—原来这篇文章有两个单细胞表达矩阵
如果你也想加入交流群,自己去:你要的rmarkdown文献图表复现全套代码来了(单细胞)找到我们的拉群小助手哈。
生信技能树jimmy
2020/10/19
1.8K0
CNS图表复现07—原来这篇文章有两个单细胞表达矩阵
CNS图表复现18—细胞亚群的比例展示
在前面的教程 CNS图表复现05—免疫细胞亚群再分类 ,我提到到免疫细胞通常是以CD45阳性为标志,第一次分群规则是 :
生信技能树jimmy
2020/12/11
2.2K0
CNS图表复现18—细胞亚群的比例展示
CNS图表复现12—检查原文的细胞亚群的标记基因
CNS图表复现之旅前面我们已经进行了11讲,你可以点击图表复现话题回顾。如果你感兴趣也想加入交流群,自己去:你要的rmarkdown文献图表复现全套代码来了(单细胞)找到我们的拉群小助手哈。
生信技能树jimmy
2020/11/02
1.1K0
CNS图表复现12—检查原文的细胞亚群的标记基因
CNS图表复现08—肿瘤单细胞数据第一次分群通用规则
如果你也想加入交流群,自己去:你要的rmarkdown文献图表复现全套代码来了(单细胞)找到我们的拉群小助手哈。
生信技能树jimmy
2020/10/19
1.2K0
CNS图表复现08—肿瘤单细胞数据第一次分群通用规则
CNS图表复现05—免疫细胞亚群再分类
如果你也想加入交流群,自己去:你要的rmarkdown文献图表复现全套代码来了(单细胞)找到我们的拉群小助手哈。
生信技能树jimmy
2020/09/28
2K0
CNS图表复现05—免疫细胞亚群再分类
祖传的单个10x样本的seurat标准代码
其实单细胞领域进展太快,我那些课程内容关于R包相关的代码基本上过时了,因为R语言本身都经历了一个超级大的变革!考虑到不能把粉丝带歪,我早就全部公开了系列视频课程。还创立了《单细胞天地》这个公众号 :
生信技能树
2020/08/28
1.8K0
类器官培养物真的只有恶性肿瘤细胞吗(去卷积推测细胞亚群比例)
本来呢,大家期待肿瘤类器官(PDO)作为肿瘤模型的革命性技术是可以解决上面的两个问题。首先呢,肿瘤类器官优势在于它源自各个病人的原始肿瘤组织,并且基于其原代培养的特性,其与原始肿瘤组织在病理特征、基因突变等多维度具有一致性,可再现肿瘤异质性,并且可传代、冻存,还可进行基因操作。但是呢, 早期的肿瘤类器官其实也是没有肿瘤微环境的,仅仅是恶性肿瘤上皮细胞被培养。
生信技能树
2024/04/26
1260
类器官培养物真的只有恶性肿瘤细胞吗(去卷积推测细胞亚群比例)
CNS图表复现03—单细胞区分免疫细胞和肿瘤细胞
交流群里大家讨论的热火朝天,而且也都开始了图表复现之旅,在这里我还是带大家一步步学习CNS图表吧。如果你也想加入交流群,自己去:你要的rmarkdown文献图表复现全套代码来了(单细胞)找到我们的拉群小助手哈。
生信技能树jimmy
2020/09/23
2K0
CNS图表复现03—单细胞区分免疫细胞和肿瘤细胞
推荐阅读
相关推荐
CNS图表复现15—inferCNV流程输入数据差异大揭秘
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验