跳转至

196_基因组重排检测

一句话概述

基因组重排(rearrangement)包括倒位、易位、大片段缺失/重复和复杂重排(如chromothripsis),通过长读长测序、Hi-C数据和专用检测工具(Manta、DELLY、GRIDSS、SvABA)识别,是肿瘤基因组学和进化生物学的重要研究内容。

核心知识点表格

知识点说明
重排类型倒位、易位、大缺失、大重复、复杂重排
检测信号Discordant pairs, split reads, 深度变化, 组装比较
MantaIllumina官方SV caller,速度快
DELLY综合多种信号的SV检测工具
GRIDSS基于组装的SV检测,灵敏度高
Chromothripsis一次性大规模染色体碎裂和随机拼接
Chromoplexy多条染色体间的链式易位
临床意义驱动融合基因产生、抑癌基因失活

步骤详解

第一步:使用Manta检测结构重排

白话解释:Manta是Illumina开发的SV检测工具,利用配对reads的距离和方向异常来发现大规模基因组重排。

# 运行Manta(肿瘤-正常配对模式)
configManta.py \
    --normalBam normal.bam \
    --tumorBam tumor.bam \
    --referenceFasta ref.fa \
    --runDir manta_output

python manta_output/runWorkflow.py -j 16 -g 32

# 输出
# manta_output/results/variants/
#   somaticSV.vcf.gz           # 体细胞SV
#   diploidSV.vcf.gz           # 胚系SV
#   candidateSmallIndels.vcf.gz # 小InDel候选
#   candidateSV.vcf.gz         # SV候选

# 查看体细胞SV
bcftools view manta_output/results/variants/somaticSV.vcf.gz | \
  bcftools query -f '%CHROM\t%POS\t%INFO/SVTYPE\t%INFO/SVLEN\t%FILTER\n' | head

第二步:使用DELLY检测

# DELLY检测
delly call \
    -o delly_sv.bcf \
    -g ref.fa \
    tumor.bam normal.bam

# 过滤体细胞SV
echo -e "tumor\ttumor\nnormal\tcontrol" > samples.tsv
delly filter \
    -t DEL \
    -f somatic \
    -o delly_somatic_del.bcf \
    -s samples.tsv \
    delly_sv.bcf

# 检测所有类型
for svtype in DEL DUP INV BND; do
    delly filter -t $svtype -f somatic -o delly_somatic_${svtype}.bcf -s samples.tsv delly_sv.bcf
done

# 合并
bcftools concat delly_somatic_*.bcf | bcftools sort -o delly_somatic_all.vcf.gz

第三步:检测复杂重排(Chromothripsis)

白话解释:Chromothripsis(染色体碎裂)是一种灾难性的重排事件,一条或几条染色体一次性碎成几十甚至上百块,然后随机拼接回来。在某些肿瘤中很常见。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 读取SV数据
sv = pd.read_csv("sv_calls.tsv", sep="\t")

# Chromothripsis的特征:
# 1. 一条染色体上大量SV(>10个断裂点)
# 2. 拷贝数在两个状态之间振荡
# 3. SV类型随机分布
# 4. 涉及片段大小相对均匀

# 每条染色体的SV密度
sv_per_chrom = sv.groupby('chrom1').size()
print("每条染色体的SV数:")
print(sv_per_chrom.sort_values(ascending=False))

# 检查高密度染色体是否符合chromothripsis特征
def detect_chromothripsis(sv_df, chrom, min_breakpoints=10):
    """简单的chromothripsis检测"""
    chrom_sv = sv_df[sv_df['chrom1'] == chrom].sort_values('pos1')

    if len(chrom_sv) < min_breakpoints:
        return False, {}

    # 检查SV类型分布(应该较均匀)
    type_counts = chrom_sv['svtype'].value_counts()
    type_entropy = -(type_counts / type_counts.sum() * np.log2(type_counts / type_counts.sum())).sum()

    # 检查断裂点间距分布(应该较均匀)
    distances = np.diff(chrom_sv['pos1'].values)
    distance_cv = np.std(distances) / np.mean(distances) if np.mean(distances) > 0 else float('inf')

    features = {
        'n_breakpoints': len(chrom_sv),
        'type_entropy': type_entropy,
        'distance_cv': distance_cv
    }

    # 高SV密度 + 类型混合 + 间距较均匀 → 可能是chromothripsis
    is_ct = len(chrom_sv) >= min_breakpoints and type_entropy > 1.0 and distance_cv < 2.0
    return is_ct, features

