用途
Opentrons 吸光度读板模块是 Opentrons Flex 专用的板载微孔板分光光度计,用于在自动化流程中直接读取 96 孔板的吸光度,避免手动将微孔板转移到独立读板机。其核心价值在于:可在流程中途读取吸光度以进行实时决策,或通过自动计时与液体处理采集动力学数据。
适用场景包括:ELISA 或其他需要吸光度读数的比色法检测、细菌或细胞培养生长测量(OD600)、带定时读数的动力学检测、多波长吸光度数据采集、需要基于吸光度值实时决策的流程,以及板式生化检测的自动化。
不适用场景:OT-2 机器人(该模块仅支持 Flex)、需要 380–740nm 范围之外的波长、需要荧光或发光测量。
平台要求
- 仅支持 Opentrons Flex(不兼容 OT-2)
- API 版本:2.21 或更高
- 兼容的甲板槽位:A3、B3、C3、D3(仅第 3 列)
- 暂存区:第 4 列(整列保留用于盖子存放)
- 重要:存在吸光度读板模块时,不能在第 4 列(A4、B4、C4、D4)加载任何实验器具。
甲板布局:第 3 列为读板模块(检测单元与板支架),第 4 列为盖子暂存区(打开时夹爪将盖子移至此)。
主要能力
- 波长范围:380–740nm,10nm 步进(如 450nm、562nm、600nm、650nm)
- 单波长读取:最简单模式,用于 OD600 细菌生长、单色 ELISA
- 带参考波长的单波长读取:用参考波长归一化读数,减少背景噪声和板伪影
- 多波长读取:最多同时读取 6 个波长,用于多分析物检测、光谱分析、双波长 ELISA
- 吸光度值范围:0.0–4.0 OD
- 数据以嵌套字典返回:{波长: {孔位: 吸光度}}
- 支持 CSV 导出,包含模块序列号、测量波长、时间戳和带行列标签的板布局
使用方式
加载模块:
from opentrons import protocol_api
metadata = {'apiLevel': '2.21'}
requirements = {"robotType": "Flex", "apiLevel": "2.21"}
def run(protocol: protocol_api.ProtocolContext):
reader = protocol.load_module("absorbanceReaderV1", "D3")
盖子控制:夹爪自动管理盖子位置。close_lid() 关闭盖子(初始化前必须调用),open_lid() 打开盖子(移至第 4 列暂存区),is_lid_on() 返回盖子状态布尔值。关键:即使盖子已关闭,也应在 initialize() 前始终调用 close_lid()。
初始化:
# 单波长
reader.close_lid()
reader.initialize(mode="single", wavelengths=[450])
reader.open_lid()
# 带参考波长
reader.close_lid()
reader.initialize(mode="single", wavelengths=[450], reference_wavelength=562)
reader.open_lid()
# 多波长(最多 6 个)
reader.close_lid()
reader.initialize(mode="multi", wavelengths=[450, 562, 600, 650])
reader.open_lid()
读取微孔板:
protocol.move_labware(assay_plate, reader, use_gripper=True)
reader.close_lid()
absorbance_data = reader.read()
reader.open_lid()
protocol.move_labware(assay_plate, "C1", use_gripper=True)
带 CSV 导出:
absorbance_data = reader.read(export_filename="experiment_001_plate1")
访问结果:
data = reader.read()
absorbance_a1 = data[450]["A1"]
for well_name, absorbance in data[600].items():
protocol.comment(f"{well_name}: {absorbance}")
典型工作流
标准读取流程:加载并设置模块与实验器具 → 关闭盖子并初始化读板模块 → 准备样品(移液操作)→ 用夹爪将板移至读板模块 → 关闭盖子并读取(可导出 CSV)→ 处理结果或继续流程 → 将板移出读板模块。
ELISA 流程:初始化读板模块(如 450nm,参考 562nm)→ 包被、孵育、洗涤 → 加样 → 孵育 → 洗涤 → 加底物 → 孵育 → 加终止液 → 读取并分析结果。
细菌生长动力学:初始化 OD600 → 接种培养 → 在加热振荡模块上孵育并振荡 → 定时将板移至读板模块读取 OD600 → 记录生长数据,循环多个时间点。
多波长蛋白检测:初始化多波长(如 562、600nm)→ 制备标准曲线与样品 → 孵育 → 多波长读取 → 用标准曲线计算蛋白浓度。
实时决策:读取筛选板 → 根据吸光度阈值识别阳性孔 → 将阳性孔转移至新板进行后续验证。
与其他模块集成
- 与加热振荡模块(Heater-Shaker Module)配合:先孵育振荡,再移至读板模块读取吸光度。
- 与温度模块(Temperature Module)配合:先冷却样品,再读取冷却后的板。
最佳实践
- 初始化前始终关闭盖子,即使已关闭
- 导出数据时使用描述性文件名,包含实验 ID、日期、板号
- 使用参考波长以减少背景和板伪影
- 读取空白孔以建立背景扣除基线
- 定量检测应包含标准曲线
- 仔细规划甲板布局,第 4 列保留用于盖子存放
- 保护第 4 列,切勿在暂存区加载实验器具
- 板移至读板模块后允许短暂平衡,防止冷凝问题
- 检查夹爪兼容性,确保板具有可夹持几何形状
- 记录波长选择理由
常见错误
- 盖子打开时初始化:必须先
close_lid()再initialize() - 在第 4 列加载实验器具:该列保留,应使用其他列
- 未关闭盖子就读取:
read()前必须关闭盖子 - 使用不支持的波长:应使用 380–740nm 范围内 10nm 步进的波长
- 访问未测量的波长数据:只能访问初始化时设置的波长
限制
- 仅支持 Opentrons Flex,不兼容 OT-2
- 需要 API 2.21 或更高版本
- 波长范围限于 380–740nm,10nm 步进
- 不支持荧光或发光测量
- 第 4 列整列保留用于盖子暂存,不能加载实验器具
- 每次读取最多 6 个波长
- 吸光度值范围 0.0–4.0 OD
- 仅适用于 96 孔板
故障排除
- 模块未加载:确认 API 版本 ≥2.21、robotType 为 "Flex"、模块位于第 3 列槽位
- 盖子错误:初始化前调用
close_lid(),确保第 4 列暂存区清空,检查夹爪功能 - 读取错误:确认读取前盖子已关闭、板在读板模块上、波长与初始化设置一致
- 数据访问错误:访问已初始化的波长,使用正确孔位名称("A1" 而非 "a1"),确认数据类型为字典
- 夹爪无法移动板:确认板具有可夹持几何形状、读板模块盖子已打开、板与读板模块兼容(96 孔板)