Best Practices

DCS Tools 推荐分析流程(Best Practices)

本页用于帮助您在进入工具参数细节前,先确定自己所属的分析场景与推荐 workflow。若您已经熟悉完整流程,可直接进入 工具参数;若您正在搭建新流程,建议先从本页选择场景。

1 资源准备

在启动任何分析流程之前,请先准备好以下资源。所有资源必须来自一致的参考基因组版本(如 GRCh38 / GRCh37),不可混用不同版本。

1.1 参考基因组

文件 说明
reference.fa 参考基因组 FASTA 文件
reference.fa.fai FASTA 索引,用于快速定位
reference.dict 参考序列字典,后续流程依赖

构建比对索引。索引类型由 --index-type 指定,建索引和后续比对必须使用同一类型。不指定时默认为 bwaFast。

取值 说明
bwaFast 默认。标准索引,比对结果与 bwa 一致
bwaUltra 高内存索引,速度更快、内存占用更高,比对结果与 bwa 一致
minibwa minibwa 索引
# 默认构建 bwaFast 标准索引
dcs aligner --threads 16 --build-index reference.fa

# 指定索引类型,例如高内存索引
dcs aligner --threads 16 --build-index reference.fa --index-type bwaUltra

1.2 已知位点资源(用于 BQSR)

BQSR 需要已知位点文件来校正碱基质量值。推荐至少使用 dbSNP,条件允许可补充 indels 已知位点。

资源 说明
dbSNP VCF 已知 SNP 位点,建议使用最新版本(如 dbSNP 156)
Mills indels VCF 已知 indel 位点(可选,有助于 indel 区域校正)

多文件时可逗号分隔或使用文件列表:

--known-sites /path/to/dbsnp.vcf.gz,/path/to/mills.vcf.gz

1.3 体细胞分析专用资源

资源 说明
Germline resource 群体等位基因频率 VCF(如 gnomAD),用于区分体细胞与胚系变异
Panel of Normals (PoN) 正常样本集合构建的背景噪声库,用于过滤测序/捕获系统性假阳性

PoN 构建方式可参考 GATK 官方文档 CreateSomaticPanelOfNormals。

1.4 目标区间(WES / panel 专用)

WES / panel 项目需要准备 BED 格式的目标区间文件,且 calling 和统计阶段都应使用同一份 BED。

# BED 格式示例
chr1    10000   20000
chr1    30000   40000

2 快速选场景

场景 推荐入口 说明
单样本胚系 WGS 单样本胚系 WGS 标准人类二倍体全基因组检测
单样本胚系 WES / panel 单样本胚系 WES / panel 需要显式使用 interval / BED
多样本 / 队列项目 联合变异检测推荐流程 以单样本 GVCF 为统一输入
肿瘤-对照体细胞检测 tumor-normal 推荐流程 优先推荐模式
仅肿瘤体细胞检测 tumor-only 推荐流程 结果解释需更谨慎
动植物 / 多倍体分析 多倍体项目说明 需显式评估 ploidy

3 单样本胚系 WGS

3.1 推荐流程

标准流程:

  1. aligner:FASTQ 质控、比对、排序、标记重复
  2. bqsr:碱基质量值重校正
  3. variantCaller:以 GVCF 模式执行单样本检测
  4. genotyper:如需单样本 VCF,则继续定型
  5. report / VCF-stat / BAM-stat:按项目需求生成统计与报告

3.2 参考命令

Step 1:比对与重复标记

dcs aligner --threads 32 \
    --aln-index /path/to/hg38.fa \
    --index-type bwaFast \
    --fq1 sample_R1.FASTQ.gz \
    --fq2 sample_R2.FASTQ.gz \
    --read group "@RG\tID:sample1\tSM:sample1\tPL:ILLUMINA" \
    --BAM-out sample.markdup.BAM \
    --FASTQ-qc-dir sample_FASTQ_qc

