R语言实战:手把手教你用CIBERSORT分析肿瘤免疫浸润(附LM22文件下载与避坑指南)

张开发
2026/4/19 23:19:35 15 分钟阅读

分享文章

R语言实战:手把手教你用CIBERSORT分析肿瘤免疫浸润(附LM22文件下载与避坑指南)
R语言实战零基础掌握CIBERSORT肿瘤免疫浸润分析第一次打开RStudio时看着满屏的代码和报错信息那种手足无措的感觉我至今记忆犹新。如果你正处在这样的阶段希望用CIBERSORT分析肿瘤免疫微环境却不知从何下手这篇指南就是为你准备的。不同于晦涩的理论讲解我们将用最直白的语言一步步拆解从软件安装到结果解读的全过程甚至包括那些教科书上不会写的坑和解决方案。1. 准备工作搭建你的R分析环境在开始分析之前我们需要确保R环境配置正确。许多初学者90%的问题都源于基础环境没准备好。打开你的RStudio我们从头开始配置。1.1 必备软件安装首先确认你已安装以下软件附最新版本下载链接R语言(≥4.0)官方下载RStudio(推荐2023.06)下载页面Git(可选用于代码管理)Git下载提示Windows用户请右键选择以管理员身份运行安装程序避免后续包安装权限问题1.2 关键R包安装在R控制台逐行执行以下命令安装依赖包# 设置CRAN镜像加速下载国内用户建议使用清华镜像 options(repos c(CRAN https://mirrors.tuna.tsinghua.edu.cn/CRAN/)) # 安装基础依赖包 install.packages(c(e1071, parallel, preprocessCore)) # 对于preprocessCore安装失败的情况常见于Windows if (!require(preprocessCore)) { if (!require(BiocManager)) install.packages(BiocManager) BiocManager::install(preprocessCore) }常见问题解决方案报错package not available检查R版本是否≥4.0安装卡顿更换镜像源chooseCRANmirror()权限错误Windows用户尝试以管理员身份运行RStudio1.3 获取CIBERSORT脚本文件官方提供的CIBERSORT.R脚本可通过以下方式获取# 方法1直接从GitHub下载 download.file( url https://raw.githubusercontent.com/singha53/amritr/master/src/R/supportFunc_cibersort.R, destfile CIBERSORT.R ) # 方法2手动保存推荐 # 访问 https://rdrr.io/github/singha53/amritr/src/R/supportFunc_cibersort.R # 全选代码 → 复制 → 在RStudio中新建脚本文件 → 粘贴 → 保存为CIBERSORT.R注意保存路径不要包含中文或特殊字符建议直接放在工作目录下2. 关键数据准备LM22与表达谱2.1 获取LM22特征矩阵LM22是CIBERSORT分析的钥匙包含22种免疫细胞的基因特征。获取步骤访问Nature Methods原论文找到Supplementary Information部分下载Supplementary Table 1XLS格式在Excel中删除前两行说明文字另存为制表符分隔的文本文件(.txt)重命名为LM22.txt文件结构应如下所示GeneSymbol B.cells.naive B.cells.memory ... Neutrophils A1BG 0.001 0.0002 ... 0.003 A2M 0.005 0.004 ... 0.001 ... ... ... ... ...2.2 准备表达谱数据你的基因表达数据需要满足以下要求格式基因名(行)×样本名(列)的矩阵预处理建议去除低表达基因TPM/FPKM1的基因保留基因名统一为Gene Symbol缺失值用0或中位数填充保存为制表符分隔的文本文件例如expr_data.txt示例结构GeneSymbol Sample1 Sample2 ... SampleN TP53 10.2 8.5 ... 12.1 BRCA1 5.3 6.8 ... 4.9 ... ... ... ... ...常见错误排查检查文件编码是否为UTF-8行尾符为LFUnix格式3. 运行CIBERSORT分析3.1 基础分析流程准备好脚本和数据后运行分析只需几行代码# 加载CIBERSORT函数 source(CIBERSORT.R) # 运行分析示例参数 results - CIBERSORT( sig_matrix LM22.txt, # 特征矩阵文件 mixture_file expr_data.txt, # 表达谱文件 perm 1000, # 置换次数计算p值 QN TRUE # 分位数归一化芯片数据用TRUE测序数据用FALSE ) # 查看结果概览 head(results)参数说明参数名推荐设置作用说明perm100-1000置换次数0表示不计算p值QNTRUE/FALSE是否进行分位数归一化absoluteFALSE是否返回绝对丰度需特殊矩阵3.2 结果解读典型输出包含以下列样本ID22种免疫细胞的比例估计质量评估指标P-value置换检验p值0.05表示结果可靠Correlation预测与实际表达的相关系数RMSE均方根误差示例结果片段 results[1:3, c(1:3, 24:26)] B.cells.naive B.cells.memory Plasma.cells P-value Correlation RMSE Sample1 0.0523 0.0214 0.0031 0.012 0.892 0.214 Sample2 0.0487 0.0189 0.0028 0.021 0.865 0.231 Sample3 0.0612 0.0253 0.0035 0.008 0.912 0.1984. 进阶技巧与问题排查4.1 常见报错解决方案问题1Error in read.table(sig_matrix)检查文件路径是否正确建议使用绝对路径确认文件编码为UTF-8无BOM尝试file.exists(LM22.txt)验证文件可读性问题2missing preprocessCore package重新安装Bioconductor依赖if (!require(BiocManager)) install.packages(BiocManager) BiocManager::install(preprocessCore, force TRUE)问题3结果全为NA或0检查基因名是否匹配大小写、符号版本确认表达值经过log2转换若非log值设置QNFALSE4.2 结果可视化建议基础饼图绘制代码# 提取免疫细胞比例数据排除最后三列统计量 cell_prop - results[, 1:22] # 绘制样本1的组成饼图 pie(cell_prop[1, ], col rainbow(22), main Sample1 Immune Composition, cex 0.8)更推荐使用ggplot2绘制堆叠柱状图library(ggplot2) library(reshape2) # 数据整理 plot_data - melt(cell_prop) colnames(plot_data) - c(Sample, CellType, Proportion) # 绘制 ggplot(plot_data, aes(x Sample, y Proportion, fill CellType)) geom_bar(stat identity) theme_minimal() labs(title Immune Cell Composition Across Samples)4.3 性能优化技巧并行计算Linux/Mac用户可通过设置mc.cores参数加速options(mc.cores parallel::detectCores() - 1)大数据分块样本数100时分批运行避免内存溢出结果缓存使用saveRDS保存中间结果saveRDS(results, cibersort_results.rds)5. 实际案例分析以一个真实的TCGA乳腺癌数据集为例演示完整分析流程# 下载示例数据需预先安装TCGAbiolinks if (!require(TCGAbiolinks)) { BiocManager::install(TCGAbiolinks) } library(TCGAbiolinks) # 获取BRCA基因表达数据 query - GDCquery( project TCGA-BRCA, data.category Transcriptome Profiling, data.type Gene Expression Quantification, workflow.type STAR - Counts ) GDCdownload(query) data - GDCprepare(query) # 数据预处理 expr_data - assay(data, unstranded) rownames(expr_data) - rowData(data)$gene_name expr_data - expr_data[rowMeans(expr_data) 1, ] # 过滤低表达基因 write.table(expr_data, tcga_brca.txt, sep \t) # 运行CIBERSORT source(CIBERSORT.R) brca_results - CIBERSORT(LM22.txt, tcga_brca.txt, perm 100, QN FALSE) # 结果关联临床信息 clinical - colData(data) brca_results - merge(brca_results, clinical, by.x row.names, by.y barcode)通过这个流程我们可以进一步分析不同乳腺癌亚型间的免疫浸润差异或探索特定免疫细胞与患者预后的关系。

更多文章