TCR/BCR 受体库分析

TCR/BCR 谱系分析
摘要: 使用 MiXCR 或 Cell Ranger 比对 V(D)J 序列来分析免疫谱系,然后在 R 中使用 immunarch 包可视化克隆性和多样性。
什么是谱系分析?
适应性免疫细胞(T细胞和B细胞)通过 V(D)J 重组 产生巨大的多样性。分析这种谱系有助于理解:
- 克隆扩增: 对抗原/肿瘤的反应
- 多样性: 免疫系统的健康状况
- 基因使用: V/J 基因选择的偏好性
- 趋同性: 个体间共享的公共克隆
第一部分:上游处理(比对)
你需要将原始的 FASTQ 文件转换为克隆型表格。
选项 A:Cell Ranger(10x 单细胞 VDJ)
如果你有 10x Genomics 单细胞数据:
cellranger vdj \
--id=sample1 \
--reference=/path/to/refdata-cellranger-vdj-GRCh38-alts-ensembl-7.0.0 \
--fastqs=/path/to/fastqs \
--sample=sample1
输出: filtered_contig_annotations.csv
选项 B:MiXCR(Bulk RNA-seq / VDJ-seq)
对于 bulk 测序或非 10x 数据,MiXCR 是金标准。
1. 安装
# 通过 Conda 安装
conda install -c milaboratories mixcr
# 激活许可证(学术用户免费)
# 从以下网址获取密钥:https://licensing.milaboratories.com/
mixcr activate-license
2. 运行流程
MiXCR 为不同的数据类型提供了预设。
# 用于 bulk RNA-seq(提取 TCR/BCR 读段)
mixcr analyze rna-seq \
--species hsa \
--output-file results \
R1.fastq.gz R2.fastq.gz
# 用于特定扩增子数据(例如,TCR beta)
mixcr analyze amplicon \
--species hsa \
--starting-material rna \
--5-end no-v-primers \
--3-end c-primers \
--adapters adapters-present \
R1.fastq.gz R2.fastq.gz \
results_amplicon
输出: results.clonotypes.txt(制表符分隔的表格)
第二部分:下游分析(Immunarch)
immunarch R 包为分析提供了一个统一的框架。
1. 安装与数据加载
install.packages("immunarch")
library(immunarch)
# 1. 准备元数据文件 (metadata.txt)
# Sample Condition
# Sample1 Control
# Sample2 Treatment
# 2. 加载数据
# 指向包含 MiXCR 或 Cell Ranger 输出的目录
immdata <- repLoad("./results_directory")
# 验证
print(names(immdata$data))
2. 基础统计
# 计算克隆型数量和总体积
repExplore(immdata$data, .method = "volume") %>% vis()
# 克隆型丰度分布
repExplore(immdata$data, .method = "clones") %>% vis()
3. 多样性分析
衡量免疫谱系的“丰富度”。
# Chao1 估计(丰富度)
div_chao <- repDiversity(immdata$data, .method = "chao1")
vis(div_chao)
# 基尼指数(不平等性 - 高基尼指数意味着寡克隆扩增)
div_gini <- repDiversity(immdata$data, .method = "gini")
vis(div_gini, .by = "Condition", .meta = immdata$meta)
4. 克隆性与扩增
识别扩增的克隆(例如,对肿瘤有反应的克隆)。
# 分类为稀有、小、中、大、超扩增
imm_top <- repClonality(immdata$data, .method = "homeo")
vis(imm_top)
# 跨样本追踪顶级克隆
repOverlap(immdata$data, .method = "public") %>% vis()
5. 基因使用
检查 V 或 J 片段的使用是否存在偏好。
# V基因使用热图
gene_stats <- geneUsage(immdata$data, .gene = "hs.trbv")
vis(gene_stats, .plot = "heatmap")
# 在不同条件间比较
vis(gene_stats, .by = "Condition", .meta = immdata$meta)
6. Kmer 分析(基序)
在 CDR3 区域中寻找共享的氨基酸基序。
# 统计 k-mers
kmers <- getKmers(immdata$data, 5) # 5-mers
# 可视化基序标识
kmer_profile <- kmer_profile(kmers, "prob")
vis(kmer_profile)
单细胞整合(scRepertoire)
对于单细胞 VDJ 数据,使用 scRepertoire 与 Seurat 进行整合。
library(scRepertoire)
library(Seurat)
# 1. 加载 contig 文件
contig_list <- loadContigs(dir = "./vdj_outs", format = "10X")
# 2. 合并 T/B 细胞数据
combined <- combineTCR(contig_list, samples = c("S1", "S2"), ID = c("Ctrl", "Treat"))
# 3. 添加到 Seurat 对象
seurat_obj <- combineExpression(combined, seurat_obj, cloneCall = "gene+nt")
# 4. 在 UMAP 上可视化
DimPlot(seurat_obj, group.by = "cloneType")
故障排除
MiXCR: "未找到克隆型"
原因: 物种设置错误或预设错误。
解决方法:
- 检查
--species(hsa = 人类,mmu = 小鼠)。 - 确保输入数据确实包含免疫读段(标准 RNA-seq 可能覆盖率较低)。
Immunarch: "元数据不匹配"
原因: metadata.txt 中的样本名称与文件名不匹配。
解决方法: 确保元数据的第一列与文件前缀完全一致。
对照样本中克隆性过高?
原因: PCR 重复或测序深度不足。
解决方法: 检查文库复杂度,如果可能,使用 UMI 进行去重。
资源
- MiXCR 文档: docs.milaboratories.com
- Immunarch 教程: immunarch.com/articles/web_only/v3_basic_analysis.html
- scRepertoire: ncborcherding.github.io/vignettes/vignette.html
另请参阅: