跳转至

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类型。

易错点

  1. STAR比对参数错误:融合检测需要特定的STAR参数(如--chimSegmentMin),默认参数不会产生chimeric alignments
  2. 参考基因组版本不一致:STAR-Fusion需要专门的CTAT库,版本必须匹配
  3. 忽略low confidence结果:对于已知的临床融合,即使confidence=low也应报告
  4. Read-through误判为融合:相邻基因的read-through是正常现象,不应报告为融合
  5. 样本类型不当:FFPE样本RNA降解严重,融合检测灵敏度显著下降

补充知识

融合检测工具对比

工具比对器速度灵敏度特异性
STAR-FusionSTAR
ArribaSTAR最高
FusionCatcherBowtie/STAR
JAFFABLAT
ChimPipeGEM