TCR/BCR 受体库分析

· Analysis Notes

TCR/BCR 受体库分析

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 进行去重。


资源


另请参阅:

TCR/BCR