#gtf #bed #cli

bin+lib bed2gtf

一个快速且内存效率高的BED到GTF转换器

12个稳定版本

1.9.2 2024年4月13日
1.9.1 2024年2月21日
1.9.0 2024年1月4日
1.8.0 2023年11月27日
1.4.0 2023年8月20日

命令行工具 中排名 534

每月下载量 41

MIT 许可证

41KB
879

Crates.io GitHub Crates.io Total Downloads Conda Platform

bed2gtf

用Rust编写的高性能bed到gtf转换器。

转换

chr27 17266469 17281218 ENST00000541931.8 1000 + 17266469 17281218 0,0,200 2 103,74, 0,14675,

chr27 bed2gtf gene 17266470 17285418 . + . gene_id "ENSG00000151743";

chr27 bed2gtf transcript 17266470 17281218 . + . gene_id "ENSG00000151743"; transcript_id "ENST00000541931.8";

chr27 bed2gtf exon 17266470 17266572 . + . gene_id "ENSG00000151743"; transcript_id "ENST00000541931.8"; exon_number "1"; exon_id "ENST00000541931.8.1";

...

几秒钟内。

转换

  • 人属 GRCh38 GENCODE 44 (252,835 个转录本) 需要3.25秒。
  • 小鼠 GRCm39 GENCODE 44 (149,547 个转录本) 需要1.99秒。
  • 家犬 ROS_Cfam_1.0 Ensembl 110 (55,335 个转录本) 需要1.20秒。
  • bGalGal1 Ensembl 110 (72,689 个转录本) 需要1.36秒。

v.1.9.2 新功能

  • 添加了 --no-gene 标志,仅执行转换而不包含等位基因!
  • 修改了 -i 为必选参数,除非有 --no-gene 模式。
  • 重构BedRecord。
  • 将CLI作为所有者模块隔离。

用法

Usage: bed2gtf[EXE] --bed/-b <BED> --isoforms/-i <ISOFORMS> --output/-o <OUTPUT>
 
Arguments:
    -b, --bed <BED>: a .bed file
    -i, --isoforms <ISOFORMS>: a tab-delimited file
    -o, --output <OUTPUT>: path to output file
    -g, --gz[=<FLAG>]          Compress output file [default: false] [possible values: true, false]
    -n, --no-gene[=<FLAG>]     Flag to disable gene_id feature [default: false] [possible values: true, false]

Options:
    --help: print help
    --version: print version
    --threads/-t: number of threads (default: max ncpus)
    --gz: compress output .gtf

警告

.bed文件中的所有转录本都应该出现在isoforms文件中。

crate: https://crates.io/crates/bed2gtf

点击查看详细格式

bed2gtf只需要两个文件

  1. 一个 .bed 文件

    带有3个必需字段和9个可选字段的制表符分隔文件

    chrom   chromStart  chromEnd      name    ...
      |         |           |           |
    chr20   50222035    50222038    ENST00000595977    ...
    

    有关更多信息,请参阅 BED 格式

  2. 一个包含基因/等位基因的制表符分隔 .txt/.tsv/.csv/... 文件(.bed文件中的所有转录本都应该出现在isoforms文件中)

    > cat isoforms.txt
    
    ENSG00000198888 ENST00000361390
    ENSG00000198763 ENST00000361453
    ENSG00000198804 ENST00000361624
    ENSG00000188868 ENST00000595977
    

    您可以使用 Ensembl BioMart 创建您喜欢的物种的定制文件。

安装

