跳转至

kraken2

Kraken 是一种分类学序列分类器,专门用于对 DNA 序列进行分类,将其归入已知的生物分类体系中。Kraken 检查查询序列中的 k-mer,并利用这些 k-mer 中的信息来查询数据库。该数据库将 k-mer 映射到包含特定 k-mer 的所有基因组的最低公共祖先(LCA)。

https://github.com/DerrickWood/kraken2

数据库

Kraken2 数据库是一个文件夹包含了至少3个文件:

  • hash.k2d: 包含到分类单元映射的最小化器
  • opts.k2d: 包含有关用于构建数据库的选项的信息
  • taxo.k2d: 包含用于构建数据库的分类信息

kraken2可以自己构建数据库也可以下载构建好的数据库。

  • 下载构建好的数据库:

    https://benlangmead.github.io/aws-indexes/k2

  • 构建标准数据库:

    kraken2-build --standard --threads 24 --db $DBNAME

    其中 $DBNAME 是指定数据库存储的位置,此步下载数据超过50GB的数据,数据库在创建期间将使用超过100 GB的磁盘空间。默认下载5种数据库:古菌archaea、细菌bacteria、人类human、载体UniVec_Core、病毒viral。

  • 构建自定义数据库:

    kraken2可以下载如下:

    • archaea: RefSeq complete archaeal genomes/proteins
    • bacteria: RefSeq complete bacterial genomes/proteins
    • plasmid: RefSeq plasmid nucleotide/protein sequences
    • viral: RefSeq complete viral genomes/proteins
    • human: GRCh38 human genome/proteins
    • fungi: RefSeq complete fungal genomes/proteins
    • plant: RefSeq complete plant genomes/proteins
    • protozoa: RefSeq complete protozoan genomes/proteins
    • nr: NCBI non-redundant protein database
    • nt: NCBI non-redundant nucleotide database
    • UniVec: NCBI-supplied database of vector, adapter, linker, and primer sequences that may be contaminating sequencing projects and/or assemblies
    • UniVec_Core: A subset of UniVec chosen to minimize false positive hits to the vector database
    • env_nr and env_nt are no longer supported by NCBI and therefore are no longer available for download.
    # 下载nr数据库并构建数据库
    $ kraken2-build --download-library nr --threads 24 --db $DBNAME
    
  • 添加单个序列到数据库

    序列格式如下格式:

    >sequence16|kraken:taxid|32630  Adapter sequence
    CAAGCAGAAGACGGCATACGAGATCTTCGAGTGACTGGAGTTCCTTGGCACCCGAGAATTCCA
    
    $ kraken2-build --add-to-library chr1.fa --db $DBNAME
    
    # 添加完成后需要构建数据库,建立索引
    raken2-build --build --db $DBNAME
    

分类

$ kraken2 --db /tmp/db/ --threads 40 --memory-mapping --quick --report report.txt --output out.txt seqs.fa

kraken2 参数选项:

  • Multithreading: --threads NUM线程数

  • Quick operation: 与搜索序列中所有的 l-mers不同,在第一个数据库命中后即停止分类; 使用 --quick 启用此模式。

  • Hit group threshold:选项 --minimum-hit-groups 将允许您在声明分类序列之前找到多个命中组(一组重叠的 k-mer,它们共享在哈希表中找到的公共最小化器),这可以 在测试序列是否属于特定基因组时,对自定义数据库特别有用。

  • Sequence filtering: 分类或未分类的序列可以发送到文件以供以后处理,分别使用 --classified-out--unclassified-out 选项。

  • Output redirection: 可以使用标准 shell 重定向(| 或 >)或使用 --output 来定向输出。

  • Compressed input: Kraken 2 可以通过指定 --gzip-compressed--bzip2-compressed 的正确开关来处理 gzip 和 bzip2 压缩文件作为输入。

  • Input format auto-detection:如果在命令行上指定常规文件(即不是管道或设备文件)作为输入,Kraken2 将尝试在分类之前确定输入的格式。 您可以通过显式指定 --gzip-compressed--bzip2-compressed 来禁用此功能。

  • Paired reads: Kraken 2 无需在读取之间使用“N”字符将配对连接在一起,而是能够在识别配对信息的同时单独处理配对。 对 kraken2 使用 --paired 选项将向 kraken2 指示提供的输入文件是成对的读取数据,并且将从成对的文件中同时读取数据。

    --paired 的使用也会影响 --classified-out--unclassified-out 选项; 用户应该在提供给这些选项的文件名中提供一个 # 字符,它将被 kraken2 替换为 "_1" 和 "_2" ,并适当地分布在两个文件中。 例如:

    kraken2 --paired --classified-out cseqs#.fq seqs_1.fq seqs_2.fq
    
    将分类对中的第一个读取放入 cseqs_1.fq 中,并将这些对中的第二次读取放入 cseqs_2.fq 中。

注意事项

将数据库放在节点本地磁盘而非共享网络存储上,分类的运行速度会有比较大的提升。

参考:

https://github.com/DerrickWood/kraken2/wiki/Manual

https://hpc.nih.gov/apps/kraken.html

https://paleogenomics-tor-vergata.readthedocs.io/en/latest/4_Metagenomics_v2.html#kraken-2

https://www.jianshu.com/p/df3f923451f2

本文阅读量  次
本站总访问量  次