--index-type 必须与建索引时一致。省略时默认为 bwaFast。

Step 2:BQSR

dcs bqsr --threads 16 \
    --in-BAM sample.markdup.BAM \
    --reference /path/to/hg38.fa \
    --known-sites /path/to/dbsnp.VCF.gz \
    --recal-table sample.recal.table

Step 3:单样本 GVCF 检测

dcs variantCaller -I sample.markdup.BAM \
    -O sample.g.VCF.gz \
    -R /path/to/hg38.fa \
    --recal-table sample.recal.table \
    -t 32

Step 4:如需单样本 VCF,则执行定型

dcs genotyper -I sample.g.VCF.gz \
    -O sample.VCF.gz \
    -s 10 \
    -D /path/to/dbsnp.VCF.gz \
    -t 8

3.3 关键说明

Read Group(RG)

Read Group 是 GATK Best Practices 中强制要求的元信息,用于标识测序批次、样本和平台。缺少 RG 的 BAM 在后续 BQSR 和 variant calling 中可能产生异常结果。

RG 格式各字段含义:

字段 含义 示例
ID 测序批次唯一标识 sample1
SM 样本名称(与 GVCF 中的样本名一致) sample1
PL 测序平台 ILLUMINA
LB 文库标识(可选,BQSR 会用到) lib1
PU 测序单元(可选) unit1

最小必填字段为 ID、SM、PL。

GVCF 原理

GVCF(Genomic VCF)与普通 VCF 的核心区别在于:GVCF 不仅记录变异位点,还保留了参考位点(即未检测到变异的位置)的置信度信息。

使用 GVCF 作为中间产物的原因:

  1. Joint calling 时需要利用参考位点的置信度来更准确地判断 genotype
  2. 新增样本时无需重新检测已有样本,只需重新联合定型
  3. 保留了非变异区域的深度和质量信息,便于后续质控

DCS Tools 的 variantCaller 默认以 GVCF 模式输出,与 GATK HaplotypeCaller 的 --emit-ref-confidence GVCF 等价。

BQSR 说明

BQSR(Base Quality Score Recalibration)用于校正测序过程中的系统性碱基质量偏差。该步骤需要已知位点文件作为参考。

  • BQSR 前:碱基质量值可能存在系统性偏差,影响变异检测准确性
  • BQSR 后:生成校正表(recal.table),供 variantCaller 使用
  • 如果物种没有可用的已知位点资源(如部分动植物),可跳过 BQSR,但变异检测准确度可能降低

  • 与 GATK 胚系 Best Practices 的核心逻辑一致

  • GVCF 更适合作为标准中间产物
  • 便于未来增样或进入 joint calling

3.4 推荐产物

  1. BAM(排序、标记重复后)
  2. recal.table
  3. GVCF
  4. 单样本 VCF(如有)
  5. BAM / VCF 统计结果
  6. HTML 报告(如有)

4 单样本胚系 WES/panel

4.1 推荐流程

标准流程:

  1. aligner
  2. bqsr(带 interval)
  3. variantCaller(带 interval)
  4. genotyper
  5. 单独运行 BAM-stat,并显式指定 BED

4.2 参考命令

Step 1:BQSR(带目标区间)

dcs bqsr --threads 16 \
    --in-BAM sample.markdup.BAM \
    --reference /path/to/hg38.fa \
    --known-sites /path/to/dbsnp.VCF.gz \
    --interval targets.bed \
    --interval-padding 100 \
    --recal-table sample.wes.recal.table

Step 2:variantCaller(带目标区间)

dcs variantCaller -I sample.markdup.BAM \
    -O sample.wes.g.VCF.gz \
    -R /path/to/hg38.fa \
    --recal-table sample.wes.recal.table \
    -L targets.bed \
    -P 100 \
    -t 24

Step 3:BAM 统计(显式指定 BED)

dcs BAM-stat \
    --BAM sample.markdup.BAM \
    --bed targets.bed \
    --output sample.BAMStat.txt

