2. 实验协议的结构化建模

实验协议如果只以自然语言段落存在,机器就无法可靠地判断“这一步需要什么”“这个参数属于谁”“这份数据由哪次运行产生”。结构化建模的目标,是把协议从一段可读文本,转化为一组有明确类型、明确关系、明确状态迁移规则的实体集合。本节围绕“信息模型—实体关系—状态机”三层展开,并给出可直接参考的建模示例。

一、信息模型:把协议拆成可寻址的实体

一个可被机器读取的实验协议,至少需要覆盖六类核心信息:实验目的、材料、设备、步骤、参数、数据输出。它们不是六个并列的字段,而是具有从属与引用关系的实体。建模时先定义实体,再定义实体之间的连接方式。

以“细胞培养上清中IL-6浓度检测”为例,可以抽象出如下实体:

  • Protocol(协议):整体标识,包含版本号、适用物种、依据标准。
  • Objective(目的):可验证的陈述,例如“定量测定样本中IL-6浓度,检测下限≤2 pg/mL”。
  • Material(材料):样本、试剂、耗材,需带批号、有效期、储存条件。
  • Equipment(设备):酶标仪、洗板机、移液器,需带型号、校准状态、关键性能参数。
  • Step(步骤):有序操作单元,每个步骤引用其所需材料、设备与参数。
  • Parameter(参数):温度、时间、体积、转速、波长等,必须绑定到具体步骤或设备。
  • DataOutput(数据输出):原始读数、计算结果、单位、精度、存储位置。

关键原则是:参数不能悬空。一个“37 ℃”如果没有绑定到“孵育步骤”和“恒温箱设备”,机器就无法判断它是否被正确执行。因此参数实体必须通过 appliesTo 关系指向步骤或设备。

二、实体关系:用关系类型约束语义

实体定义完成后,需要用有限的关系类型把它们连起来。推荐使用以下关系集合,避免关系语义混乱:

关系方向含义示例
hasStepProtocol → Step协议包含步骤IL-6检测协议包含第3步“加样”
requiresStep → Material/Equipment步骤需要某资源加样步骤需要移液器与样本
hasParameterStep/Equipment → Parameter步骤或设备具有参数孵育步骤具有温度37 ℃、时间30 min
producesStep → DataOutput步骤产生数据读板步骤产生OD值
precedesStep → Step步骤先后顺序洗板 precedes 加二抗
derivedFromDataOutput → DataOutput数据派生关系浓度值 derivedFrom OD值

这些关系一旦确定,就可以用图数据库或RDF三元组存储。例如“孵育步骤需要恒温箱”可写成三元组:(Step_Incubate, requires, Equipment_Incubator)。机器查询时,只需沿关系遍历,就能回答“哪些步骤依赖未校准设备”这类问题。

三、状态机:让协议具备执行语义

仅有静态结构还不够。实验执行过程中,每个步骤会经历“未开始—进行中—已完成—异常”等状态。状态机的作用,是定义合法状态与合法迁移,防止出现“未加样却已读板”这类逻辑错误。

以单个步骤为状态机单元,定义四个状态:Pending(待执行)、Running(执行中)、Completed(已完成)、Failed(失败)。合法迁移包括:Pending → Running、Running → Completed、Running → Failed、Failed → Pending(重试)。禁止 Pending 直接跳到 Completed,也禁止 Completed 回退到 Running。

步骤状态机之上,还需要协议级状态机。协议整体状态由所有步骤状态聚合而成:只要有一个步骤处于 Failed,协议状态即为 Blocked;所有步骤 Completed,协议状态才为 Finished。这种聚合规则可以用简单的状态表表达:

协议状态聚合规则(示例):
任一步骤 Failed        → Protocol = Blocked
存在步骤 Running       → Protocol = InProgress
全部步骤 Completed     → Protocol = Finished
其余情况               → Protocol = Pending

把状态机与实体关系结合,就得到完整的可执行协议模型:实体提供“有什么”,关系提供“怎么连”,状态机提供“怎么变”。三者缺一不可。

实验协议结构化模型:实体关系 + 步骤状态机 实体关系层 Protocol 协议 Objective 目的 Step 步骤 Material 材料 Equipment 设备 Parameter 参数 DataOutput 数据 hasObjective hasStep requires requires hasParameter produces hasParameter 步骤状态机 Pending Running Completed Failed start success error retry 协议聚合:任一 Failed → Blocked 全部 Completed → Finished 建模检查要点 实体完整性 每个参数必须绑定步骤或设备 材料与设备需带批号/校准状态 数据输出需声明单位与精度 关系合法性 步骤顺序由 precedes 显式声明 数据派生用 derivedFrom 追溯 禁止无来源的孤立参数节点 状态可执行性 Pending 不可直接跳 Completed Failed 必须可重试或终止 协议状态由步骤状态聚合得出

四、从模型到可执行协议:一个最小示例

把上述模型落到具体协议,可以用一段结构化描述表达。以下示例以“IL-6 ELISA检测”为背景,参数为教学假设值,用于说明建模方式,不代表真实试剂盒说明书。

Protocol: IL6_ELISA_v1.2
Objective: 定量检测样本IL-6浓度,检测范围 2–200 pg/mL
Step_1: 包被
  requires: 96孔板, 捕获抗体
  hasParameter: 抗体浓度 = 2 μg/mL, 温度 = 4 ℃, 时间 = 12 h
  produces: 包被记录
Step_2: 封闭
  requires: 封闭液
  hasParameter: 温度 = 37 ℃, 时间 = 1 h
  precedes: Step_3
Step_3: 加样
  requires: 样本, 移液器
  hasParameter: 样本体积 = 100 μL, 复孔数 = 2
  produces: 加样位置表
Step_4: 孵育与洗板
  requires: 恒温箱, 洗板机
  hasParameter: 温度 = 37 ℃, 时间 = 30 min, 洗板次数 = 5
Step_5: 显色与读板
  requires: 酶标仪
  hasParameter: 波长 = 450 nm, 参比波长 = 630 nm
  produces: OD_raw
DataOutput: IL6_conc
  derivedFrom: OD_raw
  unit: pg/mL
  precision: 0.1

这段描述已经具备机器可读的基本条件:每个步骤有明确资源引用,每个参数有归属,数据有派生来源。机器可以据此检查“Step_4 是否引用了已校准的恒温箱”“Step_5 的波长是否与酶标仪能力匹配”。

建模建议:先画实体关系草图,再补状态机,最后写结构化描述。顺序反过来容易漏掉参数归属和状态迁移约束。
常见错误:把“37 ℃ 30 min”写成一个无归属的全局参数。正确做法是将其绑定到具体步骤,并注明该步骤引用的设备。否则机器无法判断该参数是否被实际执行。

结构化建模的价值,不在于把文字换成表格,而在于让协议中的每个对象都可被寻址、每条关系都可被验证、每次状态变化都可被追踪。当实验协议具备这三层结构后,后续的自动校验、执行监控与数据溯源才有稳定的基础。