您的位置:

深入了解hisat2建立索引:教你如何玩转hisat2

一、内存:建立索引需要多少内存?

hisat2建立索引是一项十分重要的工作,这个索引是后续比对的基础,准确性和速度都取决于索引建立的好坏。建立hisat2索引需要消耗相应的内存,因此在建立索引时应该充分考虑计算机的硬件配置及内存容量。

hisat2工具的文档建议:对于基因组大小为2.5 Gb的物种,采用默认参数 '--sensitive',单线程内存开销为6G;3.5 Gb的物种,单线程内存开销将为9G。在实际的实验中,可以通过增加核心数来减少单个线程的内存消耗,也可以选择较小的可用内存运行较慢但内存占用更小的版本。

例如,我们可以通过下面的命令在2线程和4G内存的情况下建立索引:

hisat2-build --threads 2 --sensitive genome.fa genome

二、文件:hisat2建立索引生成了哪些文件?

当我们建立一个hisat2的索引时,hisat2会在目标文件目录下生成一些相关的文件。接下来,我们将详细查询这些文件的用途和作用:

1. *.ht2: 此文件包含了检索序列的蛋白质表达序列的哈希值。这个文件是工具的核心,它是读取和比对过程的中间件。.ht2文件通过嵌入式哈希表的方式存储索引信息,以提高索引的查询速度。

2. *.bt2: 此文件包含了所选BWT转换的索引文件。此文件与.ht2文件密切相关,是核心比对算法的一部分。.bt2文件不同于.ht2文件的是它们是在索引建立期间生成的,而不是在比对期间生成的。

3. *.rev.*.bt2: 此文件包含了反转互补序列的BWT转换。这个文件是一种辅助形式,它保存了反转互补序列的BWT转换,以便比对过程中使用。

4. *.3.ht2、*.3.bt2、*.3.rev.*.bt2: 如果选择了hisat2的-sensitive-local参数,则会生成这些额外的文件。它们与默认的.ht2、.bt2、.rev.文件一起使用,用于局部比对。

5. *.fai: 此文件是FASTA格式的索引文件。对于巨大的基因组,可以从FASTA文件中生成此类型的索引,以提高性能。

三、检查:hisat2建立索引怎么看好了没?

为了确保索引文件已经正确生成,我们需要检查索引文件。hisat2提供了一种易于使用的工具hisat2-inspect,可以用来检查索引文件的正确性。

通过以下命令,查看空格分隔的索引信息:

hisat2-inspect -s genome.1.ht2

您还可以通过命令行查看某个位置的索引条目:

hisat2-inspect -e genome.1.ht2 100000

这将在屏幕上显示100,000基数处的哈希表条目。

四、hisat2最新index选取: 如何优化hisat2索引性能?

hisat2是一个高效且准确的读取比对工具,目前已经取代了Bowtie2,成为主要的选择。但是,在实际的使用中,由于基因组的大小和其他因素的影响,其运行时间和占用内存较大。在此,我们为您提供了一些可选的参数来优化hisat2建立索引的性能:

1. 使用low-memory选项。该选项限制了内存使用,但也会导致必要时的速度减慢。使用low-memory参数,将具有以下优点:

hisat2-build --low-memory --threads 8 my_genome.fasta my_genome_index

2. 使用SSPACE-Hisat2 ToolKit提供的hisat2-build工具,该工具使用最新的hierarchical graph index来减少内存使用。

git clone https://github.com/ShuonanChen/SSPACE-Hisat2-Genome-Assembler.git
cd SSPACE-Hisat2-Genome-Assembler/hisat2-2.1.0/
make
make install
./hisat2-build my_genome.fasta my_genome_index

3. 流式颠倒生成索引。流式生成索引是一种基于内核的技术,可以减少目标计算机上内存的使用。此技术的好处在于,只需使用一定量的内存即可在任何时间生成索引。

hisat2-inspect my_genome.fasta > my_genome.sizes
split my_genome.sizes -d -l 1 my_genome.sizes.
grep -v "^\[" my_genome.sizes.* > my_genome.sizes.
rm my_genome.sizes.*
hisat2_extract_splicesite.py my_genome.gtf > my_genome.ss
for i in `seq 0 999`; do hisat2_extract_exons.py my_genome.gtf > my_genome.exons.${i}.fa; done
hisat2_build --ss my_genome.ss --exon my_genome.exons.000.fa --exonlen 1800 my_genome.fasta my_genome_index
for i in `seq 1 999`; do hisat2_build --ss my_genome.ss --exon my_genome.exons.${i}.fa --exonlen 1800 my_genome.fasta my_genome_index; done

总结

通过本文的介绍,相信你对hisat2建立索引有了更深入的了解,知道了如何进行内存管理,了解了每个文件的用途,掌握了检查索引文件和优化性能的一些技巧。如果您需要深入了解hisat2或其他基因组学相关技术,可以通过相关文献或官方文档来学习。