2 个版本
0.0.2 | 2024 年 8 月 16 日 |
---|---|
0.0.1 | 2024 年 8 月 15 日 |
#47 在 生物学 中
每月 242 次下载
21KB
267 行
chromsize
厌倦了创建索引和剪切吗?
每次都要寻找那个旧脚本?
有了我,只需获取您的染色体大小。非常快。
但是,这比其他选项好在哪?是的,只需查看下面的图片。
搜索了“从fasta获取染色体大小”,抓取了我找到的每个命令/工具并进行了基准测试。令人惊讶的是,您可能只需等待14秒就可以计算这些染色体大小,真疯狂。
版本 0.0.2 中的新功能?
- 现在支持读取 .gz!
- CI 实现
用法
二进制文件
Usage: chromsize --fasta <FASTA> --output <OUTPUT> [-t <THREADS>]
Arguments:
-f, --fasta <FASTA>: FASTA file
-o, --output <OUTPUT>: path to chrom.sizes
Options:
-t, --threads <THREADS>: number of threads [default: your max ncpus]
--help: print help
--version: print version
crate: https://crates.io/crates/chromsize
安装
要安装 Rust 并在您的系统上使用 chromsize,请按照以下步骤操作
- 获取安装程序:在 Unix 上,请运行
curl https://sh.rustup.rs -sSf | sh
,或前往 此处 了解其他选项 - 运行
cargo install chromsize
(确保在运行之前~/.cargo/bin
在您的$PATH
中) - 使用
chromsize
和必要的参数
库
use chromsize;
fn main() {
let input = PathBuf::new("/path/to/fasta.fa");
let output = PathBuf::new("/path/to/chrom.sizes");
let sizes: Vec<(String, u64)> = chromsize::chromsize(&input);
chromsize::write(sizes, &output)
}
Python
构建端口以将其作为 pkg 安装
git clone https://github.com/alejandrogzi/chromsize.git && cd chromsize/py-chromsize
hatch shell
maturin develop --release
将其用作二进制包装器
import chromsize as cs
input = "/path/to/fasta.fa"
output = "/path/to/chrom.sizes"
cs.write_chromsizes(input, output)
或直接获取它们
import chromsize as cs
input = "/path/to/fasta.fa"
sizes = cs.get_chromsizes(input)
>>> print(sizes)
[
('chr1', 123),
('chr2', 456),
...
]
构建
要从此仓库构建 chromsize,请执行以下操作
- 获取 Rust
- 运行
git clone https://github.com/alejandrogzi/chromsize.git && cd chromsize
- 运行
cargo run --release -- -i <GTF> -o <OUTPUT>
容器镜像
构建开发容器镜像
- 运行
git clone https://github.com/alejandrogzi/chromsize.git && cd chromsize
- 使用
start docker
或systemctl start docker
初始化Docker - 构建镜像
docker image build --tag chromsize .
- 运行
docker run --rm -v "[dir_where_your_fa_is]:/dir" chromsize -f /dir/<INPUT> -o /dir/<OUTPUT>
Conda(尚未提供)
要通过Conda使用chromsize,只需
conda install chromsize -c bioconda
或conda create -n chromsize -c bioconda chromsize
Nextflow(尚未提供)
基准测试
你不相信我?在自己的系统上运行基准测试
- 获取任何物种的 .fa 文件(或从UCSC/NCBI下载我使用的文件)
- 安装 hyperfine: https://github.com/sharkdp/hyperfine
- 转到 chromsize/bench 并将下载的 .fa 文件修改为
ASSEMBLIES
常量 - 运行
cargo run release --bin chromsize-benchmark -- -d /dir/where/my/fastas/are -a show-output ignore-failure
以下是实验的所有信息和元数据
我使用了哪些工具?
工具 | 命令 | 参考 | 讨论 |
---|---|---|---|
seqkit | seqkit fx2tab--长度--名称--标题-行{组装} >染色体.大小 |
1 | 2 |
chromsize | 目标/发布/chromsize-f{组装} -o chrom.大小 |
3 | |
pyfaidx | faidx{组装} -i chromsizes>染色体.大小 |
4 | 5 |
samtools | samtools faidx{组装} &&等待|切割-f1,2 {组装}.fai>染色体.大小 |
6 | 5 |
faSize | faSize-详细-tab{组装} >染色体.大小 |
7 | |
awk1 | awk'/^>/ {if (seqlen){print seqlen};print;seqlen=0;next; } {seqlen+= 长度($0)}END{print seqlen}' {组装} >染色体.大小 |
8 | 9 |
awk2 | awk'/^>/{if (l!=") print l; print; l=0; next}{l+=length($0)}END{print l}' {assembly} > chrom.sizes |
8 | 9 |
bioawk1 | bioawk-c fastx'{print> $name ORS 长度($seq)}' {组装} >染色体.大小 |
10 | 9 |
awk3 | cat{组装} |awk'$0 ~ > {if (NR > 1) {print c;}c=0;printfsubstr($0,2,100) "\t"; } $0 !~ ">" {c+=长度($0);} END {print c; }' >染色体.大小 |
8 | 11 |
bioawk2 | bioawk-c fastx'{print$name, 长度($seq) }' < {组装} >染色体.大小 |
10 | 2 |
detailed data?
物种 | 组装 | 大小 (Gb) | chromsize | seqKit | awk1 | awk2 | awk3 | bioawk1 | bioawk2 | faSize | pyfaidx | samtools |
---|---|---|---|---|---|---|---|---|---|---|---|---|
S. cerevisiae | R64 | 0.01 | 0.004 | 0.016 (X 4.0) | 0.043 (X 10.7) | 0.043 (X 10.7) | 0.05 (X 12.5) | 0.03 (X 7.5) | 0.03 (X 7.5) | 0.054 (X 13.5) | 0.101 (X 25.2) | 0.064 (X 16.0) |
C. elegans | ce11 | 0.10 | 0.02 | 0.103 (X 5.1) | 0.409 (X 20.4) | 0.408 (X 20.4) | 0.492 (X 24.6) | 0.274 (X 13.7) | 0.274 (X 13.7) | 0.426 (X 21.3) | 0.225 (X 11.2) | 0.472 (X 23.6) |
D. melanogaster | dm6 | 0.14 | 0.028 | 0.147 (X 5.2) | 0.581 (X 20.7) | 0.583 (X 20.8) | 0.714 (X 25.5) | 0.426 (X 15.2) | 0.418 (X 14.9) | 0.633 (X 22.6) | 0.337 (X 12.0) | 0.667 (X 23.8) |
D. rerio | danRer11 | 1.37 | 0.22 | 0.742 (X 3.4) | 6.815 (X 31.0) | 6.803 (X 30.9) | 8.216 (X 37.3) | 3.946 (X 17.9) | 3.95 (X 18.0) | 7.202 (X 32.7) | 3.029 (X 13.8) | 7.633 (X 34.7) |
C. familiaris | canFam4 | 2.48 | 0.311 | 1.209 (X 3.9) | 10.158 (X 32.7) | 10.124 (X 32.6) | 12.206 (X 39.2) | 6.55 (X 21.1) | 6.518 (X 21.0) | 10.671 (X 34.3) | 4.741 (X 15.2) | 11.394 (X 36.6) |
H. sapiens | GRCh38 | 3.10 | 0.43 | 1.696 (X 3.9) | 12.393 (X 28.8) | 12.432 (X 28.9) | 13.681 (X 31.8) | 7.414 (X 17.2) | 7.284 (X 16.9) | 13.102 (X 30.5) | 6.37 (X 14.8) | 14.074 (X 32.7) |
B. bombina | aBomBom1 | 9.80 | 1.554 | 8.501 (X 5.5) | 41.676 (X 26.8) | 41.696 (X 26.8) | 49.064 (X 31.6) | 24.202 (X 15.6) | 24.374 (X 15.7) | 43.856 (X 28.2) | 19.755 (X 12.7) | 45.387 (X 29.2) |
A. mexicanum | AmbMex60DD | 28.20 | 3.327 | 14.375 (X 4.3) | 118.923 (X 35.7) | 118.422 (X 35.6) | 137.781 (X 41.4) | 57.626 (X 17.3) | 57.591 (X 17.3) | 121.257 (X 36.4) | 54.82 (X 16.5) | 128.374 (X 38.6) |
P. annectens | PAN1.0 | 40.10 | 4.606 | 18.664 (X 4.1) | 167.85 (X 36.4) | 165.701 (X 36.0) | 196.833 (X 42.7) | 91.747 (X 19.9) | 91.924 (X 20.0) | 170.475 (X 37.0) | 77.707 (X 16.9) | 181.562 (X 39.4) |
压缩文件.gz的表现如何?
CHM13-T2T.fa.gz
工具 | 核心 | 时间 |
---|---|---|
seqkit | 16 | 18.993 s ± 0.132 s |
chromsize | 默认(最大CPU数:16) | 7.631 s ± 0.010 s |
seqkit | 默认(4) | 18.525 s ± 0.520 s |
chromsize | 4 | 8.035 s ± 0.077 s |
seqkit | 2 | 18.535 s ± 0.376 s |
chromsize | 2 | 8.284 s ± 0.030 s |
依赖
~2.8–4MB
~72K SLoC