for chrom in sv_per_chrom[sv_per_chrom > 10].index:
    is_ct, features = detect_chromothripsis(sv, chrom)
    if is_ct:
        print(f"Potential chromothripsis on {chrom}: {features}")

第四步:可视化基因组重排

library(ggplot2)
library(circlize)

# Circos图可视化重排
pdf("genome_rearrangements.pdf", width = 10, height = 10)
circos.initializeWithIdeogram(species = "hg38")

# 添加拷贝数轨道
cnv_data <- read.table("cnv_segments.bed", col.names = c("chr", "start", "end", "cn"))
circos.genomicTrack(cnv_data, panel.fun = function(region, value, ...) {
  circos.genomicLines(region, value, type = "segment", col = ifelse(value > 2, "red", "blue"))
})

# 添加SV连接线
sv_links <- read.table("sv_links.txt", col.names = c("chr1", "s1", "e1", "chr2", "s2", "e2", "type"))

# 按SV类型着色
type_colors <- c(DEL = "blue", DUP = "red", INV = "green", TRA = "orange")
for (i in 1:nrow(sv_links)) {
  circos.link(sv_links$chr1[i], c(sv_links$s1[i], sv_links$e1[i]),
              sv_links$chr2[i], c(sv_links$s2[i], sv_links$e2[i]),
              col = paste0(type_colors[sv_links$type[i]], "50"))
}

circos.clear()
dev.off()

实战命令速查

# Manta体细胞SV检测
configManta.py --normalBam N.bam --tumorBam T.bam --referenceFasta ref.fa --runDir manta/
python manta/runWorkflow.py -j 16

# DELLY全类型检测
delly call -o sv.bcf -g ref.fa tumor.bam normal.bam

# GRIDSS高灵敏度检测
gridss -r ref.fa -o gridss.vcf.gz -t 16 --labels tumor,normal tumor.bam normal.bam

# SURVIVOR合并多工具结果
ls manta.vcf delly.vcf gridss.vcf > sv_list.txt
SURVIVOR merge sv_list.txt 1000 2 1 1 0 50 merged.vcf

# 统计SV类型
bcftools query -f '%INFO/SVTYPE\n' merged.vcf | sort | uniq -c

面试常问点

Q1: 基因组重排的主要检测策略有哪些? A: 四大策略:(1)Discordant read pairs - 配对reads距离或方向异常;(2)Split reads - 单条read跨越断裂点被分段比对;(3)Read depth - 覆盖深度变化反映拷贝数改变;(4)De novo assembly - 局部组装跨越断裂点的序列。大多数工具综合使用多种策略。

Q2: Chromothripsis的特征性模式是什么? A: (1)单条或少数染色体上大量断裂点(>10个);(2)拷贝数在2个状态之间振荡(而非渐变);(3)SV类型混合(DEL+DUP+INV);(4)断裂点相对均匀分布;(5)可能伴随ecDNA形成。

Q3: 为什么推荐使用多个SV caller并取交集? A: 不同工具使用不同算法,各有偏好和盲区。Manta速度快但对复杂SV不够灵敏;DELLY全面但假阳性较多;GRIDSS灵敏但计算量大。取2-3个工具的交集可以显著降低假阳性率。

Q4: 长读长测序在重排检测中的优势? A: 长reads可以直接跨越断裂点,无需间接推断。(1)重复区域内的SV可以被直接检测;(2)复杂重排的结构可以完整解析;(3)单一reads提供明确证据,减少假阳性。

Q5: 基因组重排在肿瘤中的临床意义? A: (1)产生融合基因(如BCR-ABL1、EML4-ALK),是靶向治疗的靶点;(2)通过缺失破坏抑癌基因(如TP53、RB1);(3)通过重复激活癌基因;(4)Chromothripsis可导致多个驱动事件同时发生。

易错点

  1. 忽略低频SV:肿瘤异质性导致部分SV仅在少数细胞中存在,reads支持数低
  2. 混淆germline和somatic SV:必须用配对正常样本过滤胚系变异
  3. 重复区域的假阳性:重复序列区域比对不准确产生大量假SV
  4. SV分辨率不足:短读长对>10kb的SV定位精度有限
  5. VCF格式解读错误:BND记录的ALT字段格式复杂,容易误读

补充知识

SV检测工具对比

工具方法速度灵敏度适用
MantaRP+SR+AssemblyIllumina
DELLYRP+SR+RDIllumina
GRIDSSAssembly最高Illumina
SvABAAssemblyIllumina
Sniffles2SRLong-read
cuteSVSRLong-read