估计阅读时长: 14 分钟

酶的EC number(Enzyme Commission number)是国际生物化学与分子生物学学会(IUBMB)酶学委员会制定的酶分类与命名体系的核心标识符,自1961年首次发布以来,已成为酶学研究、数据库管理和生物技术应用的全球标准。这套由四位数字所构成的的层级编码系统不仅解决了早期酶命名混乱的问题,还通过系统化分类揭示了酶催化功能的内在逻辑,为酶学研究提供了统一的框架。

一、EC number的基本结构与层级含义

EC number作为酶学研究的标准化分类体系,通过四位数字的层级结构清晰地表征了酶的催化功能。第一位数字定义酶催化的大类反应(如氧化还原、转移、水解等),第二位数字进一步细化反应类型,第三位数字限定底物或反应的具体特征,第四位数字为具体酶的顺序编号。这种分类体系不仅解决了酶命名混乱的问题,还为酶学研究、数据库管理和生物技术应用提供了统一框架。随着生物技术的发展,EC number的应用已从基础分类扩展到酶功能预测、代谢通路分析、药物开发和工业生物技术等多个领域。特别是2018年新增的EC7(转位酶)类,进一步完善了酶的分类体系,将跨膜转运酶纳入系统分类,为膜转运蛋白研究提供了更精确的工具。

EC number基于注册号中的四位数字,通过层级结构对酶进行系统分类,四位数字分别代表不同的分类层级,如下所示:

数字位置 层级名称 分类标准 示例解释
第一位 大类 催化的反应类型 EC3表示水解酶,催化水解反应
第二位 亚类 反应中的具体基团或化学键类型 EC3.4表示作用于肽键的水解酶
第三位 亚亚类 底物或反应对象的特定特征 EC3.4.11表示从多肽链N-末端水解的酶
第四位 具体酶类型 底物特异性或历史编号顺序 EC3.4.11.4表示从三肽链N-末端水解的酶

Enzymes are biological catalysts that speed up chemical reactions in living organisms. Scientists needed a way to organize the growing list of enzymes, leading to the creation of the Enzyme Commission (EC) number system. This system works like the Dewey Decimal System or the Library of Congress classification, but for enzymes. Each enzyme is assigned a unique four-part EC number based on the type of reaction it catalyzes.
https://bio.libretexts.org/Courses/Roosevelt_University/BCHM_355_455_Biochemistry_(Roosevelt_University)/06:_Enzyme_Thermodynamics/6.02:_Enzyme_Commission_Number

EC number的层级结构具有明确的生物化学意义,它不考虑酶的来源(如细菌、植物或动物)、结构或进化关系,而仅基于酶催化反应的类型进行分类。这意味着不同生物体内的同功能酶即使结构不同,也拥有相同的EC number,而同一生物体内的不同酶若催化相同反应,也共享同一EC number。

二、七大类酶的分类标准

到目前为止,生物活性酶的EC number中可以通过第一位数字将酶分为七大类,每类对应特定类型的催化反应,下面是一个这些大类别的总览表格:

大分类编号 类型 反应机制
1 氧化还原酶 催化氧化还原反应
2 转移酶 催化基团转移反应
3 水解酶 催化水解反应
4 裂合酶 催化非水解的键断裂或形成
5 异构酶 催化分子内结构转化
6 连接酶 依赖ATP形成化学键
7 跨膜转运酶 将代谢物或者离子从细胞膜的一端运输到另一端

针对上面所示的7中大类别功能信息,如果在vb.net语言中构建出这7大类别的酶的分类信息,可以通过下面的枚举类型来进行实现:

