fq2bam_meth
从亚硫酸氢盐测序 (BS-Seq) 的一个或多个 FASTQ 文件对生成 BAM/CRAM 输出。还可以选择生成 BQSR 报告。
请参阅 fq2bam_meth 参考 部分,了解所有可用选项的详细列表。
fq2bam_meth 工具是一种快速、准确的算法,用于将甲基化 DNA 序列读段映射到参考基因组,执行局部比对,并为查询序列的不同部分生成比对结果。它使用 fq2bam (BWA-MEM + GATK) 作为 GPU 处理的后端,以高性能的方法实现了基线工具 bwa-meth [1] [2]。
fq2bam_meth 是 bwa-meth 的 Parabricks 封装器,它将对输出进行排序,并可以按照 GATK 最佳实践在线标记重复项和重新校准碱基质量分数。
Parabricks fq2bam_meth
工具能够处理更长的读段,并且对错误的敏感度低于其他比对算法。我们支持快速准确的全基因组亚硫酸氢盐测序 (WGBS),以在单碱基对水平上检测 DNA 甲基化 [3]。
使用 fq2bam_meth 而不是类似工具的一些优势包括
它比许多其他 BS-Seq 比对算法更快,使其成为高通量分析的理想选择。
它保持与现有基于 CPU 的工具的兼容性。
fq2bam_meth 使用加速版本的 BWA-MEM,从 BS-Seq 的一个或多个 FASTQ 文件对生成 BAM/CRAM 输出。用户可以通过添加 --no-markdups
选项来关闭重复项标记。只有在提供 --knownSites input
和 --out-recal-file output
选项时,才会执行 BQSR 步骤;这样做还会生成 BQSR 报告。
在 运行比对之前,必须使用基线 bwa-meth 转换参考基因组。bwa-meth 索引步骤生成一个参考 fasta
文件,其名称格式为 fasta.bwameth.c2t
。索引准备步骤需要运行 bwameth.py index $REF.fasta
。基线 bwa-meth 需要基线 BWA-MEM 在用户的路径中才能实现索引功能。请注意,索引是一个耗时的先决条件,每个参考基因组只需完成一次。bwameth.py
脚本可以在此处找到。

