
那天我数了一下,发现事情不太对
做肿瘤免疫生信分析几年了,我一直觉得自己的 R 环境越来越臃肿是正常的——毕竟术业有专攻嘛。
直到那天我打算从零复现一套分析流程,顺手列了个清单:
- 载数据得自己写
GEOquery脚本 - 去批次得配
sva的 Combat - 做免疫浸润得去装
CIBERSORT的 R 脚本(还得手动改源码里的路径) - 算 TIDE 得分得去官网下载那个 Python 版
- 画生存曲线得
survival+survminer - 跑机器学习得
caret或者mlr3 - 画图还得
ggplot2调半天 theme
列到一半我就放弃了。这不是做分析,这是拼乐高——而且每个零件还来自不同的玩具厂。
更要命的是,等你好不容易把每个包都配好了,版本又冲突了。Matrix 1.6 vs 1.5,Seurat v5 vs v4,一个 install.packages 就能让你回到解放前。
“要是有个包,能把肿瘤免疫分析从头到尾包圆了就好了。”
朋友,tigeR 就是你要找的那个包。
tigeR 是什么来头?
先交个底:tigeR 是南方医科大学余光创教授团队开发的 R 包,2024 年发在国产高起点期刊 iMeta 上(DOI: 10.1002/imt2.229)。
说人话就是:肿瘤免疫分析最核心的四件事——数据清洗、微环境解构、Biomarker 验证、疗效预测模型——它全包了。而且用的是同一套接口,同一个数据格式,你不用在包之间来回倒腾。
安装就两行:
devtools::install_github("YuLab-SMU/tigeR")
devtools::install_github("YuLab-SMU/tigeR.data")按做一套完整分析的顺序,一个个说。
第一关:数据预处理——从几天的活到几分钟
这是我最有感触的模块。因为我吃过太多洗数据的苦了。
tigeR 用 SummarizedExperiment 做数据容器,表达矩阵和临床信息永远对齐。删了个样本后 colData 错位?不存在的,这个容器天然帮你管好了。
内置的 Dataloader 能规范化临床信息列名。Treatment、response、overall.survival..days.、vital.status,你以后看到这些统一的名字,心里会特别踏实。
但真正的王炸是 remove_BE()。Combat、limma、DWD 四种去批次算法,一行:
SE_clean <- remove_BE(SE_merged, method = "Combat")跑完再用 browse_BE() 画个 PCA——原本因为测序平台不同分成两坨的样本,现在完美融合。那种强迫症被满足的快感,你跑一次就懂。
第二关:TME 解构——10 种算法,一个入口
肿瘤微环境分析是刚需。问题是市面上的去卷积算法实在太多了:CIBERSORT、TIMER、xCell、MCPCounter、EPIC、ESTIMATE、quanTIseq… 每个安装方法不一样,输入格式不一样,输出也不一样。
tigeR 用一个函数 deconv_TME() 统一了全部 10 种算法:
frac_timer <- deconv_TME(SE, method = "TIMER")
frac_ciber <- deconv_TME(SE, method = "CIBERSORT")
frac_xcell <- deconv_TME(SE, method = "xCell")想换算法?改一下 method 参数就行了。对比不同算法的结果变得 so easy。
还有一个让我眼前一亮的功能:如果你手头有单细胞数据,tigeR 能帮你从 scRNA-seq 构建自定义 Reference 矩阵,然后用 deconv_TME() 做精准去卷积。这意味着你可以获得癌种特异的免疫细胞比例,而不是用别人泛癌的 Reference 凑合。
打通单细胞和 Bulk,这一步直接让你的分析上升一个档次。
第三关:Biomarker 评估——23 种签名,别再手算了
如果你曾经手动复现过别人的免疫 Signature,你一定懂那种”公式输错了一个括号,结果全白算”的崩溃。
tigeR 内置了 23 种主流免疫治疗相关 Signature:TIDE、IFNG、T cell-inflamed GEP、Angiogenesis、Teffector、IPS、TLS、EMT… 一个 score_biomk() 全部搞定:
sig_res <- score_biomk(SE)一个 score_biomk() 干完,然后就是差异分析、生存分析、ROC 曲线,一个接一个跑下去。
integrate_analysis(SE, geneSet = "CD274"),一行出差异 + 生存结果。
diff_biomk(SE, gene = "CD274", type = "Response"),直接出发表级箱线图。
roc_biomk(),把你的基因和 23 种签名一起比 AUC。
以前这一套下来要干几天,现在十分钟。人生苦短,别把时间花在重复造轮子上。
第四关:预测模型——零代码也能上机器学习
这是最让我意外的一趴。
听到”机器学习”四个字就想关窗口?我理解。但 build_Model() 把这件事做成了搭积木:
mymodel <- build_Model(Model = "NB",
SE = train_set,
feature_genes = my_genes,
response_NR = TRUE)NB、SVM、RF、Logitboost,四种算法任选,tigeR 自动处理标准化和缺失值填充。建好模型后用 test_Model() 在独立验证集上画 ROC,一条龙。
更狠的是 pred_response():你甚至不需要自己建模。tigeR 内置了预训练模型(比如 ipt 签名),直接把你的新数据扔进去,预测每个患者是 Responder 还是 Non-Responder。
从数据到可用模型,一条路走到黑。
一句话总结
tigeR 不只是一个”这里好用、那里方便”的工具,它改变了你做肿瘤免疫分析的工作方式:从”花80%时间洗数据、拼工具链”,变成”花80%时间思考科学问题本身”。
GitHub 仓库在这:https://github.com/YuLab-SMU/tigeR
赶紧 install,然后回来感谢我。
Li, N., et al. (2024). tigeR: An R package for tumor immune microenvironment analysis and immunotherapy response prediction. iMeta, e229. http://doi.org/10.1002/imt2.229