186_转录组融合基因验证¶
一句话概述¶
转录组融合基因验证是对RNA-seq数据中检测到的融合基因候选进行多工具交叉验证、过滤假阳性和实验验证设计的过程,涉及STAR-Fusion、Arriba、FusionCatcher等工具的综合使用和结果解读。
核心知识点表格¶
| 知识点 | 说明 |
|---|---|
| 融合基因 | 两个独立基因的部分序列连接形成的嵌合转录本 |
| 检测原理 | 基于split reads和spanning reads识别跨基因junction |
| STAR-Fusion | 基于STAR比对的融合检测,速度快精度高 |
| Arriba | 高灵敏度融合检测工具,可视化出色 |
| FusionCatcher | 使用多种比对器的综合融合检测 |
| 假阳性来源 | read-through转录、PCR嵌合体、比对错误、基因组重排 |
| 验证方法 | RT-PCR、FISH、多工具交叉验证 |
| 临床意义 | BCR-ABL1、EML4-ALK、TMPRSS2-ERG等驱动融合 |
步骤详解¶
第一步:使用STAR-Fusion检测融合基因¶
白话解释:STAR-Fusion利用STAR比对器产生的split reads(跨越融合断裂点的reads)来发现融合基因。速度快,假阳性率相对较低。
# 下载STAR-Fusion参考数据
wget https://data.broadinstitute.org/Trinity/CTAT_RESOURCE_LIB/GRCh38_gencode_v37_CTAT_lib.tar.gz
tar xzf GRCh38_gencode_v37_CTAT_lib.tar.gz
# 运行STAR-Fusion
STAR-Fusion \
--genome_lib_dir GRCh38_gencode_v37_CTAT_lib/ \
--left_fq sample_R1.fastq.gz \
--right_fq sample_R2.fastq.gz \
--output_dir star_fusion_output \
--CPU 16 \
--FusionInspector validate
# 主要输出
# star-fusion.fusion_predictions.tsv # 融合预测结果
# star-fusion.fusion_predictions.abridged.tsv # 精简版
# FusionInspector-validate/ # 验证结果
# 查看结果
head -5 star_fusion_output/star-fusion.fusion_predictions.abridged.tsv
# FusionName JunctionReadCount SpanningFragCount ...
# TMPRSS2--ERG 45 23 ...
第二步:使用Arriba检测融合基因¶
白话解释:Arriba是另一个流行的融合基因检测工具,在多个benchmark中表现优异,特别擅长检测临床相关的融合。它还能生成漂亮的融合基因可视化图。
# 安装Arriba
conda install -c bioconda arriba
# 需要先用STAR比对(特殊参数)
STAR \
--runThreadN 16 \
--genomeDir star_index/ \
--readFilesIn sample_R1.fastq.gz sample_R2.fastq.gz \
--readFilesCommand zcat \
--outSAMtype BAM SortedByCoordinate \
--outSAMunmapped Within \
--outBAMcompression 0 \
--chimSegmentMin 10 \
--chimOutType WithinBAM SoftClip \
--chimJunctionOverhangMin 10 \
--chimScoreDropMax 30 \
--chimScoreJunctionNonGTAG 0 \
--chimScoreSeparation 1 \
--alignSJstitchMismatchNmax 5 -1 5 5 \
--chimSegmentReadGapMax 3 \
--outFileNamePrefix arriba_star/
# 运行Arriba
arriba \
-x arriba_star/Aligned.sortedByCoord.out.bam \
-o fusions.tsv \
-O fusions.discarded.tsv \
-a reference.fa \
-g annotation.gtf \
-b arriba/database/blacklist_hg38_GRCh38_v2.4.0.tsv.gz \
-k arriba/database/known_fusions_hg38_GRCh38_v2.4.0.tsv.gz \
-t arriba/database/known_fusions_hg38_GRCh38_v2.4.0.tsv.gz \
-p arriba/database/protein_domains_hg38_GRCh38_v2.4.0.gff3
# 可视化融合
draw_fusions.R \
--fusions=fusions.tsv \
--alignments=arriba_star/Aligned.sortedByCoord.out.bam \
--output=fusions.pdf \
--annotation=annotation.gtf \
--cytobands=arriba/database/cytobands_hg38_GRCh38_v2.4.0.tsv
第三步:多工具交叉验证¶
白话解释:单个工具的假阳性率较高。最好的做法是用多个工具分析同一份数据,取交集作为高置信结果。
import pandas as pd
# 读取各工具结果
star_fusion = pd.read_csv("star_fusion_output/star-fusion.fusion_predictions.abridged.tsv",
sep="\t")
arriba = pd.read_csv("fusions.tsv", sep="\t")
# fusioncatcher = pd.read_csv("fusioncatcher_output/final-list_candidate-fusion-genes.txt", sep="\t")
# 标准化融合基因名格式
def normalize_fusion(name, sep='--'):
genes = sorted(name.replace('--', '__').replace('-', '__').split('__'))
return '__'.join(genes)
star_fusions = set(star_fusion['#FusionName'].apply(lambda x: normalize_fusion(x)))
arriba_fusions = set()
for _, row in arriba.iterrows():
fusion = normalize_fusion(f"{row['#gene1']}__{row['gene2']}")
arriba_fusions.add(fusion)
# 交集
consensus = star_fusions & arriba_fusions
print(f"STAR-Fusion: {len(star_fusions)} fusions")
print(f"Arriba: {len(arriba_fusions)} fusions")
print(f"Consensus: {len(consensus)} fusions")
print("\nConsensus fusions:")
for f in sorted(consensus):
print(f" {f}")
# 使用FusionReport或Annovar进一步注释
# 检查是否在已知融合数据库中(COSMIC, ChimerDB, FusionGDB)
第四步:融合基因过滤与注释¶
白话解释:原始结果中有很多假阳性。需要根据证据强度(supporting reads数量)、是否在黑名单中、是否有已知功能等进行过滤。
# R中的过滤策略
fusions <- read.delim("fusions.tsv", stringsAsFactors = FALSE)
# 过滤条件
filtered <- fusions[
fusions$split_reads1 + fusions$split_reads2 >= 3 & # 至少3个split reads
fusions$discordant_mates >= 2 & # 至少2个discordant pairs
fusions$confidence %in% c("high", "medium") & # 高/中置信度
!grepl("read_through", fusions$type) & # 排除read-through
!grepl("healthy", fusions$tags), # 排除正常组织常见的
]
cat("过滤前:", nrow(fusions), "fusions\n")
cat("过滤后:", nrow(filtered), "fusions\n")
# 检查已知临床融合
known_fusions <- c("BCR--ABL1", "EML4--ALK", "TMPRSS2--ERG",
"EWSR1--FLI1", "SYT--SSX1", "PAX3--FOXO1",
"RET--CCDC6", "NTRK1--TPM3", "ROS1--CD74")
filtered$known <- paste0(filtered$gene1, "--", filtered$gene2) %in% known_fusions |
paste0(filtered$gene2, "--", filtered$gene1) %in% known_fusions
cat("已知临床融合:", sum(filtered$known), "\n")
第五步:设计实验验证¶
白话解释:计算预测需要实验验证。最常用的是RT-PCR:设计引物跨越融合断裂点,只有真实融合才能扩增出产物。
# 提取融合断裂点序列用于引物设计
def get_fusion_sequence(gene1_seq, gene2_seq, breakpoint1, breakpoint2):
"""提取融合junction附近的序列"""
left = gene1_seq[max(0, breakpoint1-150):breakpoint1]
right = gene2_seq[breakpoint2:breakpoint2+150]
return left + right
# RT-PCR引物设计指南
primer_design_notes = """
RT-PCR融合基因验证引物设计:
1. 正向引物设计在5'基因的最后1-2个外显子
2. 反向引物设计在3'基因的前1-2个外显子
3. 预期PCR产物大小:200-500bp
4. 引物跨越融合junction
5. 阳性对照:已知含该融合的细胞系
6. 阴性对照:正常组织cDNA
7. Sanger测序确认PCR产物序列
替代验证方法:
- FISH:荧光原位杂交,检测染色体水平的重排
- Western blot:检测融合蛋白(如果有抗体)
- 长读长测序:直接捕获完整融合转录本
"""
print(primer_design_notes)
实战命令速查¶
# STAR-Fusion快速运行
STAR-Fusion --genome_lib_dir ctat_lib/ --left_fq R1.fq.gz --right_fq R2.fq.gz -O output/ --CPU 16
# Arriba快速运行
arriba -x Aligned.bam -o fusions.tsv -a ref.fa -g genes.gtf -b blacklist.tsv
# FusionCatcher运行
fusioncatcher -d data/ -i R1.fq.gz,R2.fq.gz -o fusioncatcher_out/ -p 16
# Arriba可视化
draw_fusions.R --fusions=fusions.tsv --alignments=Aligned.bam --output=plot.pdf
面试常问点¶
Q1: 融合基因检测中split reads和spanning reads的区别是什么? A: Split reads(也叫junction reads)是一条read跨越融合断裂点,被STAR比对到两个不同基因上。Spanning reads(也叫discordant pairs)是配对的两条reads分别比对到两个不同基因。Split reads提供精确的断裂点位置,spanning reads提供融合的间接证据。
Q2: 融合基因检测中最常见的假阳性来源是什么? A: (1)Read-through转录:相邻基因的连续转录,不是真正的基因组重排;(2)PCR/文库制备嵌合体:两个不同mRNA在逆转录或PCR过程中人工连接;(3)比对错误:重复序列或同源序列导致的错误比对;(4)多基因家族成员的交叉比对。
Q3: 为什么推荐使用多个工具检测融合? A: 各工具使用不同的比对策略和过滤标准。STAR-Fusion速度快但可能漏检罕见融合;Arriba灵敏度高但可能更多假阳性;FusionCatcher使用多种比对器更全面但较慢。多工具取交集可以降低假阳性率。
Q4: 哪些融合基因有明确的临床治疗价值? A: BCR-ABL1(CML,伊马替尼)、EML4-ALK(NSCLC,克唑替尼)、ROS1融合(NSCLC,克唑替尼)、NTRK融合(多种肿瘤,拉罗替尼)、FGFR融合(胆管癌,佩米加替尼)等。这些融合是FDA批准的靶向治疗的伴随诊断指标。
Q5: 如何区分真实融合和read-through转录? A: Read-through通常发生在染色体上相邻的基因之间,方向与基因组方向一致。真实融合可以发生在不同染色体之间或同一染色体的远距离区域。Arriba和STAR-Fusion都会标注read-through类型。
易错点¶
- STAR比对参数错误:融合检测需要特定的STAR参数(如--chimSegmentMin),默认参数不会产生chimeric alignments
- 参考基因组版本不一致:STAR-Fusion需要专门的CTAT库,版本必须匹配
- 忽略low confidence结果:对于已知的临床融合,即使confidence=low也应报告
- Read-through误判为融合:相邻基因的read-through是正常现象,不应报告为融合
- 样本类型不当:FFPE样本RNA降解严重,融合检测灵敏度显著下降
补充知识¶
融合检测工具对比¶
| 工具 | 比对器 | 速度 | 灵敏度 | 特异性 |
|---|---|---|---|---|
| STAR-Fusion | STAR | 快 | 高 | 高 |
| Arriba | STAR | 快 | 最高 | 中 |
| FusionCatcher | Bowtie/STAR | 慢 | 高 | 中 |
| JAFFA | BLAT | 中 | 中 | 高 |
| ChimPipe | GEM | 中 | 中 | 高 |