导语
GUIDE ╲
拷贝数变异(CNV)在癌症的发生和发展中起着重要作用。随着单细胞测序数据的日渐增长,如何从单细胞转录组数据鉴定CNV 并进一步区分肿瘤细胞也成为了大家感兴趣的课题,今天我们介绍一款基于scRNA-seq数据鉴定CNV的R包。
inferCNV
R包inferCNV是一款基于肿瘤单细胞转录组数据,识别染色体拷贝数变异的工具。主要原理是通过对比肿瘤细胞与“正常”参考细胞的基因表达,确定每个基因的相对表达强度,最终通过生成的热图来显示每条染色体的相对表达强度。另外,inferCNV基于残差来最小化噪声,以此来预测染色体拷贝数异常区域,进而通过该异质性对细胞进行聚类。这里我们基于其官网的文档为大家介绍如何使用inferCNV。
本地安装
在安装inferCNV之前,我们首先需要安装一个系统包JAGS,大家可根据自己的电脑系统选择相应的版本。JAGS下载地址:
https://sourceforge.net/projects/mcmc-jags/files/JAGS/4.x/
# R version 3.6.0 以上
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("infercnv")
inferCNV也提供了docker安装:
sudo docker pull trinityctat/infercnv:latest
docker run --rm -it -v `pwd`:`pwd` trinityctat/infercnv:latest bash
数据要求
使用inferCNV之前,我们需要准备以下三个输入文件:
1. 单细胞转录的基因表达数据(gene by cell matrix):
2. 细胞注释文件标明肿瘤与正常细胞(annotation file)
文件包含两列信息,一列为细胞id,一列为细胞类型,由tab分隔,不需要列名。
当包含多种正常细胞时,可标注具体的细胞类型,在分析中会对不同类型的正常细胞分开处理;若将其统一标注为“normal”,则会分析中被统一处理;
不同的肿瘤细胞也可通过标注“malignant_{patient}”区分,在聚类分析中可以选择是否根据不同肿瘤细胞来分类。
由于只有在注释文件中列出的细胞才会被分析,因此如果我们只对某一部分细胞感兴趣的话,可以通过修改注释文件来达到subsetting的目的,而不需要对表达矩阵,就方便很多。
3. 基因注释文件,标示每个基因的位置信息
WASH7P chr1 14363 29806
LINC00115 chr1 761586 762902
NOC2L chr1 879584 894689
MIR200A chr1 1103243 1103332
SDF4 chr1 1152288 1167411
UBE2J2 chr1 1189289 1209265
分析流程及使用
inferCNV的主要分析流程包含以下步骤:
1. 基因过滤:设置min_cells_per_gene,筛除表达矩阵中表达量小于阈值的基因
2. 创建preliminary infercnv 对象:包括标准化,log(x+1)变换,基于滑窗方法沿着染色体根据基因表达强度做smoothing处理;估算肿瘤细胞相对于参考细胞的相对表达差异。
3. 得到的preliminary object可进一步进行表达值去噪
4. 预测肿瘤细胞的CNV 位置
inferCNV的基本使用包含两步主要步骤:
1. 基于以上三个输入文件构建InferCNV对象:CreateInfercnvObject()
library(infercnv)
# 构建对象
infercnv_obj = CreateInfercnvObject(raw_counts_matrix="singleCell.counts.matrix",
annotations_file="cellAnnotations.txt",
delim="\t",
gene_order_file="gene_ordering_file.txt",
ref_group_names=c("normal"))
请注意,当有不同类型的正常细胞类型时,可以修改参数ref_group_names;当没有参考细胞时,参数ref_group_names可设置为NULL,此时对于每个基因,参考表达值为该基因在所有细胞中的表达平均值。该函数也支持通过设置min_max_counts_per_cell来进一步筛除细胞,不过还是建议大家在使用inferCNV之前,先做质控去除低质量细胞。
2. 创建对象之后,可以通过infercnv::run()进行分析
# 主要分析模块,鉴定CNV信号
infercnv_obj = infercnv::run(infercnv_obj,
cutoff=1, # 决定多少基因被用于分析:smart-seq数据最优设置为1, 10x数据最优为0.1
out_dir="output_dir", # 自动创建输出文件夹
cluster_by_groups=T, # 如果有不同类型或来源的肿瘤细胞,TRUE表示据此类型做区分,在做聚类
denoise=T, # 去噪
HMM=T # CNV 预测
)
denoise提供了去噪的选择,当设置为TRUE时,有三种去噪方法可供选择:
参数HMM提供了CNV预测的分析,设置为TRUE时,有两种模型选择:
shinyApp
infercnv也提供了一款互动分析平台(R shiny app)InfercnvApp,方便对R语言不太熟悉的朋友使用。大家感兴趣的可以尝试一下。
说明文件来自:https://github.com/broadinstitute/infercnvApp/wiki
安装方法如下:
library("devtools")
devtools::install_github("broadinstitute/infercnvApp")
#运行
infercnvApp::infercnvApp()
小编总结
infercnv在癌症单细胞的处理分析比较常用,经常被用来进行癌细胞的判断以及肿瘤异质性方面的分析,代码简练,操作简便,也提供了多种使用平台。我们以后也会为大家多多介绍各类单细胞分析的好用工具,敬请关注!
Reference
inferCNV of the Trinity CTAT Project. https://github.com/broadinstitute/inferCNV