1个不稳定版本

0.1.0 2022年2月11日

#744 in 科学

自定义许可

13KB
160

splitp

splitp是Rust语言实现的流式SPLiT-seq读取预处理。目前,这仅是@jeremymsimon在此处提供的Perl预处理脚本的Rust实现。未来,功能可能扩展/变得更加通用。

该程序的目的很简单,就是执行与上面自定义Perl脚本相同的处理,但速度更快。为此,这里有一个针对1000万个SPLiT-seq v2读取的基准测试。这是在2016款MacBook Pro 2.9 GHz四核Intel Core i7、16 GB 2133 MHz LPDDR3(但两个程序都使用单线程)上进行的。

程序 运行时间
Perl脚本 2m 48.6s
splitp 5.7s
splitp(管道到/dev/null 3.7s

用法

splitp程序接受多个参数。可以使用splitp -h从命令行打印用法。

USAGE:
    splitp [OPTIONS] --read-file <READ_FILE> --bc-map <BC_MAP> --start <START> --end <END>

OPTIONS:
    -b, --bc-map <BC_MAP>          the map of oligo-dT to random hexamers
    -e, --end <END>                end position of the random barcode
    -h, --help                     Print help information
    -o, --one-hamming              consider 1-hamming distance neighbors of random hexamers
    -r, --read-file <READ_FILE>    the input R2 file
    -s, --start <START>            start position of the random barcode
    -V, --version                  Print version information

请注意,splitp将输出(处理后的读取)写入stdout,因此可以直接将输出管道到另一个程序的输入流(例如,直接通过进程替换将输出直接发送到alevin-fry)。这也意味着,如果您想将处理后的读取存储在磁盘上,可以直接将结果管道到gzip进行压缩,例如。

splitp -r reads.fq -b oligo_hex_bc_mapping.txt -s 87 -e 94 -o | gzip > reads.fq.gz

注意

必须以两列制表符分隔的文件格式提供输入寡核苷酸dT到随机mer映射。此外,文件的第一行必须以#字符开始的注释。

局限性/差异

  • 目前,只能以0或1的汉明距离搜索随机六核苷酸。
  • 如果考虑替换的条形码(BC1)中有N个字符,则在查找随机六核苷酸汉明邻居的表中之前,它们都将替换为A。如果有多个N,则这可能会导致与Perl脚本略有不同的行为。

依赖关系

~4.5MB
~71K SLoC