经验总结 | 建索引的五种方式

最近由于项目的原因,陆陆续续有接触到不同的建立索引的方式。所以觉得有必要在这里进行总结。

首先,建议索引的第一步,是从数据库中下载参考基因组的fasta格式的序列。根据项目背景的不同,可以选择hg19,hg38等不同的参考基因组(以人类为例)。所以,在我们建立索引之前,应该准备好这部分的文件。其次,我们为什么需要建立索引。建索引通常出现的条件是在测序产生的reads片段与参考基因组进行比对时,为了比对更加快速,需要建立索引(相对于目录性质),帮助比对软件更快速的找到目标区域。
(以上为个人理解)

1。使用Bowite2构建索引

bowtie2-build -f hg19.fna human

参数介绍:
bowtie2-build :是bowtie2建立索引的常用的指令。
-f 参考基因组(默认为fasta个格式)
hg19.fna 参考基因组所在的相对/绝对位置。
human 指的是索引输入的文件夹的名称。

详细:

Usage: bowtie2-build [options]* <reference_in> <bt2_index_base>
reference_in comma-separated list of files with ref sequences
bt2_index_base write bt2 data to files with this dir/basename

*** Bowtie 2 indexes work only with v2 (not v1). Likewise for v1 indexes. ***
Options:
-f reference files are Fasta (default)
-c reference sequences given on cmd line (as
<reference_in>)
–large-index force generated index to be ‘large’, even if ref
has fewer than 4 billion nucleotides
–debug use the debug binary; slower, assertions enabled
–sanitized use sanitized binary; slower, uses ASan and/or UBSan
–verbose log the issued command
-a/–noauto disable automatic -p/–bmax/–dcv memory-fitting
-p/–packed use packed strings internally; slower, less memory
–bmax max bucket sz for blockwise suffix-array builder
–bmaxdivn max bucket sz as divisor of ref len (default: 4)
–dcv diff-cover period for blockwise (default: 1024)
–nodc disable diff-cover (algorithm becomes quadratic)
-r/–noref don’t build .3/.4 index files
-3/–justref just build .3/.4 index files
-o/–offrate SA is sampled every 2^ BWT chars (default: 5)
-t/–ftabchars # of chars consumed in initial lookup (default: 10)
–threads # of threads
–seed seed for random number generator
-q/–quiet verbose output (for debugging)
-h/–help print detailed description of tool and its options
–usage print this usage message
–version print version information and quit

bowtie2建立得到的索引文件是以.bt2结尾。

2。使用Hisat构建索引

hisat-build hg19.fa human

用法类似于bowite2-build,甚至比其更简洁一点。

由于这是我之前运行的,所以关于结果文件的格式,已经记不太清。所以,此处略。

3。使用bwa构建索引

bwa index -a bwtsw hg19.fa

这个指令是最近用到的,bwa也是一种比对的工具(主要是DNA)。
-a bwstw其实是一起用的。说明构建使用的算法是bwtsw。
hg19.fa 就是参考基因组的文件。

详细信息:

Usage: bwa index [options] <in.fasta>
Options: -a STR BWT construction algorithm: bwtsw, is or rb2 [auto]
-p STR prefix of the index [same as fasta name]
-b INT block size for the bwtsw algorithm (effective with -a bwtsw) [10000000]
-6 index files named as <in.fasta>.64.* instead of <in.fasta>.*
Warning: -a bwtsw' does not work for short genomes, while-a is’ and
`-a div’ do not work not for long genomes.

最终得到的索引文件有5种,相对比较大,也是我比较吃惊的。

hg19.fa.ann
hg19.fa.pac
hg19.fa.amb
hg19.fa.bwt
hg19.fa.sa

另外,在建索引的过程中,会出现许多的问题,这点要留心。

4。使用samtools构建索引

samtools faidx hg19.fa

samtools 一般是对bam文件构建索引。当然也有比较特殊的情况就是,对fasta文件构建索引。结果文件为.fai格式,在某些条件下,会要求这种格式的文件。

详细信息:

Usage: samtools faidx <file.fa|file.fa.gz> [ […]]
Option:
-o, --output FILE Write FASTA to file.
-n, --length INT Length of FASTA sequence line. [60]
-c, --continue Continue after trying to retrieve missing region.
-r, --region-file FILE File of regions. Format is chr:from-to. One per line.
-i, --reverse-complement Reverse complement sequences.
–mark-strand TYPE Add strand indicator to sequence name
TYPE = rc for /rc on negative strand (default)
no for no strand indicator
sign for (+) / (-)
custom,, for custom indicator
–fai-idx FILE name of the index file (default file.fa.fai).
–gzi-idx FILE name of compressed file index (default file.fa.gz.gzi).
-f, --fastq File and index in FASTQ format.
-h, --help This message.

结果文件:

ls
hg.fa.fai

5。使用gatk构建索引

gatk CreateSequenceDictionary -R hg19.fa

原先gatk构建索引的方式是gatk-launch,但是目前了解到这种方式已经不再适用。现在换用gatk

详细信息:

结果文件:

ls
hg19.dict

另外,由于构建索引的过程实在是太耗功夫了,所以很有必要及时的备份。

  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java是一种面向对象的编程语言,因此了解类和对象、继承、接口和数组等概念对于学习Java编程非常重要。在本文中,我们将对这些概念进行总结和解释,以帮助您更好地了解Java。 一、类和对象 Java中的类是一种数据类型,它描述了有相同属性和方法的对象。类可以看作是对象的模板或蓝图。一个类可以包含多个变量和方法,这些变量和方法可以被类的实例使用。 定义一个类需要使用关键字class,如下所示: ``` public class MyClass { // 类体 } ``` 在类中定义的变量被称为成员变量,而在类中定义的函数被称为成员函数。类的成员变量和成员函数可以用访问修饰符来限制它们的访问范围。 定义一个对象需要使用关键字new,如下所示: ``` MyClass myObject = new MyClass(); ``` 这个语句将创一个新的MyClass对象,并将其分配给myObject变量。现在我们可以使用myObject变量来访问MyClass对象的成员变量和成员函数。 二、继承 继承是Java面向对象编程的一种重要特性。它允许一个类从另一个类继承属性和方法。被继承的类被称为父类或超类,继承这些属性和方法的类被称为子类或派生类。 子类可以通过关键字extends来继承父类的属性和方法,如下所示: ``` public class SubClass extends SuperClass { // 子类体 } ``` 在这个例子中,SubClass是SuperClass的一个子类。SubClass将继承SuperClass中定义的所有成员变量和成员函数。子类可以覆盖父类中的方法或添加新的方法,以满足其特定的需求。 继承还可以使用接口实现,我们将在下一节中介绍。 三、接口 接口是Java中的一种特殊类型,它定义了一组方法签名,但没有实现这些方法的代码。接口可以被类实现,从而允许类实现接口中定义的方法。 定义一个接口需要使用关键字interface,如下所示: ``` public interface MyInterface { public void myMethod(); } ``` 在这个例子中,MyInterface是一个接口,它定义了一个名为myMethod的方法。实现这个接口的类必须提供myMethod方法的实现。 类可以通过关键字implements来实现接口,如下所示: ``` public class MyClass implements MyInterface { public void myMethod() { // 实现myMethod方法 } } ``` 在这个例子中,MyClass实现了MyInterface接口,并提供了myMethod方法的实现。 Java中的接口允许类实现多个接口,这种行为称为多重继承。这使得Java中的类具有更大的灵活性。 四、数组 数组是Java中的一种数据结构,它可以存储一组数据,并按照索引进行访问。数组中的每个元素都具有相同的数据类型。 定义一个数组需要指定数组类型和数组大小,如下所示: ``` int[] myArray = new int[10]; ``` 在这个例子中,myArray是一个包含10个整数的数组。数组的索引从0开始,因此第一个元素的索引是0,最后一个元素的索引是9。 可以使用循环语句来遍历数组中的所有元素,如下所示: ``` for (int i = 0; i < myArray.length; i++) { System.out.println(myArray[i]); } ``` 在这个例子中,使用for循环遍历myArray数组中的所有元素,并将它们打印到控制台上。 Java中还有一些高级数据结构,如ArrayList和LinkedList,它们提供了更多的功能和灵活性。 总结 类和对象、继承、接口和数组是Java面向对象编程中的重要概念。掌握这些概念是学习Java编程的关键。在本文中,我们对这些概念进行了总结和解释,希望能够帮助您更好地了解Java编程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值