4.3 关键说明

  1. WES / panel 需要显式指定目标区间
  2. calling 与统计阶段都应保持同一 BED 口径
  3. 不建议直接用全基因组默认统计来解释 WES / panel 结果

4.4 推荐产物

  1. BAM
  2. recal.table
  3. GVCF
  4. VCF
  5. 基于目标区间的覆盖统计
  6. HTML 报告(如有)

5 多样本联合变异检测(cohort/joint calling)

5.1 推荐流程

  1. 对每个样本单独执行:aligner → bqsr → variantCaller
  2. 为每个样本保留单样本 GVCF
  3. 汇总 GVCF 列表
  4. 使用 jointcaller 统一联合定型

5.2 参考命令

GVCF 列表示例

/data/sample01.g.VCF.gz
/data/sample02.g.VCF.gz
/data/sample03.g.VCF.gz

jointcaller 示例

# 设置 JAVA_HOME 为 jdk8
export JAVA_HOME=/path_to/jdk8
# 将 spark bin 加入到 PATH
export PATH=/path_to/spark/bin/:$PATH

dcs jointcaller \
    -i GVCF.list \
    -r /path/to/hg38.fa \
    -o joint_out \
    -j 32 \
    --memory 128g \
    -l chr1

5.3 变异过滤策略

Joint calling 后通常会获得一个 cohort VCF,在进入下游分析前建议进行变异质量过滤。

GATK Best Practices 掐荐使用 VQSR(Variant Quality Score Recalibration),但 VQSR 需要大量已知变异作为训练集,小样本量项目不一定适用。

替代策略:

  1. 小样本(< 30 例):建议使用硬过滤,如按 QUAL / QD / FS / MQ 等指标过滤
  2. 大队列(>= 30 例):建议使用 VQSR,训练集需包含足够多的变异
  3. 如果 DCS Tools 内建了等价的过滤能力,可优先使用内建方式

硬过滤示例(参考 GATK 硬过滤参数):

gatk VariantFiltration \
    -V cohort.vcf.gz \
    --filter-expression "QD < 2.0" --filter-name "QD2" \
    --filter-expression "FS > 60.0" --filter-name "FS60" \
    --filter-expression "MQ < 40.0" --filter-name "MQ40" \
    -O cohort.filtered.vcf.gz

5.4 关键说明

  • 单样本 VCF 不适合作为联合分析的标准输入
  • GVCF 保留参考置信信息,更适合队列分析
  • 分批上机或持续增样项目更容易维护

5.5 注意事项

  1. 所有 GVCF 必须来自一致参考版本
  2. 每个 GVCF 都应具备 .tbi 索引
  3. 样本量大时,应先小范围区间测试资源占用
  4. Joint calling 后建议检查 cohort VCF 的样本数和位点数是否合理

6 体细胞检测(tumor-normal)

6.1 推荐程度

强烈推荐。若存在匹配正常样本,应优先采用 tumor-normal 模式。

6.2 推荐流程

  1. 准备 tumor BAM 与 matched normal BAM
  2. 使用 Mutect2 生成未过滤候选集
  3. 推荐继续使用 FilterMutectCalls 进行后过滤
  4. 结合下游审查与注释解释结果

6.3 参考命令

Mutect2 原始检出

$DCS_HOME/bin/dcs Mutect2 \
    -R /path/to/hg38.fa \
    -I tumor.BAM \
    -I normal.BAM \
    -normal normal \
    -O tumor_normal.unfiltered.VCF.gz \
    --nthread 32

FilterMutectCalls 后过滤

gatk FilterMutectCalls \
    -R /path/to/hg38.fa \
    -V tumor_normal.unfiltered.VCF.gz \
    -O tumor_normal.filtered.VCF.gz

6.4 体细胞资源说明

Germline resource

