#size #fasta #chromosome #genome

bin+lib chromsize

只需获取您的染色体大小

2 个版本

0.0.2 2024 年 8 月 16 日
0.0.1 2024 年 8 月 15 日

#47生物学

Download history 242/week @ 2024-08-14

每月 242 次下载

MIT 许可证

21KB
267

chromsize

Version Badge Crates.io Version GitHub License Crates.io Total Downloads

厌倦了创建索引和剪切吗?
每次都要寻找那个旧脚本?
有了我,只需获取您的染色体大小。非常快。

但是,这比其他选项好在哪?是的,只需查看下面的图片。

搜索了“从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,请按照以下步骤操作

  1. 获取安装程序:在 Unix 上,请运行 curl https://sh.rustup.rs -sSf | sh,或前往 此处 了解其他选项
  2. 运行 cargo install chromsize(确保在运行之前 ~/.cargo/bin 在您的 $PATH 中)
  3. 使用 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,请执行以下操作

  1. 获取 Rust
  2. 运行 git clone https://github.com/alejandrogzi/chromsize.git && cd chromsize
  3. 运行 cargo run --release -- -i <GTF> -o <OUTPUT>

容器镜像

构建开发容器镜像

  1. 运行 git clone https://github.com/alejandrogzi/chromsize.git && cd chromsize
  2. 使用 start dockersystemctl start docker 初始化Docker
  3. 构建镜像 docker image build --tag chromsize .
  4. 运行 docker run --rm -v "[dir_where_your_fa_is]:/dir" chromsize -f /dir/<INPUT> -o /dir/<OUTPUT>

Conda(尚未提供)

要通过Conda使用chromsize,只需

  1. conda install chromsize -c biocondaconda create -n chromsize -c bioconda chromsize

Nextflow(尚未提供)

基准测试

你不相信我?在自己的系统上运行基准测试

  1. 获取任何物种的 .fa 文件(或从UCSC/NCBI下载我使用的文件)
  2. 安装 hyperfine: https://github.com/sharkdp/hyperfine
  3. 转到 chromsize/bench 并将下载的 .fa 文件修改为 ASSEMBLIES 常量
  4. 运行 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