deepvariant
DeepVariant 是谷歌开发的基于深度学习的变异检测器,用于高通量测序数据的生殖系变异检测。它通过获取 BAM/CRAM 格式的比对测序 reads,并利用卷积神经网络 (CNN) 将位点分类为真实的底层基因组变异或测序错误。因此,DeepVariant 可以从种系样本的高精度测序数据中调用单核苷酸变异 (SNV) 和插入/缺失 (InDel)。
DeepVariant 的方法能够检测到传统(例如贝叶斯)变异检测器经常遗漏的变异,并且已知可以减少假阳性。与类似工具相比,它具有多项优势,包括能够以高精度检测各种变异、分析大型数据集的可扩展性以及开源可用性。此外,其基于深度学习的方法使其能够为不同的测序平台提供更好的支持,因为可以对其进行重新训练,从而为特定的协议或研究领域提供更高的准确性。
DeepVariant 被设计为一种种系变异检测器,可以应用针对特定样本类型(例如全基因组和全外显子组样本)训练的不同模型,以产生更高的准确性结果。DeepVariant 可以部署在 NVIDIA 的 Parabricks 软件套件中,该套件专为基因组学中的加速二级分析而设计,将行业标准工具和工作流程从 CPU 转移到 GPU,并以高达 60 倍的更快运行时间交付相同的结果。在 NVIDIA DGX 工作站上,只需 8 分钟即可通过 DeepVariant 运行 30 倍全基因组,而 CPU 实例(m5.24xlarge,96 个 vCPU)则需要 5 小时。Parabricks 中的 DeepVariant 的使用方式与其他用户熟悉的命令行工具相同:它以 BAM/CRAM 和参考基因组作为输入,并生成变异(VCF 文件)作为输出。目前,DeepVariant 开箱即用地支持 V100 及更新的 GPU。
在 3.8 版本中,添加了--run-partition选项,这可以显著提高速度。但是,同时使用--run-partition、--proposed-variants和--gvcf选项会导致显著减速。将发出警告,并且--run-partition选项将被忽略。
Parabricks DeepVariant 可以在三种操作模式下运行
短读
PacBio
ONT
请参阅下面的 --mode 选项。
# This command assumes all the inputs are in INPUT_DIR and all the outputs go to OUTPUT_DIR.
docker run --rm --gpus all --volume INPUT_DIR:/workdir --volume OUTPUT_DIR:/outputdir \
--workdir /workdir \
nvcr.io/nvidia/clara/clara-parabricks:4.4.0-1 \
pbrun deepvariant \
--ref /workdir/${REFERENCE_FILE} \
--in-bam /workdir/${INPUT_BAM} \
--out-variants /outputdir/${OUTPUT_VCF}
以下命令是 Parabricks 上述命令的 Google 对应命令。这些命令的输出将与上述命令的输出相同。请参阅输出比较页面以比较结果。
sudo docker run \
--volume <INPUT_DIR>:/input \
--volume <OUTPUT_DIR>:/output \
google/deepvariant:1.6.1 \
/opt/deepvariant/bin/run_deepvariant \
--model_type WGS \
--ref /input/${REFERENCE_FILE} \
--reads /input/${INPUT_BAM} \
--output_vcf /output/${OUTPUT_VCF} \
--num_shards $(nproc) \
--make_examples_extra_args "ws_use_window_selector_model=true"
Parabricks DeepVariant 支持以下模型
短读 WGS
短读 WES
PacBio
ONT
适用于 T4、V100 和所有其他 Ampere 及以上架构 GPU 的 DeepVariant 模型随软件一起提供。
虽然与 Google DeepVariant 相比,Parabricks DeepVariant 在功能上不会损失任何准确性,但有一个原因可能导致输出文件不同。
CNN 推理
Google DeepVariant 使用 CNN(卷积神经网络)来预测每个变异候选的可能性。该模型经过训练,并通过 Keras 进行推理。在 Parabricks DeepVariant 中,我们将此 Keras 模型转换为带有 TensorRT 的引擎文件,以在 Nvidia GPU 上执行加速深度学习推理。由于 TensorRT 的优化,推理后的最终可能性得分存在细微差异 (10^-5),这可能会导致最终 VCF 输出中出现一些不同的变异。根据目前的观察,不匹配仅发生在质量分数为零的 RefCall 上。
运行 DeepVariant 以将 BAM/CRAM 转换为 VCF。
输入/输出文件选项
- --ref REF
-
参考文件路径。(默认值:None)
选项为必填项。
- --in-bam IN_BAM
-
用于变异调用的输入 BAM/CRAM 文件路径。(默认值:None)
选项为必填项。
- --interval-file INTERVAL_FILE
-
用于选择性访问的 BED 文件 (.bed) 的路径。此选项可以多次使用。(默认值:None)
- --out-variants OUT_VARIANTS
-
变异调用后 vcf/g.vcf/g.vcf.gz 文件的路径。(默认值:None)
选项为必填项。
- --pb-model-file PB_MODEL_FILE
-
deepvariant 的非默认 parabricks 模型文件的路径。(默认值:None)
- --pb-model-dir PB_MODEL_DIR
-
非默认 parabricks 模型目录的路径,其中包含一个模型的多个引擎文件(默认值:None)
- --proposed-variants PROPOSED_VARIANTS
-
vcf.gz 文件的路径,该文件具有用于 make examples 阶段的提议变异。(默认值:None)
工具选项
- --disable-use-window-selector-model
-
将窗口选择器模型从 Allele Count Linear 更改为 Variant Reads。此选项将提高准确性和运行时间。(默认值:None)
- --gvcf
-
以 .gvcf 格式生成变异调用。(默认值:None)
- --norealign-reads
-
在调用变异之前,不要在本地重新比对 reads。长度超过 500 bp 的 reads 永远不会重新比对。(默认值:None)
- --sort-by-haplotypes
-
Reads 按单倍型(使用 HP 标签)排序。(默认值:None)
- --keep-duplicates
-
保留重复的 reads。(默认值:None)
- --vsc-min-count-snps VSC_MIN_COUNT_SNPS
-
在 AlleleCount 中至少出现此次数的 SNP 等位基因将作为候选基因提前。(默认值:2)
- --vsc-min-count-indels VSC_MIN_COUNT_INDELS
-
在 AlleleCount 中至少出现此次数的 Indel 等位基因将作为候选基因提前。(默认值:2)
- --vsc-min-fraction-snps VSC_MIN_FRACTION_SNPS
-
在 AlleleCount 中至少占所有计数的此比例的 SNP 等位基因将作为候选基因提前。(默认值:0.12)
- --vsc-min-fraction-indels VSC_MIN_FRACTION_INDELS
-
在 AlleleCount 中至少占所有计数的此比例的 Indel 等位基因将作为候选基因提前。(默认值:None)
- --min-mapping-quality MIN_MAPPING_QUALITY
-
默认情况下,保留具有任何比对质量的 reads。将此字段设置为正整数 i 将仅保留 MAPQ >= i 的 reads。请注意,这仅适用于比对的 reads。(默认值:5)
- --min-base-quality MIN_BASE_QUALITY
-
最低碱基质量。此选项对备择等位基因强制执行最低碱基质量评分。只有当等位基因中的所有碱基的质量都大于 min_base_quality 时,才会考虑备择等位基因。(默认值:10)
- --mode MODE
-
值可以是 [shortread, pacbio, ont] 之一。默认情况下,它是 shortread。如果模式设置为 pacbio,则使用以下默认值:--norealign-reads、--alt-aligned-pileup diff_channels、--vsc-min-fraction-indels 0.12。如果模式设置为 ont,则使用以下默认值:-norealign-reads、--variant-caller VCF_CANDIDATE_IMPORTER。(默认值:shortread)
- --alt-aligned-pileup ALT_ALIGNED_PILEUP
-
值可以是 [none, diff_channels] 之一。在 pileup 图像中包含针对每个候选备择等位基因的 reads 比对。(默认值:None)
- --variant-caller VARIANT_CALLER
-
值可以是 [VERY_SENSITIVE_CALLER, VCF_CANDIDATE_IMPORTER] 之一。用于生成示例的 caller。如果您使用 VCF_CANDIDATE_IMPORTER,则意味着强制调用。默认值为 VERY_SENSITIVE_CALLER。(默认值:None)
- --add-hp-channel
-
添加另一个通道以表示每个 read 的 HP 标签。(默认值:None)
- --parse-sam-aux-fields
-
解析 BAM/CRAM 记录的辅助字段。如果设置了 --sort-by-haplotypes 或 --add-hp-channel 中的任何一个,则还必须设置此选项。(默认值:None)
- --use-wes-model
-
如果传递此选项,将使用 WES 模型文件。仅在 shortread 模式下使用。(默认值:None)
- --include-med-dp
-
如果为 True,则在输出 gVCF 记录中包含 MED_DP。(默认值:None)
- --normalize-reads
-
如果为 True,则等位基因计数器将每个 read 的 INDEL 向左对齐。(默认值:None)
- --pileup-image-width PILEUP_IMAGE_WIDTH
-
Pileup 图像宽度。仅当您知道您的模型支持此宽度时才更改此值。(默认值:221)
- --channel-insert-size
-
如果为 True,则将 insert_size 通道添加到 pileup 图像中。默认情况下,此参数在 WGS 和 WES 模式下为 true。(默认值:None)
- --no-channel-insert-size
-
如果为 True,则不要将 insert_size 通道添加到 pileup 图像中。(默认值:None)
- --max-read-size-512
-
允许 deepvariant 在大小为 512bp 的 reads 上运行。默认大小为 320 bp。(默认值:None)
- --prealign-helper-thread
-
为预对齐步骤使用额外的线程。当设置 --max-reads-size-512 时,此参数更有用。(默认值:None)
- --track-ref-reads
-
如果为 True,则等位基因计数器会跟踪支持 ref 的 reads。默认情况下,等位基因计数器仅保留支持 ref 的 reads 数量的简单计数。(默认值:None)
- --phase-reads
-
自动计算相位并将 HP 标签添加到所有 reads。(默认值:None)
- --dbg-min-base-quality DBG_MIN_BASE_QUALITY
-
k-mer 序列中要考虑的最低碱基质量。(默认值:15)
- --ws-min-windows-distance WS_MIN_WINDOWS_DISTANCE
-
用于局部组装的候选窗口之间的最小距离(默认值:80)
- --channel-gc-content
-
如果为 True,则将 gc_content 通道添加到 pileup 图像中(默认值:None)
- --channel-hmer-deletion-quality
-
如果为 True,则将 hmer deletion quality 通道添加到 pileup 图像中(默认值:None)
- --channel-hmer-insertion-quality
-
如果为 True,则将 hmer insertion quality 通道添加到 pileup 图像中(默认值:None)
- --channel-non-hmer-insertion-quality
-
如果为 True,则将 non-hmer insertion quality 通道添加到 pileup 图像中(默认值:None)
- --skip-bq-channel
-
如果为 True,则忽略碱基质量通道。(默认值:None)
- --aux-fields-to-keep AUX_FIELDS_TO_KEEP
-
要保留的辅助 BAM 字段的逗号分隔列表。值可以是 [HP, tp, t0](默认值:HP)
- --vsc-min-fraction-hmer-indels VSC_MIN_FRACTION_HMER_INDELS
-
Hmer Indel 等位基因至少出现此次数才能作为候选基因提前。如果应区别对待 hmer 和 non-hmer indel(Ultima reads),请使用此阈值。默认值将对 hmer 和 non-hmer indel 使用相同的阈值,如 vsc_min_fraction_indels 中定义。(默认值:None)
- --vsc-turn-on-non-hmer-ins-proxy-support
-
将来自 soft-clipped reads 和其他 non-hmer insertion 等位基因的 read 支持添加到最常见的 non-hmer insertion 等位基因。(默认值:None)
- --consider-strand-bias
-
如果为 True,则期望调用中存在 SB 字段并将其写入 vcf(默认值:None)
- --p-error P_ERROR
-
参考置信度模型的碱基检出错误。(默认值:0.001)
- --channel-ins-size
-
如果为 true,则添加另一个通道来表示插入的大小。(适用于基于流的测序)(默认值:None)
- --max-ins-size MAX_INS_SIZE
-
ins_size_channel 的最大插入大小,较大的插入看起来像最大值(具有最大强度)(默认值:10)
- --disable-group-variants
-
如果使用 vcf_candidate_importer 并且多等位基因位点在 VCF 中跨多行拆分,则设置为 True,以便在将 CallVariantsOutput 转换为 Variants 时不对变异进行分组。(默认值:None)
- --filter-reads-too-long
-
忽略所有大小 > 512bp 的输入 BAM reads(默认值:None)
- --haploid-contigs HAPLOID_CONTIGS
-
非常染色体可选列表。对于所有列出的染色体,不考虑 HET 概率。(默认值:None)
- -L INTERVAL, --interval INTERVAL
-
在其中调用 BAM/CRAM 文件中变异的区间。重叠区间将被合并。区间文件应使用 --interval-file 选项传递。此选项可以多次使用(例如“ -L chr1 -L chr2:10000 -L chr3:20000+ -L chr4:10000-20000”)。(默认值:None)
性能选项
- --num-cpu-threads-per-stream NUM_CPU_THREADS_PER_STREAM
-
每个流要使用的 CPU 线程数。(默认值:6)
- --num-streams-per-gpu NUM_STREAMS_PER_GPU
-
每个 GPU 要使用的流数。(默认值:2)
- --run-partition
-
将整个基因组划分为多个分区,并同时运行多个进程,每个进程在一个分区上运行。(默认值:None)
- --gpu-num-per-partition GPU_NUM_PER_PARTITION
-
每个分区要使用的 GPU 数量。(默认值:None)
- --max-reads-per-partition MAX_READS_PER_PARTITION
-
在进行后续处理(例如采样和重新比对)之前,每个分区要考虑的最大 reads 数量。(默认值:1500)
- --partition-size PARTITION_SIZE
-
在将区域拆分为多个较小的子区域之前,区域中允许的最大碱基对数。(默认值:1000)
常用选项
- --logfile LOGFILE
-
日志文件的路径。如果未指定,消息将仅写入标准错误输出。(默认值:None)
- --tmp-dir TMP_DIR
-
将存储临时文件的目录的完整路径。
- --with-petagene-dir WITH_PETAGENE_DIR
-
PetaGene 安装目录的完整路径。默认情况下,这应安装在 /opt/petagene 中。使用此选项还需要通过设置 LD_PRELOAD 环境变量预加载 PetaLink 库。可选地设置用于数据和凭据的 PETASUITE_REFPATH 和 PGCLOUD_CREDPATH 环境变量(默认值:None)
- --keep-tmp
-
完成时不删除存储临时文件的目录。
- --no-seccomp-override
-
不要覆盖 docker 的 seccomp 选项(默认值:None)。
- --version
-
查看兼容的软件版本。
GPU 选项
- --num-gpus NUM_GPUS
-
运行要使用的 GPU 数量。将使用 GPU 0..(NUM_GPUS-1)。