196_基因组重排检测¶
一句话概述¶
基因组重排(rearrangement)包括倒位、易位、大片段缺失/重复和复杂重排(如chromothripsis),通过长读长测序、Hi-C数据和专用检测工具(Manta、DELLY、GRIDSS、SvABA)识别,是肿瘤基因组学和进化生物学的重要研究内容。
核心知识点表格¶
| 知识点 | 说明 |
|---|---|
| 重排类型 | 倒位、易位、大缺失、大重复、复杂重排 |
| 检测信号 | Discordant pairs, split reads, 深度变化, 组装比较 |
| Manta | Illumina官方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可导致多个驱动事件同时发生。
易错点¶
- 忽略低频SV:肿瘤异质性导致部分SV仅在少数细胞中存在,reads支持数低
- 混淆germline和somatic SV:必须用配对正常样本过滤胚系变异
- 重复区域的假阳性:重复序列区域比对不准确产生大量假SV
- SV分辨率不足:短读长对>10kb的SV定位精度有限
- VCF格式解读错误:BND记录的ALT字段格式复杂,容易误读
补充知识¶
SV检测工具对比¶
| 工具 | 方法 | 速度 | 灵敏度 | 适用 |
|---|---|---|---|---|
| Manta | RP+SR+Assembly | 快 | 高 | Illumina |
| DELLY | RP+SR+RD | 中 | 中 | Illumina |
| GRIDSS | Assembly | 慢 | 最高 | Illumina |
| SvABA | Assembly | 慢 | 高 | Illumina |
| Sniffles2 | SR | 快 | 高 | Long-read |
| cuteSV | SR | 快 | 高 | Long-read |