还在为单细胞/空间转录组中区分肿瘤恶性细胞和正常细胞发愁?一个R脚本帮你搞定inferCNV全流程,从RDS到CNV热图,一步到位!
📦 1. 简介
在单细胞和空间转录组分析中,有一个经典难题:怎么判断某个细胞簇到底是恶性细胞还是正常的反应性细胞?
比如你拿到了一个空转或单细胞转录组样本,聚类分群后发现某个细胞群表达marker不明确,看起来既像肿瘤又像正常——这时候怎么办?
答案是看拷贝数变异(CNV)。恶性肿瘤细胞通常伴随着大规模的染色体拷贝数改变,而正常细胞(如免疫细胞、基质细胞)的基因组相对稳定。inferCNV就是利用这个原理,通过分析基因表达值在染色体上的滑动平均,来推断细胞的CNV状态。
不过,inferCNV的原生流程配置参数较多,不同样本还需要不同的处理方式。今天我们介绍一个一键化脚本——individual_infercnv.V2.r,专门针对单样本的恶性细胞鉴定场景。
核心优势
- ✅一键运行— 输入RDS文件,设置好参数,自动跑完全程
- ✅智能参数— 经过优化的inferCNV参数,结果清晰可靠
- ✅灵活对照— 支持单个或多个阴性对照细胞类型
- ✅高质量出图— 自动生成最终CNV热图PDF
🔧 2. 环境配置
首先需要安装必要的R包:
# 安装必要依赖包if(!requireNamespace("BiocManager",quietly=TRUE))install.packages("BiocManager")# inferCNV主包BiocManager::install("infercnv")# Seurat和可视化install.packages(c("Seurat","gplots","ggplot2"))# 其他依赖install.packages(c("rjags","getopt","tidyverse"))BiocManager::install("qvalue")# 基因注释包install.packages("AnnoProbe")📂 3. 数据准备
输入数据格式
脚本需要一个Seurat RDS对象,其中需要包含:
- assay:含有
RNAassay - 一个metadata列:用于标注细胞类型或聚类结果(如
seurat_clusters、RNA_snn_res.0.5,celltype等) - 阴性对照组:在标注列中,需要有至少一个已知为正常细胞的类别(如 B_cell、T_cell、Fibroblast 等)
脚本下载:
链接: https://pan.baidu.com/s/1pLR1xDuh7tHwK7Ji2JpmWA?pwd=n1ci 提取码: n1ci
运行示例
单阴性对照:
nohupRscript individual_infercnv.V2.r\--rds/path/to/your/rds_file.rds\--prefixFib\--reference_nameB_cell\--annoRNA_snn_res.0.5\--outdir./fib_b&多阴性对照(用逗号分隔):
nohupRscript individual_infercnv.V2.r\--rds/path/to/your/rds_file.rds\--prefixFib\--reference_name"B_cell,T_cell"\--annoRNA_snn_res.0.5\--outdir./fib_b&参数说明
| 参数 | 含义 | 必填 |
|---|---|---|
--rds | 输入的Seurat RDS文件路径 | ✅ |
--prefix | 输出文件前缀名 | ✅ |
--reference_name | 阴性对照的细胞类型名称,多个用逗号分隔 | ✅ |
--anno | metadata中用于分组的列名 | ✅ |
--outdir | 输出目录 | ✅ |
📊 4. 结果说明
输出文件结构
运行完成后,输出目录中会生成以下关键文件:
| 文件 | 说明 |
|---|---|
*_expFile.txt | 处理后的表达矩阵 |
*_geneFile.txt | 基因染色体位置信息 |
*_groupFiles.txt | 细胞分组信息 |
*_CNV_result/ | inferCNV各步骤结果目录 |
*_final_CNV.pdf | 最终高质量CNV热图 |
如何解读结果
在CNV热图中:
- 🔴红色区域→ 基因表达高于基线,提示染色体扩增
- 🔵蓝色区域→ 基因表达低于基线,提示染色体缺失
- ⚪白色区域→ 表达接近基线,基因组相对正常
如果某个细胞群在多个染色体上出现大片的红蓝交替模式,基本可以判断为恶性细胞。而对照组(如B_cell)区域则整体呈现均匀的白色/浅色,说明基因组稳定。
在生成的结果中可着重关注以下几个文件:
infercnv.22_denoised.png : ✅ 最推荐的最终结果——HMM去噪后的热图,噪音最少
infercnv.png : 次选,未去噪的完整热图,细节多但噪音也多
infercnv.preliminary.png : 初步结果,一般做质控对比用
run.final.infercnv_obj : R对象,可用 infercnv::plot_cnv() 重新绘图或提取CNV区域