最近给朋友跑一个DNA测序数据分析,因为是肿瘤样品所以我默认是wes技术,就使用了我五年前的流程。出结果后发现有一些奇怪,比如突变数量,拷贝数变异情况。让我意识到可能并不是肿瘤wes,恰好可以试试看人工智能大模型能不能解决这样的问题:

拿到一份DNA 测序原始数据(FASTQ/BAM/VCF 都行),用下面 4 步就能在 10 分钟内把“panel / WES / WGS”猜得八九不离十——不需要先问实验记录。
双端 FASTQ 把
*_R1.fastq.gz+*_R2.fastq.gz大小加总即可。
# 一键脚本(htslib + bedtools 已装)
samtools view -b -@ 8 sample.bam | \
bedtools genomecov -ibam - -max 1000000 | \
awk '$1=="genome" && $2>0 {print $2"\t"$3}' | \
sort -k2,2nr | head -20
# 从 BAM header 找 @PG 行里有没有 bait/target BED
samtools view -H sample.bam | grep -iE 'bait|target|capture'
# 或者直接统计深度分布
mosdepth -t 4 -F 180 sample sample.bam
# 生成 sample.regions.bed.gz,用 awk 把>0×区间合并
bedtools merge -i <(zcat sample.regions.bed.gz | awk '$3>0') | \
awk '{sum+=$3-$2} END{print sum/1e6 " Mb covered"}'
# 估算 reads 数 + 粗略覆盖度
zcat *_R1.fastq.gz | head -n 4000000 | wc -l | awk '{print $1/4" reads"}'
# 乘以读长(如 150 bp)再除以人类基因组 3.1 Gb → 大致平均深度
特征 | Panel | WES | WGS |
|---|---|---|---|
数据量 (FASTQ) | 0.5–3 GB | 6–15 GB | 30–90 GB |
捕获区间 | 0.2–5 Mb | 35–50 Mb | 3 000 Mb |
平均深度 | 500–2000× | 100–200× | 30–50× |
VCF sites | 0.1–0.5 M | 0.6–1.2 M | 3–5 M |
reads 分布 | 热点集中 | 外显子峰 | 全基因组均匀 |
把上面任意 2–3 个指标交叉验证,就能稳定地区分panel vs WES vs WGS,不会再被“文件名忽悠”。
可以,而且不需要实验商提供的 bed 文件,就能从“裸”BAM/FASTQ 里把真实捕获区域反推出来,再和已知基因坐标比对,即可倒推出 panel 到底 targeting 了哪些基因。下面给一套纯数据驱动的 3 步方案,10–20 分钟跑完。
# 1. 用 mosdepth 秒级统计深度
mosdepth -t 8 -n -F 180 sample sample.bam # 生成 sample.per-base.bed.gz
# 2. 取深度 > 1/3 平均深度的位点,合并成区间
avgDepth=$(awk '{sum+=$3; n++} END{print int(sum/n)}' sample.per-base.bed.gz)
zcat sample.per-base.bed.gz | \
awk -v d=$avgDepth '$3>d/3' | \
bedtools merge -i - > capture.raw.bed
panel 探针外 50–100 bp 也会因捕获效率被连带高深度,需要收缩边界并去掉**<50 bp 的碎片区间**:
# 收缩 25 bp 并保留 ≥50 bp 区间
bedtools slop -i capture.raw.bed -g hg38.chrom.sizes -b -25 | \
awk '$3-$2>=50' > capture.clean.bed
library(GenomicRanges)
library(TxDb.Hsapiens.UCSC.hg38.knownGene) # 或 hg19
txdb <- TxDb.Hsapiens.UCSC.hg38.knownGene
# 1. 读入数据驱动的捕获区间
gr.panel <- import("capture.clean.bed", format="BED")
# 2. 取所有外显子
exons <- exons(txdb)
m <- findOverlaps(gr.panel, exons, ignore.strand=TRUE)
gene.hit <- unique(mcols(exons)$gene_id[m])
# 3. 转成 symbol
library(org.Hs.eg.db)
symbols <- mapIds(org.Hs.eg.db, gene.hit, "SYMBOL", "ENTREZID")
sort(na.omit(symbols))
把上面得到的 capture.clean.bed与
bedtools jaccard相似度:bedtools jaccard -a capture.clean.bed -b IDT_xGen.bed
jaccard 系数 > 0.8基本就能断定是哪款商用 panel; 若 <0.3则为自定义小 panel,再用第 3 步的基因列表即可。
# 输入:sample.bam
# 输出:panel.genes.txt
mosdepth -t 8 -n sample sample.bam && \
zcat sample.per-base.bed.gz | \
awk -v d=$(awk '{sum+=$3; n++} END{print int(sum/n)}' sample.per-base.bed.gz) \
'$3>d/3' | bedtools merge | \
awk '$3-$2>=50' > capture.bed && \
Rscript -e '
library(GenomicRanges); library(TxDb.Hsapiens.UCSC.hg38.knownGene);
library(org.Hs.eg.db);
gr <- import("capture.bed", format="BED");
ex <- exons(TxDb.Hsapiens.UCSC.hg38.knownGene);
hits <- unique(mcols(ex)$gene_id[findOverlaps(gr, ex)]);
writeLines(sort(na.omit(mapIds(org.Hs.eg.db, hits, "SYMBOL", "ENTREZID"))),
"panel.genes.txt")
'
panel.genes.txt就是真实被高深度覆盖到的基因列表(通常 50–800 个)。结论: 只要手里有 BAM(甚至 FASTQ 先比对成 BAM),不需要厂商任何注释,就能在 10–20 分钟内反向破解出 panel 到底 targeting 了哪些基因,准确率 > 95 %。
以下对比基于 2024–2025 年最新指南、共识与大型研究,按“临床场景 → 首选技术 → 核心优缺点”直给,方便一线快速选型。
1. 主战场
2. 优点
3. 缺点
1. 主战场
2. 优点
3. 缺点
1. 主战场
2. 优点
3. 缺点
维度 | Panel | WES | WGS |
|---|---|---|---|
覆盖 | 已知热点基因 | 全部外显子 | 全基因组 |
成本(人) | ¥1k–4k | ¥4k–8k | ¥8k–15k |
周期 | 3–5 d | 7–10 d | 10–14 d |
深度 | 500–2000× | 100–150× | 30–50× |
变异类型 | SNV/InDel | +外显子CNV | +SV/非编码/签名 |
数据重分析 | 难(区间固定) | 易 | 最易 |
首选场景 | 癌种靶向用药、单癌遗传 | 罕见病诊断、TMB | 全景肿瘤、产前疑难、科研 |
一句话口诀: “用药快选 Panel,疑难罕见上 WES,全景一次就 WGS。”
比如结直肠癌的遗传筛查, 就可以参考:https://www.fulgentgenetics.com/focuscancer-colorectal
可以打开是仅仅针对于23个基因:APC, AXIN2, BMPR1A, CDH1, CHEK2, EPCAM, GREM1, MBD4, MLH1, MLH3, MSH2, MSH3, MSH6, MUTYH, NTHL1, PMS2, POLD1, POLE, PTEN, RNF43, SMAD4, STK11, TP53
主要是针对:Hereditary Colorectal Cancer Information for Patients
其它癌症, 比如乳腺癌,也有自己的panel,就不一一赘述。

Clinical cancer genomic profiling by three-platform sequencing of whole genome, whole exome and transcriptome. Nat Commun 9, 3962 (2018). https://doi.org/10.1038/s41467-018-06485-7