Germline resource 是群体等位基因频率数据库(如 gnomAD),Mutect2 用它来判断一个候选变异是否可能为胚系变异(common variant),从而在体细胞检测结果中将其标记或过滤。

  • 推荐使用 gnomAD 对应参考版本的 VCF
  • 如果没有 germline resource,Mutect2 仍可运行,但假阳性率会上升
  • tumor-only 模式下 germline resource 的作用更加关键

Panel of Normals (PoN)

PoN 是由多个正常样本(通常 >= 40 例)构建的背景噪声库,用于过滤测序/捕获系统性假阳性。

PoN 的作用:

  1. 过滤捕获区域的系统性假阳性信号
  2. 过滤特定文库制备引入的 artifact
  3. 过滤测序仪器的系统性偏差

PoN 构建流程(参考 GATK):

# 1. 对每个正常样本运行 Mutect2(tumor-only 模式)
gatk Mutect2 -I normal01.bam -O normal01.vcf.gz -R reference.fa
gatk Mutect2 -I normal02.bam -O normal02.vcf.gz -R reference.fa
# ... 对更多正常样本重复

# 2. 合并生成 PoN
gatk CreateSomaticPanelOfNormals \
    -V normal01.vcf.gz \
    -V normal02.vcf.gz \
    -O pon.vcf.gz

如果没有足够多的正常样本构建 PoN,可以先用已有的 germline resource 过滤,后续再补充 PoN。

6.5 关键说明

  • Mutect2 原始候选结果通常不应直接作为最终交付
  • 推荐结合 germline resource、PoN 和过滤逻辑降低假阳性
  • 体细胞结果解释应与参考资源版本保持一致

7 体细胞检测(tumor-only)

7.1 推荐程度

受限使用。仅在无法获得 matched normal 时使用。

7.2 推荐流程

  1. 准备 tumor-only BAM
  2. 使用 Mutect2 生成未过滤候选集
  3. 更依赖 germline resource、PoN 以及后过滤
  4. 使用 FilterMutectCalls 生成更适合解释的结果

7.3 参考命令

Mutect2 原始检出

$DCS_HOME/bin/dcs Mutect2 \
    -R /path/to/hg38.fa \
    -I tumor_only.BAM \
    -O tumor_only.unfiltered.VCF.gz \
    --nthread 32

FilterMutectCalls 后过滤

gatk FilterMutectCalls \
    -R /path/to/hg38.fa \
    -V tumor_only.unfiltered.VCF.gz \
    -O tumor_only.filtered.VCF.gz

7.4 风险提示

  1. 更难区分体细胞事件与胚系背景
  2. 更容易受到测序噪音和背景信号影响
  3. 最终结果应比 tumor-normal 更保守解释

8 多倍体项目说明

8.1 适用范围

适用于动植物或非标准二倍体项目。

8.2 推荐原则

  1. 显式评估 ploidy 设定
  2. 不建议默认按人类二倍体逻辑解释结果
  3. 检查 genotype calling 和联合分析是否对倍性有额外要求

8.3 参考命令

FASTQ2VCF 快速流程(多倍体时需显式设置 ploidy)

FASTQ2VCF.sh \
    DCS_HOME=/data/dcs-tools \
    refFasta=/data/ref/reference.fa \
    FQ1=/data/sample_R1.FASTQ.gz \
    FQ2=/data/sample_R2.FASTQ.gz \
    sample=sample1 \
    threads=32 \
    ploidy=4 \
    OUTPUT_DIR=sample1_out

9 所有场景都应遵循的共通原则

  1. 参考基因组版本必须统一
  2. FASTA / fai / dict / dbSNP / known sites / interval / germline resource / PoN 等资源不可混用不同版本
  3. WES / panel 不能直接按 WGS 口径解释统计结果
  4. 体细胞 raw call 不等于最终结果
  5. 队列项目建议保留 GVCF,而不是只保留单样本 VCF

10 继续阅读

11 官方参考链接

胚系

体细胞