2 个稳定版本
1.0.1 | 2023年4月14日 |
---|---|
1.0.0 | 2023年4月12日 |
#1343 in 解析实现
30KB
693 行
crussmap: CrossMap 在 Rust 中
crussmap 是一个将基因组坐标在不同参考组装之间转换的更快工具。
支持的文件格式:[BED,...]。
本项目通过 Rust 重构了 CrossMap 代码,有效地提高了速度和性能
安装
在此处安装 cargo 和 rust:https://www.rust-lang.net.cn/tools/install
$ cargo install crussmap
用法
查看
查看块对表示的 tsv/csv 格式的链文件
## view chain file in tsv format
> crussmap view --input data/test.chain --output out_file
## view chain file in csv format
> crussmap view --input data/test.chain --output out_file --csv
BED
将一个组装的 BED 文件转换为另一个组装
## convert with stdout
> crussmap bed --bed data/test.bed --input data/test.chain
## convert with file out
> crussmap bed --bed data/test.bed --input data/test.chain --output output_bed --unmap unmap_bed
待办事项
应该支持一些流行的生物格式,但我没有足够的时间去做。如果你对这个项目感兴趣,只需为其贡献力量:)
基准测试
环境
: 1.4 GHz 4 核 Intel Core i5;16 GB 2133 MHz DDR3;macOS 13.2 (22D49)
## resonable file size of .bed and .chain
> wc -l long.bed
10013 long.bed
> wc -l v2v3.chain
253064 v2v3.chain
> time release/crussmap bed -b long.bed -i v2v3.chain -o test.out -u test.unmap
________________________________________________________
Executed in 253.78 millis fish external
usr time 197.93 millis 0.16 millis 197.77 millis
sys time 51.45 millis 1.02 millis 50.43 millis
核心改进
链文件解析器
使用 nom 解析链文件,这是一个快速且易于使用的 Rust 解析器组合库。
bed 文件序列化器
区间树
一个快速区间树库:使用 rust-lapper 来构建区间树和查询。
路线图
- 支持 gz 文件输入
- 将 maf/paf/sam/delta 转换为链和 crussmap
许可证
在 MIT 许可证 下许可。
依赖关系
~5MB
~83K SLoC