EggNog-mapper本地化下载安装和使用超详细教程

EggNog-mapper本地化下载安装和使用超详细教程

该笔记写于2025年2月13日,请注意参考该教程的时效性



前言

EggNog数据库是以前的COG数据库的更新和完善,以前的COG数据库早就停止更新和维护了,这个具体我就不详细讲了,大家能看这个教程证明肯定是对相关内容有所了解的
这里就这样吧!


一、EggNog-mapper的安装

1、利用Conda安装方法:

这里我是利用Conda安装的(已测试可行)
安装之前请先新建conda的虚拟环境,这里不细谈
conda install -c bioconda -c conda-forge eggnog-mapper
另有其他的安装方法

2、以下内容复制自GitHub,未进行测试:

Pypi 版本:

pip install eggnog-mapper

GitHub 版本发布

https://github.com/eggnogdb/eggnog-mapper/releases

从以下链接下载最新版本的 eggnog - mapper:https://github.com/eggnogdb/eggnog-mapper/releases/latest解压.tar.gz 或.zip 文件。进入解压后的目录,通过以下方式安装依赖项:

  • 使用 setuptools:python setup.py install
  • 使用 pip:pip install -r requirements.txt
  • 使用 conda:conda install --file requirements.txt

克隆 GitHub 仓库

下载(克隆)仓库:git clone https://github.com/eggnogdb/eggnog-mapper.git进入仓库目录,可通过以下任意一种方式安装依赖项:

  • 使用 setuptools:python setup.py install
  • 使用 pip:pip install -r requirements.txt
  • 使用 conda:conda install --file requirements.txt

二、环境设置(以下为GitHub教程的翻译)

如果你想确保 eggNOG-mapper 使用的是随附的外部工具(如 Prodigal、HMMER、Diamond、MMseqs)二进制文件,将 emapper 脚本和二进制文件添加到你的环境变量或 PATH 变量中可能会有所帮助。例如,如果你的 eggnog-mapper 安装路径为 /home/user/eggnog-mapper

可以执行以下命令:

export PATH=/home/user/eggnog-mapper:/home/user/eggnog-mapper/eggnogmapper/bin:"$PATH"

此外,如果你想将 eggNOG-mapper 数据库存储在特定目录中,你可能希望创建一个环境变量,这样就无需在所有命令中都指定该目录。例如,使用 --data_dir 参数指定目录的功能可以通过环境变量来实现。

你可以这样设置环境变量:

export EGGNOG_DATA_DIR=/home/user/eggnog-mapper-data

下一步是下载 eggNOG-mapper 数据库,你可以运行以下脚本:(conda安装的直接使用以下命令,其他安装方式如果未按照上面方法设置环境变量请在执行时带上绝对路径)

download_eggnog_data.py

这将下载 eggNOG 注释数据库(以及分类群数据库),还有用于 Diamond 搜索的 eggNOG 蛋白质数据库。

如果既没有定义 EGGNOG_DATA_DIR 环境变量,在运行 download_eggnog_data.py 脚本时也没有使用 --data_dir 选项,那么该脚本会尝试将文件下载到 eggnog-mapper 目录下的 data/ 文件夹中。

请注意,Diamond 数据库是可选的。你可以选择进行 HMMER 或 MMseqs2 搜索,或者你可能希望创建特定分类范围的 Diamond 或 MMseqs2 数据库。要做到这一点,请查看 download_eggnog_data.py --help(用于下载 HMMER 数据库或完整的 Diamond 或 MMseqs2 数据库),并查看 create_dbs.py --help(用于创建特定分类群的 Diamond/MMseqs2 数据库)。此外,你可能希望下载 PFAM 数据库,以便能够使用 --pfam_realign realign--pfam_realign denovo 进行 PFAM 重新比对。

