您的位置:

Tabix:一个快速索引和检索大型TAB分隔的文本数据的工具

一、塔比星

Tabix是由Heng Li于2011年开发的一个快速索引和检索大型TAB分隔的文本数据的工具,它将大文本文件中的数据存储成一个tabix (tbi) 索引文件。它可以在这个文件上进行快速的查询和检索,并返回特定的数据。

#下载安装
tar -jxvf tabix-0.2.6.tar.bz2
cd tabix-0.2.6/
make

# 创建索引
tabix -p vcf test.vcf.gz

# 查询数据
tabix test.vcf.gz 1:100000-200000

Tabix的主要用途之一是便于在大文本文件中进行高效的数据检索。建立tabix索引后,可以使用tabix查询命令快速检索文件,从而非常方便的从文件中提取感兴趣的信息。

二、他比心开始疼我

Tabix使用samtools中的程序库,支持gbk,gff,bed格式的索引文件。同时,它还支持多个数据源的汇聚,让我们可以在同一个平台上做到索引N个vcf文件。它还支持对多个位置同时进行搜索。

# 创建多个索引文件
tabix -p bed file1.bed.gz
tabix -p bed file2.bed.gz
tabix -p gff file1.gff.gz
tabix -p gff file2.gff.gz

# 合并多个索引
for type in bed gff
do
  tabix -s 1 -b 2 -e 3 -c "#" -f -p $type merge.${type}.gz file1.${type}.gz file2.${type}.gz
done

# 搜索多个索引
tabix merge.bed.gz -R region.bed

同时,tabix还可以通过泊松子采样来加速某些查询:大范围的查询可以通过随机采样小范围来代替,可以减少搜索时间,提高效率。

三、他比星河更浪漫

Tabix的优点还在于其使用方便。它提供了一些非常便利的选项,比如如果数据中字段是字符串或数字,可以使用sort选项按升序或降序排列。此外,它还提供了一些有用的选项来处理多文档和重复数据记录,使数据处理更加可靠。

# 按数字大小升序排列
tabix -s 1 -b 2 -e 3 -c "#" -f -S 1 file.gz

# 去重
tabix -s 1 -b 2 -e 3 -c "#" -f -u file.gz > nodup.file.gz

四、由于新冠疫情英文

Tabix还支持直接从网络上下载和解析vcf/gtf/bed等常见格式的数据。这对于需要处理大数据集的人们来说非常方便。

# 下载并解析ftp上的vcf数据
tabix -p vcf ftp://ftp.1000genomes.ebi.ac.uk/vol1/ftp/phase3/data/HG00103/alignment/HG00103.mapped.illumina.mosaik.GBR.low_coverage.20120522.snp_and_indel.vcf.gz

五、他比星光更璀璨

在实际应用中,Tabix常被用于生物信息学领域,特别是在基因组浏览器和变异调查中。

例如,我们可以使用Tabix来处理1000人基因组计划(1000 Genomes Project)的测序数据。该数据集包含从全球各个地方收集的超过2500个人的全基因组序列。当需要导航大量基因组数据时,search gene databases(基因库)中的信息,或者进行结构比较和序列比较时,一定需要用到tabix。

六、他比星星撩人

Tabix是一个非常强大的工具,它为我们解决了在大文件中进行数据检索的问题,是许多大数据集查询的重要解决方案。它还可以进行复杂的数据合并、排序和筛选,并提供了多种常用格式的数据下载和解析功能。因此,无论是在基因组学,生物信息学还是一般的大数据处理中,Tabix都是一个非常实用的工具。

# 安装
wget https://raw.githubusercontent.com/samtools/tabix/master/tabix.c 
wget https://raw.githubusercontent.com/samtools/tabix/master/bgzip.c 
wget https://raw.githubusercontent.com/samtools/tabix/master/knetfile.c 
wget https://raw.githubusercontent.com/samtools/tabix/master/tabix.h 
make

# 准备数据
wget https://raw.githubusercontent.com/bedops/bedops/master/sample-data/fisher/fisher1.bed 
wget https://raw.githubusercontent.com/bedops/bedops/master/sample-data/fisher/fisher2.bed 

# 创建索引
bgzip -c fisher1.bed > fisher1.bed.gz 
tabix -p bed fisher1.bed.gz 

bgzip -c fisher2.bed > fisher2.bed.gz 
tabix -p bed fisher2.bed.gz 

# 合并索引
tabix -s 1 -b 2 -e 3 -c "#" -f -p bed merge.bed.gz fisher1.bed.gz fisher2.bed.gz 

# 查询
tabix merge.bed.gz 1:1000000-2000000 
tabix merge.bed.gz 2:2000000-4000000