eggNOG 同源基因簇数据库 — 分层同源组与注释转移

一万二千余物种 / 一千六百个分类层级 / 每个组带 KEGG 与 GO

来源 https://eggnogdb.org/发布时间: 2026-10-29最后更新: 2026-10-29 阅读 7

信息速览

数据集名称eggNOG 同源基因簇数据库 — 分层同源组与注释转移
数据类型注释数据,序列数据,系统发育,多物种
规模不适用(以物种计数:现行版本一万二千五百三十五)
接入方式https://eggnogdb.org/
AI 就绪度

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:完整参考文献

  1. 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 结尾。
  2. 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 结尾。
  3. 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 结尾。
  4. 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 结尾。
  5. 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 结尾。
  6. eggNOG 现行站点,首页、统计页、下载页与文档页,https://eggnogdb.org/ ,2026 年 10 月访问。
  7. eggNOG 5.0 站点,首页与下载目录,http://eggnog5.embl.de/ ,2026 年 10 月访问。
  8. eggNOG 6.0 站点,首页与下载目录,http://eggnog6.embl.de/ ,2026 年 10 月访问。
  9. 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 — 共享标签:基因组学与多组学 / 变异与注释 / 蛋白质组学

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集