例如,download_eggnog_data.py 有以下一些选项:

  • P 标志:下载 PFAM 数据库时需要使用此标志。
  • M 标志:下载 MMseqs2 数据库时需要使用此标志。完整的 MMseqs2 数据库包含不属于任何 eggNOG 直系同源组(OG)的 eggNOG 蛋白质,而 Diamond 数据库仅包含属于某个 OG 的蛋白质。此外,请注意,不会提供 MMseqs2 索引。若要创建该索引,你可以使用命令 mmseqs createindex "$EGGNOG_DATA_DIR"/mmseqs tmp(更多详细信息请参阅 https://mmseqs.com/latest/userguide.pdf )。
  • H -d taxID 标志:下载给定分类单元 ID(taxID)的 HMMER 数据库时需要使用此标志(可在 http://eggnog5.embl.de/#/app/downloads 查看数据库列表)。

同样地,可以使用 create_dbs.py 脚本。例如,仅为细菌创建一个 Diamond 数据库,可使用以下命令:

create_dbs.py -m diamond --dbname bacteria --taxa Bacteria

这将在默认数据目录或环境变量 EGGNOG_DATA_DIR 指定的目录中创建一个 Diamond 数据库。该数据库可与 emapper.py --dmnd_db bacteria.dmnd 配合使用。请注意,首次使用 create_dbs.py 时,下载 eggNOG 蛋白质并创建 Diamond 或 MMseqs2 数据库需要一些时间。后续再次调用 create_dbs.py(指向由 EGGNOG_DATA_DIR、–data_dir 指定的同一数据目录,或默认目录)时,无需再次下载 eggnog5 蛋白质。如果不再创建更多数据库,可以删除这些蛋白质。如需更多信息,请查看 create_dbs.py --help

以下是我根据自己的需要进行的操作(大家可以借鉴这部分):

eggnog的数据库包含两个文件:可以直接执行download_eggnog_data.py 会自动下载这两文件

也可在下面两网址自己下载上传到服务器上

http://eggnogdb.embl.de/download/emapperdb-5.0.0/eggnog.db.gz

http://eggnogdb.embl.de/download/emapperdb-5.0.0/eggnog_proteins.dmnd.gz

然后我需要构建原核生物的数据库

原核生物包含了细菌和古菌,所以我执行:

create_dbs.py -m diamond --dbname prokaryotes --taxa Bacteria --taxa Archaea --data_dir /media/sutai/D/eggnog_data/prokaryotes/

-m diamond:指定创建 Diamond 数据库
--dbname prokaryotes:指定数据库的名称为 prokaryotes
--taxa Bacteria--taxa Archaea:指定目标分类群为细菌和古菌
--data_dir 指定下载的数据库的目录

然后,不知道为什么我的服务器连接不上网络,我看他是用wget进行下载的,可能需要科学上网。
然后我看下载的是这两个文件,于是通过本地的windows在网页上下载了这两文件
在这里插入图片描述
然后上传到了linux服务器上,执行create_dbs.py -m diamond --dbname prokaryotes --taxa Bacteria --taxa Archaea --data_dir /media/sutai/D/eggnog_data/prokaryotes/ 相同的命令,会提示文件已经存在,就能成功构建数据库了
在这里插入图片描述

三、EggNog-mapper的使用教程

1、基本用法

要启动一个注释任务,请提供一个包含查询序列的 FASTA 文件(-i 选项),指定一个项目名称,该名称将用作所有输出文件的前缀(-o 选项),然后运行 emapper.py

emapper.py -i FASTA_FILE_PROTEINS -o test

这个基本示例将运行搜索,并对那些与 eggNOG 蛋白序列匹配的查询序列进行功能注释。
emapper.py -i FASTA_FILE_PROTEINS -o test

2、一些常用使用组合

  • 使用 Diamond 在 blastx 模式下运行搜索和注释
    emapper.py -m diamond --itype CDS -i FASTA_FILE_NTS -o test
  • 使用 MMseqs 对输入的 CDS 进行翻译后运行搜索和注释,并将搜索和注释结果添加到现有的 GFF 文件的属性中(GFF 装饰),使用 GeneID 字段将 GFF 中的特征与注释结果关联
emapper.py -m mmseqs --itype CDS --translate -i FASTA_FILE_CDS -o test \
--decorate_gff MY_GFF_FILE --decorate_gff_ID_field GeneID
  • 对组装的 contigs 运行搜索和注释,使用 MMseqs2 的 “blastx” 命中进行基因预测:
emapper.py -m mmseqs --itype metagenome -i FASTA_FILE_NTS -o test
  • 对基因组运行搜索和注释,使用 Diamond 对 Prodigal 预测的蛋白进行搜索,并更改输出目录:
emapper.py -m diamond --itype genome --genepred prodigal \
-i FASTA_FILE_NTS -o test --output_dir /home/me/mydir
  • 使用基因组训练 Prodigal 进行基因预测:
emapper.py -m mmseqs --itype genome --genepred prodigal -i FASTA_FILE_NTS -o test \
--training_genome FASTA_FILE --training_file OUT_TRAIN_FILE
  • 进行分两步(搜索 + 注释)运行,使用 Diamond 的更敏感模式,并将注释数据库加载到内存中(-dbmem;需要约 44 GB 的空闲内存):
emapper.py -m diamond --sensmode more-sensitive --no_annot -i FASTA_FILE_PROTS -o test
emapper.py -m no_search --annotate_hits_table test.emapper.seed_orthologs -o test_annot_1 --dbmem
  • 重复注释步骤,使用特定分类群作为目标,并报告找到的一对一同源物:
emapper.py -m no_search --annotate_hits_table test.emapper.seed_orthologs -o test_annot_2 --dbmem \
--report_orthologs --target_orthologs one2one --target_taxa 72274,1123487
  • 使用 HMMER 搜索一个细菌蛋白数据库,使用当前目录作为临时文件目录,并使用一个 “scratch” 目录在与读取不同的硬盘上写输出。一旦 emapper.py 完成,scratch 目录中的输出文件将被移动到实际的输出目录中,scratch 目录将被删除:
emapper.py -m hmmer -d bact -i FASTA_FILE_PROTS -o test --scratch_dir /scratch/test --temp_dir .
  • 进行 Diamond 搜索,并在注释时也将查询序列重新比对到同源群组中找到的 PFAM 域:
emapper.py -i FASTA_FILE_PROTS -o test --pfam_realign realign
  • 进行 Diamond 搜索,并在注释时也将查询序列重新比对到整个 PFAM 数据库:
emapper.py -i FASTA_FILE_PROTS -o test --pfam_realign denovo
  • 进行 Diamond 搜索和注释,将检索注释的同源群组限制为细菌分类群:
emapper.py -i FASTA_FILE_PROTS -o test --tax_scope Bacteria
  • 进行 Diamond 搜索和注释,将检索注释的同源群组限制为预定义的分类范围(定义在文件中)针对细菌及其后代。与前一个示例的区别在于,这里使用的细菌文件包含一个分类群列表,而不仅仅是细菌。如果几个 OG 与范围相交,对于给定的蛋白质,最窄的范围将被用来将注释传递给查询:eggnogmapper/annotation/tax_scopes/bacteria:
emapper.py -i FASTA_FILE_PROTS -o test --tax_scope bacteria
  • 进行 Diamond 搜索和注释,将检索注释的同源群组限制为 Gammaproteobacteria 分类范围。此外,从这些 OG 中,强制在细菌级别检索注释:
emapper.py -i FASTA_FILE_PROTS -o test --tax_scope Gammaproteobacteria --tax_scope_mode Bacteria

3、emapper.py 参数说明

通用选项

  • --version
    显示版本信息并退出。
  • --list_taxa
    列出可用于同源群组(OGs)的分类学名称和 ID,并退出。这些是 --tax_scope--tax_scope_mode 的有效分类名称和 ID。

执行选项

  • --cpu NUM_CPU
    指定在可能的情况下使用的 CPU 数量(例如在 Diamond 和注释任务中)。设置为 -cpu 0 可以使用所有可用的 CPU。默认值为 1。
  • --resume
    恢复之前的 emapper 运行,跳过已存在的输出文件中的结果。
  • --override
    如果输出文件已存在,则覆盖它们。默认情况下,如果检测到冲突的文件,执行将被终止。
  • --mp_start_method [fork,spawn,forkserver]
    用于控制 Python 多进程的启动方法。如果在你的操作系统中多进程运行不正常,可以使用此选项。默认值为 spawn(自版本 2.1.6 起)。

输入数据选项

  • i FILE
    包含查询序列的输入 FASTA 文件(默认为蛋白质序列;参见 -itype-translate)。除非使用 -no_search,否则此选项是必需的。
  • -itype INPUT_TYPE
    输入文件中的序列类型。默认值为 proteins。所有 INPUT_TYPE 选项如下表所示:
INPUT_TYPE描述
proteins输入序列将直接用于搜索步骤
CDS输入序列将直接用于 Diamond 和 MMseqs2,它们将以 “blastx” 模式运行并报告最佳匹配,除非使用了 --translate,在这种情况下,输入序列将被翻译为蛋白质并以 “blastp” 模式进行搜索。对于 HMMER,输入的 CDS 始终被翻译为蛋白质(–translate 自动激活)
genome输入序列被视为染色体/contigs,将进行基因预测(参见 --genepred)
metagenome与 genome 相同,但 Prodigal 将以不同的模式运行(参见 --genepred prodigal)
  • --translate
    --itype CDS 时,输入序列将在搜索前被翻译为蛋白质。如果 --itype CDS--translate 同时使用,输入序列将被翻译为蛋白质,就像 --translate 自动激活一样。如果 --itype CDS--itype genome--itype metagenome 且未指定其他选项,则搜索将以 “blastx” 模式进行,并注释最佳匹配。请注意,这与使用 --translate--genepred 不同,后者可以注释每个查询的多个匹配。
  • --annotate_hits_table FILE
    注释 TSV 格式的表格,至少包含 4 个字段:查询、匹配、E 值、分数。通常,FILE 是之前 eggNOG-mapper 运行生成的 emapper.seed_orthologs 文件。如果使用 --no_search,则此选项是必需的。
  • -c FILE, --cache FILE
    包含序列的 MD5 校验和的注释文件。如果使用 -m cache,则此选项是必需的。
  • --data_dir DIR
    指定 eggNOG-mapper 数据库的路径。默认为 data/ 文件夹或由环境变量 EGGNOG_DATA_DIR 指定的文件夹。注释数据库必须始终位于此目录中,而 HMMER、Diamond 和 MMseqs2 数据库可以在使用 --database--dmnd_db--mmseqs_db 时位于不同的目录中。

基因预测选项

  • --genepred search|prodigal
    • 当使用 --itype genome--itype metagenome 时,将进行基因预测。有两种基因预测模式:
      • 默认模式是 search,这意味着将根据参数运行 Diamond 或 MMseqs2(取决于 m 参数)的 blastx 模式。目前,我们不推荐在完整基因组上使用 Diamond,除非组装较为碎片化和/或 contigs 不是非常大。对于组装的基因组,MMseqs2 比 Diamond 更快,对于大 contigs,MMseqs2 是推荐的选择。
      • 如果指定 prodigal,将使用 Prodigal 进行基因预测,并将 Prodigal 预测的蛋白用于后续的搜索和注释步骤。根据使用 --itype genome--itype metagenome,Prodigal 将以不同的模式运行。
  • --trans_table TRANS_TABLE_CODE
    • 用于改变 CDS 翻译和基因预测所使用的翻译表。这对应于 Diamond 的 --query-gencode、MMseqs2 的 --translation-table-g 和 Prodigal 的 --trans-table。通常,值是一个整数,对应于特定的翻译表(例如,NCBI 的翻译表)。当使用 --translate 时,此选项也适用于输入和输出序列。
  • --training_genome FASTA_FILE
    • 用于 Prodigal 训练模式的基因组的 FASTA 文件。需要 --itype genome--genepred prodigal。注意,只有当训练文件不存在时,才会运行训练。如果训练文件已经存在,将直接使用该文件进行基因预测,跳过训练。
  • --training_file FILE
    • Prodigal 创建和/或使用的训练文件。如果训练文件不存在,将使用训练基因组(--training_genome 选项)创建训练文件,然后立即使用该训练文件进行基因预测。如果训练文件已经存在,训练将被跳过,--training_genome 选项将被忽略,并使用现有的训练文件进行基因预测。
  • --allow_overlaps none|strand|diff_frame|all
    • 当使用 --genepred search--itype genome/metagenome 时,此选项控制是否注释重叠的 blastx 命中。默认情况下,将注释重叠命中中的最佳命中。如果设置为 none,将注释每个链上的最佳非重叠命中。如果设置为 diff_frame,将注释每个链上每个框架中的最佳非重叠命中。如果设置为 all,将注释所有命中。
  • --overlap_tol FLOAT
    • 重叠容忍度(0.0 - 1.0)。如果两个命中的重叠大小与命中长度的比值大于 overlap_tol,则认为这两个命中重叠。默认值为 0.0,即任何重叠都被视为重叠。相反,overlap_tol 1.0 表示其中一个命中必须完全重叠,才能认为这两个命中相互重叠。

搜索选项

  • m MODE
    • 指定输入查询将如何与 eggNOG 序列进行搜索。默认值为 diamond。所有 MODE 选项如下表所示:
INPUT_TYPE描述注意事项
diamond使用 Diamond 搜索 eggNOG 序列需要 -i FILE
hmmer使用 HMMER 搜索序列/HMM需要 -i FILE 和 -d DB_NAME
mmseqs使用 MMseqs2 搜索 eggNOG 序列需要 -i FILE
cache使用之前注释的文件(包含注释序列的 MD5 哈希)注释查询需要 -i FILE 和 -c FILE
no_search跳过搜索阶段。注释现有的 emapper.seed_orthologs 文件需要 --annotate_hits_table FILE,除非使用 --no_annot

搜索过滤通用选项

  • --pident FLOAT
    • 只报告达到或超过此百分比身份阈值(0.0 - 100.0)的比对。默认值为 None。如果 m hmmer,则无效。
  • --evalue FLOAT
    • 只报告达到或超过此 E 值阈值的比对。默认值为 0.001。
  • --score FLOAT
    • 只报告达到或超过此位分阈值的比对。默认值为 None
  • --query_cover FLOAT
    • 只报告达到或超过此查询覆盖分数阈值(0.0 - 100.0)的比对。默认值为 None。如果 m hmmer,则无效。
  • --subject_cover FLOAT
    • 只报告达到或超过此目标(eggNOG 序列)覆盖分数阈值(0.0 - 100.0)的比对。默认值为 None。如果 m hmmer,则无效。

Diamond 搜索选项

  • --dmnd_algo [auto, 0, 1, ctg]
    • Diamond 的 -algo 选项。当输入序列集较小时,使用此选项可以进行更快的搜索。默认值为 Diamond 的默认值(自版本 2.1.6 起)。
  • --dmnd_db FILE
    • 指定与 Diamond 兼容的数据库路径。用于指定与 data/EGGNOG_DATA_DIR-data_dir 不同的位置。
  • --sensmode DIAMOND_SENS_MODE
    • 可以是 defaultfastmid-sensitivesensitivemore-sensitivevery-sensitiveultra-sensitive。默认值为 sensitive(请确保检查您版本的默认值,运行 emapper.py --help)。
  • --dmnd_iterate [yes, no]
    • 激活/禁用 Diamond 的迭代搜索选项,从更快、更不敏感的模式,到 sensmode 指定的灵敏度。需要使用 Diamond 版本 >= 2.0.11。在版本 2.1.5 中使用 -iterate 激活。在版本 2.1.6 中默认激活;使用 -dmnd_iterate no 禁用。
  • --matrix MATRIX_NAME
    • 指定 Diamond 使用的替换矩阵,可选值为 BLOSUM62BLOSUM90BLOSUM80BLOSUM50BLOSUM45PAM250PAM70PAM30
  • --dmnd_frameshift INT
    • 控制 Diamond 的 -frameshift 选项。默认值为 Diamond 的默认值(禁用)。
  • --gapopen INT
    • Diamond 使用的缺口开启惩罚。默认值为 Diamond 的默认值。
  • --gapextend INT
    • Diamond 使用的缺口延伸惩罚。默认值为 Diamond 的默认值。
  • --block_size FLOAT
    • Diamond 的 b/--block-size 选项。默认值为 Diamond 的默认值。
  • --index_chunks INT
    • Diamond 的 c/--index-chunks 选项。默认值为 Diamond 的默认值。
  • --outfmt_short
    • Diamond 将仅在其输出中产生查询、主题、E 值和分数字段,seed_orthologs 文件也将仅包含这些字段。当不使用身份百分比、查询和目标覆盖阈值时,此选项可用于提高性能(更多信息,请参阅 Diamond 文档关于回溯的部分)。
  • --dmnd_ignore_warnings
    • Diamond 的 -ignore-warnings 选项。使用此选项可以避免 Diamond 因警告而停止执行(例如,当查询包含仅包含 ATGC 氨基酸的蛋白质时)。自版本 2.1.6 起可用。

MMseqs2 搜索选项

  • --mmseqs_db FILE
    • 指定与 MMseqs2 兼容的数据库路径。如果需要指定不同于 data/EGGNOG_DATA_DIR-data_dir 的位置,此选项非常有用。
  • --start_sens FLOAT
    • MMseqs2 迭代搜索的起始灵敏度。默认值为 3。
  • --sens_steps INT
    • MMseqs2 进行不同灵敏度的迭代搜索次数。默认值为 3。
  • --final_sens FLOAT
    • MMseqs2 迭代搜索的最终灵敏度。默认值为 7。
  • --mmseqs_sub_mat MMSEQS_SUB_MAT
    • 用于 MMseqs2 的 --sub-mat 选项的替换矩阵。默认值为 MMseqs2 使用的默认矩阵。

HMMER 搜索选项

  • -d DB_NAME, --database DB_NAME
    • 指定序列搜索的目标数据库。DB_NAME 应该是使用 download_eggnog_data.py -H -d taxID 下载的数据库名称,或者是加载在服务器上的此类数据库(例如,db.hmm:host:port;参见 hmm_server.py --help)。
  • --servers_list FILE
    • 包含远程 hmmpgmd 服务器列表的文件。文件中的每一行代表一个服务器,格式为 host:port。如果指定了 -servers_list,则会忽略 -database 选项中的 hostport
  • --qtype QUERY_TYPE
    • 输入数据的类型,可以是 hmmseq(序列)。
  • --dbtype DB_TYPE
    • 数据库中的数据类型,可以是 hmmdbseqdb
  • --usemem
    • 使用此选项将整个 HMMER 数据库加载到内存中。如果使用 -dbtype hmmdb,数据库必须是经过 hmmpress 处理的数据库。如果使用 -dbtype seqdb,数据库必须是使用 esl-reformat 创建的 HMMER 格式数据库。执行完毕后,数据库将从内存中卸载。注意,此选项与 -dbmem 不同,后者用于将注释数据库加载到内存中。
  • -p INT, --port INT
    • 设置 HMM 服务器时使用的端口号。也用于 -pfam_realign 模式。
  • --end_port PORT
    • 设置 HMM 服务器时使用的最后一个端口号。也用于 -pfam_realign 模式。
  • --num_servers INT
    • 使用 -usemem 时,指定要启动的服务器数量。默认情况下,仅使用 1 个服务器。注意,使用 -cpu 指定的 CPU 将在服务器和工作线程之间分配。也用于 -pfam_realign 模式。重要的是要考虑,对于每个服务器实例,HMM 数据库将被加载到内存中,因此随着服务器数量的增加,内存消耗也会增加。
  • --num_workers INT
    • 使用 -usemem 时,指定每个服务器要启动的工作线程数量。默认情况下,使用 -cpu 指定的 CPU 将在服务器和工作线程之间分配。也用于 -pfam_realign 模式。在我们的测试中,增加 -num_workers 并未达到预期的性能提升效果,需要增加 -num_servers 才能真正提高速度,尽管必须满足内存需求。然而,在其他系统、编译版本或 hmmpgmd 的版本中,情况可能有所不同。
  • --hmm_maxhits INT
    • 要报告的最大命中次数(设置为 0 以报告所有命中)。默认值为 1。
  • --report_no_hits
    • 是否将没有命中的查询包含在输出表中。
  • --hmm_maxseqlen INT
    • 忽略大于此长度的查询序列。默认值为 5000。
  • -Z FLOAT
    • phmmer/hmmscan 中使用的固定数据库大小,允许在不同数据库之间比较 E 值。默认值为 40,000,000。
  • --cut_ga
    • 在 HMMER 命令中添加 -cut_ga(例如,对于 Pfam 映射很有用)。更多信息请参阅 HMMER 文档。
  • --clean_overlaps CLEAN_OVERLAPS_MODE
    • 移除重叠的命中,仅保留 E 值最佳的命中。默认值为 none。在执行 hmmscan 类型搜索时(即数据库中包含域),使用 allclans 选项。在执行 hmmsearch 类型搜索时(即域是查询),使用 hmmsearch_allhmmsearch_clans 选项。clanshmmsearch_clans 选项仅对 Pfam 的命中/查询有效。

注释选项

  • --no_annot
    • 仅执行搜索阶段,跳过功能注释,仅报告种子同源物(生成 emapper.seed_orthologs 文件)。
  • --dbmem
    • 在检索注释之前,将整个 eggNOG SQLite 数据库加载到内存中。这需要约 44 GB 的可用 RAM,但可以显著提高注释速度。执行后,数据库将从内存中卸载。
  • --seed_ortholog_evalue FLOAT
    • 搜索种子 eggNOG 同源物时的最小 E 值阈值。没有显著种子同源物的查询将不会被注释。默认值为 0.001。
  • --seed_ortholog_score FLOAT
    • 搜索种子 eggNOG 同源物时的最小位分数阈值。没有显著种子同源物的查询将不会被注释。默认值为 60。
  • --tax_scope FILE|PREDEFINED_FILENAME|LIST_OF_TAXA|none
    • 固定用于注释的分类范围,因此仅使用特定谱系的物种事件进行功能转移。更具体地说,该列表与种子同源物的谱系(即种子同源物的 OGs 中的分类群)进行交集,结果谱系用于基于注释。请注意,没有与 -tax_scope 交集的种子同源物将被过滤掉,且不会被注释。可能的参数如下表所示。默认值为 auto,这是一个预定义的文件名。
tax_scope描述
centered 文本居中right-aligned 文本居右
FILE包含分类 ID 和/或分类名称列表的文件路径
PREDEFINED_FILENAME存储在 eggnogmapper/annotation/tax_scopes/ 中的文件名,包含分类 ID 和/或分类名称的列表。可用的选项有:auto(同义词 all)、auto_broad(同义词 all_broad)、all_narrow、archaea、bacteria、bacteria_broad、eukaryota、eukaryota_broad 和 prokaryota_broad
LIST_OF_TAXA以逗号分隔的分类 ID 和/或分类名称列表。例如,针对真核生物、古菌、细菌和根部:–tax_scope 2759,2157,2,1
none不根据分类范围过滤注释
  • --tax_scope_mode broadest|inner_broadest|inner_narrowest|narrowest|FILE|PREDEFINED_FILENAME|LIST_OF_TAXA
    • 控制从中检索注释的分类范围的第二层。如果 -tax_scope 作为过滤器,确定使用种子同源物的哪个分类级别(即哪个同源群组)来检索注释。默认值为 inner_narrowest。可能的参数如下表所示。
tax_scope_mode描述
broadest使用具有最广谱系的 OG
inner_broadest从与 --tax_scope 交集的 OG 中,使用具有最广谱系的 OG
inner_narrowest从与 --tax_scope 交集的 OG 中,使用具有最窄谱系的 OG
narrowest使用具有最窄谱系的 OG
FILE、PREDEFINED_FILENAME、LIST_OF_TAXA与 --tax_scope 接受的相同值,除了 none。如果使用此选项,OG 的分类群将首先与 --tax_scope 进行交集,以过滤掉超出分类范围的种子同源物。其次,OG 的分类群将与 --tax_scope 进行交集。从剩余的 OG 中,使用具有最窄谱系的 OG(如 inner_narrowest)。当我们希望过滤掉使用与注释不同的分类范围的查询时,这很有用。例如,我们希望仅注释在 Gammaproteobacteria 范围内的查询,但使用细菌级别的 OG 进行这些查询的注释:–tax_scope Gammaproteobacteria --tax_scope_mode Bacteria
  • --target_orthologs one2one|many2one|one2many|many2many|all
    • 定义应使用哪种类型的同源物(相对于种子同源物)进行功能转移。默认值为 all
  • --target_taxa all|LIST_OF_TAX_IDS
    • 用于注释的分类群的以逗号分隔的列表。请注意,此选项与由于 -tax_scope/-tax_scope_mode 选项选择的同源群组相互作用。首先,基于 -tax_scope/-tax_scope_mode 确定 OG 中的物种事件。然后,将从这些物种事件中找到的同源物转移注释:如果 -target_taxa all(默认),则从所有同源物中转移;如果指定了 -target_taxa LIST_OF_TAX_IDS,则仅从该列表中的分类群转移注释。
  • --excluded_taxa none|LIST_OF_TAX_IDS
    • -target_taxa 相反的行为。默认值为 none(不排除任何物种进行注释)。
  • --report_orthologs
    • 作为功能注释的第一步,eggNOG-mapper 确定每个查询的同源物,使用搜索阶段的种子同源物作为锚点或起始点。默认情况下,不会报告这些同源物的列表。使用此选项可以获取每个查询找到的同源物列表(生成 emapper.orthologs 文件)。
  • --go_evidence experimental|non-electronic|all
    • 定义应使用哪种类型的 GO 术语进行注释。experimental = 仅使用从实验证据推断的术语;non-electronic(默认)= 仅使用非电子策划的术语;all = 将检索所有 GO 术语。
  • --pfam_realign none|realign|denovo
    • 定义 PFAM 注释将如何执行。
    • none:将直接从同源物转移的 PFAM 列表报告。
    • realign:将同源物的 PFAM 重新比对到查询,并报告 PFAM 及其在查询中的位置。
    • denovo:每个查询将重新比对到整个 PFAM 数据库,并报告 PFAM 及其在查询中的位置。
  • --md5
    • 在注释输出文件中添加查询序列的 MD5 哈希值列。以这种方式创建的注释输出文件可以用作缓存文件(c CACHE_FILE)用于 --m cache 模式。

输出选项

  • --output,-o FILE_PREFIX
    • 输出文件的基本名称。
  • --output_dir DIR
    • 输出文件应写入的目录。默认为当前工作目录。
  • --scratch_dir DIR
    • 在临时的 scratch 目录中写入输出文件,完成后再将它们移动到最终的输出目录。在使用网络文件系统进行大规模计算时,可以加快速度。
  • --temp_dir DIR
    • 临时文件创建的位置。最好是本地磁盘。
  • --no_file_comments
    • 输出文件中不包含标题行或统计信息。
  • --decorate_gff no|yes|FILE
    • 创建/装饰 GFF 文件的选项,使用 emapper 命中和/或注释。默认值为 no
    • no:不进行 GFF 装饰。如果使用 Prodigal 进行基因预测,其 GFF 文件无论如何都会包含在输出文件中。如果运行基于 blastx 的基因预测(-genepred search),命中 CDS 的 GFF 文件无论如何都会包含在输出文件中。
    • yes:将创建一个新的 GFF 文件,并用命中和/或注释进行装饰。自 emapper 版本 2.1.7 起,这与基因预测期间创建的 GFF 文件不同。
    • FILE:将创建一个新的 GFF 文件,并将命中和/或注释添加到指定 FILE 中已存在的属性中。可以使用 -decorate_gff_ID_field 指定 GFF 属性(参见 -decorate_gff_ID_field)。自 emapper 版本 2.1.7 起,这与基因预测期间创建的 GFF 文件不同。
  • --decorate_gff_ID_field ID
    • 当使用 -decorate_gff FILE 时,用于链接 GFF 特征和注释结果的 GFF 属性的 ID 或名称。默认值为 ID
  • --excel
    • 注释也将以 Excel(.xlsx)格式输出。

输出格式

输出文件

  • Search hits (prefix.emapper.hits)
    • 从 HMMER、Diamond 或 MMseqs2 的搜索阶段得到的结果文件。
  • Seed orthologs (prefix.emapper.seed_orthologs)
    • 解析命中结果的文件。每一行将一个查询与一个种子同源物关联起来。无论使用哪种搜索工具,该文件的格式都相同,但可以是简短格式(4 个字段)或完整格式。
  • Annotations (prefix.emapper.annotations)
    • 注释阶段的结果文件。因此,每一行代表为给定查询报告的注释。
  • Excel (prefix.emapper.annotations.xlsx)
    • 以 .xlsx 格式保存的注释文件。仅在使用 -excel 选项时创建。
  • Orthologs (prefix.emapper.orthologs)
    • 每个查询找到的同源物列表文件。仅在使用 -report_orthologs 选项时创建。
  • Sequences of predicted CDS (prefix.emapper.genepred.fasta)
    • 预测的 CDS 序列的 FASTA 文件。当进行基因预测时,无论是使用 -itype genome 还是 -itype metagenome,都会生成此文件。
  • GFF of predicted CDS (prefix.emapper.gff)(仅限版本 2.1.5 和 2.1.6):
    • GFF(版本 3)文件,包含搜索和/或注释结果。参见 -decorate_gff
  • GFF of predicted CDS (prefix.emapper.genepred.gff)(仅限版本 2.1.7):
    • GFF(版本 3)文件,包含 Prodigal 或类似 blastx 搜索的基因预测结果。
  • GFF decorated with hits and/or annotations (prefix.emapper.decorated.gff)(仅限版本 2.1.7):
    • GFF(版本 3)文件,用命中和/或注释作为属性进行装饰。参见 -decorate_gff
  • Sequences without annotation (prefix.emapper.no_annotations.fasta)
    • 未找到现有注释的查询序列的 FASTA 文件(使用 m cache 模式)。此文件可以用作不使用缓存的另一个 eggNOG-mapper 运行的输入,尝试注释这些序列。
  • PFAM hits (prefix.emapper.pfam)
    • 识别的 PFAM 域的位置文件。仅在使用 -pfam_realign realign-pfam_realign denovo 时创建。

输出字段

所有文件都包含以制表符分隔的列或字段。

种子同源物文件

  • query
    • 查询序列的名称。
  • target
    • 目标序列,也称为“种子同源物”。这是在搜索阶段为给定查询找到的最佳命中对应的 eggNOG 序列,在注释阶段将用于检索用于注释转移的同源物。
  • e-value
    • 使用的搜索工具(默认为 Diamond,参见 m 选项)返回的 E 值。
  • bit-score
    • 使用的搜索工具返回的位分数。
  • pident
    • 查询和目标之间的相似性百分比。
  • qstart
    • 查询序列在比对中的起始位置。
  • qend
    • 查询序列在比对中的结束位置。
  • sstart
    • 目标序列(即“target”)在比对中的起始位置。
  • send
    • 目标序列在比对中的结束位置。
  • qcov
    • 查询序列长度中参与比对的部分所占的百分比。
  • scov
    • 目标序列长度中参与比对的部分所占的百分比。

当使用 Diamond 进行搜索时,可以使用 --outfmt_short 选项仅输出种子同源物文件的前 4 个字段(参见上述选项)。

注释文件

  • Search hit fields
    • query_name
      • 查询序列的名称。
    • seed_eggNOG_ortholog
      • 种子 eggNOG 同源物。
    • seed_ortholog_evalue
      • 种子同源物的 E 值。
    • seed_ortholog_score
      • 种子同源物的位分数。
  • Orthologous Groups fields
    • eggNOG_OGs
      • 为该查询识别的同源群组(OGs)列表,按谱系深度排序(从最广到最窄),以逗号分隔。注意,每个 OG 以以下格式表示:OG@tax_id|tax_name。
    • max_annot_lvl
      • 用于检索注释的最广 OG 的 tax_id|tax_name。
    • COG_cat
      • 具有有效 COG 类别的最窄 OG 的 COG 类别。
    • Description
      • 具有有效描述的最窄 OG 的描述。
  • Transferred annotations fields
    • Preferred_name
      • 优先名称。
    • GOs
      • 基因本体(GO)术语。
    • EC
      • 酶委员会(EC)编号。
    • KEGG_ko
      • KEGG 直系同源物(ko)。
    • KEGG_Pathway
      • KEGG 通路。
    • KEGG_Module
      • KEGG 模块。
    • KEGG_Reaction
      • KEGG 反应。
    • KEGG_rclass
      • KEGG 反应类别。
    • BRITE
      • KEGG BRITE 层级结构。
    • KEGG_TC
      • KEGG 运输分类(TC)。
    • CAZy
      • 碳水化合物活性酶(CAZy)数据库中的条目。
    • BiGG_Reaction
      • BiGG 反应。
    • PFAMs
      • PFAM 域。
    • md5
      • 查询序列的 MD5 哈希值(仅当使用 -md5 时)。
  • Orthologs file
    • query
      • 查询序列的名称。
    • orth_type
      • 此行中的同源物类型。参见 -target_orthologs
    • species
      • 同源物的以逗号分隔的列表。
      • 如果同源物后面有一个“*”,则表示该同源物用于将注释转移到查询序列。
  • HMMER hits file
    • query
      • 查询序列的名称。
    • hit
      • 命中序列(例如,PFAM 域)。
    • evalue
      • E 值。
    • sum_score
      • 总分数。
    • query length
      • 查询序列的长度。
    • HMM position "from"
      • HMM 位置的起始位置。
    • HMM position "to"
      • HMM 位置的结束位置。
    • Sequence position "from"
      • 序列位置的起始位置。
    • Sequence position "to"
      • 序列位置的结束位置。
    • query coverage
      • 查询序列的覆盖范围。
  • Diamond hits file
    • 依赖于 -outfmt_short。更多信息请参阅 Diamond 文档。
  • MMseqs2 hits file
    • 更多信息请参阅 MMseqs2 文档。

预测的 CDS 序列

如果使用搜索命中(Diamond 或 MMseqs2 的“blastx”命中)进行基因预测,序列标识符将包括找到 CDS 的原始序列的标识符,后面跟着一个下划线和一个数字,以区分来自同一原始序列的 CDS(例如,在 >query_seq 中找到的 CDS 将被命名为 >query_seq_1。第二个将被命名为 >query_seq_2,……)。如果使用 Prodigal 进行基因预测,此输出文件是 Prodigal 生成的文件(参阅 Prodigal 文档以了解输出格式)。

GFF

所有 eggNOG-mapper 属性都将以前缀“em_”开头。如果使用 Prodigal 进行基因预测并使用了 --decorate_gff no,此输出文件是 Prodigal 生成的文件(参阅 Prodigal 文档以了解更多信息)。

未注释的序列

与原始序列具有相同标识符的 FASTA 文件。

PFAM 命中

  • query_name
    • 查询序列的名称。
  • hit
    • 命中序列(即 PFAM 域)。
  • evalue
    • E 值。
  • sum_score
    • 总分数。
  • query_length
    • 查询序列的长度。
  • hmmfrom
    • HMM 位置的起始位置。
  • hmmto
    • HMM 位置的结束位置。
  • seqfrom
    • 序列位置的起始位置。
  • seqto
    • 序列位置的结束位置。
  • query_coverage
    • 查询序列的覆盖范围。

4、根据自己需要我的运行(大家可以参考这一部分)

我的是宏基因组数据,事先我已经利用Prodigal软件预测了组装后的contigs的CDS,然后我已经有蛋白和DNA序列,我这里使用DNA的序列进行注释

我的命令是:

emapper.py -i /media/sutai/I/LXD/marine/de_prodigal_orf/DNA/ERR599155.fasta -o /media/sutai/I/LXD/marine/eggnog_output/ERR599155_DNA --itype CDS --cpu 128 --dmnd_db /media/sutai/D/eggnog_data/prokaryotes/prokaryotes.dmnd -m diamond --data_dir /media/sutai/D/eggnog_data/prokaryotes

-i /media/sutai/I/LXD/marine/de_prodigal_orf/DNA/ERR599155.fasta 输入的目录文件

-o /media/sutai/I/LXD/marine/eggnog_output/ERR599155_DNA 输出文件的位置和前缀

--itype CDS 以CDS模式进行运行,会以blastx的模式与库中蛋白进行比对,即边翻译边比对,我对比过使用蛋白序列和DNA序列的注释结果,单条结果是完全一样的,但是使用DNA序列能够比对注释的更多(即假如我有10000条序列,使用它们的蛋白序列,其中9000条能被注释,使用DNA能有9100条序列被注释)

--cpu 128 使用线程数量,加快运行速度

--dmnd_db /media/sutai/D/eggnog_data/prokaryotes/prokaryotes.dmnd 我之前构建的原核生物的数据库

-m diamond 搜索比对阶段使用diamond模式,默认也是这个模式

--data_dir /media/sutai/D/eggnog_data/prokaryotes eggnog数据库的位置,我之前下在这个位置的,并且没有设置环境变量,所以每次使用的时候需要加上

构建批量运行shell脚本命令:

#!/bin/bash

# 定义输入和输出目录
input_dir="/media/sutai/I/LXD/marine/de_prodigal_orf/DNA"
output_dir="/media/sutai/I/LXD/marine/eggnog_output"
dmnd_db="/media/sutai/D/eggnog_data/prokaryotes/prokaryotes.dmnd"
data_dir="/media/sutai/D/eggnog_data/prokaryotes"

# 检查输出目录是否存在,不存在则创建
mkdir -p "$output_dir"

# 遍历输入目录中的所有.fasta文件
for file in "$input_dir"/*.fasta; do
    if [[ -f "$file" ]]; then
        # 获取文件名(不包含路径)
        filename=$(basename "$file" .fasta)
        
        # 定义输出路径
        output_path="$output_dir/${filename}_DNA"
        
        # 运行emapper.py命令
        echo "Processing $file..."
        emapper.py -i "$file" -o "$output_path" --itype CDS --cpu 200 --dmnd_db "$dmnd_db" -m diamond --data_dir "$data_dir"
        
        echo "Completed processing $file"
    fi
done

echo "All files processed."
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值