信息速览
eggNOG 全称「evolutionary genealogy of genes: Non-supervised Orthologous Groups」,是一个把不同物种的蛋白按共同祖先归堆、再给每一堆贴上功能标签的资源。它由欧洲分子生物学实验室托管,Bork 团队与 Huerta-Cepas 团队维护,2007 年起以「非监督」为名——分组不依赖人工写好的通路,而是让序列自己聚成家族。现行版本是 7.0,2026 年初发表于《核酸研究》数据库专刊,覆盖一万二千五百三十五个参考物种、五千九百三十万条蛋白,产出三百一十八万个同源组。
它与一般的注释库不同。注释库回答「这条序列是什么」,eggNOG 回答「这条序列与哪些物种的哪些序列同源,因此大概是什么」。顺序反过来,价值也在这里:它给出的不是一个孤立的标签,而是一组可以横向比较的对象,以及把这些对象串起来的树。一个功能项之所以能贴到一个新蛋白上,是因为它的同源成员里有人被实验做过。
支撑这一切的是层级。同源组不是平铺的簇,而是按分类学层级嵌套:物种层的组隶属于属层,属层隶属于科层,一路往上到超级界。同一个基因家族因此在每个层级都有一份「当时的版本」,越往上成员越多、分辨率越低,越往下越贴近具体物种。加上随组附送的 KEGG 直系同源号、GO 术语与系统发育树,它同时也是一份进化史的存档。配套的 eggNOG-mapper 则把这些组变成可用的注释工具。一屏速览见下表。
| 维度 | 内容 |
|---|---|
| 全称 | evolutionary genealogy of genes: Non-supervised Orthologous Groups |
| 维护方 | EMBL 海德堡,Bork 团队与 Huerta-Cepas 团队 |
| 现行版本 | 7.0,2026 年 1 月,《核酸研究》第 54 卷 D402 至 D408 页 |
| 物种范围 | 一万二千五百三十五個参考物种:细菌、古菌、真核 |
| 蛋白规模 | 五千九百三十万条 |
| 同源组规模 | 三百一十八万个,另有约一百一十万棵树 |
| 组织方式 | 按分类学层级嵌套的分层同源组,组名带分类单元编号 |
| 分类层级 | 6.0 在一千六百零一个层级上定义组;7.0 以结构域为起点重建 |
| 功能注释 | KEGG 直系同源号与通路、GO 术语、Pfam 与 SMART 结构域;5.0 另有 COG 功能类别 |
| 进化信息 | 每组建一棵系统发育树,标注物种形成与基因重复事件 |
| 下载格式 | TSV(gzip)、FASTA、Newick 树、分层压缩包;mapper 本地库为 SQLite |
| 配套工具 | eggNOG-mapper,稳定版 2.1.x,3.0 测试版面向 7.0 |
| 不包含 | 不做基因预测、注释非实验验证、无表达与表型数据、6.0 起不含病毒 |
| 许可 | 学术用途免费,无统一许可声明,商用需逐项确认 |
§1 它要解决的具体麻烦
1.1 同一个基因家族,在每篇文章里换一次名字
比较基因组学最日常的困扰不是算不出来,而是对不上号。人身上的一个基因叫 TP53,小鼠身上叫 Trp53,斑马鱼身上叫 tp53,果蝇身上叫 p53,到了酵母那里同源关系已经稀薄到只剩一个结构域还像。每条记录都有自己的数据库编号、自己的命名习惯、自己所属的那一套注释体系。想把它们放在一张表里比较,第一件事就是建立对应关系,而这件事没有便宜的自动化办法。
传统的替代方案是两两比对。拿一条序列去比对另一个物种的全部蛋白,取最好的那条,叫最佳命中。这个方法便宜、通用,但有一个众所周知的毛病:它分不清直系同源与旁系同源。一个基因在演化中复制过一次,两个拷贝都在同一个物种里,其中一个继续干原来的活,另一个改了行。最佳命中经常挑中改行的那一个,因为它的序列变得更像查询序列。于是注释就从「己糖激酶」被转移成了「己糖激酶样蛋白」,一步错,下游全错。
eggNOG 的思路是先把「谁与谁同源」这件事算成一张全局的分组表,再谈注释。分组用的是同一个标准、同一批物种、同一次计算,因此组与组之间可比。注释不是逐条转移,而是先在组内汇总,再由组转移到新序列。这个顺序上的差别,是它与其他注释库最根本的分野。
代价也随之而来。全局分组意味着每一版都要重算全部蛋白,计算量随物种数增长;组的边界由算法决定,不同算法给出的边界不同,因此跨版本的同源组编号无法直接对应。使用者拿到的是一个体系,而不是一堆可以随意拼接的零件。
1.2 三条常见的错误期待
| 常见期待 | 实际情况 |
|---|---|
| 以为它是一个功能注释库,查一条序列就能得到确定的功能 | 它给的是同源关系与由此转移的功能项,附带频率,不给确定结论 |
| 以为同源组是平铺的、一个家族只有一个编号 | 组按层级嵌套,同一家族在物种层与科层是两个不同的编号 |
| 以为组越大、编号越靠上,信息越全 | 越往上成员越多、分辨率越低,泛化到超级界的组往往只剩一个结构域还共享 |
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 一批蛋白该分成多少个家族 | 组表与家族表,两者可互相映射 | 够,这是它的主场 |
| 某个未知蛋白大概是什么 | 组内成员的功能项汇总,带频率 | 够做假设,不够做结论 |
| 一组同源基因的进化树 | 每组建一棵 Newick 树,标注重复事件 | 够看拓扑,不够做严格定年 |
| 某物种丢失了哪个保守基因 | 可按层级取单拷贝组,逐物种核对 | 够,这是官网提供的现成功能 |
| 一个基因在各物种的拷贝数分布 | 组内成员按物种计数 | 够,但要自己按分类单元汇总 |
| 基因表达、蛋白丰度、表型 | 无 | 不够,需另找资源 |
| 基因结构、启动子、可变剪接 | 无 | 不够 |
| 实验验证过的功能证据 | 无,只给来源数据库的策展结论 | 不够,需回原库查证据等级 |
1.4 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 刚做完一个细菌基因组,几千个蛋白等着注释 | 用 mapper 批量转移功能项,输出带置信度的表 | 先按置信度分层,高置信的直接用,低置信的回结构域库核对 |
| 想研究某个基因家族在真核中的扩张 | 取该家族在各层级的组,比较成员数随层级的变化 | 结合树上的重复事件节点,判断扩张发生在哪个分支 |
| 要做跨物种的比较,需要一组稳定的单拷贝基因 | 官网可按自定义层级筛单拷贝组 | 导出组表,与自己的物种清单取交集 |
| 写综述需要说清一个家族的定义边界 | 组表给出成员清单与结构域归属 | 引用时写清版本与分类单元,别只写组名 |
| 想找某个代谢通路的全部成员 | 按 KEGG 通路号反查组 | 注意通路覆盖依赖组内成员是否被策展过 |
| 要做蛋白语言模型的分组监督信号 | 组编号可作为软标签 | 必须按版本冻结,且剔除成员数过大的组 |
1.5 一句话判断
如果你要的是「一批序列该归成几堆、每堆大概干什么」,eggNOG 是目前覆盖面最广、层级最完整的选择之一;如果你要的是「这条序列的功能已被谁用什么实验证明」,它只能把你送到门口,证据还在原库里。
1.6 不适合谁:四条边界
第一,不适合把注释当结论的人。eggNOG 的功能项全部来自同源转移,来源是 KEGG、GO、UniProtKB 这些上游库的策展结果。一个组里三十个成员只有一个被实验表征过,其余二十九个的功能都是推出来的。组级频率能提示可信程度,但它衡量的是「多少成员带这一项」,不是「这一项有多可靠」。
第二,不适合需要基因结构的人。它输入的是蛋白序列,输出的是分组与注释,中间没有任何基因预测步骤。原核基因预测要另用 Prodigal 一类工具,真核的基因模型更复杂,不在它的范围内。mapper 虽然能接基因组输入并调用 Prodigal,但那是工具借来的能力,不是数据库的内容。
第三,不适合做表达或表型分析的人。库里没有任何测量值:没有转录组、没有蛋白丰度、没有 fitness、没有临床字段。它是关于「谁与谁同源」的资源,不是关于「什么时候、在哪里、有多少」的资源。
第四,不适合把组编号当通用主键的人。组名由家族名、分类单元号与一个后缀拼成,后缀的含义官方下载页未给说明。跨版本组名会变,跨分类层级组名也会变。要在系统之间传递身份,Pfam 的结构域编号比 eggNOG 的组名稳。
§2 数据构成与规格
2.1 三个版本,三套口径
当前能下载到的三个大版本口径差别很大,混着引用会出错。下表把官网与论文给出的关键数字并列。
| 项目 | 5.0 | 6.0 | 7.0 |
|---|---|---|---|
| 发布时间 | 2018 年建库,2019 年 1 月见刊 | 2022 年 11 月上线,2023 年 1 月见刊 | 2026 年 1 月见刊 |
| 文献 | 第 47 卷 D309 至 D314 | 第 51 卷 D389 至 D394 | 第 54 卷 D402 至 D408 |
| 物种数 | 五千零九十個生物 | 一万二千五百三十五個参考物种 | 一万二千五百三十五個参考物种 |
| 物种构成 | 未在首页分列 | 细菌一万零七百五十六、古菌四百五十七、真核一千三百二十二 | 沿用同一批物种 |
| 病毒 | 单独收录二千五百零二个 | 摘要未列 | 摘要未列,仅称覆盖真核、细菌、古菌 |
| 蛋白数 | 未在首页给出 | 未在摘要给出 | 五千九百三十万条 |
| 同源组数 | 四百四十万 | 一千七百万以上 | 三百一十八万 |
| 分类层级数 | 按层级分目录下载 | 一千六百零一 | 未在摘要给出 |
| 主要注释源 | COG 类别、GO、KEGG、SMART、Pfam | KEGG、GO、UniProtKB、BiGG、CAZy、CARD、Pfam、SMART | KEGG 与 GO 在批量文件中公开,网站另给结构域信息 |
| 站点 | eggnog5.embl.de | eggnog6.embl.de | eggnogdb.org |
读这张表要抓住一件事:物种数在 6.0 与 7.0 之间没有变化,都是那一万二千五百三十五个参考物种;变的是分组的算法与组的数量。7.0 的组数只有 6.0 的五分之一左右,原因不是数据缩水,而是口径换了——6.0 把每个分类层级上的组分别计数并累加,7.0 改用一套以结构域为起点、层级自洽的流程,同一家族的层层重复不再各算一次,官方同时称这轮改动减少了单例、碎片与过大的组。
2.2 分层是它的骨架
理解 eggNOG 的关键在于理解「层级」这两个字。假设一个蛋白家族在细菌与真核里都存在。在物种层,人有一套拷贝,小鼠有一套拷贝,大肠杆菌有一套拷贝,各自成组;到了属层,人属的组把人与黑猩猩的成员并进来;再往上到科层、目层,成员继续合并;一直走到细菌与真核分开的那个节点,两边的组仍然是两个组,因为共同祖先之后各自演化。直到超级界之上,才可能出现一个把细菌与真核都包进去的组,而那类组通常只剩最保守的结构域还共享。
这个结构带来三个直接后果。
其一,同一个家族有多个编号。查一个人基因的同源组,得到的是物种层的组;想看他与斑马鱼的对应关系,要看硬骨鱼层或脊椎动物层的组。两个编号不同,成员不同,注释的频率也不同。论文里写组名而不写层级,等于没写。
其二,层级越往上,注释越可靠也越含糊。「能量代谢」这类在超级界层都成立的功能,几乎不会错,但对具体基因没有信息量。反过来,物种层的组注释精确,却常常建立在极少数成员的证据上。
其三,层级结构天然支持「单拷贝组」的筛选。所谓单拷贝组,是一个组在每个被考察的物种里恰好只有一个成员。这类组是做系统发育的常用材料,因为不需要处理旁系同源的歧义。官网在 6.0 起提供了按自定义层级筛单拷贝组的功能,7.0 延续了这一入口。
6.0 论文给出的层级数是 1,601。这个数字不是分类学的等级数(界门纲目科属种那一套只有七八级),而是被实际计算过的分类单元数——每一个有足够成员的节点都算一个层级,因此数量在千级。
2.3 一条同源组记录的完整解剖
7.0 的主表是一张 TSV,一行的样子大致如下。左侧是字段名,右侧是取值,取值中的分号表示并列项,竖线后的数字是该项在组内的频率。
og Oxidored_nitro@131567|u-6
protein_family Oxidored_nitro
cluster 131567
n_proteins 574
n_species 295
members taxid1.seq2,taxid2.seq2,(...)
KEGG_ko K02586|23.87;K02588|3.48
KEGG_symbol nifD|23.87;nifH|3.48
GO_slim GO:0071941|14.11;GO:0016192|0.35
组名的三段各有含义:@ 之前是家族名,本例取自一个与氧化还原酶相关的 Pfam 家族;@ 之后是分类单元编号,131567 在分类体系中代表「cellular organisms」,也就是细菌、古菌、真核的共同根节点之下那一层;竖线之后是一个短后缀,下载页未解释其构造规则。
成员清单里,每条蛋白用「分类单元号.序列号」的形式书写,这种写法让组装、物种、蛋白三者可以在一个字符串里自洽,代价是长度可观,几百个成员的行会非常宽。功能项后面的频率是最容易被误读的部分:K02586|23.87 表示组内有百分之二十三点八七的成员带有这个 KEGG 直系同源号。它不是置信度,也不是覆盖度,只是组内占比。
同一行还能读出生物学。K02586 与 K02588 分别对应 nifD 与 nifH,也就是固氮酶的钼铁蛋白 alpha 链与铁蛋白,二者在固氮体系中成对出现。这两项在组内只占两成上下,说明这个组里绝大多数成员并不参与固氮,只是共享同一个氧化还原酶结构域——这正是「组由结构域定义、功能只覆盖部分成员」的典型形态。
2.4 注释从哪几类来
组级注释不是 eggNOG 自己产生的,而是从上游库汇总后转移过来的。按功能类别分,大致是五类,各自的可信度与粒度不同。
| 类别 | 来源 | 粒度 | 在本库中的角色 |
|---|---|---|---|
| 直系同源号 | KEGG | 基因级,一个号对应一个功能 | 最常用于跨物种功能对应 |
| 通路与模块 | KEGG | 通路级,由多个号组成 | 用于把组放回代谢网络 |
| 基因本体 | GO | 术语级,三个本体分开 | 最常用于富集与功能概括 |
| 蛋白结构域 | Pfam、SMART | 结构域级,与家族边界直接相关 | 7.0 的分组起点就是 Pfam 家族 |
| 功能大类 | COG 与同源类别 | 二十六类,粗粒度 | 5.0 注释表中有此列,7.0 批量文件未列 |
| 其他策展项 | UniProtKB、CAZy、CARD、BiGG | 各自领域 | 6.0 起纳入注释源,覆盖酶、碳水化合物活性酶、抗性基因与反应 |
这套来源结构决定了它的注释风格:同一个组可能同时挂着「某激酶」「某通路成员」「某结构域」三种描述,三者不一定在同一个抽象层级上。做分析时要先选定一层,不要混用。
2.5 下载形态:TSV、FASTA、Newick、HMM、SQLite
数据分发的形态随版本变化,三个版本各有一套。
7.0 的下载页给七个文件,全部是文本,没有二进制容器。
| 文件 | 内容 | 形态 |
|---|---|---|
| e7.proteins.fa.gz | 全部蛋白序列 | FASTA |
| e7.og_fasta_sequences.tar | 按组切分的成员序列 | FASTA,一组一文件 |
| e7.og_info_kegg_go.tsv.gz | 组表与 KEGG、GO 注释 | TSV |
| e7.protein_families.tsv.gz | 家族表,含蛋白数、物种数、组数 | TSV |
| e7.clu2ogs.tsv.gz | 家族到组的映射 | TSV |
| e7.taxid_info.tsv.gz | 分类单元的新旧编号、学名、层级与谱系 | TSV |
| e7.trees.tsv.gz | 每个家族一棵树 | TSV,树以 Newick 字符串占一列 |
6.0 的分发更偏「关系表」,把层级、父子关系、成员、序列、注释拆成各自独立的表,另有体积很大的中间产物:全部原始树与比对打成一个一百三十六 GB 的文件,蛋白序列二十一 GB,功能谱与分类谱以 JSON 存放。它的设计意图是让下游能重建任意层级,代价是体量。
5.0 的分发按分类单元分目录,每个层级一个压缩包,包含注释表、成员表、统计、树、HMM 剖面、原始与修剪后的比对。细菌一层的 HMM 包接近二十 GB,压缩后仍有数 GB。这是三个版本里唯一以 HMM 剖面为主要交付物的形态,适合做基于剖面的搜索。
另有一条独立的下载线是 eggNOG-mapper 的本地库。它不是一个 TSV,而是一组为搜索优化的文件:一个约六 GB 的 SQLite 数据库存注释与分类,一个约五 GB 的 DIAMOND 索引存种子蛋白,另有 MMseqs2 索引、Pfam 剖面包与分类信息包。做批量注释时用的是这一套,而不是上面那些表。
2.6 它明确不包含什么
边界写得越清楚,误用越少。下表是使用前应逐条确认的排除项。
| 不包含 | 说明 |
|---|---|
| 基因预测 | 输入是蛋白序列,不产出基因模型、外显子边界或启动子 |
| 实验证据 | 功能项来自上游库的策展,本库不做证据分级,只给频率 |
| 表达与丰度 | 无转录组、蛋白组、代谢组任何测量值 |
| 表型与临床 | 无任何个体、样本、疾病或随访字段 |
| 序列变异 | 不给 SNP、不给等位基因频率 |
| 病毒(6.0 起) | 5.0 有独立病毒分区,6.0 与 7.0 的物种口径不含病毒 |
| 三维结构 | 无坐标文件,结构要另找结构库 |
| 分类学原始数据 | 只借用分类体系,不提供分类学修订的依据 |
| 逐条注释日志 | 不记录每个功能项由哪个成员、哪篇文献转移而来 |
最后一行的缺失最容易被低估。组级频率告诉你「多少成员带这一项」,但不告诉你「这些成员的功能是实验做的还是二手转移的」。要追到证据,只能拿着 KEGG 号或 GO 术语回原库查。
§3 它的身份:谁的库,对谁负责
3.1 名字的三层含义
eggNOG 这个名字有三层。字面上是「基因的进化谱系:非监督直系同源组」,前半句说方法(用进化关系定义同源),后半句说约束(分组不依赖人工通路,让序列自己聚)。日常使用中它就是数据库的名字。在代码与文件里,它是 eggnog,配套工具叫 eggnog-mapper,命令行入口是 emapper.py。
「非监督」三个字在早期是卖点,指分组不预设通路知识,避免把已知通路当成框架去套未知基因。到了 7.0,方法换成了以 Pfam 结构域为起点的系统发育流程,严格说已经不是纯粹的序列聚类,但名字沿用下来。名称与方法的这种错位,在引用时不必纠正,但要心里有数:不同版本的「非监督」含义不同。
3.2 维护方与托管
资源托管在欧洲分子生物学实验室,作者群长期稳定在 Bork 团队与 Huerta-Cepas 团队之间。这条线索解释了几件事:它与 STRING 共享作者群与部分基础设施,两者在蛋白标识与物种编号上有一致的约定;它对分类体系的选择偏保守,用的是通行的分类单元编号而非自建体系;它的发布节奏跟随《核酸研究》数据库专刊的年度周期,而不是随数据增长随时更新。
这也解释了另一件事:站点在 2025 年前后从 eggnog5.embl.de、eggnog6.embl.de 这类「版本号进域名」的形态,迁到了 eggnogdb.org 这个统一入口。旧域名仍然可用,但新版本只在新站。做自动化采集的流程要留意这条变化,硬的旧链接会在某次迁移后失效。
3.3 责任边界
| 责任对象 | 它承担的部分 | 它不承担的部分 |
|---|---|---|
| 上游功能库 | 如实汇总 KEGG、GO、Pfam 等库的策展结论 | 不核验这些结论本身是否成立 |
| 下游使用者 | 保证同一版本内分组标准一致、层级自洽 | 不保证跨版本编号可比,也不保证注释在你关心的分支上成立 |
| 分类学共同体 | 沿用通行的分类单元编号并公开谱系表 | 不参与分类学修订,不提供物种鉴定的依据 |
| 软件使用者 | 提供可复现的 mapper 与数据版本对应关系 | 不为第三方流程里的参数选择负责 |
一句话概括这条边界:它负责「把同源关系算清楚、把上游的注释搬过来」,不负责「判断这些注释对不对」。
3.4 三根轴:分类、序列、树
eggNOG 建立的坐标系有三根轴。
分类轴由分类单元编号定义。每个组挂在某一个编号上,编号可以沿谱系向上追溯。这根轴决定了组的边界:同一批序列,挂在属层与挂在科层,是两个不同的组。使用时要先确定「在哪个层级上说话」。
序列轴由蛋白标识定义。标识的写法是「分类单元号.序列号」,前缀保证跨物种唯一,后缀是原库的序列号。这根轴决定了成员的可追溯性:拿到一个成员标识,能立刻知道它属于哪个物种、在原库里叫什么。
树轴由每个家族的系统发育树定义。树上标注了物种形成与基因重复两类事件,是分组与注释的共同依据。这根轴决定了「为什么这个成员在这个组里」——因为在树上,它与组内其他成员最近的共同节点是一个物种形成节点,而不是重复节点。
三根轴合起来,构成一个可以被程序遍历的结构:给定一个蛋白,能找到它的组;给定一个组,能找到它的层级与父组;给定一个家族,能找到它的树与所有派生组。
§4 它的手艺:从聚类到系统发育
4.1 5.0 与 6.0:三角互击加聚类
5.0 与 6.0 的分组走的是两条彼此衔接的路线。第一步是找种子对应关系,用的是最佳互击的三角化:A 与 B 互为最佳命中,B 与 C 互为最佳命中,A 与 C 也互为最佳命中,三条边闭合,才认为这三条序列属于同一个直系同源关系。三角化能过滤掉大量单向最佳命中带来的假阳性,代价是计算量随物种数呈组合增长。
第二步是在此基础上聚类,得到各个分类层级上的同源组。6.0 把这一步做到了 1,601 个层级,并为每个组推断一棵树,用于标注物种形成与重复事件。第三层才是分层:把各层级的组合并按父子关系挂起来,形成一棵以组为节点的树。
这条路线的优点是可解释:每一层的组都能追溯到具体的聚类过程。缺点是它对多结构域蛋白不友好。一个蛋白同时带激酶结构域与 SH2 结构域,在整体聚类时只能被塞进一个组,于是它与两个家族的同源关系被强行压成一个。6.0 论文自己把「多结构域蛋白分类不准」列为待解问题之一。
4.2 7.0:以结构域为起点的系统发育流程
7.0 换了起点:先把序列按 Pfam 结构域切开,或者在没有已知结构域时用从头聚类分组,得到蛋白家族;再对每个家族做大范围多序列比对,推断系统发育树;最后在树上用一套容噪算法标注物种形成与基因重复,按事件位置切分出层级自洽、带进化时间的同源组。
这个流程有三处实质变化。其一,分组的单位从「整条蛋白」变成「结构域」,多结构域蛋白的不同部分可以分别归入不同的组,这正是 6.0 遗留问题的解法。其二,层级不再是「每个分类节点各自聚一次」,而是从一棵树上切出来,父子关系天然一致,不会出现下层组合不上上层组的情况。其三,组的数量大幅下降,因为同一家族的层层重复不再各算一次。
代价同样存在。以结构域为起点意味着没有已知结构域的蛋白只能靠从头聚类,那部分的分组稳定性弱于有 Pfam 归属的部分。另外,组的边界更依赖树的质量,树推断的参数一变,边界就跟着变。
4.3 注释转移为何不用最佳命中
eggNOG-mapper 的设计前提是:注释只从「精细同源」转移,不从最佳命中转移。所谓精细同源,是指在目标分类层级上确实属于同一组、且没有经过近期基因重复的那些成员。这样做的理由在 4.1 已经出现过——最佳命中容易挑中改行了的旁系同源。
实现上有几步。先把你的一条蛋白比对到种子蛋白集合,得到候选;再按种子所属的组与层级筛出可用的注释供体;然后把供体上的功能项按组汇总,取频率与置信度较高者;最后输出一条记录,附上每个字段的置信度标记。mapper 的稳定版用 DIAMOND 做种子搜索,可选 MMseqs2,结构域重比对用 HMMER;3.0 测试版把逐种子的分类上限改为自动推断,并只接受人工策展过的注释供体。
这条设计带来一个实用后果:mapper 的结果比直接比对更保守。覆盖度会低一些,但错标也少一些。对宏基因组这类以「大致知道是什么」为目标的场景,保守是优点;对「一个都不能漏」的场景,它就是缺点。
4.4 案例:一个固氮酶家族如何落成一个组
把 §2.3 的那条记录拆开看,能看清整套机制。家族名 Oxidored_nitro 指向一个与氧化还原相关的结构域家族,成员散布在细菌与古菌中,多数参与氮代谢,也有相当一部分只是共享结构域。
第一步,家族层。这个家族的全部成员先被聚在一起,得到一个蛋白家族记录,附带蛋白数、物种数与它派生出的组数。家族是分组的原料,不是最终产物。
第二步,树层。对这个家族做多序列比对并推断树,树上每一个内部分支要么对应一次物种形成,要么对应一次基因重复。容噪算法的作用是允许一定比例的歧义,避免因为个别长枝把整棵树切碎。
第三步,组层。按物种形成节点切分,得到挂在具体分类单元上的组。Oxidored_nitro@131567|u-6 就是其中之一,挂在「cellular organisms」这一层,含 574 条蛋白、295 个物种。同一家族的其他组会挂在细菌层、古菌层或更下的节点上,成员更少,边界更紧。
第四步,注释层。把组内成员各自携带的 KEGG 号、GO 术语汇总,按出现次数折算频率。固氮酶的两个亚基因此在组内只占两成上下,剩下八成成员的注释是别的氧化还原功能。
这个案例说明三件事:组不等于家族,一个家族可以派生多个组;组的注释是汇总值,不是共识值;频率低的功能项未必是噪声,可能正是这个家族里少数成员的真实分工。§4.4 的案例在后面的取数与使用章节会被再次引用。
4.5 单拷贝组与系统发育谱
两个由层级结构直接派生出来的功能,日常用得很多。
单拷贝组指在一个给定的物种集合里,每个物种恰好一个成员的组。它有三个用途:做系统发育时不需要处理旁系同源的歧义;做物种树与基因树的一致性检验时,单拷贝是最干净的材料;做比较基因组时,单拷贝组的缺失可以直接读成基因丢失。官网允许自定义层级来筛这类组,6.0 起还提供了导出功能。
系统发育谱指一个组在各物种中的有无或拷贝数分布,把分布按物种树的顺序排开,就得到一条谱。谱的形状能提示功能与生态的关联:只在极端环境物种里出现的组,往往与应激相关;在真核中普遍存在、在细菌中零散出现的组,往往是水平转移的结果。7.0 的网站把多组谱的并列查看做成了交互功能。
§5 取数:从网页到命令行
5.1 四条路径的取舍
| 路径 | 适合的人 | 代价 | 边界 |
|---|---|---|---|
| 网站检索 | 查单个基因或单个组 | 逐条点,不能批量 | 适合校对,不适合生产 |
| 批量下载 TSV | 要做全库统计的人 | 文件大,需自己建索引 | 最灵活,也最费事 |
| 按组下 FASTA | 只关心几十个家族的人 | 要先把组名查出来 | 省磁盘,不能做全局统计 |
| eggNOG-mapper | 要注释自己的序列的人 | 需下几十 GB 本地库 | 结果依赖数据库版本与参数 |
四条路径背后是同一批数据,区别在于「谁来承担整理成本」。网站上整理好了给你看,下载包里给你原料,mapper 给你一条流水线。
5.2 下载与筛选
主表是一张宽表,列的顺序官方有说明,但版本之间会变。稳妥的做法是先读表头,再按列名取,不要把列位置写死。§4.4 的案例里那条固氮酶组的记录,用下面几行就能从全表里取出来。
#-- 先看形状与列名,再决定取哪几列,避免把列位置写死
import pandas as pd
df = pd.read_csv("e7.og_info_kegg_go.tsv.gz", sep="\t", header=0, low_memory=False)
print(df.shape)
print(list(df.columns))
#-- 找出承载 KEGG 直系同源号的那一列,按号筛选
col = [c for c in df.columns if "KEGG" in c.upper()][0]
hit = df[df[col].astype(str).str.contains("K02586", na=False)]
print(hit.iloc[:5, :6])
筛选之后通常还要做两件事:按物种数卡阈值,去掉成员过少的组;按分类单元卡层级,只在关心的分支上统计。第二件事需要另一张表——分类学信息表给出每个编号的学名、层级与从根到该节点的谱系,用它可以把编号映射到「细菌」「变形菌门」这类可读的名字。
#-- 把组挂到可读的分类名称上
tax = pd.read_csv("e7.taxid_info.tsv.gz", sep="\t", header=0, low_memory=False)
print(list(tax.columns))
name_col = [c for c in tax.columns if "Sci" in c or "Name" in c][0]
id_col = [c for c in tax.columns if "Taxid" in c][0]
lookup = dict(zip(tax[id_col].astype(str), tax[name_col]))
print(lookup.get("131567"))
5.3 用自己的蛋白跑 mapper
如果手上是未收录物种的序列,或者只是想给一批新蛋白贴上功能项,走 mapper。
#-- 一、安装(需要 Python 3.9 以上,DIAMOND 等搜索工具需在 PATH 中)
pip install eggnog-mapper
#-- 二、下载本地库,约四十五 GB,视网络而定
download_eggnog_data.py -y --data_dir ./emdb
#-- 三、注释,四线程,输入为蛋白 FASTA
emapper.py -i my_proteins.fa -o run1 --data_dir ./emdb --cpu 4
输出的主文件是同名加 .emapper.annotations 后缀的 TSV。列的内容包括查询名、种子同源、期望值、得分、命中的组、注释所取的分类层级、COG 类别、描述、优先基因名、GO 术语、EC 号、KEGG 直系同源号、通路、模块、反应、BRITE 分类、CAZy 家族、BiGG 反应与 Pfam 结构域;3.0 起另加一列位置式的置信度标记,用单个字符逐字段标注高、中、低与未注释。
对使用者而言,最有用的三列是命中的组、注释层级与置信度。组告诉你它落进了哪个家族,层级告诉你这个注释是在多深的分类范围内成立的,置信度告诉你这个字段的来源可靠到什么程度。三者缺一,结论就容易写过头。
5.4 读树
树存在一张表里,一行的样子是一个家族的 Newick 字符串。它可以被任何支持 Newick 的库直接读入。
#-- 从树表里取一个家族的 Newick 串并解析
import pandas as pd
from io import StringIO
from Bio import Phylo
trees = pd.read_csv("e7.trees.tsv.gz", sep="\t", header=0, low_memory=False)
name_col = trees.columns[0]
newick_col = [c for c in trees.columns if "tree" in c.lower() or "newick" in c.lower()][0]
row = trees[trees[name_col].astype(str).str.contains("Oxidored_nitro", na=False)].iloc[0]
tree = Phylo.read(StringIO(row[newick_col]), "newick")
print(tree.count_terminals(), "个叶节点")
树上每个叶节点带物种编号,内部节点带事件标注。做组内一致性检查时,一个常用做法是看组内成员在树上是否构成单系——如果它们散落在多个分支,说明这个组是靠频率汇总硬拼出来的,注释要谨慎使用。
5.5 版本固定
三条实践建议,都与可复现有关。
其一,把版本写进文件名与脚本。三个大版本的分组完全不同,组名不能跨版对照。同一份代码隔一年重跑,如果读的是「最新」,结果会变。
其二,把 mapper 的数据库版本与代码版本一起记下来。mapper 的数据库按主次版本号组织,次版本升级意味着注释源变化,必须重新下载;补丁版本只改代码,可复用同一套数据。v3 与 v2 的数据库互不兼容,这一点在流水线里要显式检查。
其三,把「用了哪一层级」写进方法。同一个家族在物种层与科层的组名不同,注释频率也不同。只写「用 eggNOG 注释」而不写层级,等于没写。
§6 与库内词条的关系
6.1 关系图谱
eggNOG 在库内的位置,可以用「结构域库、同源库、通路库、互作库」四类来定位。它站在结构域库与通路库之间:向下依赖结构域划定边界,向上把通路号聚成组。
| 库内相关词条 | 与本词条的关系 | 一句话区隔 |
|---|---|---|
| Pfam | 上游,7.0 分组的起点 | Pfam 定义结构域边界,eggNOG 定义跨物种的同源组 |
| InterPro | 上游,结构域与家族的整合 | InterPro 给单条序列的结构域组成,eggNOG 给同源成员集合 |
| KEGG | 上游注释源,也是功能对应的落点 | KEGG 以通路与直系同源号组织,eggNOG 以物种与层级组织 |
| Gene Ontology | 上游注释源 | GO 是受控词表,eggNOG 是把词表贴到组上的中间层 |
| STRING | 同作者群的姊妹资源 | STRING 给蛋白关联网络,eggNOG 给同源分组,两者常串联使用 |
| CATH | 结构层面的分类 | CATH 按折叠分类,eggNOG 按进化分类,层次不同 |
| AlphaFold | 结构预测 | AlphaFold 给坐标,eggNOG 给同源关系,可配对做结构比对取样 |
| AlphaMissense | 变异效应预测 | 后者面向人类变异,eggNOG 面向跨物种同源,无重叠字段 |
用一句话概括这张表:Pfam 与 InterPro 回答「这条序列有哪些部件」,KEGG 与 GO 回答「这些部件干什么」,eggNOG 回答「不同物种的哪些部件是同一个部件的后代」。
6.2 检索路径
| 你的问题 | 该去哪个词条或入口 | 理由 |
|---|---|---|
| 一个未知蛋白大概是什么 | 本词条,或直接用 mapper | 走同源转移,比最佳命中稳 |
| 这个蛋白有哪些结构域 | Pfam 或 InterPro | eggNOG 只借用结构域做分组 |
| 这个组参与哪条通路 | KEGG 词条,用组里的直系同源号反查 | eggNOG 只给号,通路细节在原库 |
| 这个基因在哪些疾病里被报道 | 疾病类词条 | eggNOG 无疾病字段 |
| 这个蛋白与谁互作 | STRING 词条 | 同源不等于互作 |
| 这个家族的三维结构长什么样 | 结构库或 AlphaFold | eggNOG 无坐标 |
| 一组单拷贝基因做物种树 | 本词条,筛单拷贝组 | 这是层级结构的直接用法 |
6.3 与结构域库的区隔
最容易混淆的是 eggNOG 与 Pfam、InterPro 的关系,三者常被当成同一类资源。差别在组织单位。
| 对比项 | eggNOG | Pfam | InterPro |
|---|---|---|---|
| 组织单位 | 同源组,按分类层级嵌套 | 结构域家族 | 整合后的结构域与家族记录 |
| 输入 | 全库蛋白 | 单条序列或全库 | 单条序列 |
| 输出 | 组编号、成员、注释、树 | 结构域命中与边界 | 匹配结果与整合注释 |
| 是否含进化树 | 每组建树,标注重复事件 | 部分家族有 | 一般不提供 |
| 是否含跨物种分组 | 是,这是核心 | 否,家族不等于分组 | 否 |
| 主要用途 | 功能转移、比较基因组 | 结构域识别 | 统一的结构域注释 |
一句话记住:Pfam 回答「这一段像什么」,eggNOG 回答「这一条与谁同源、同源到哪一层」。
§7 质量评估与局限性
7.0 阅读本节前的一个前置校正
评估 eggNOG 时最容易犯的错,是拿评估实验数据库的尺子量它:问它注释准确率多少、有没有人工复核、证据等级怎么分。这些维度上它必然低分,因为它从设计上就不承担这些工作——它是同源关系的计算结果,注释是二手的。
正确的评估框架是三条:分组在方法上是否自洽,层级结构是否真的层层可追,注释汇总是否透明到能自己判断可信度。按这三条看,它的强项在结构,弱项在证据。下面每一处扣分都应理解为「取舍的代价」,而不是「没做好」。
7.1 五维评分
| 维度 | 分数 | 依据 |
|---|---|---|
| 覆盖广度 | 5 / 5 | 一万二千余参考物种,横跨细菌、古菌、真核三域 |
| 结构完整性 | 5 / 5 | 层级嵌套、父子可追、每组建树,这套结构在同类资源中少见 |
| 注释透明度 | 4 / 5 | 频率与来源库公开,扣分在不给逐条证据链与证据等级 |
| 版本稳定性 | 3 / 5 | 每次大版本重建分组,编号不延续,跨版对照要自己做映射 |
| 可复现性 | 4 / 5 | 数据与工具都可固定版本,扣分在站点迁移与链接变动 |
7.2 DAIMS 视角下的四条线
| DAIMS 线 | 表现 |
|---|---|
| 数据获取与处理 | 流程有论文描述,比对与树推断的参数公开在方法与补充材料中 |
| 数据建模 | 组为节点、层级为边的树模型,外加家族与组的两级映射,模型清晰 |
| 数据溯源 | 成员可追到物种与原库序列号;功能项只追到来源库,不追到具体文献 |
| 数据使用与治理 | 学术用途免费,无统一许可声明,商用需自行判定 |
四条线里最弱的是溯源的功能侧:能查到「这一项来自 KEGG」,查不到「KEGG 依据哪篇文献」。这不是 eggNOG 的失职,而是链条在这一层交给上游库了。
7.3 已知的、可枚举的偏差
第一,物种偏差。参考物种的选择决定了组的边界。同一批序列,如果参考集里多加十个近缘物种,某些组会被拆得更细。参考集是策展的结果,不是自然分布。
第二,结构域偏差。7.0 以 Pfam 为起点,意味着没有 Pfam 归属的蛋白只能靠从头聚类,分组质量弱一档。病毒、噬菌体、快速演化的寄生生物在这一层吃亏最多。
第三,注释传播偏差。功能项从少数被表征的成员扩散到整个组,扩散的范围由组边界决定。组越宽,扩散越远,误标的可能越大。频率能在一定程度上暴露这一点,但不能消除。
第四,层级偏差。上层组的注释天然更可靠也更含糊,下层组更精确也更依赖个别证据。使用者若只按「组名好听」挑层级,很容易在两层之间摇摆。
第五,版本偏差。每次大版本重建分组,旧组名消失、新组名出现。做时间序列或纵向比较时,若不显式建立跨版映射,会把「编号变了」读成「家族变了」。
7.4 外部验证
| 验证角度 | 证据 | 结论 |
|---|---|---|
| 与人工策展的功能组比对 | 7.0 论文以 KEGG 的人工策展功能组为基准,报告功能一致性优于旧版 | 分组改动在功能层面站得住 |
| 与最佳命中转移比较 | mapper 文档给出与 BLAST 及结构域扫描的对照基准 | 同源转移的精确度高于最佳命中 |
| 碎片与超大组 | 7.0 论文称单例、碎片与过大的组均有减少 | 组的大小分布更合理 |
| 长期可用性 | 2007 年起持续发布,站点与工具均在维护 | 停更风险低 |
| 跨库一致性 | 与 STRING 共享物种编号与蛋白标识约定 | 串联使用时对齐成本低 |
7.5 它为何能持续
一个同源分组资源能不能活下来,取决于两件事:重算的成本是否可控,以及结果是否被下游反复引用。eggNOG 在这两点上都成立。分组是纯计算,随算力扩张而扩张;结果是许多流程的默认输入——注释流水线、比较基因组、系统发育取样,都绕不开一份现成的同源分组。引用带来的惯性,反过来保证了每一版都有人愿意投入算力重算。
它的生存逻辑与策展型资源不同:不靠人工积累的稀缺性,靠「所有人都在用同一套坐标」的网络效应。这也解释了为什么它的方法可以整体换掉(从聚类换成系统发育),而资源本身不受影响——使用者要的是坐标,不是某一种算法。
§8 生态位与历史
8.1 时间线
| 时间 | 事件 |
|---|---|
| 2007 年 10 月 | 首篇论文发表,覆盖三百一十二个细菌、二十六个古菌、三十五个真核基因组,得四万三千五百八十二个粗粒度组 |
| 2012 年 | 3.0 版,站点仍可访问 |
| 2014 年 | 4.0 版,站点仍可访问 |
| 2016 年 | 4.5 版,扩大物种覆盖,加入分层同源组 |
| 2018 年 | 5.0 版建库,物种数到五千零九十,病毒单列二千五百零二 |
| 2019 年 1 月 | 5.0 论文见刊,《核酸研究》第 47 卷 |
| 2021 年 | eggNOG-mapper v2 论文发表,注释转移成为独立工具链 |
| 2022 年 11 月 | 6.0 版上线,物种数跃至一万二千五百三十五,层级数一千六百零一 |
| 2023 年 1 月 | 6.0 论文见刊,《核酸研究》第 51 卷 |
| 2025 年前后 | 站点迁至统一入口,版本号不再进域名 |
| 2026 年 1 月 | 7.0 论文见刊,《核酸研究》第 54 卷,方法论整体更换 |
从这条线能读出两次跃迁。第一次是 5.0 到 6.0,物种数翻了一倍多,层级数进入千级,资源从「模式生物的同源表」变成「全生命树的同源表」。第二次是 6.0 到 7.0,物种数不变,方法整体更换,资源从「聚类结果」变成「系统发育推断结果」。第一次是量的扩张,第二次是质的重构。
8.2 三代方法学
按方法分,eggNOG 走过三代。
第一代是双向最佳命中加三角化,用在 3.0 到 5.0。首篇论文就把方法写在标题下:先做 Smith-Waterman 比对,取互为最佳命中的序列,再做三角连接聚类,把闭环的三条边认作同一组。特点是便宜、可解释,但对多结构域蛋白与快速演化分支不友好。
第二代是聚类加分层重建,用在 6.0。特点是把层级做到了千级,代价是同一家族在每层各算一次,组数膨胀到千万级。
第三代是以结构域为起点的系统发育,用在 7.0。特点是把分组与树推断合成一步,层级自洽,代价是更依赖树的质量与计算资源。
三代方法的共同点是都要求全库重算。这与「增量更新」的资源不同:新加一个物种,理论上要重跑它所在分支的全部家族。这也解释了为什么它的更新周期以年计。
8.3 在 AI 时代的再定位
同源分组在近两年重新受到关注,原因与蛋白语言模型有关。训练一个蛋白模型,需要正负样本对;同源组天然提供正样本(同组)与负样本(异组),而且负样本的难度可以按层级调节——同科异属是难负样本,异域是易负样本。这种「难度可控」的监督信号,比随机采样有用得多。
另一条用法是注释的自动评估。模型预测的功能项,可以拿组内频率做一致性检验:预测结果与组内多数成员一致,说明模型学到了家族层面的规律;只与个别成员一致,可能是过拟合到罕见分支。
风险也随之而来。把组编号当标签训练,会把「组的边界由算法决定」这一事实带进模型;换一版数据,标签体系就变了,模型的可比性随之消失。要用这条路,必须把版本、层级与筛选规则一起冻结。
8.4 与策展资源的互补
有一种看法是同源分组终将被高质量的单条注释取代。这个判断在可预见的范围内不成立,因为两者回答的问题不同。单条注释回答「这一条是什么」,同源分组回答「这一条与谁同源、同源到哪一层」。前者可以没有后者,后者不能没有前者——组里的功能项本来就是从单条注释汇总来的。
两者的正确关系是上下游:用同源分组把注释扩散到未表征的成员,再用单条证据去校正扩散的结果。§4.4 的案例正是这条链条的缩影:一个家族的注释,八成来自汇总,两成来自证据。
§9 使用指引
9.1 三种角色的路径
做注释的团队路径最短:装 mapper,下本地库,跑一遍,按置信度分层使用。要点是先把数据库版本固定,再把结果里的注释层级读出来——同一条注释在门层成立与在种层成立,可信度差得远。
做比较基因组的研究者路径在中间:先确定要比较的物种集,按分类单元筛出单拷贝组,再逐组核对有无。要点是不要用物种层的组做跨科比较,那等于用最细的尺子量最粗的距离。
做算法与数据工程的人路径最重:要把组表、家族表、分类表、树表四张表建成一个可查询的结构。要点是把组名当复合键解析,而不是当不透明的字符串——@ 前是家族,@ 后是分类单元,两者分别对应另外两张表。
9.2 一条最短的可用流程
从零到一个能用的组表,四步。
#-- 一、取三个核心文件:组表、分类表、家族到组的映射
curl -O https://eggnogdb.org/public/eggnog7/e7.og_info_kegg_go.tsv.gz
curl -O https://eggnogdb.org/public/eggnog7/e7.taxid_info.tsv.gz
curl -O https://eggnogdb.org/public/eggnog7/e7.clu2ogs.tsv.gz
#-- 二、核对行数,确认下载完整
gzip -dc e7.og_info_kegg_go.tsv.gz | wc -l
gzip -dc e7.taxid_info.tsv.gz | wc -l
#-- 三、装依赖
pip install pandas
#-- 四、按物种数与分类单元筛出一张可用的子表
import pandas as pd
og = pd.read_csv("e7.og_info_kegg_go.tsv.gz", sep="\t", header=0, low_memory=False)
tax = pd.read_csv("e7.taxid_info.tsv.gz", sep="\t", header=0, low_memory=False)
n_sp = [c for c in og.columns if "species" in c.lower()][0]
og = og[pd.to_numeric(og[n_sp], errors="coerce").fillna(0) >= 4]
name = [c for c in tax.columns if "Sci" in c or "Name" in c][0]
tid = [c for c in tax.columns if "Taxid" in c][0]
og["tax_name"] = og.iloc[:, 2].astype(str).map(dict(zip(tax[tid].astype(str), tax[name])))
print(og.shape)
print(og["tax_name"].value_counts().head(10))
og.to_csv("og_filtered.tsv", sep="\t", index=False)
这段流程里每一步都有理由。卡物种数是为了去掉只有一两个成员的碎片组;映射分类名是为了让输出可读;存成新表是为了把这次筛选的规则固化下来。做完这三件,得到的表才谈得上可以复现。
9.3 引用方式
引用要写到三层。
第一层是版本论文。7.0 引用 2026 年《核酸研究》第 54 卷 D402 至 D408 页那篇;用 6.0 的数据就引 2023 年第 51 卷那篇;用 5.0 就引 2019 年第 47 卷那篇。三者不能混,因为分组不同。
第二层是工具论文。用了 mapper,要另引 2021 年《分子生物学与进化》上的 mapper v2 论文,以及所用的搜索工具(DIAMOND、MMseqs2、HMMER)各自的文献,用了基因预测还要加 Prodigal。
第三层是版本与层级。写清用的是哪一版、哪个分类层级、mapper 的数据库版本号。只写「用 eggNOG 注释」的表述,在方法学上是不可复现的。
§10 AI 使用声明
| 项目 | 说明 |
|---|---|
| 本页 AI 参与程度 | 由 AI 助手依据官方网站、下载目录与论文摘要起草,人工核对数字与结论 |
| 数字来源层级 | 见附录 B,官网与论文摘要为一级,下载目录的文件大小为二级 |
| 未核实项 | 组名后缀字母的含义官方未解释;7.0 的分类层级总数未在摘要给出 |
| 版本信息 | 以 2026 年 10 月读取的 eggnogdb.org、eggnog5.embl.de、eggnog6.embl.de 为准 |
| 已知不一致 | 6.0 与 7.0 的组数口径不同,不可直接相减;病毒收录在 5.0 与之后版本之间不一致 |
| 适用边界 | 本文描述数据集本身的结构、规模与边界,不评价具体研究结论 |
| 更新机制 | 按大版本发布,本文不承诺随版本同步刷新 |
常见误读(避坑清单)
| 常见说法 | 实际 | 证据 |
|---|---|---|
| 「eggNOG 就是一个功能注释库」 | 它是同源分组库,注释是分组的附属产物 | 官网首页只列物种、组与树三项规模,注释不在首页展示 |
| 「同源组是平铺的,一个家族一个号」 | 组按分类层级嵌套,同家族在不同层级各有编号 | 组名的写法是家族名加分类单元号,同一家族可在多个编号上出现 |
| 「6.0 的组比 7.0 多,说明数据缩水」 | 两版口径不同,6.0 按层级累加计数 | 6.0 摘要写明一千六百零一个层级,7.0 改为单一流程产出 |
| 「最高版本的物种最多」 | 6.0 与 7.0 都是同一批参考物种 | 两版摘要的物种数一致,变化的是分组方法 |
| 「它包含病毒」 | 5.0 单列病毒,6.0 起摘要只列三域 | 5.0 首页有病毒一栏,6.0 与 7.0 首页没有 |
| 「注释频率就是置信度」 | 频率是组内成员占比,不衡量证据强度 | 下载页字段说明把该列定义为成员计数比例 |
| 「可以用 GO 术语的频率判断功能是否保守」 | 频率同时受组成员构成与策展覆盖影响 | 组内多数成员可能根本没有被策展过 |
| 「组编号可以跨版本沿用」 | 每次大版本重建分组,编号不保证延续 | 三版下载文件的命名体系互不相同 |
| 「mapper 的输出可以直接写进结论」 | 输出带有置信度标记,低置信项需回原库核对 | mapper 文档说明逐字段标注置信度 |
| 「它会给基因预测结果」 | 输入是蛋白,不产出基因模型 | mapper 的基因组模式是调用 Prodigal,不是库自带 |
FAQ
Q1:eggNOG 现在的最新版本是哪个?
7.0。站点已从按版本号命名的域名迁到统一入口,论文为 2026 年《核酸研究》数据库专刊的 D402 至 D408 页。5.0 与 6.0 的旧站仍在,可以继续访问与下载,适合复现已发表的分析。
Q2:分层同源组与普通同源簇的区别到底在哪?
普通同源簇在一个固定的物种集上一次性聚类,簇与簇彼此独立,簇之上没有结构。分层同源组按分类学层级逐级定义,下层的组一定隶属于上层的组。因此同一个家族在物种层、属层、科层各有一份,可以顺着层级往上走,也可以从上往下拆。
Q3:它包含病毒吗?
5.0 单列了二千五百零二个病毒基因组,有独立的序列文件。6.0 起口径改为以参考物种计数,论文摘要只列细菌、古菌与真核三类。做病毒同源分析应回到 5.0 的病毒分区,或改用专门的病毒资源。
Q4:能不能用它给新基因组做注释?
可以,但要走 mapper。直接查库只对已收录的蛋白有效;mapper 先把序列比对到种子蛋白,再沿同源关系把功能项转移过来,并给每个字段打置信度。输入可以是蛋白、编码序列、基因组或宏基因组,后两者会调用基因预测。
Q5:组里的 GO 术语带数字是什么?
是该术语在组内成员中的出现比例。比例高说明多数成员都带这一项,比例低说明只有少数成员带。它不是打分,也不是概率,更不能直接当置信度。要判断可信度,还要看这些成员的功能项来自哪个上游库、有没有被策展过。
Q6:为什么 6.0 有一千七百万个组,7.0 只有三百多万?
统计口径不同。6.0 的组数跨一千六百零一个分类层级累加,同一家族每层各算一组;7.0 改用以结构域为起点的系统发育流程,层级自洽,不再层层重复计数。官方称这一改动减少了单例、碎片与过大的组。两个数字不能相减,也不能用来比较「信息量」。
Q7:COG 功能分类还在吗?
5.0 的注释表里有 COG 功能类别一列,做粗粒度功能概括很方便。7.0 的批量下载文件公开列出的是 KEGG 直系同源号与 GO 术语两类,COG 类别没有出现在这批文件里。要用 COG 类别,应说明用的是哪一版,或改用 NCBI 的 COG 资源。
Q8:数据能商用吗?
数据库以学术研究用途免费开放。站点与批量下载没有给出统一的许可声明,商用与再分发前应逐项确认。软件部分(mapper 与建站代码)遵循各自仓库的许可,与数据许可分开处理。这一点与其他 EMBL 托管的资源类似,不能默认「公开即自由使用」。
Q9:多久更新一次?
不按固定周期,按大版本发布。已确认的节点是 2012 年的 3.0、2014 年的 4.0、2016 年的 4.5、2018 至 2019 年的 5.0、2022 至 2023 年的 6.0、2026 年初的 7.0。每次大版本都重建分组,因此不适合当滚动更新的实时资源使用。
Q10:组编号能当基因家族的通用编号吗?
不宜。编号绑定版本与分类单元,跨版本会变,跨库更无法对应。要在论文里标家族,建议同时给 Pfam 的结构域编号作为稳定主键,eggNOG 的组号作为同源分组的补充信息。
术语表
| 术语 | 含义 |
|---|---|
| 直系同源 | 因物种形成而分开的同源基因,功能通常保守 |
| 旁系同源 | 因基因重复而分开的同源基因,功能可能分化 |
| 同源组 | 一组被认为源自共同祖先的蛋白,是 eggNOG 的基本单位 |
| 分层同源组 | 按分类学层级嵌套定义的同源组,上下层之间有隶属关系 |
| 分类单元 | 分类体系中的一个节点,用编号标识,如物种、属、科 |
| 单拷贝组 | 在每个被考察物种中恰好只有一个成员的组 |
| 系统发育谱 | 一个组在各物种中的有无或拷贝数分布 |
| 种子蛋白 | mapper 用来做首次比对的参考蛋白集合 |
| 注释转移 | 把已知成员的功能项赋给同组的未知成员 |
| 功能频率 | 某一功能项在组内成员中出现的比例 |
| 基因重复事件 | 演化史上的一次复制,在树上标为一个内部节点 |
| 物种形成事件 | 谱系分叉的节点,直系同源与旁系同源的分界 |
| COG | 保守同源组,早期的原核同源分类体系,附二十六类功能大类 |
| KEGG 直系同源号 | KEGG 给每个功能位点分配的唯一编号,前缀为 K |
| GO 术语 | 基因本体中的受控词,分生物过程、分子功能、细胞组分三支 |
| Pfam | 蛋白结构域家族库,7.0 分组的起点 |
| Newick | 用括号与逗号表示树结构的文本格式 |
| DIAMOND | 快速蛋白比对工具,mapper 默认的种子搜索后端 |
| SQLite | 单文件关系数据库,mapper 本地注释库的存储格式 |
| DAIMS | 数据档案与信息管理系统的一套评估框架,看采集、建模、溯源与治理四条线 |
附录 A:核心数字核对表
| 项 | 值 | 来源 | 来源层级 |
|---|---|---|---|
| 现行版本 | 7.0 | 官网首页 | 一级 |
| 7.0 物种数 | 一万二千五百三十五 | 论文摘要 | 一级 |
| 7.0 蛋白数 | 五千九百三十万 | 论文摘要 | 一级 |
| 7.0 同源组数 | 三百一十八万 | 论文摘要 | 一级 |
| 7.0 树数量 | 一百一十万以上 | 官网统计页 | 一级 |
| 6.0 同源组数 | 一千七百万以上 | 论文摘要 | 一级 |
| 6.0 分类层级数 | 一千六百零一 | 论文摘要 | 一级 |
| 6.0 物种构成 | 细菌一万零七百五十六、古菌四百五十七、真核一千三百二十二 | 论文摘要 | 一级 |
| 5.0 物种数 | 五千零九十 | 官网首页 | 一级 |
| 5.0 病毒数 | 二千五百零二 | 官网首页 | 一级 |
| 5.0 同源组数 | 四百四十万 | 官网首页 | 一级 |
| mapper 本地库体积 | 约四十五 GB | 工具文档 | 一级 |
| mapper 注释库(5.0.2) | 六 GB,SQLite | 下载目录 | 二级 |
| 6.0 树与比对合包 | 一百三十六 GB | 下载目录 | 二级 |
| 5.0 细菌层 HMM 包 | 十九 GB,未压缩 | 下载目录 | 二级 |
| 组名后缀含义 | 未核实 | 官方未解释 | 三级 |
附录 B:数字的来源分层
一级:官网与论文。 包括官网首页的三项规模、统计页的四项指标、各版本论文摘要里的物种构成与组数、mapper 文档里的数据库体积。本文所有版本号、物种数、组数、层级数与注释源清单均取自这一层。
二级:下载目录。 包括各版本文件的名称与体积、目录的时间戳、本地库的组成。这类数字反映的是某一时刻的分发状态,会随发布变化,只用于说明体量量级,不用于描述数据内容。
三级:未核实。 组名竖线后的后缀字母,官方下载页未给出构造规则;7.0 的分类层级总数未在摘要中出现;6.0 与 7.0 之间是否存在一一对应的组映射,官方未提供映射表。本文对这些项只描述现象,不下结论。
附录 C:完整参考文献
- Hernández-Plaza A, Deng Z, Robledo-Yagüe F, Szklarczyk D, von Mering C, Bork P, Huerta-Cepas J. eggNOG v7: phylogeny-based orthology predictions and functional annotations. Nucleic Acids Research, 2026, 54: D402–D408. 文献编号以 gkaf1249 结尾。
- Hernández-Plaza A, Szklarczyk D, Botas J, Cantalapiedra CP, Giner-Lamia J, Mende DR, Kirsch R, Rattei T, Letunic I, Jensen LJ, Bork P, von Mering C, Huerta-Cepas J. eggNOG 6.0: enabling comparative genomics across 12 535 organisms. Nucleic Acids Research, 2023, 51: D389–D394. 文献编号以 gkac1022 结尾。
- Huerta-Cepas J, Szklarczyk D, Heller D, Hernández-Plaza A, Forslund SK, Cook H, Mende DR, Letunic I, Rattei T, Jensen LJ, von Mering C, Bork P. eggNOG 5.0: a hierarchical, functionally and phylogenetically annotated orthology resource based on 5090 organisms and 2502 viruses. Nucleic Acids Research, 2019, 47: D309–D314. 文献编号以 gky1085 结尾。
- Jensen LJ, Julien P, Kuhn M, von Mering C, Muller J, Doerks T, Bork P. eggNOG: automated construction and annotation of orthologous groups of genes. Nucleic Acids Research, 2008, 36: D250–D254(2007 年 10 月在线发表). 文献编号以 gkm796 结尾。
- Cantalapiedra CP, Hernández-Plaza A, Letunic I, Bork P, Huerta-Cepas J. eggNOG-mapper v2: functional annotation, orthology assignments, and domain prediction at the metagenomic scale. Molecular Biology and Evolution, 2021. 文献编号以 msab293 结尾。
- eggNOG 现行站点,首页、统计页、下载页与文档页,https://eggnogdb.org/ ,2026 年 10 月访问。
- eggNOG 5.0 站点,首页与下载目录,http://eggnog5.embl.de/ ,2026 年 10 月访问。
- eggNOG 6.0 站点,首页与下载目录,http://eggnog6.embl.de/ ,2026 年 10 月访问。
- eggNOG-mapper 代码仓库与说明文档,https://github.com/eggnogdb/eggnog-mapper ,2026 年 10 月访问。
附录 D:如果只记五件事
第一,它是跨物种的同源分组资源,不是注释库;注释是同源分组的附属产物,全部来自上游库的转移。
第二,它的基本单位是同源组,组按分类学层级嵌套,同一家族在不同层级有不同编号,写组名必须带层级。
第三,现行 7.0 覆盖一万二千余物种、五千九百余万条蛋白,产出三百一十八万个组,方法是以结构域为起点的系统发育流程。
第四,6.0 与 7.0 的组数不能直接比,前者按层级累加计数,后者单流程产出;病毒只在 5.0 中单列。
第五,给新序列做注释要用 eggNOG-mapper,输出带逐字段置信度,低置信项必须回原库核对。
编辑说明
本篇的核验时间为 2026 年 10 月 29 日。核验方式为直接读取 eggnogdb.org 的首页、统计页与下载页,读取 eggnog5.embl.de 与 eggnog6.embl.de 的首页与下载目录,并对照三个版本论文的摘要与 eggNOG-mapper 仓库的说明文档。所有版本号、物种数、组数、层级数与注释源清单以官网与论文为一级依据;文件体积以下载目录的列表为二级依据,仅用于说明体量量级。
未覆盖的内容包括:组名竖线后后缀的构造规则(官方未解释)、7.0 的分类层级总数(摘要未给出)、6.0 与 7.0 之间组的对应关系(官方未提供映射)。病毒收录口径的跨版本差异在正文中已并列陈述,未作推断。
本页描述的只是数据集本身的结构、规模与边界,不涉及对任何具体研究结论的评价,也不构成使用建议的法律意见。数据许可需按官方页面逐项确认。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- varsite — 共享标签:基因组学与多组学 / 变异与注释 / 蛋白质组学
- vdjdb — 共享标签:基因组学与多组学 / 变异与注释 / 蛋白质组学
- imgt — 共享标签:基因组学与多组学 / 变异与注释 / 蛋白质组学
- dbcan-hgm — 共享标签:基因组学与多组学 / 变异与注释 / 蛋白质组学
- jpostdb — 共享标签:基因组学与多组学 / 变异与注释 / 蛋白质组学
- proteingym — 共享标签:基因组学与多组学 / 变异与注释 / 蛋白质组学
- igvf-catalog — 共享标签:基因组学与多组学 / 变异与注释
- clinmave — 共享标签:基因组学与多组学 / 变异与注释
- pfam — 共享标签:基因组学与多组学 / 变异与注释 / 蛋白质组学
- interpro — 共享标签:基因组学与多组学 / 变异与注释 / 蛋白质组学
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。
