#bioinformatics #long-read #chimera #scrubbing

app yacrd

使用全对全读映射,yacrd 执行:每个读取的堆叠覆盖计算和嵌合体检测

8 个版本

0.6.2 2020年7月18日
0.6.1 2020年5月26日
0.5.1 2019年2月22日
0.4.1 2018年10月9日
0.3.0 2018年7月19日

#119 in 生物学

23 每月下载量

MIT 许可证

105KB
2.5K SLoC

长读长嵌合体读取检测器

使用全对全读映射,yacrd 执行

  1. 每个读取的堆叠覆盖计算
  2. 嵌合体检测

嵌合体检测如下

  1. 对于覆盖小于或等于 min_coverage(默认 0)的每个区域,yacrd 创建一个 坏区域
  2. 如果存在一个 坏区域,它严格在读取开始之后开始,并在读取结束之前结束,则读取被标记为 Chimeric
  3. 如果总 坏区域 长度 > 读取长度 * 0.8,则读取被标记为 NotCovered
  4. 如果一个读取既不是 Chimeric 也不是 NotCovered,则标记为 NotBad

理由

长读错误纠正工具通常检测并删除嵌合体,但很难从这一步中隔离或检索信息。

DAStrim(来自 DASCRUBBER 套件)与 yacrd 做类似的工作,但依赖于不同的映射步骤,并使用不同的(可能更先进的)启发式算法。Yacrd 更简单,更容易使用。

仓库 包含一组脚本来评估 yacrd 在真实数据集上与其他类似工具(如 DASCRUBBERminiscrub)的性能。

输入

任何长读集(PacBio、Nanopore、任何可以给 minimap2 的东西)。yacrd 以 minimap2 或其他长读重叠器(如 BLASR m4 文件)的结果 PAF(成对对齐格式)作为输入。

要求

  • Rust 稳定渠道
  • libgz
  • libbzip2
  • liblzma

安装

使用 conda

yacrd 可在 bioconda 频道 中找到

如果已设置 bioconda 频道,您可以运行

conda install yacrd

从源代码

git clone https://github.com/natir/yacrd.git
cd yacrd
git checkout v0.6.1

cargo build
cargo test
cargo install --path .

如何使用 Yacrd

查找嵌合体

minimap2 reads.fq reads.fq > overlap.paf
yacrd -i overlap.paf -o reads.yacrd

检测后操作

yacrd 可以执行一些检测后操作

  • 过滤器:对于序列或重叠文件,标记为嵌合体或未覆盖的读取记录不写入输出
  • 提取:对于序列或重叠文件,包含标记为嵌合体或未覆盖的读取记录写入输出
  • 拆分:对于序列文件,移除读取中间的坏区域,移除未覆盖的读取
  • scrubb:对于序列文件,移除所有坏区域,移除未覆盖的读取
minimap2 reads.fq reads.fq > mapping.paf
yacrd -i mapping.paf -o reads.yacrd filter -i reads.fasta -o reads.filter.fasta
yacrd -i mapping.paf -o reads.yacrd extract -i reads.fasta -o reads.extract.fasta
yacrd -i mapping.paf -o reads.yacrd split -i reads.fasta -o reads.split.fasta
yacrd -i mapping.paf -o reads.yacrd scrubb -i reads.fasta -o reads.scrubb.fasta

对于纳米孔数据,我们建议使用所有与所有纳米孔预置的minimap2,种子之间的最大距离固定为500(选项-g 500)以生成重叠。我们建议使用最小覆盖固定为4(选项-c)和读取的最小覆盖固定为0.4(选项-n)运行yacrd。

这是运行yacrd刮擦的一个示例

minimap2 -x ava-ont -g 500 reads.fasta reads.fasta > overlap.paf
yacrd -i overlap.paf -o report.yacrd -c 4 -n 0.4 scrubb -i reads.fasta -o reads.scrubb.fasta

对于PacBio P6-C4数据,我们建议使用所有与所有PacBio预置的minimap2,种子之间的最大距离固定为800(选项-g 800)以生成重叠。我们建议使用最小覆盖固定为4(选项-c 4)和读取的最小覆盖固定为0.4(选项-n 0.4)运行yacrd。

minimap2 -x ava-pb -g 800 reads.fasta reads.fasta > overlap.paf
yacrd -i overlap.paf -o report.yacrd -c 4 -n 0.4 scrubb -i reads.fasta -o reads.scrubb.fasta

对于PacBio Sequel数据,我们建议使用所有与所有PacBio预置的minimap2,种子之间的最大距离固定为5000(选项-g 5000)以生成重叠。我们推荐使用最小覆盖固定为3(选项-c 3)和读取的最小覆盖固定为0.4(选项-n 0.4)运行yacrd。

minimap2 -x ava-pb -g 5000 reads.fasta reads.fasta > overlap.paf
yacrd -i overlap.paf -o report.yacrd -c 3 -n 0.4 scrubb -i reads.fasta -o reads.scrubb.fasta

重要说明

扩展

yacrd使用扩展来检测格式文件,如果你的文件名包含(任何地方)

  • .paf:文件被认为是minimap文件
  • .m4.mhap:文件被认为是blasr m4文件(mhap输出)
  • .fa.fasta:文件被认为是fasta文件
  • .fq.fastq:文件被认为是fastq文件
  • .yacrd:文件被认为是yacrd输出文件

压缩

yacrd自动检测文件是否已压缩(gzip、bzip2和lzma压缩可用)。对于检测后的操作,如果输入已压缩,则输出具有相同的压缩格式。

使用yacrd报告作为输入

您可以使用yacrd报告作为重叠文件输入,如果使用yacrd报告作为输入,则忽略ondisk选项。

输出

type_of_read    id_in_mapping_file  length_of_read  length_of_gap,begin_pos_of_gap,end_pos_of_gap;length_of_gap,be…

示例

NotCovered readA 4599    3782,0,3782

在这里,readA没有足够的覆盖,在位置0和3782之间存在一个长度为3782bp的零覆盖区域。

Chimeric    readB   10452   862,1260,2122;3209,4319,7528

在这里,readB是嵌合体,有2个零覆盖区域:一个在碱基1260和2122之间,另一个在4319和7528之间。

引用

如果您在研究中使用yacrd,请引用以下出版物

Pierre Marijon, Rayan Chikhi, Jean-Stéphane Varré, yacrd and fpa: upstream tools for long-read genome assembly, Bioinformatics, btaa262, https://doi.org/10.1093/bioinformatics/btaa262

bibtex格式

@article {@article{Marijon_2020,
	doi = {10.1093/bioinformatics/btaa262},
	url = {https://doi.org/10.1093%2Fbioinformatics%2Fbtaa262},
	year = 2020,
	month = {apr},
	publisher = {Oxford University Press ({OUP})},
	author = {Pierre Marijon and Rayan Chikhi and Jean-St{\'{e}}phane Varr{\'{e}}},
	editor = {Inanc Birol},
	title = {yacrd and fpa: upstream tools for long-read genome assembly},
	journal = {Bioinformatics}
}

依赖关系

~15–25MB
~336K SLoC