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