cellml 是基于 xml 的开放标准语言,专用于精准表达生物数学模型的结构与数学关系,核心为组件(component)和连接(connection),支持任意微分代数方程组,适用于电生理等多物理场跨尺度建模。

CellML 是一种专为描述生物数学模型设计的、基于 XML 的开放标准语言,不是通用建模工具,也不是仿真引擎——它只负责「精准表达模型结构和数学关系」,把“谁依赖谁、变量怎么算、单位怎么定”用机器可读、人可审阅的方式写清楚。
它和 SBML 经常被一起提到,但定位不同:SBML 更聚焦生化反应网络(如酶促动力学、质量作用定律),而 CellML 更通用,支持任意微分代数方程组(DAEs),特别适合电生理(如离子通道门控)、机械形变、信号通路耦合等跨尺度、多物理场模型。
CellML 的核心是组件(component)和连接(connection)
CellML 把模型拆成逻辑单元:component 可以代表一个离子通道、一个细胞器、一段通路,甚至一个物理参数集。每个 component 包含:
-
variable(带单位、初始值、接口类型public/private) -
math块(用MathML写方程,不是 Python 或 MATLAB 语法) - 可选的
metadata(用RDF注解,链接 UniProt、FMA 等数据库)
connection 不是画线,而是显式声明两个 variable 在数值上相等(例如膜电位 V_m 在「膜」组件和「钠通道」组件中必须一致),这使得模型可分解、可复用、可验证。
常见错误现象:
- 导入 OpenCOR 或
libCellML时报错"No valid connections found"→ 忘记在connection中配对map_variables,或变量名大小写/命名空间不一致 - 数学块里写了
sin(x)却没声明xmlns:math="<a href="https://www.php.cn/link/53abec67fb016be5f431dda0e1fe7473">https://www.php.cn/link/53abec67fb016be5f431dda0e1fe7473</a>"→MathML命名空间缺失,解析器直接拒识 - 单位写成
unit="mV"但未在units节定义 → CellML 规范强制要求所有单位显式声明,哪怕只是<units name="mV" units="millivolt"></units>
导出/导入 CellML 时最常掉进的兼容性坑
不是所有“能存成 .cellml 文件”的工具都真正符合 CellML 1.1 规范。尤其注意:
-
SBML → CellML转换(如通过sbml2cellml)通常只生成骨架,丢失原始模型中的物理单位、注释和组件封装结构 -
Python生态中,libCellML(C++ 实现,Py binding)是当前最可靠解析器;老项目用的PyCellML已停止维护,不支持 imports 和 metadata - Excel 用户容易误以为“另存为 XML”就能当 CellML 用 → 完全不行。
Excel XML是扁平表格映射,没有component、math、connection这三层语义
实际建议:
- 验证文件是否合规:用官方在线校验器 https://www.php.cn/link/3b05af2c48dbaf6656fdf2d2f905b3b6 或本地跑
libcellml-validator your_model.cellml
- 想重用别人模型?优先去 Physiome Model Repository (PMR) 下载带
exposure的版本,这类模型已通过完整测试,且附带Generated Code(MATLAB/Python 可直接调用的数值求解器) - 若需从 Simulink 或 NEURON 导出,别信一键导出插件;先手写最小
component验证连接逻辑,再逐步叠加
为什么现在还要用 CellML?它没被 SBML 吞并,也没死
因为模块化不可替代。比如 Hund-Rudy 2004 心室细胞模型在 PMR 中被拆成 22 个独立 component:每个离子通道(INa, IKr)都是可单独下载、测试、替换的子模型。你完全可以拿别人的 IKs 通道,接进自己的钙循环模型里——只要 connection 接口匹配(比如都暴露 V 和 temperature 变量)。
而 SBML 天然倾向“一整个反应系统”,imports 支持弱,组件复用难。这也是为什么多尺度仿真平台(如 OpenCOR、Chaste)仍把 CellML 当作跨模型组装的“胶水语言”。
不过得认清现实:
- 没有主流深度学习框架原生支持 CellML 输入
- 所有仿真仍需转成数值代码(C/MATLAB/Python)再运行,CellML 本身不执行
- 如果你只做单一代谢通路建模,SBML + BioModels Database 更省事;一旦涉及膜电位-收缩耦合、组织尺度传导,CellML 的组件粒度就立刻体现出价值
真正容易被忽略的一点:CellML 的 metadata 不是摆设。一个带完整 RDF 注解的模型,能被自动关联到 FMA 解剖结构、GO 功能、ChEBI 代谢物——这对构建可计算的数字孪生体(digital twin)是底层支撑,不是锦上添花。










