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 次
41KB
879 行
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只需要两个文件
-
一个 .bed 文件
带有3个必需字段和9个可选字段的制表符分隔文件
chrom chromStart chromEnd name ... | | | | chr20 50222035 50222038 ENST00000595977 ...
有关更多信息,请参阅 BED 格式
-
一个包含基因/等位基因的制表符分隔 .txt/.tsv/.csv/... 文件(.bed文件中的所有转录本都应该出现在isoforms文件中)
> cat isoforms.txt ENSG00000198888 ENST00000361390 ENSG00000198763 ENST00000361453 ENSG00000198804 ENST00000361624 ENSG00000188868 ENST00000595977
您可以使用 Ensembl BioMart 创建您喜欢的物种的定制文件。
安装
要在您的系统上安装bed2gtf,请按照以下步骤操作
- 获取rust: 在Unix上使用
curl https://sh.rustup.rs -sSf | sh
,或者访问 此处 以获取其他选项 - 运行
cargo install bed2gtf
(确保在运行之前将~/.cargo/bin
添加到您的$PATH
) - 使用
bed2gtf
和所需参数 - 享受吧!
构建
要从这个仓库构建bed2gtf,请执行以下操作:
- 获取rust(如上所述)
- 运行
git clone https://github.com/alejandrogzi/bed2gtf.git && cd bed2gtf
- 运行
cargo run --release -- -b <BED> -i <ISOFORMS> -o <OUTPUT>
容器镜像
要构建开发容器镜像
- 运行
git clone https://github.com/alejandrogzi/bed2gtf.git && cd bed2gtf
- 使用
start docker
或systemctl start docker
初始化docker - 构建镜像
docker image build --tag bed2gtf .
- 运行
docker run --rm --v "[dir_where_your_gtf_is]:/dir" bed2gtf -b /dir/<BED> --i /dir/<ISOFORMS> --o /dir/<OUTPUT>
Conda
要使用Conda通过bed2gtf,只需执行以下操作:
conda install bed2gtf -c bioconda
或conda 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利用了这一点,并添加了一个额外的“基因”行(以兼容其他工具)。
参考文献
依赖项
~4–14MB
~127K SLoC