''' <summary>
''' The enzyme types enumeration.
''' </summary>
''' <remarks></remarks>
Public Enum EnzymeClasses

    ''' <summary>
    ''' no needs for enzyme catalysis
    ''' </summary>
    Spontaneous = 0

    ''' <summary>
    ''' Oxido Reductase.(氧化还原酶)
    ''' </summary>
    ''' <remarks></remarks>
    OxidoReductase = 1
    ''' <summary>
    ''' Transferase.(转移酶)
    ''' </summary>
    ''' <remarks></remarks>
    Transferase = 2
    ''' <summary>
    ''' Hydrolase.(水解酶)
    ''' </summary>
    ''' <remarks></remarks>
    Hydrolase = 3
    ''' <summary>
    ''' Lyase.(裂合酶)
    ''' </summary>
    ''' <remarks></remarks>
    Lyase = 4
    ''' <summary>
    ''' Isomerase.(异构酶)
    ''' </summary>
    ''' <remarks></remarks>
    Isomerase = 5
    ''' <summary>
    ''' Synthetase.(合成酶)
    ''' </summary>
    ''' <remarks></remarks>
    Synthetase = 6
    ''' <summary>
    ''' http://www.enzyme-database.org
    ''' </summary>
    Translocases = 7
End Enum

在上面的枚举代码中,我增加了一个值等于零的Spontaneous分类,这个分类的来源依据主要是是按照BRENDA(https://www.brenda-enzymes.org/index.php)酶学数据库中关于非酶促的自发反应的定义。对于在这个分类下的EC、
EC Number,只有0.0.0.0这个值。对于这个分类下的代谢反应,都是不需要酶来进行催化,就可以自行发生的自发反应。

1. 氧化还原酶类(EC1)

分类标准:催化底物的氧化还原反应,涉及电子、氢原子或氧原子的转移。
亚类细分规则:

  • 第二位数字表示转移的基团类型,例如:1.1(电子转移)、1.2(氢转移至受体)、1.3(脱氢)、1.4(氧转移至供体)、1.5(氧化)、1.6(脱卤素反应)
  • 第三位数字表示底物或反应的具体特征

实例:

  • EC1.1.1.1:酒精脱氢酶,催化乙醇与NAD⁺反应生成乙醛和NADH,转移电子
  • EC1.6.5.3:NADH脱氢酶,电子从NADH转移到辅酶Q,是线粒体呼吸链复合物I的核心组分
  • EC1.1.3.4:葡萄糖氧化酶,催化葡萄糖与氧反应生成葡萄糖酸和H₂O₂,用于血糖监测设备

2. 转移酶类(EC2)

分类标准:催化官能团从一个分子(供体)转移到另一个分子(受体)的反应。
亚类细分规则:

  • 第二位数字表示转移的官能团类型:2.1(甲基)、2.2(酰基)、2.3(氨基)、2.4(羧基)、2.5(磷酸基)、2.6(硫基)、2.7(焦磷酸基)等
  • 第三位数字表示受体分子类型

实例:

  • EC2.7.1.1:ATP:葡萄糖磷酸转移酶,催化ATP的磷酸基转移至葡萄糖,形成葡萄糖-6-磷酸和ADP,是糖酵解的关键酶
  • EC2.7.11.1:ATP:谷氨酸磷酸转移酶,催化ATP的磷酸基转移至谷氨酸,形成GTP和磷酸甘氨酸,参与能量代谢
  • EC2.4.2.2:谷氨酰胺合成酶,催化谷氨酸的酰胺基转移至氨,形成谷氨酰胺和谷氨酸-3-半胺酸,是氮代谢的关键酶

3. 水解酶类(EC3)

分类标准:催化水解反应,通过水分子使底物断裂生成两个产物。
亚类细分规则:

  • 第二位数字表示水解的化学键类型:3.1(酯键)、3.2(糖苷键)、3.3(醚键)、3.4(肽键)、3.5(C-N键,非肽键)、3.6(酸酐键)、3.7(C-C键)等
  • 第三位数字表示底物的具体结构特征

实例:

  • EC3.2.1.1:α-淀粉酶,催化淀粉中α-1,4-糖苷键的水解,生成葡萄糖和麦芽糖,用于食品工业
  • EC3.4.11.4:三肽胺基蛋白酶,催化三肽链N-末端的水解,生成氨基酸和二肽,参与蛋白质消化
  • EC3.1.1.388:脂肪酶,催化甘油三酯中酯键的水解,生成甘油和脂肪酸,用于洗涤剂生产

4. 裂合酶类(EC4)

分类标准:催化非水解途径的反应,移去底物中的某些基团形成双键或环,或催化逆反应。
亚类细分规则:

  • 第二位数字表示断裂的化学键类型:4.1(C-C键)、4.2(C-O键)、4.3(C-N键)、4.4(C-S键)、4.5(碳卤键)、4.6(P-O键)等
  • 第三位数字表示底物的具体结构特征

实例:

  • EC4.1.1.1:苹果酸脱羧酶,催化苹果酸的羧基脱羧,生成丙酮酸和CO₂,参与TCA循环
  • EC4.2.1.32:磷酸烯醇式丙酮酸羧激酶,催化磷酸烯醇式丙酮酸的磷酸基转移,生成草酰乙酸,参与糖异生
  • EC4.3.1.5:谷氨酸脱羧酶,催化谷氨酸的羧基脱羧,生成γ-氨基丁酸和CO₂,是神经系统中的重要酶

5. 异构酶类(EC5)

分类标准:催化分子内排列的重整,即异构化反应,不涉及底物与环境间的物质交换。
亚类细分规则:

  • 第二位数字表示异构化类型:5.1(消旋/差向异构)、5.2(顺反异构)、5.3(分子内氧化还原)、5.4(分子内基团转移)、5.5(分子内脱羧/加成)等
  • 第三位数字表示底物的具体结构特征

实例:

  • EC5.3.1.9:磷酸葡萄糖异构酶,催化葡萄糖-6-磷酸与果糖-6-磷酸间的异构化,转移酮基与醛基位置,参与糖酵解
  • EC5.4.2.1:磷酸甘油酸变位酶,催化3-磷酸甘油酸与2-磷酸甘油酸间的异构化,转移磷酸基团位置,参与糖酵解和血红蛋白氧合作用
  • EC5.1.1.1:苹果酸消旋酶,催化苹果酸的立体异构化,生成内消旋苹果酸,参与苹果酸-天冬氨酸穿梭

6. 连接酶类(EC6)

分类标准:催化两个分子连接成一个分子,同时分解ATP等高能化合物提供能量。
亚类细分规则:

  • 第二位数字表示形成的化学键类型:6.1(C-O键)、6.2(C-S键)、6.3(C-N键)、6.4(C-C键)、6.5(磷酸二酯键)等
  • 第三位数字表示连接的具体机制或底物特征

实例:

  • EC6.5.1.1:DNA连接酶,催化DNA链间磷酸二酯键的形成,连接DNA片段,用于分子克隆
  • EC6.5.1.3:RNA连接酶,催化RNA链间磷酸二酯键的形成,用于RNA测序和基因编辑
  • EC6.3.4.1:谷氨酰胺合成酶,催化谷氨酸与氨连接,形成谷氨酰胺,是氮代谢的关键酶

7. 转位酶类(EC7)

分类标准:催化离子或分子从膜的一侧(side 1)转移到另一侧(side 2)的反应,2018年新增。
亚类细分规则:

  • 第二位数字表示底物类型:7.1(氢离子)、7.2(无机阳离子及其螯合物)、7.3(无机阴离子)、7.4(氨基酸和肽)、7.5(糖及其衍生物)、7.6(其他化合物)
  • 第三位数字表示转运的驱动力来源:7.x.1(氧化还原偶联)、7.x.2(ATP水解偶联)、7.x.3(焦磷酸水解偶联)、7.x.4(脱羧偶联)

实例:

  • EC7.7.1.1:ATP合酶,催化ADP与磷酸连接成ATP,同时驱动质子跨膜转运,是线粒体氧化磷酸化的关键酶
  • EC7.3.1.3:Na⁺/K⁺-ATP酶,催化Na⁺和K⁺的跨膜转运,同时水解ATP提供能量,维持细胞膜电化学梯度
  • EC7.5.1.1:葡萄糖转运蛋白,催化葡萄糖的跨膜转运,参与细胞能量供应

三、VB.NET代码处理EC Number

按照上面7大分类的生物学功能定义,以及观察EC Number的字符串模式,我们可以构建出下面的EC Number数据结构,用来处理与代谢酶比较,查询和分析的数据对象:

''' <summary>
''' Enzyme Commission Number
''' </summary>
''' <remarks>EC-6.1.1.10</remarks>
Public Class ECNumber

    ''' <summary>
    ''' EC编号里面的第一个数字代表酶的分类号
    ''' </summary>
    ''' <remarks></remarks>
    <XmlAttribute> Public Property type As EnzymeClasses

    ''' <summary>
    ''' 该大类之下的亚分类
    ''' </summary>
    ''' <remarks>nothing means -</remarks>
    <XmlAttribute> Public Property subType As Integer
    ''' <summary>
    ''' 该亚类之下的小分类
    ''' </summary>
    ''' <remarks>nothing means -</remarks>
    <XmlAttribute> Public Property subCategory As Integer

    ''' <summary>
    ''' 该小分类之下的序号
    ''' </summary>
    ''' <remarks>nothing means -</remarks>
    <XmlAttribute> Public Property serialNumber As Integer

    ''' <summary>
    ''' generates the EC number in format like: x.x.x.x
    ''' </summary>
    ''' <returns></returns>
    Public ReadOnly Property ECNumberString As String
        Get
            Return New String() {
                CInt(type).ToString,
                If(subType <= 0, "-", subType.ToString),
                If(subCategory <= 0, "-", subCategory.ToString),
                If(serialNumber <= 0, "-", serialNumber.ToString)
            }.JoinBy(".")
        End Get
    End Property
End Class

我们在代码环境中构建出上面所示的ECNumber对象之后,可以通过ECNumberString属性值来重新得到对应的酶编号EC Number字符串。

EC Number字符串解析

已知,在上面的EC Number数据对象中,主要是通过4个属性字段来存储EC Number字符串中的4个字段值。第一个大分类的数字直接使用枚举类型来表示。当某一个数字等于零的时候,在生成EC Number字符串的时候,会使用-符号来表示。为了将EC Number字符串解析为上面的数据结构,我们在这里可以通过下面的函数代码来进行字符串数据的解析操作:

''' <summary>
''' ```
''' 1.2.3.4
''' 1.2.3.-
''' 1.2.-.-
''' ```
''' </summary>
Public Const PatternECNumber$ = "\d(\.((\d+)|[-])){0,3}"

Public Shared ReadOnly r As New Regex(PatternECNumber, RegexOptions.Compiled)

''' <summary>
''' 解析一个EC编号字符串,如果出现格式错误,则返回空值
''' </summary>
''' <param name="expr"></param>
''' <returns></returns>
Public Shared Function ValueParser(expr As String) As ECNumber
    If expr.StringEmpty(, True) Then
        Return Nothing
    Else
        Dim m As Match = r.Match(expr)

        ' 格式错误,没有找到相应的编号格式字符串
        If Not m.Success Then
            Call $"invalid EC_number to parse: {expr}".warning
            Return Nothing
        Else
            Return NumberParserInternal(m.Value, expr)
        End If
    End If
End Function

Private Shared Function NumberParserInternal(ec_num As String, expr As String) As ECNumber
    Dim tokens As String() = ec_num.Split("."c)

    If tokens.Length < 3 AndAlso Not expr.IsPattern("EC[-]" & PatternECNumber) Then
        Call $"probably none EC_number was parsed from expression: {expr}".warning
    End If

    Dim ecNum As New ECNumber With {
        .type = CInt(Val(tokens(0))),
        .subType = CInt(Val(tokens.ElementAtOrDefault(1))),
        .subCategory = CInt(Val(tokens.ElementAtOrDefault(2))),
        .serialNumber = CInt(Val(tokens.ElementAtOrDefault(3)))
    }

    If ecNum.type > 7 OrElse ecNum.type < 0 Then
        ' 格式错误
        Return Nothing
    Else
        Return ecNum
    End If
End Function

在上面的字符串解析函数代码中,主要是通过正则表达式将数字表达式提取出来,然后通过字符串切割函数按照小数点符号作为分隔符进行字符串切割为4各部分,最后将每一个切割出来的字符串部分转换为正整数即可。对于在EC Number中的通配符“-”,则是直接被解析为零。

查询帮助:判断EC Number之间的包含关系

在EC number中,符号-表示对该位置上的数字的任意匹配,在这里的数据结构中,对应的位上的数值零则是用于表示这种可以任意匹配的符号-。则按照这个规则,可以编写出下面的用于将其他的ec number和当前的ec number进行判断,判断目标ec number是否可以被包含在当前的ec number集合中或者目标ec number是否等价于当前的ec number的判断函数:

''' <summary>
''' Contains or equals
''' </summary>
''' <param name="ec"></param>
''' <returns></returns>
Public Function Contains(ec As ECNumber) As Boolean
    If ec Is Nothing Then
        Return False
    End If

    ' 第一级比较
    If type <> ec.type Then
        Return False
    End If

    ' 第二级比较
    ' 如果当前是0(通配符),则包含所有;如果不一致则False;一致则继续
    If subType = 0 Then
        Return True
    ElseIf subType <> ec.subType Then
        Return False
    End If

    ' 第三级比较
    If subCategory = 0 Then
        Return True
    ElseIf subCategory <> ec.subCategory Then
        Return False
    End If

    ' 第四级比较
    ' 如果当前是0(通配符),则包含所有
    If serialNumber = 0 Then
        Return True
        ' 如果当前不为0,必须相等才算包含
    ElseIf serialNumber <> ec.serialNumber Then
        Return False
    End If

    ' 全部匹配,返回 True
    Return True
End Function

在上面的这个匹配函数中,主要是基于通配符规则来完成匹配。当EC Number中的某一位数字示一个通配符的时候,则默认当前的EC Number会包含有该类别下的所有细分类的酶分类信息。

生成层级数据

最后,基于下面的两个函数可以对当前的EC Number对象生成位于4个层级上的编号数据,可以用于支持后续的数据建模分析:

Public Function HierarchicalECTerms() As IEnumerable(Of String)
    Return InternalHierarchicalECTerms.Distinct
End Function

Private Iterator Function InternalHierarchicalECTerms() As IEnumerable(Of String)
    Yield $"{CInt(type)}.-.-.-"
    Yield $"{CInt(type)}.{If(subType = 0, "-", subType)}.-.-"
    Yield $"{CInt(type)}.{If(subType = 0, "-", subType)}.{If(subCategory = 0, "-", subCategory)}.-"
    Yield $"{CInt(type)}.{If(subType = 0, "-", subType)}.{If(subCategory = 0, "-", subCategory)}.{If(serialNumber = 0, "-", serialNumber)}"
End Function
谢桂纲
Latest posts by 谢桂纲 (see all)

Attachments

One response

Leave a Reply

Your email address will not be published. Required fields are marked *

博客文章
February 2026
S M T W T F S
1234567
891011121314
15161718192021
22232425262728
  1. […] 在前面的一篇《基因组功能注释(EC Number)的向量化嵌入》博客文章中,针对所注释得到的微生物基因组代谢信息,进行基于TF-IDF的向量化嵌入之后。为了可视化向量化嵌入的效果,通过UMAP进行降维,然后基于降维的结果进行散点图可视化。通过散点图可视化可以发现向量化的嵌入结果可以比较好的将不同物种分类来源的微生物基因组区分开来。 […]

  2. […] 最近的工作中我需要按照之前的这篇博客文章《基因组功能注释(EC Number)的向量化嵌入》中所描述的流程,将好几十万个微生物基因组的功能蛋白进行酶编号的比对注释,然后基于注释结果进行向量化嵌入然后进行数据可视化。通过R#脚本对这些微生物基因组的蛋白fasta序列的提取操作,最终得到了一个大约是58GB的蛋白序列。然后将这个比较大型的蛋白序列比对到自己所收集到的ec number注释的蛋白序列参考数据库之上。 […]