name: opentrons-magnetic-block description: Opentrons 磁性块 for Flex - 无电源磁珠分离,使用基于夹爪的实验室器皿移动,带有高强度钕磁铁,用于DNA/RNA纯化、免疫沉淀和基于珠子的工作流 allowed-tools: [“*”]
Opentrons 磁性块
概述
Opentrons 磁性块 是一种无电源的96孔磁性分离器,专用于Opentrons Flex。它使用高强度钕磁铁将磁珠拉到孔壁,实现上清液移除,用于DNA/RNA纯化、蛋白质清理、免疫沉淀和其他基于珠子的分离协议。
核心价值: 自动化基于磁珠的纯化工作流,无需手动平板转移。结合夹爪式的平板移动和磁性分离,实现全自动DNA提取、PCR清理和基于珠子的检测。
平台: 仅限Opentrons Flex(与OT-2不兼容)
何时使用
使用磁性块技能时:
- 使用磁珠进行DNA/RNA提取
- PCR产品清理(AMPure、SPRIselect珠子)
- 基于磁珠的文库制备(NGS)
- 蛋白质纯化或免疫沉淀与磁珠
- 使用磁性颗粒进行细胞分选或富集
- 任何需要磁性珠子分离的协议
不要使用时:
- 与OT-2机器人工作(磁性块仅限Flex)
- 需要垂直珠子移动在溶液中(块仅拉向侧边)
- 需要加热磁性分离
- 没有Opentrons Flex夹爪工作
快速参考
| 操作 | 方法 | 关键参数 |
|---|---|---|
| 加载模块 | protocol.load_module() |
"magneticBlockV1", 位置 |
| 移动平板到块 | protocol.move_labware() |
实验室器皿, mag_block, use_gripper=True |
| 等待分离 | protocol.delay() |
分钟(通常2-5) |
| 吸取上清液 | pipette.transfer() |
来源, 目标 |
| 移动平板离开块 | protocol.move_labware() |
实验室器皿, new_location, use_gripper=True |
平台要求
仅限Opentrons Flex
- API版本: 2.15或更高(磁性块引入)
- 夹爪要求: 所有平板移动使用夹爪
- 机器人类型: 必须指定
"robotType": "Flex"
关键特性
无电源设计
重要: 磁性块完全无电源:
- 无电子控制
- 无开关切换
- 当平板存在时始终磁性
- 机器人和Opentrons App不感知磁性状态
含义: 所有控制通过以下方式手动:
- 物理平板定位(夹爪移动)
- 定时延迟用于珠子分离
- 吸取操作
加载模块
from opentrons import protocol_api
metadata = {'apiLevel': '2.19'}
requirements = {"robotType": "Flex", "apiLevel": "2.19"}
def run(protocol: protocol_api.ProtocolContext):
# 加载磁性块
mag_block = protocol.load_module(
module_name="magneticBlockV1",
location="D1"
)
# 加载兼容实验室器皿
mag_plate = mag_block.load_labware(
name="biorad_96_wellplate_200ul_pcr"
)
兼容的甲板槽: 任何Flex槽(A1-D3) 推荐: D1、D2或D3(底行用于工作流效率)
兼容实验室器皿
磁性块适用于适合磁性足迹的96孔平板:
常见兼容实验室器皿:
biorad_96_wellplate_200ul_pcrnest_96_wellplate_100ul_pcr_full_skirtopentrons_96_wellplate_200ul_pcr_full_skirt- 其他具有标准足迹的96孔PCR平板
重要:
- 实验室器皿必须可夹爪(兼容Flex夹爪)
- 孔必须与磁铁位置对齐
- 需要标准96孔足迹
基本磁性分离工作流
步骤1:加载样品平板
# 开始时样品平板在甲板上(尚未在磁性块上)
sample_plate = protocol.load_labware("biorad_96_wellplate_200ul_pcr", "C1")
# 添加磁珠和结合缓冲液
pipette.transfer(10, bead_stock, sample_plate.wells())
pipette.transfer(100, binding_buffer, sample_plate.wells(), mix_after=(5, 80))
步骤2:孵育用于结合
# 孵育以允许珠子结合目标(DNA/RNA/蛋白质)
protocol.delay(minutes=5)
# 可选:孵育期间混合(使用加热-振荡器)
步骤3:移动到磁性块
# 使用夹爪移动平板到磁性块
protocol.move_labware(
labware=sample_plate,
new_location=mag_block,
use_gripper=True
)
步骤4:等待珠子分离
# 允许珠子在孔边收集
protocol.delay(minutes=3)
# 珠子现在被磁铁保持在孔边
步骤5:移除上清液
# 当珠子被磁铁保持时,吸取上清液
pipette.transfer(
volume=110,
source=sample_plate.wells(),
dest=waste.wells(),
new_tip="always"
)
# 珠子保留在孔中,被磁场保持
步骤6:移动离开磁性块
# 移动平板离开磁铁用于珠子重悬
protocol.move_labware(
labware=sample_plate,
new_location="C2",
use_gripper=True
)
# 珠子现在自由重悬
步骤7:洗涤并重复
# 添加洗涤缓冲液
pipette.transfer(150, wash_buffer, sample_plate.wells())
# 混合以重悬珠子
pipette.mix(repetitions=5, volume=100, location=sample_plate.wells())
# 返回到磁性块
protocol.move_labware(sample_plate, mag_block, use_gripper=True)
# 等待分离
protocol.delay(minutes=2)
# 移除上清液
pipette.transfer(150, sample_plate.wells(), waste.wells(), new_tip="always")
步骤8:洗脱
# 移动离开磁铁
protocol.move_labware(sample_plate, "C2", use_gripper=True)
# 添加洗脱缓冲液
pipette.transfer(50, elution_buffer, sample_plate.wells(), mix_after=(5, 30))
# 孵育
protocol.delay(minutes=2)
# 最终磁性分离
protocol.move_labware(sample_plate, mag_block, use_gripper=True)
protocol.delay(minutes=2)
# 转移洗脱液(纯化产品)
pipette.transfer(45, sample_plate.wells(), elution_plate.wells(), new_tip="always")
完整DNA提取协议
# 完整自动化DNA提取工作流
def run(protocol: protocol_api.ProtocolContext):
# 模块和实验室器皿
mag_block = protocol.load_module("magneticBlockV1", "D1")
sample_plate = mag_block.load_labware("biorad_96_wellplate_200ul_pcr")
# 额外实验室器皿
tips = protocol.load_labware("opentrons_flex_96_tiprack_1000ul", "A1")
waste = protocol.load_trash_bin("A3")
reagents = protocol.load_labware("nest_12_reservoir_15ml", "C2")
# 吸管
pipette = protocol.load_instrument("flex_8channel_1000", "left", tip_racks=[tips])
# 试剂位置
lysis_beads = reagents["A1"]
wash_buffer = reagents["A2"]
elution_buffer = reagents["A3"]
# 样品已在平板中(手动加载或通过早期步骤)
# 1. 添加裂解珠并绑定DNA
pipette.transfer(100, lysis_beads, sample_plate.columns()[0], mix_after=(5, 80))
protocol.delay(minutes=5)
# 2. 磁性分离 - 移除裂解液
protocol.move_labware(sample_plate, mag_block, use_gripper=True)
protocol.delay(minutes=3)
pipette.transfer(200, sample_plate.columns()[0], waste, new_tip="always")
# 3. 第一次洗涤
protocol.move_labware(sample_plate, "C1", use_gripper=True)
pipette.transfer(150, wash_buffer, sample_plate.columns()[0], mix_after=(5, 100))
protocol.move_labware(sample_plate, mag_block, use_gripper=True)
protocol.delay(minutes=2)
pipette.transfer(150, sample_plate.columns()[0], waste, new_tip="always")
# 4. 第二次洗涤
protocol.move_labware(sample_plate, "C1", use_gripper=True)
pipette.transfer(150, wash_buffer, sample_plate.columns()[0], mix_after=(5, 100))
protocol.move_labware(sample_plate, mag_block, use_gripper=True)
protocol.delay(minutes=2)
pipette.transfer(150, sample_plate.columns()[0], waste, new_tip="always")
# 5. 干燥珠子
protocol.delay(minutes=5)
# 6. 洗脱DNA
protocol.move_labware(sample_plate, "C1", use_gripper=True)
pipette.transfer(50, elution_buffer, sample_plate.columns()[0], mix_after=(5, 30))
protocol.delay(minutes=2)
# 7. 最终磁性分离
protocol.move_labware(sample_plate, mag_block, use_gripper=True)
protocol.delay(minutes=2)
# 8. 收集纯化DNA
elution_plate = protocol.load_labware("biorad_96_wellplate_200ul_pcr", "C3")
pipette.transfer(45, sample_plate.columns()[0], elution_plate.columns()[0], new_tip="always")
常见模式
PCR清理(AMPure珠子)
# 使用AMPure珠子清理PCR产品
mag_block = protocol.load_module("magneticBlockV1", "D1")
pcr_plate = protocol.load_labware("biorad_96_wellplate_200ul_pcr", "C1")
# 1. 添加珠子(0.8倍比率用于>300bp片段)
pipette.transfer(40, ampure_beads, pcr_plate.wells(), mix_after=(5, 35))
protocol.delay(minutes=5)
# 2. 磁性分离
protocol.move_labware(pcr_plate, mag_block, use_gripper=True)
protocol.delay(minutes=3)
pipette.transfer(90, pcr_plate.wells(), waste.wells())
# 3. 乙醇洗涤(2次)
for _ in range(2):
pipette.transfer(150, ethanol_70, pcr_plate.wells())
protocol.delay(seconds=30)
pipette.transfer(150, pcr_plate.wells(), waste.wells())
# 4. 干燥
protocol.delay(minutes=5)
# 5. 洗脱
protocol.move_labware(pcr_plate, "C2", use_gripper=True)
pipette.transfer(30, water, pcr_plate.wells(), mix_after=(5, 20))
protocol.delay(minutes=2)
# 6. 最终分离和收集
protocol.move_labware(pcr_plate, mag_block, use_gripper=True)
protocol.delay(minutes=2)
pipette.transfer(25, pcr_plate.wells(), clean_plate.wells())
NGS文库制备
# 基于磁珠的文库制备
mag_block = protocol.load_module("magneticBlockV1", "D2")
lib_plate = mag_block.load_labware("biorad_96_wellplate_200ul_pcr")
# 连接适配器后...
# 1. 添加SPRI珠子用于大小选择(0.6倍用于>400bp)
pipette.transfer(30, spri_beads, lib_plate.wells(), mix_after=(5, 25))
protocol.delay(minutes=5)
# 2. 绑定大片段
protocol.move_labware(lib_plate, mag_block, use_gripper=True)
protocol.delay(minutes=3)
# 3. 保存上清液(包含要移除的片段)
protocol.move_labware(lib_plate, "C1", use_gripper=True)
# 4. 添更多珠子上清液(带到总1.0倍)
pipette.transfer(20, spri_beads, lib_plate.wells(), mix_after=(5, 30))
protocol.delay(minutes=5)
# 5. 绑定目标片段
protocol.move_labware(lib_plate, mag_block, use_gripper=True)
protocol.delay(minutes=3)
# 6. 丢弃上清液
pipette.transfer(100, lib_plate.wells(), waste.wells())
# 7. 洗涤和洗脱(标准协议)
蛋白质免疫沉淀
# 磁性珠子IP
mag_block = protocol.load_module("magneticBlockV1", "D1")
ip_plate = mag_block.load_labware("biorad_96_wellplate_200ul_pcr")
# 1. 预偶联抗体-珠子复合物在孔中
# 2. 添加裂解液
pipette.transfer(100, lysate_plate.wells(), ip_plate.wells(), mix_after=(3, 80))
# 3. 孵育(绑定)
protocol.delay(minutes=30)
# 4. 洗涤未绑定蛋白质
for wash_num in range(3):
protocol.move_labware(ip_plate, mag_block, use_gripper=True)
protocol.delay(minutes=2)
pipette.transfer(150, ip_plate.wells(), waste.wells())
protocol.move_labware(ip_plate, "C1", use_gripper=True)
pipette.transfer(150, wash_buffer, ip_plate.wells(), mix_after=(3, 100))
# 5. 洗脱绑定蛋白质
protocol.move_labware(ip_plate, "C1", use_gripper=True)
pipette.transfer(50, elution_buffer, ip_plate.wells(), mix_after=(5, 30))
protocol.delay(minutes=5)
# 6. 收集洗脱液
protocol.move_labware(ip_plate, mag_block, use_gripper=True)
protocol.delay(minutes=2)
pipette.transfer(45, ip_plate.wells(), analysis_plate.wells())
与其他模块集成
与加热-振荡器(加热裂解)
# 结合加热与磁性纯化
hs_mod = protocol.load_module("heaterShakerModuleV1", "D1")
mag_block = protocol.load_module("magneticBlockV1", "D2")
sample_plate = protocol.load_labware("biorad_96_wellplate_200ul_pcr", "C1")
# 1. 在加热-振荡器上加热裂解
hs_mod.open_labware_latch()
protocol.move_labware(sample_plate, hs_mod, use_gripper=True)
hs_mod.close_labware_latch()
hs_mod.set_and_wait_for_temperature(56)
hs_mod.set_and_wait_for_shake_speed(1000)
protocol.delay(minutes=15)
hs_mod.deactivate_shaker()
hs_mod.deactivate_heater()
hs_mod.open_labware_latch()
# 2. 磁性珠子绑定
protocol.move_labware(sample_plate, mag_block, use_gripper=True)
protocol.delay(minutes=3)
# ... 继续洗涤和洗脱 ...
与温度模块(冷洗脱)
# 冷洗脱用于稳定性
temp_mod = protocol.load_module("temperature module gen2", "D3")
mag_block = protocol.load_module("magneticBlockV1", "D2")
# 预冷洗脱缓冲液
temp_mod.set_temperature(4)
# 磁性洗涤后...
protocol.move_labware(sample_plate, "C1", use_gripper=True)
# 添加冷洗脱缓冲液
pipette.transfer(50, cold_elution, sample_plate.wells(), mix_after=(5, 30))
# 移动到冷模块用于洗脱
protocol.move_labware(sample_plate, temp_mod, use_gripper=True)
protocol.delay(minutes=5)
# 最终分离
protocol.move_labware(sample_plate, mag_block, use_gripper=True)
protocol.delay(minutes=2)
pipette.transfer(45, sample_plate.wells(), storage_plate.wells())
temp_mod.deactivate()
与热循环器(PCR后清理)
# PCR → 清理工作流
tc_mod = protocol.load_module("thermocyclerModuleV2")
mag_block = protocol.load_module("magneticBlockV1", "D2")
# 运行PCR
tc_mod.close_lid()
# ... PCR循环 ...
tc_mod.set_block_temperature(4)
tc_mod.open_lid()
# 移动到甲板用于添加珠子
pcr_plate = tc_mod.labware
protocol.move_labware(pcr_plate, "C1", use_gripper=True)
# 添加AMPure珠子
pipette.transfer(40, ampure_beads, pcr_plate.wells(), mix_after=(5, 35))
protocol.delay(minutes=5)
# 在磁性块上清理
protocol.move_labware(pcr_plate, mag_block, use_gripper=True)
# ... 清理步骤 ...
最佳实践
- 允许足够分离时间 - 通常2-5分钟取决于珠子类型
- 使用夹爪用于所有平板移动 - 手动移动破坏自动化目的
- 吸取时避免干扰珠子 - 从孔对侧吸取
- 移动离开磁铁后彻底混合 - 确保完全珠子重悬
- 计算中追踪珠子体积 - 计算总体积时考虑珠子
- 使用一致珠子类型 - 不同珠子有不同分离时间
- 规划甲板布局 - 定位磁性块靠近其他模块以提高效率
- 测试分离时间 - 针对特定珠子和样品类型优化延迟
- 不要过度干燥珠子 - 可能降低洗脱效率
- 验证洗脱体积 - 留一些顶端空间以避免转移珠子
分离时间指南
典型分离时间按珠子类型:
- AMPure/SPRIselect (DNA): 2-3分钟
- RNAClean (RNA): 3-4分钟
- Protein G/A珠子: 2-3分钟
- 高密度珠子: 1-2分钟
- 大体积样品: 4-5分钟
影响分离因素:
- 珠子浓度
- 样品体积
- 粘度
- 磁性珠子强度
- 孔几何形状
推荐: 从3分钟开始,基于视觉检查或协议优化调整。
常见错误
❌ 移动平板无夹爪:
# 手动移动在自动化协议中不实用
protocol.move_labware(sample_plate, mag_block, use_gripper=False)
# 用户必须手动移动平板 - 破坏自动化
✅ 正确:
protocol.move_labware(sample_plate, mag_block, use_gripper=True)
❌ 分离时间不足:
protocol.move_labware(sample_plate, mag_block, use_gripper=True)
protocol.delay(seconds=30) # 太短 - 珠子仍在溶液中
pipette.transfer(100, sample_plate.wells(), waste.wells()) # 转移珠子!
✅ 正确:
protocol.move_labware(sample_plate, mag_block, use_gripper=True)
protocol.delay(minutes=3) # 足够时间用于分离
pipette.transfer(100, sample_plate.wells(), waste.wells())
❌ 吸取通过珠子颗粒:
# 从中心吸取可能干扰侧边珠子
pipette.aspirate(100, sample_plate.wells()[0])
✅ 正确:
# 从珠子对侧吸取
pipette.aspirate(100, sample_plate.wells()[0].bottom(z=2))
# 或使用touch_tip以确保不转移珠子
❌ 不完全珠子重悬:
protocol.move_labware(sample_plate, "C1", use_gripper=True)
pipette.transfer(150, wash_buffer, sample_plate.wells()) # 珠子可能不重悬
✅ 正确:
protocol.move_labware(sample_plate, "C1", use_gripper=True)
pipette.transfer(150, wash_buffer, sample_plate.wells(), mix_after=(5, 100)) # 混合以重悬
❌ 使用不兼容实验室器皿:
# 深孔平板可能不与磁铁对齐
mag_plate = mag_block.load_labware("nest_96_wellplate_2ml_deep")
✅ 正确:
# 使用标准96孔PCR平板
mag_plate = mag_block.load_labware("biorad_96_wellplate_200ul_pcr")
故障排除
珠子不分离:
- 增加分离时间(尝试4-5分钟)
- 检查珠子类型和浓度
- 验证平板正确放置在磁性块上
- 确保实验室器皿与磁铁位置兼容
珠子随上清液转移:
- 延长分离时间
- 更小心吸取(避免珠子颗粒)
- 减少吸取流速
- 留更多残留体积
不完全洗脱:
- 确保洗脱孵育前珠子完全重悬
- 更剧烈混合
- 延长洗脱孵育时间
- 验证珠子没有过度干燥
- 使用适当洗脱缓冲液体积
珠子团聚:
- 重悬时更彻底混合
- 确保添加到样品前珠子充分混合
- 避免干燥珠子太久
- 检查珠子存储条件
孔间回收变化:
- 确保一致珠子添加体积
- 均匀混合所有孔
- 使用一致分离时间
- 检查平板在磁性块上定位问题
高级技术
双大小选择
# 选择特定大小范围内的DNA片段
# 第一次选择:移除大片段
pipette.transfer(30, spri_beads, lib_plate.wells(), mix_after=(5, 25)) # 0.6倍
protocol.delay(minutes=5)
protocol.move_labware(lib_plate, mag_block, use_gripper=True)
protocol.delay(minutes=3)
# 收集上清液(包含小+目标片段)
protocol.move_labware(lib_plate, "C1", use_gripper=True)
pipette.transfer(80, lib_plate.wells(), temp_plate.wells())
# 第二次选择:绑定目标片段
pipette.transfer(20, spri_beads, temp_plate.wells(), mix_after=(5, 30)) # 带到1.0倍
protocol.delay(minutes=5)
protocol.move_labware(temp_plate, mag_block, use_gripper=True)
protocol.delay(minutes=3)
# 丢弃上清液(小片段移除)
pipette.transfer(100, temp_plate.wells(), waste.wells())
# 洗涤和洗脱目标大小范围
差异洗脱
# 顺序洗脱不同目标
# 绑定多个目标到珠子后...
# 第一次洗脱(低严格度)
pipette.transfer(50, elution_buffer_1, sample_plate.wells(), mix_after=(5, 30))
protocol.delay(minutes=2)
protocol.move_labware(sample_plate, mag_block, use_gripper=True)
protocol.delay(minutes=2)
pipette.transfer(45, sample_plate.wells(), fraction_1_plate.wells())
# 第二次洗脱(高严格度)
protocol.move_labware(sample_plate, "C1", use_gripper=True)
pipette.transfer(50, elution_buffer_2, sample_plate.wells(), mix_after=(5, 30))
protocol.delay(minutes=2)
protocol.move_labware(sample_plate, mag_block, use_gripper=True)
protocol.delay(minutes=2)
pipette.transfer(45, sample_plate.wells(), fraction_2_plate.wells())
无电子控制
记住: 磁性块无电子接口。
这意味着:
- ❌ 无法程序化开关磁铁
- ❌ 无状态报告到机器人
- ❌ 无自动定时
- ✅ 通过平板定位完全控制
- ✅ 可预测、被动磁场
- ✅ 无需校准或初始化
控制策略: 移动平板到块 = 磁铁启用,移动平板离开块 = 磁铁禁用
API版本要求
- 最低API版本: 2.15(磁性块引入)
- 推荐: 2.19+ 用于全Flex功能支持
- 机器人类型: 必须是Opentrons Flex
额外资源
- 磁性块文档: https://docs.opentrons.com/v2/modules/magnetic_block.html
- 夹爪文档: https://docs.opentrons.com/v2/new_protocol_api.html#opentrons.protocol_api.ProtocolContext.move_labware
- 协议库: https://protocols.opentrons.com/
- Opentrons支持: https://support.opentrons.com/
相关技能
opentrons- 主要Opentrons Python API技能opentrons-gripper- 自动化实验室器皿移动(要求)opentrons-heater-shaker- 加热孵育与混合opentrons-temperature-module- 温度控制opentrons-thermocycler- PCR用于分子工作流