# 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 fq2bam_meth \
--ref /workdir/${REFERENCE_FILE} \
--in-fq /workdir/${INPUT_FASTQ_1} /workdir/${INPUT_FASTQ_2} \
--knownSites /workdir/${KNOWN_SITES_FILE} \
--out-bam /outputdir/${OUTPUT_BAM} \
--out-recal-file /outputdir/${OUTPUT_RECAL_FILE}
以下命令是上述 Parabricks 命令的 bwa-meth-0.2.7、bwa-0.7.15 和 GATK4 对应命令。这些命令的输出将与上述命令的输出相同。请参阅 输出比较 页面以比较结果。
在 fq2bam_meth 中设置 --bwa-options="-K 10000000"
,在基线中设置 -K 10000000
,以生成兼容的 paired-ended 结果。
fq2bam_meth 不会像基线 bwa-meth 那样在预处理期间从读取名称中删除 _R1
和 _R2
。
# Run bwa-meth and pipe the output to create a sorted BAM.
$ python bwa-meth.py \
--read-group '@RG\tID:sample_rg1\tLB:lib1\tPL:bar\tSM:sample\tPU:sample_rg1' \
--reference <INPUT_DIR>/${REFERENCE_FILE} <INPUT_DIR>/${INPUT_FASTQ_1} <INPUT_DIR>/${INPUT_FASTQ_2} \
-t 32 -K 10000000 | \
gatk SortSam \
--java-options -Xmx30g \
--MAX_RECORDS_IN_RAM 5000000 \
-I /dev/stdin \
-O cpu.bam \
--SORT_ORDER coordinate
# Mark duplicates.
$ gatk MarkDuplicates \
--java-options -Xmx30g \
-I cpu.bam \
-O mark_dups_cpu.bam \
-M metrics.txt
# Generate a BQSR report.
$ gatk BaseRecalibrator \
--java-options -Xmx30g \
--input mark_dups_cpu.bam \
--output <OUTPUT_DIR>/${OUTPUT_RECAL_FILE} \
--known-sites <INPUT_DIR>/${KNOWN_SITES_FILE} \
--reference <INPUT_DIR>/${REFERENCE_FILE}
虽然 Parabricks fq2bam_meth
与 BWA-mem 和 GATK 相比在功能上没有任何精度损失,但仍有几个来源可能导致输出文件中的差异。
BWA-mem
-K
参数
在 paired-ended 模式下,由 -K
指定的 chunk size 可能会导致输出 BAM 文件中的小不匹配。要消除此处的不匹配,请确保将相同的数字传递给基线 BWA-mem 和 Parabricks fq2bam_meth
,例如 -K 10000000
。
PA
辅助标签Parabricks
fq2bam_meth
将PA
标签放在最后,而 BWA-mem 将其放在最前面。BWA-mem 将
PA
标签四舍五入到 3 位数字,而 Parabricksfq2bam_meth
则不这样做。可以通过运行samtools view -x <TAG>
来过滤辅助标签
未映射的读段
Parabricks
fq2bam_meth
对未映射的读段的排序方式与基线 GATK SortSam 略有不同。可以使用samtools
通过执行samtools view -F 4
来过滤未映射的读段。
运行 GPU 加速的 bwa-meth 兼容比对、坐标排序、标记重复项和碱基质量分数重新校准,以将来自 FASTQ 的亚硫酸氢盐读段转换为 BAM/CRAM。
输入/输出文件选项
- --ref REF
-
参考文件的路径。我们将自动查找 <filename>.bwameth.c2t。转换后的 fasta 参考必须来自先前使用基线 bwa-meth 的转换(默认值:None)
此选项为必填项。
- --in-fq [IN_FQ ...]
-
paired-ended FASTQ 文件的路径,后跟可选的带引号的读取组(示例:“@RG\tID:foo\tLB:lib1\tPL:bar\tSM:sample\tPU:foo”)。文件必须为 fastq 或 fastq.gz 格式。所有输入集都应具有读取组;否则,都不应具有读取组,并且管道将自动添加读取组。此选项可以重复多次。示例 1:--in-fq sampleX_1_1.fastq.gz sampleX_1_2.fastq.gz --in-fq sampleX_2_1.fastq.gz sampleX_2_2.fastq.gz。示例 2:--in-fq sampleX_1_1.fastq.gz sampleX_1_2.fastq.gz "@RG\tID:foo\tLB:lib1\tPL:bar\tSM:sample\tPU:unit1" --in-fq sampleX_2_1.fastq.gz sampleX_2_2.fastq.gz "@RG\tID:foo2\tLB:lib1\tPL:bar\tSM:sample\tPU:unit2"。对于同一示例,读取组应具有相同的样本名称 (SM) 和不同的 ID 和 PU。(默认值:None)
- --in-se-fq [IN_SE_FQ ...]
-
single-ended FASTQ 文件的路径,后跟可选的带引号的读取组(示例:“@RG\tID:foo\tLB:lib1\tPL:bar\tSM:sample\tPU:foo”)。文件必须为 fastq 或 fastq.gz 格式。要么所有输入集都具有读取组,要么都不应具有读取组,并且管道将自动添加读取组。此选项可以重复多次。示例 1:--in-se-fq sampleX_1.fastq.gz --in-se-fq sampleX_2.fastq.gz 。示例 2:--in-se-fq sampleX_1.fastq.gz "@RG\tID:foo\tLB:lib1\tPL:bar\tSM:sample\tPU:unit1" --in-se-fq sampleX_2.fastq.gz "@RG\tID:foo2\tLB:lib1\tPL:bar\tSM:sample\tPU:unit2" 。对于同一示例,读取组应具有相同的样本名称 (SM) 和不同的 ID 和 PU。(默认值:None)
- --in-fq-list IN_FQ_LIST
-
包含 paired-ended FASTQ 文件位置的文件的路径。每行必须包含两个 FASTQ 文件的位置,后跟一个读取组,每个位置用空格分隔。每组文件(和关联的读取组)必须位于单独的行上。文件必须为 fastq/fastq.gz 格式。行语法:<fastq_1> <fastq_2> <read group>(默认值:None)
- --knownSites KNOWNSITES
-
已知插入缺失文件的路径。文件必须为 vcf.gz 格式。此选项可以多次使用。(默认值:None)
- --interval-file INTERVAL_FILE
-
以下格式之一的 interval 文件的路径:Picard 样式(.interval_list 或 .picard)、GATK 样式(.list 或 .intervals)或 BED 文件 (.bed)。此选项可以多次使用。(默认值:None)
- --out-recal-file OUT_RECAL_FILE
-
碱基质量分数重新校准后的报告文件的路径。(默认值:None)
- --out-bam OUT_BAM
-
BAM/CRAM 文件的路径。(默认值:None)
此选项为必填项。
- --out-duplicate-metrics OUT_DUPLICATE_METRICS
-
标记重复项后的重复项指标文件的路径。(默认值:None)
- --out-qc-metrics-dir OUT_QC_METRICS_DIR
-
将生成 QC 指标的目录的路径。(默认值:None)
工具选项
- --max-read-length MAX_READ_LENGTH
-
用于 bwa 和过滤 FASTQ 输入的最大读取长度/大小(即序列长度)(默认值:480)
- --min-read-length MIN_READ_LENGTH
-
用于 bwa 和过滤 FASTQ 输入的最小读取长度/大小(即序列长度)(默认值:1)
- -L INTERVAL, --interval INTERVAL
-
从中调用来自输入读段的 bqsr 的 interval。所有 interval 将具有 100 的填充以获取读取记录,并且重叠的 interval 将被合并。interval 文件应使用 --interval-file 选项传递。此选项可以多次使用(例如“-L chr1 -L chr2:10000 -L chr3:20000+ -L chr4:10000-20000”)。(默认值:None)
- --bwa-options BWA_OPTIONS
-
将支持的 bwa mem 选项作为字符串传递。当前原始 bwa mem 支持的选项为:-M、-Y、-C、-T、-B、-U、-L 和 -K(例如 --bwa-options="-M -Y")(默认值:None)
- --no-warnings
-
禁止显示有关系统线程和内存使用情况的警告消息。(默认值:None)
- --filter-flag FILTER_FLAG
-
如果条目的标志满足此条件,则不要在输出中生成 SAM 条目。条件:(flag & filter != 0)(默认值:0)
- --skip-multiple-hits
-
过滤 SA 长度不为 0 的 SAM 条目(默认值:None)
- --align-only
-
在 bwa-mem 之后生成输出 BAM。输出将不会进行坐标排序,也不会标记重复项(默认值:None)
- --no-markdups
-
不执行标记重复项步骤。在排序后返回 BAM。(默认值:None)
- --fix-mate
-
向输出文件添加 mate cigar (MC) 和 mate quality (MQ) 标签。(默认值:None)
- --markdups-assume-sortorder-queryname
-
假设读取是按 queryname 排序的以进行标记重复项。这也将标记辅助、补充和未映射的读段为重复项。此标志不会影响变异调用,同时会增加处理时间。(默认值:None)
- --markdups-picard-version-2182
-
假设标记重复项类似于 Picard 版本 2.18.2。(默认值:None)
- --monitor-usage
-
在执行期间监视近似的 CPU 利用率和主机内存使用情况。(默认值:None)
- --optical-duplicate-pixel-distance OPTICAL_DUPLICATE_PIXEL_DISTANCE
-
为了将两个重复簇视为光学重复项,它们之间的最大偏移量。如果未传递 --out-duplicate-metrics,则忽略此选项。(默认值: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)
- -ip INTERVAL_PADDING, --interval-padding INTERVAL_PADDING
-
要添加到您包括的每个 interval 的填充量(以碱基对为单位)。(默认值:None)
- --standalone-bqsr
-
运行独立的 BQSR。(默认值:None)
- --set-as-failed SET_AS_FAILED
-
将链 'f' 或 'r' 的比对标记为质量控制 (QC) 失败,并带有失败的 QC 标志 0x200。BS-Seq 文库通常为单链;其他链可以标记为 QC 失败。注意:f == OT,r == OB。有效选项为 'f' 或 'r'(默认值:None)
- --do-not-penalize-chimeras
-
关闭默认启发式方法,该方法在最长匹配小于原始序列长度的 44% 时将比对标记为 QC 失败。不符合此启发式的比对也是未配对的(默认值:None)
性能选项
- --bwa-nstreams BWA_NSTREAMS
-
每个 GPU 要使用的流数;注意:更多流会增加设备内存使用量(默认值:4)
- --bwa-cpu-thread-pool BWA_CPU_THREAD_POOL
-
每个 GPU 要分配给 CPU 线程池的线程数(默认值:16)
- --num-cpu-threads-per-stage NUM_CPU_THREADS_PER_STAGE
-
(与上述相同)每个 GPU 要分配给 CPU 线程池的线程数(默认值:None)
- --gpuwrite
-
使用一个 GPU 来加速写入最终 BAM/CRAM。(默认值:None)
- --gpuwrite-deflate-algo GPUWRITE_DEFLATE_ALGO
-
选择与 --gpuwrite 一起使用的 nvCOMP DEFLATE 算法。请注意,这些选项与 CPU DEFLATE 选项不对应。有效选项为 1、2 和 4。选项 1 最快,而选项 2 和 4 的吞吐量逐渐降低,但压缩率更高。当用户未提供输入时,默认值为 1(即 None)(默认值:None)
- --gpusort
-
使用 GPU 加速排序和标记。(默认值:None)
- --use-gds
-
使用 GPUDirect Storage (GDS) 来启用直接数据路径,以实现 GPU 内存和存储之间的直接内存访问 (DMA) 传输。必须与 --gpuwrite 同时使用。有关如何设置和使用 GPUDirect Storage 的信息,请参阅 Parabricks 文档 > 最佳性能。(默认值:None)
- --memory-limit MEMORY_LIMIT
-
排序和后排序期间的系统内存限制(以 GB 为单位)。默认情况下,限制为系统总内存的一半。(默认值:62)
- --low-memory
-
使用低内存模式;将降低每个 GPU 的流数(默认值: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)。
--in-fq 选项采用两个 FASTQ 文件的名称,可以选择后跟带引号的读取组。FASTQ 文件名不得以连字符开头。
使用 --in-fq-list 选项时,输入文件的每一行都需要一个读取组。
基线 bwa-meth:https://github.com/brentp/bwa-meth/
Bwa-meth 手稿:http://arxiv.org/abs/1401.1129