ont_germline
请注意,Parabricks GPU 加速的 ont_germline 工具目前处于 Beta 测试阶段。
运行 germline 变异工具,以使用 minimap2 进行比对和 DeepVariant 变异调用器,在长读 ONT 序列上生成 BAM 和变异。
有关所有可用选项的详细列表,请参阅 ont_germline 参考 部分。
# 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 ont_germline \
--ref /workdir/${REFERENCE_FILE} \
--in-fq /workdir/${INPUT_FASTQ} \
--out-bam /outputdir/${OUTPUT_BAM} \
--out-variants /outputdir/${OUTPUT_VCF}
以下命令是 Clara Parabricks 上述命令的 minimap2-v2.26、GATK4 和 Google DeepVariant 对等命令。 这些命令的输出将与上述命令的输出相同。 有关结果比较,请参阅输出比较页面。
# Run minimap2 and pipe the output to create a sorted BAM.
$ minimap2 -ax map-ont \
<INPUT_DIR>/${REFERENCE_FILE} \
<INPUT_DIR>/${INPUT_FASTQ} | \
gatk SortSam \
--java-options -Xmx30g \
--MAX_RECORDS_IN_RAM 5000000 \
-I /dev/stdin \
-O cpu.bam \
--SORT_ORDER coordinate
# Run deepvariant
BIN_VERSION="1.6.1"
sudo docker run \
-v "${PWD}":"/input" \
-v "${PWD}/output":"/output" \
-v "${PWD}/Ref":"/reference" \
google/deepvariant:"${BIN_VERSION}" \
/opt/deepvariant/bin/run_deepvariant \
--model_type ONT_R104 \
--ref /reference/${REFERENCE_FILE} \
--reads cpu.bam \
--output_vcf /output/"${OUTPUT_VCF_FILE}" \
--num_shards $(nproc) \
--make_examples_extra_args "ws_use_window_selector_model=true"
请注意,必须对基线 minimap2 代码进行更改才能完全匹配结果
必须对基线 KSW2 代码进行修复,以通过将循环裂变起点和终点更改为 st
和 en
分别对它们进行舍入。 如果起点 (st0
) 是小于 16 但大于 0 的数字,则其评分值将不会正确初始化,但在稍后计算实际比对时仍将使用。 这可以通过将起点和终点舍入为 16 的倍数来修复。
要进行此修复,请更改 ksw2_extd2_sse.c
中的以下代码
// loop fission: set scores first
if (!(flag & KSW_EZ_GENERIC_SC)) {
for (t = st0; t <= en0; t += 16) {
__m128i sq, st, tmp, mask;
sq = _mm_loadu_si128((__m128i*)&sf[t]);
st = _mm_loadu_si128((__m128i*)&qrr[t]);
mask = _mm_or_si128(_mm_cmpeq_epi8(sq, m1_), _mm_cmpeq_epi8(st, m1_));
tmp = _mm_cmpeq_epi8(sq, st);
#ifdef __SSE4_1__
tmp = _mm_blendv_epi8(sc_mis_, sc_mch_, tmp);
tmp = _mm_blendv_epi8(tmp, sc_N_, mask);
#else
tmp = _mm_or_si128(_mm_andnot_si128(tmp, sc_mis_), _mm_and_si128(tmp, sc_mch_));
tmp = _mm_or_si128(_mm_andnot_si128(mask, tmp), _mm_and_si128(mask, sc_N_));
#endif
_mm_storeu_si128((__m128i*)((int8_t*)s + t), tmp);
}
} else {
for (t = st0; t <= en0; ++t)
((uint8_t*)s)[t] = mat[sf[t] * m + qrr[t]];
}
使用 lf_start
和 lf_en
的固定版本
// loop fission: set scores first
int lf_start = st, lf_en = en;
if (!(flag & KSW_EZ_GENERIC_SC)) {
for (t = lf_start; t <= lf_en; t += 16) {
__m128i sq, st, tmp, mask;
sq = _mm_loadu_si128((__m128i*)&sf[t]);
st = _mm_loadu_si128((__m128i*)&qrr[t]);
mask = _mm_or_si128(_mm_cmpeq_epi8(sq, m1_), _mm_cmpeq_epi8(st, m1_));
tmp = _mm_cmpeq_epi8(sq, st);
#ifdef __SSE4_1__
tmp = _mm_blendv_epi8(sc_mis_, sc_mch_, tmp);
tmp = _mm_blendv_epi8(tmp, sc_N_, mask);
#else
tmp = _mm_or_si128(_mm_andnot_si128(tmp, sc_mis_), _mm_and_si128(tmp, sc_mch_));
tmp = _mm_or_si128(_mm_andnot_si128(mask, tmp), _mm_and_si128(mask, sc_N_));
#endif
_mm_storeu_si128((__m128i*)((int8_t*)s + t), tmp);
}
} else {
for (t = lf_start; t <= lf_en; ++t)
((uint8_t*)s)[t] = mat[sf[t] * m + qrr[t]];
}
有关下载和使用其他 GPU 的模型文件的说明,请参阅 DeepVariant 其他 GPU 的模型 部分。
通过使用 minimap2 比对长读 ONT 序列并使用深度神经网络分析,从 FASTQ/BAM 到 VCF 运行 germline 管线。
输入/输出文件选项
- --ref REF
-
参考文件路径。(默认值:None)
此选项为必选项。
- --index INDEX
-
由 vanilla minimap2 生成的最小化索引文件的路径,用于减少索引时间。(默认值:None)
- --in-fq IN_FQ
-
fastq 或 fastq.gz 格式的查询序列文件的路径。(默认值:None)
- --in-bam IN_BAM
-
输入 BAM/CRAM 文件的路径。(默认值:None)
- --knownSites KNOWNSITES
-
已知插入缺失文件的路径。 文件必须为 vcf.gz 格式。 此选项可以多次使用。(默认值:None)
- --interval-file INTERVAL_FILE
-
以下格式之一的区间文件的路径:Picard 样式(.interval_list 或 .picard)、GATK 样式(.list 或 .intervals)或 BED 文件(.bed)。 此选项可以多次使用。(默认值:None)
- --pb-model-file PB_MODEL_FILE
-
deepvariant 的非默认 parabricks 模型文件的路径。(默认值:None)
- --out-recal-file OUT_RECAL_FILE
-
基础质量分数重新校准后报告文件的路径。(默认值:None)
- --out-bam OUT_BAM
-
标记重复项后 BAM 文件的路径。(默认值:None)
此选项为必选项。
- --out-variants OUT_VARIANTS
-
变异调用后 vcf/gvcf/gvcf.gz 文件的路径。(默认值:None)
此选项为必选项。
- --out-duplicate-metrics OUT_DUPLICATE_METRICS
-
标记重复项后重复指标文件的路径。(默认值:None)
- --proposed-variants PROPOSED_VARIANTS
-
VCF 文件的路径,其中包含 make examples 阶段的建议变异。(默认值:None)
工具选项
- --eqx
-
写入 =/X CIGAR 运算符。(默认值:None)
- -L INTERVAL, --interval INTERVAL
-
从中调用 bqsr 的输入读取区间。 所有区间都将具有 100 的填充以获取读取记录,并且重叠区间将被组合。 区间文件应使用 --interval-file 选项传递。 此选项可以多次使用(例如“-L chr1 -L chr2:10000 -L chr3:20000+ -L chr4:10000-20000”)。(默认值:None)
- -ip INTERVAL_PADDING, --interval-padding INTERVAL_PADDING
-
要添加到包含的每个区间的填充量(以碱基对为单位)。(默认值:None)
- --standalone-bqsr
-
在生成排序的 BAM 后运行独立的 BQSR。 此选项需要 --knownSites 和 --out-recal-file 输入参数。(默认值:None)
- --read-group-sm READ_GROUP_SM
-
此运行中读取组的 SM 标记。(默认值:None)
- --read-group-lb READ_GROUP_LB
-
此运行中读取组的 LB 标记。(默认值:None)
- --read-group-pl READ_GROUP_PL
-
此运行中读取组的 PL 标记。(默认值:None)
- --read-group-id-prefix READ_GROUP_ID_PREFIX
-
此运行中读取组的 ID 和 PU 标记的前缀。 此前缀将用于此运行中所有成对的 fastq 文件。 ID 和 PU 标记将包含此前缀和一个标识符,该标识符对于一对 fastq 文件是唯一的。(默认值:None)
- --disable-use-window-selector-model
-
将窗口选择器模型从等位基因计数线性更改为变异读取。 此选项将提高准确性和运行时间。(默认值:None)
- --gvcf
-
以 .gvcf 格式生成变异调用。(默认值:None)
- --norealign-reads
-
在调用变异之前,不要局部重新比对读取。 长度超过 500 bp 的读取永远不会重新比对。(默认值:None)
- --sort-by-haplotypes
-
读取按单倍型排序(使用 HP 标记)。(默认值:None)
- --keep-duplicates
-
保留重复的读取。(默认值:None)
- --vsc-min-count-snps VSC_MIN_COUNT_SNPS
-
在等位基因计数中至少出现这么多次的 SNP 等位基因将作为候选基因推进。(默认值:2)
- --vsc-min-count-indels VSC_MIN_COUNT_INDELS
-
在等位基因计数中至少出现这么多次的插入缺失等位基因将作为候选基因推进。(默认值:2)
- --vsc-min-fraction-snps VSC_MIN_FRACTION_SNPS
-
在等位基因计数中至少占所有计数中此比例的 SNP 等位基因将作为候选基因推进。(默认值:0.12)
- --vsc-min-fraction-indels VSC_MIN_FRACTION_INDELS
-
在等位基因计数中至少占所有计数中此比例的插入缺失等位基因将作为候选基因推进。(默认值:None)
- --min-mapping-quality MIN_MAPPING_QUALITY
-
默认情况下,保留具有任何比对质量的读取。 将此字段设置为正整数 i 将仅保留 MAPQ >= i 的读取。 请注意,这仅适用于比对的读取。(默认值:5)
- --min-base-quality MIN_BASE_QUALITY
-
最低碱基质量。 此选项对备择等位基因强制执行最低碱基质量分数。 只有当等位基因中的所有碱基的质量都高于 min_base_quality 时,才会考虑备择等位基因。(默认值:10)
- --alt-aligned-pileup ALT_ALIGNED_PILEUP
-
值可以是 [none, diff_channels] 之一。 在 pileup 图像中包含读取针对每个候选备择等位基因的比对。(默认值:None)
- --variant-caller VARIANT_CALLER
-
值可以是 [VERY_SENSITIVE_CALLER, VCF_CANDIDATE_IMPORTER] 之一。 用于生成示例的调用器。 如果使用 VCF_CANDIDATE_IMPORTER,则意味着强制调用。 默认值为 VERY_SENSITIVE_CALLER。(默认值:None)
- --add-hp-channel
-
添加另一个通道以表示每个读取的 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,则等位基因计数器会为每个读取左对齐 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 的读取上运行。 默认大小为 320 bp。(默认值:None)
- --prealign-helper-thread
-
为预比对步骤使用额外的线程。 当设置 --max-reads-size-512 时,此参数更有用。(默认值:None)
- --track-ref-reads
-
如果为 True,则等位基因计数器会跟踪支持 ref 的读取。 默认情况下,等位基因计数器会简单地计算支持 ref 的读取数量。(默认值:None)
- --phase-reads
-
自动计算相位并将 HP 标记添加到所有读取。(默认值: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 插入缺失等位基因将作为候选基因推进。 如果应区别对待 hmer 和 non-hmer 插入缺失(Ultima 读取),请使用此阈值。默认值将对 hmer 和 non-hmer 插入缺失使用相同的阈值,如 vsc_min_fraction_indels 中定义。(默认值:None)
- --vsc-turn-on-non-hmer-ins-proxy-support
-
将来自软剪切读取和其他 non-hmer 插入等位基因的读取支持添加到最常见的 non-hmer 插入等位基因。(默认值: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 读取(默认值:None)
- --haploid-contigs HAPLOID_CONTIGS
-
非常染色体染色体的可选列表。 对于所有列出的染色体,不考虑 HET 概率。(默认值:None)
性能选项
- --num-threads NUM_THREADS
-
处理线程数。(默认值:12)
- --gpuwrite
-
使用一个 GPU 加速写入最终的 BAM/CRAM。(默认值:None)
- --gpuwrite-deflate-algo GPUWRITE_DEFLATE_ALGO
-
选择与 --gpuwrite 一起使用的 nvCOMP DEFLATE 算法。 请注意,这些选项与 CPU DEFLATE 选项不对应。 有效选项为 1、2 和 4。 选项 1 最快,而选项 2 和 4 的吞吐量逐渐降低,但压缩率更高。 当用户未提供输入时(即 None),默认值为 1(默认值:None)
- --gpusort
-
使用 GPU 加速排序。(默认值:None)
- --use-gds
-
使用 GPUDirect 存储 (GDS) 来启用直接数据路径,以实现 GPU 内存和存储之间的直接内存访问 (DMA) 传输。 必须与 --gpuwrite 同时使用。 有关如何设置和使用 GPUDirect 存储的信息,请参阅 Parabricks 文档 > 最佳性能。(默认值:None)
- --low-memory
-
使用低内存模式(默认值: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
-
在进行后续处理(如采样和重新比对)之前,每个分区考虑的最大读取数。(默认值:1500)
- --partition-size PARTITION_SIZE
-
在将区域拆分为多个较小的子区域之前,区域中允许的最大碱基对数。(默认值:1000)
- --read-from-tmp-dir
-
运行变异调用器,从 Aligner 和排序生成的 bin 文件中读取。 并行运行 postsort。 此选项将增加设备内存使用量。(默认值:None)
通用选项
- --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)。