该笔记写于2025年2月13日,请注意参考该教程的时效性
一、EggNog-mapper的安装
1、利用Conda安装方法:
这里我是利用Conda安装的(已测试可行)
conda install -c bioconda -c conda-forge eggnog-mapper
另有其他的安装方法
2、以下内容复制至GitHub,未进行测试:
Pypi 版本
pip install eggnog-mapper
GitHub 版本发布
从以下链接下载最新版本的 eggnog - mapper:github.com/eggnogdb/eg…解压.tar.gz 或.zip 文件。进入解压后的目录,通过以下方式安装依赖项:
- 使用 setuptools:python setup.py install
- 使用 pip:pip install -r requirements.txt
- 使用 conda:conda install --file requirements.txt
克隆 GitHub 仓库
下载(克隆)仓库:git clone github.com/eggnogdb/eg…进入仓库目录,可通过以下任意一种方式安装依赖项:
- 使用 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(更多详细信息请参阅 mmseqs.com/latest/user… )。H -d taxID标志:下载给定分类单元 ID(taxID)的 HMMER 数据库时需要使用此标志(可在 eggnog5.embl.de/#/app/downl… 查看数据库列表)。
同样地,可以使用 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 会自动下载这两文件
也可在下面两网址自己下载上传到服务器上
然后我需要构建原核生物的数据库
原核生物包含了细菌和古菌,所以我执行
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在网页上下载了这两文件
![[../Notion-图片/image 42.png|image 42.png]]
然后上传到了linux服务器上,执行create_dbs.py -m diamond --dbname prokaryotes --taxa Bacteria --taxa Archaea --data_dir /media/sutai/D/eggnog_data/prokaryotes/ 相同的命令,会提示文件已经存在,就能成功构建数据库了
![[../Notion-图片/image 1 3.png|image 1 3.png]]
三、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时,此选项也适用于输入和输出序列。
- 用于改变 CDS 翻译和基因预测所使用的翻译表。这对应于 Diamond 的
**--training_genome FASTA_FILE**:- 用于 Prodigal 训练模式的基因组的 FASTA 文件。需要
--itype genome和--genepred prodigal。注意,只有当训练文件不存在时,才会运行训练。如果训练文件已经存在,将直接使用该文件进行基因预测,跳过训练。
- 用于 Prodigal 训练模式的基因组的 FASTA 文件。需要
**--training_file FILE**:- Prodigal 创建和/或使用的训练文件。如果训练文件不存在,将使用训练基因组(
--training_genome选项)创建训练文件,然后立即使用该训练文件进行基因预测。如果训练文件已经存在,训练将被跳过,--training_genome选项将被忽略,并使用现有的训练文件进行基因预测。
- Prodigal 创建和/或使用的训练文件。如果训练文件不存在,将使用训练基因组(
**--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表示其中一个命中必须完全重叠,才能认为这两个命中相互重叠。
- 重叠容忍度(0.0 - 1.0)。如果两个命中的重叠大小与命中长度的比值大于
搜索选项
-
**m MODE**:- 指定输入查询将如何与 eggNOG 序列进行搜索。默认值为
diamond。所有MODE选项如下表所示:
MODE 描述 注意事项 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 - 指定输入查询将如何与 eggNOG 序列进行搜索。默认值为
搜索过滤通用选项
**--pident FLOAT**:- 只报告达到或超过此百分比身份阈值(0.0 - 100.0)的比对。默认值为
None。如果m hmmer,则无效。
- 只报告达到或超过此百分比身份阈值(0.0 - 100.0)的比对。默认值为
**--evalue FLOAT**:- 只报告达到或超过此 E 值阈值的比对。默认值为 0.001。
**--score FLOAT**:- 只报告达到或超过此位分阈值的比对。默认值为
None。
- 只报告达到或超过此位分阈值的比对。默认值为
**--query_cover FLOAT**:- 只报告达到或超过此查询覆盖分数阈值(0.0 - 100.0)的比对。默认值为
None。如果m hmmer,则无效。
- 只报告达到或超过此查询覆盖分数阈值(0.0 - 100.0)的比对。默认值为
**--subject_cover FLOAT**:- 只报告达到或超过此目标(eggNOG 序列)覆盖分数阈值(0.0 - 100.0)的比对。默认值为
None。如果m hmmer,则无效。
- 只报告达到或超过此目标(eggNOG 序列)覆盖分数阈值(0.0 - 100.0)的比对。默认值为
Diamond 搜索选项
**--dmnd_algo [auto, 0, 1, ctg]**:- Diamond 的
-algo选项。当输入序列集较小时,使用此选项可以进行更快的搜索。默认值为 Diamond 的默认值(自版本 2.1.6 起)。
- Diamond 的
**--dmnd_db FILE**:- 指定与 Diamond 兼容的数据库路径。用于指定与
data/、EGGNOG_DATA_DIR或-data_dir不同的位置。
- 指定与 Diamond 兼容的数据库路径。用于指定与
**--sensmode DIAMOND_SENS_MODE**:- 可以是
default、fast、mid-sensitive、sensitive、more-sensitive、very-sensitive或ultra-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禁用。
- 激活/禁用 Diamond 的迭代搜索选项,从更快、更不敏感的模式,到
**--matrix MATRIX_NAME**:- 指定 Diamond 使用的替换矩阵,可选值为
BLOSUM62、BLOSUM90、BLOSUM80、BLOSUM50、BLOSUM45、PAM250、PAM70、PAM30。
- 指定 Diamond 使用的替换矩阵,可选值为
**--dmnd_frameshift INT**:- 控制 Diamond 的
-frameshift选项。默认值为 Diamond 的默认值(禁用)。
- 控制 Diamond 的
**--gapopen INT**:- Diamond 使用的缺口开启惩罚。默认值为 Diamond 的默认值。
**--gapextend INT**:- Diamond 使用的缺口延伸惩罚。默认值为 Diamond 的默认值。
**--block_size FLOAT**:- Diamond 的
b/--block-size选项。默认值为 Diamond 的默认值。
- Diamond 的
**--index_chunks INT**:- Diamond 的
c/--index-chunks选项。默认值为 Diamond 的默认值。
- Diamond 的
**--outfmt_short**:- Diamond 将仅在其输出中产生查询、主题、E 值和分数字段,
seed_orthologs文件也将仅包含这些字段。当不使用身份百分比、查询和目标覆盖阈值时,此选项可用于提高性能(更多信息,请参阅 Diamond 文档关于回溯的部分)。
- Diamond 将仅在其输出中产生查询、主题、E 值和分数字段,
**--dmnd_ignore_warnings**:- Diamond 的
-ignore-warnings选项。使用此选项可以避免 Diamond 因警告而停止执行(例如,当查询包含仅包含 ATGC 氨基酸的蛋白质时)。自版本 2.1.6 起可用。
- Diamond 的
MMseqs2 搜索选项
**--mmseqs_db FILE**:- 指定与 MMseqs2 兼容的数据库路径。如果需要指定不同于
data/、EGGNOG_DATA_DIR或-data_dir的位置,此选项非常有用。
- 指定与 MMseqs2 兼容的数据库路径。如果需要指定不同于
**--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 使用的默认矩阵。
- 用于 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选项中的host和port。
- 包含远程
**--qtype QUERY_TYPE**:- 输入数据的类型,可以是
hmm或seq(序列)。
- 输入数据的类型,可以是
**--dbtype DB_TYPE**:- 数据库中的数据类型,可以是
hmmdb或seqdb。
- 数据库中的数据类型,可以是
**--usemem**:- 使用此选项将整个 HMMER 数据库加载到内存中。如果使用
-dbtype hmmdb,数据库必须是经过hmmpress处理的数据库。如果使用-dbtype seqdb,数据库必须是使用esl-reformat创建的 HMMER 格式数据库。执行完毕后,数据库将从内存中卸载。注意,此选项与-dbmem不同,后者用于将注释数据库加载到内存中。
- 使用此选项将整个 HMMER 数据库加载到内存中。如果使用
**-p INT, --port INT**:- 设置 HMM 服务器时使用的端口号。也用于
-pfam_realign模式。
- 设置 HMM 服务器时使用的端口号。也用于
**--end_port PORT**:- 设置 HMM 服务器时使用的最后一个端口号。也用于
-pfam_realign模式。
- 设置 HMM 服务器时使用的最后一个端口号。也用于
**--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 文档。
- 在 HMMER 命令中添加
**--clean_overlaps CLEAN_OVERLAPS_MODE**:- 移除重叠的命中,仅保留 E 值最佳的命中。默认值为
none。在执行hmmscan类型搜索时(即数据库中包含域),使用all和clans选项。在执行hmmsearch类型搜索时(即域是查询),使用hmmsearch_all和hmmsearch_clans选项。clans和hmmsearch_clans选项仅对 Pfam 的命中/查询有效。
- 移除重叠的命中,仅保留 E 值最佳的命中。默认值为
注释选项
-
**--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 描述 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 不根据分类范围过滤注释。 - 固定用于注释的分类范围,因此仅使用特定谱系的物种事件进行功能转移。更具体地说,该列表与种子同源物的谱系(即种子同源物的 OGs 中的分类群)进行交集,结果谱系用于基于注释。请注意,没有与
-
**--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文件)。
- 作为功能注释的第一步,eggNOG-mapper 确定每个查询的同源物,使用搜索阶段的种子同源物作为锚点或起始点。默认情况下,不会报告这些同源物的列表。使用此选项可以获取每个查询找到的同源物列表(生成
-
**--go_evidence experimental|non-electronic|all**:- 定义应使用哪种类型的 GO 术语进行注释。
experimental= 仅使用从实验证据推断的术语;non-electronic(默认)= 仅使用非电子策划的术语;all= 将检索所有 GO 术语。
- 定义应使用哪种类型的 GO 术语进行注释。
-
**--pfam_realign none|realign|denovo**:- 定义 PFAM 注释将如何执行。
none:将直接从同源物转移的 PFAM 列表报告。realign:将同源物的 PFAM 重新比对到查询,并报告 PFAM 及其在查询中的位置。denovo:每个查询将重新比对到整个 PFAM 数据库,并报告 PFAM 及其在查询中的位置。
-
**--md5**:- 在注释输出文件中添加查询序列的 MD5 哈希值列。以这种方式创建的注释输出文件可以用作缓存文件(
c CACHE_FILE)用于--m cache模式。
- 在注释输出文件中添加查询序列的 MD5 哈希值列。以这种方式创建的注释输出文件可以用作缓存文件(
输出选项
**--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 文件不同。
- 创建/装饰 GFF 文件的选项,使用 emapper 命中和/或注释。默认值为
**--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选项时创建。
- 以 .xlsx 格式保存的注释文件。仅在使用
**Orthologs (prefix.emapper.orthologs)**:- 每个查询找到的同源物列表文件。仅在使用
-report_orthologs选项时创建。
- 每个查询找到的同源物列表文件。仅在使用
**Sequences of predicted CDS (prefix.emapper.genepred.fasta)**:- 预测的 CDS 序列的 FASTA 文件。当进行基因预测时,无论是使用
-itype genome还是-itype metagenome,都会生成此文件。
- 预测的 CDS 序列的 FASTA 文件。当进行基因预测时,无论是使用
**GFF of predicted CDS (prefix.emapper.gff)**(仅限版本 2.1.5 和 2.1.6):- GFF(版本 3)文件,包含搜索和/或注释结果。参见
-decorate_gff。
- GFF(版本 3)文件,包含搜索和/或注释结果。参见
**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。
- GFF(版本 3)文件,用命中和/或注释作为属性进行装饰。参见
**Sequences without annotation (prefix.emapper.no_annotations.fasta)**:- 未找到现有注释的查询序列的 FASTA 文件(使用
m cache模式)。此文件可以用作不使用缓存的另一个 eggNOG-mapper 运行的输入,尝试注释这些序列。
- 未找到现有注释的查询序列的 FASTA 文件(使用
**PFAM hits (prefix.emapper.pfam)**:- 识别的 PFAM 域的位置文件。仅在使用
-pfam_realign realign或-pfam_realign denovo时创建。
- 识别的 PFAM 域的位置文件。仅在使用
输出字段
所有文件都包含以制表符分隔的列或字段。
种子同源物文件
**query**:- 查询序列的名称。
**target**:- 目标序列,也称为“种子同源物”。这是在搜索阶段为给定查询找到的最佳命中对应的 eggNOG 序列,在注释阶段将用于检索用于注释转移的同源物。
**e-value**:- 使用的搜索工具(默认为 Diamond,参见
m选项)返回的 E 值。
- 使用的搜索工具(默认为 Diamond,参见
**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时)。
- 查询序列的 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."
作者:Evil Autuman | Autuman Lab
微信公众号:Evil Autuman
更新时间:2026年1月