要在您的系统上安装bed2gtf,请按照以下步骤操作

  1. 获取rust: 在Unix上使用 curl https://sh.rustup.rs -sSf | sh,或者访问 此处 以获取其他选项
  2. 运行 cargo install bed2gtf(确保在运行之前将 ~/.cargo/bin 添加到您的 $PATH
  3. 使用 bed2gtf 和所需参数
  4. 享受吧!

构建

要从这个仓库构建bed2gtf,请执行以下操作:

  1. 获取rust(如上所述)
  2. 运行 git clone https://github.com/alejandrogzi/bed2gtf.git && cd bed2gtf
  3. 运行 cargo run --release -- -b <BED> -i <ISOFORMS> -o <OUTPUT>

容器镜像

要构建开发容器镜像

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

Conda

要使用Conda通过bed2gtf,只需执行以下操作:

  1. conda install bed2gtf -c biocondaconda create -n bed2gtf -c bioconda gtfsort

输出

如果你指定了,bed2gtf将输出直接发送到相同的.bed文件路径

bed2gtf annotation.bed isoforms.txt output.gtf

.
├── ...
├── isoforms.txt
├── annotation.bed
└── output.gtf

其中 output.gtf 是结果。

常见问题解答

为什么?

UCSC通过KentUtils或特定的二进制文件(1)提供了一种快速将BED转换为GTF文件的方法,同时,许多生物信息学家分享了尝试复制类似解决方案的脚本(2,3,4)。

一个GTF文件是一个包含特定组装的基因注释数据的9列制表符分隔的文件。第9列定义了每个条目的属性。这个字段非常重要,因为一些处理GTF文件的后处理工具需要它们来提取基因信息(例如STAR、arriba等)。不完整的GTF属性字段可能会在这些软件中导致与注释相关的错误。

上述提到的可用工具/脚本中,没有一个是完全功能的属性GTF文件转换。使用C编写的两步方法(bedToGenePred | genePredToGtf)(1)非常快。由于.bed文件不保留任何基因相关的信息,这种方法无法包括正确的基因_id属性(重复的transcript_ids),如果没有包括refTable,并且无法附加第3列基因特征。

这是一个例子

chr27 stdin transcript 17266470 17281218 . + . gene_id "ENST00000541931.8"; transcript_id "ENST00000541931.8";

chr27 stdin exon 17266470 17266572 . + . gene_id "ENST00000541931.8"; transcript_id "ENST00000541931.8"; exon_number "1"; exon_id "ENST00000541931.8.1";

另一方面,可用的脚本(2,3,4)输出格式不良,无法作为其他工具的输入。其中一些脚本(2)具有非常定制的格式,远非完整的GTF文件

chr20 ---- peak 50222035 50222038 . + . peak_id "chr20_50222035_50222038";

chr20 ---- peak 50188548 50189130 . + . peak_id "chr20_50188548_50189130";

而其他脚本(4)仅提供外显子相关的信息

chr20 ensembl exon 50222035 50222038 . + . gene_id "ENST00000595977.1735"; transcript_id "ENST00000595977.1735"; exon_number "0

chr20 ensembl exon 50188548 50188930 . + . gene_id "ENST00000595977.3403"; transcript_id "ENST00000595977.3403"; exon_number "0

这就是bed2gtf发挥作用的地方:这是一个用Rust编写的快速且内存高效的BED-to-GTF转换器。在约4秒钟内,此工具可以生成一个具有所有所需功能、适用于后处理工具的完全功能的GTF转换文件。

如何?

bed2gtf基本上是对C二进制文件的重新实现,合并为一步。该工具评估j转录本中k外显子的位置,计算起始/终止/密码子/UTR位置,同时保持阅读框并调整索引+1(以兼容GTF约定)。isoforms文件作为C二进制文件中的refTable使用,将每个转录本映射到相应的基因;然而,bed2gtf利用了这一点,并添加了一个额外的“基因”行(以兼容其他工具)。

参考文献

  1. http://hgdownload.soe.ucsc.edu/admin/exe/
  2. https://github.com/pfurio/bed2gtf
  3. https://rdrr.io/github/wyguo/RTDBox/src/R/gtf2bed.R
  4. https://github.com/MikeDacre/mike_tools/blob/master/bin/bed2gtf.py
  5. https://www.ensembl.org/info/website/upload/gff.html

依赖项

~4–14MB
~127K SLoC