Opentrons热循环仪模块Skill opentrons-thermocycler

Opentrons热循环仪模块技能用于自动化PCR热循环过程,通过精确控制块和盖温度、执行温度配置文件,并支持自动密封盖,实现高通量分子生物学工作流的全自动化。关键词:Opentrons、热循环仪、PCR、自动化、温度控制、分子生物学、实验室自动化。

其他 0 次安装 0 次浏览 更新于 3/12/2026

name: opentrons-thermocycler description: Opentrons 热循环仪模块 - 自动化PCR热循环,具有独立的块(4-99°C)和盖(37-110°C)温度控制、配置文件执行和自动密封盖支持(GEN2),适用于高通量分子生物学工作流 allowed-tools: [“*”]

Opentrons 热循环仪模块

概述

Opentrons 热循环仪模块通过精确的独立控制块温度(4-99°C)和加热盖(37-110°C)来自动化PCR热循环。执行复杂的温度配置文件并自动循环,与液体处理集成以实现完整的PCR设置自动化,并使用自动密封盖(GEN2)支持无人值守工作流。

核心价值: 完全自动化PCR设置和循环。加载样品、分配试剂、密封板(GEN2)、运行温度配置文件并收集产物——所有这些都无需人工干预。

使用时机

在以下情况使用热循环仪技能:

  • 运行PCR扩增协议
  • 执行qPCR或RT-PCR反应
  • 自动化DNA/RNA热循环工作流
  • 执行多步骤温度孵育
  • 将热循环与自动化液体处理集成
  • 设置高通量PCR筛选

不要使用的情况:

  • 需要简单温度控制(使用温度模块,范围4-95°C)
  • 需要在孵育期间振荡/混合(使用加热振荡模块)
  • 温度超出4-99°C范围(块)或37-110°C(盖)

快速参考

操作 方法 关键参数
加载模块 protocol.load_module() "thermocyclerModuleV2""thermocyclerModuleV1"
打开盖 open_lid() -
关闭盖 close_lid() -
设置盖温度 set_lid_temperature() 摄氏度(37-110)
停用盖 deactivate_lid() -
设置块温度 set_block_temperature() 摄氏度(4-99)、hold_time、block_max_volume
执行配置文件 execute_profile() steps、repetitions、block_max_volume
停用块 deactivate_block() -

平台兼容性

Opentrons Flex 和 OT-2 均支持

模块代际

  • GEN1 - 原始热循环仪,兼容两个平台
  • GEN2 - 改进的板抬升机制,支持自动密封盖

API 兼容性: 两代支持相同的API方法

甲板位置

OT-2: 跨越多個甲板槽(通常是槽7、8、10、11)

Flex: 专用热循环仪位置

加载:

# 未指定甲板槽 - 热循环仪有固定位置
tc_mod = protocol.load_module("thermocyclerModuleV2")

加载模块

from opentrons import protocol_api

metadata = {'apiLevel': '2.19'}

def run(protocol: protocol_api.ProtocolContext):
    # 加载热循环仪模块(无位置 - 固定位置)
    tc_mod = protocol.load_module("thermocyclerModuleV2")

    # 加载PCR板
    pcr_plate = tc_mod.load_labware("opentrons_96_wellplate_200ul_pcr_full_skirt")

模块版本:

  • "thermocyclerModuleV1" - GEN1
  • "thermocyclerModuleV2" - GEN2(推荐)

盖子控制

基本盖子操作

# 打开盖子以便移液器访问
tc_mod.open_lid()

# 关闭盖子以进行热循环
tc_mod.close_lid()

对夹爪(Flex)很重要:

  • 在夹爪操作前始终打开盖子
  • 仅在板放置在热循环仪上后关闭盖子

加热盖

加热盖在热循环期间防止冷凝:

# 设置盖温度(阻塞直到达到)
tc_mod.set_lid_temperature(celsius=105)

# 运行温度配置文件
# ... 循环 ...

# 关闭盖加热器
tc_mod.deactivate_lid()

盖温度范围: 37-110°C

典型设置:

  • 标准PCR: 105°C
  • RT-PCR: 100-105°C
  • 自定义协议: 匹配或超过最高块温度 + 5-10°C

注意: 盖温度独立于块温度和配置文件。

块温度控制

基本块温度

# 设置块温度并等待
tc_mod.set_block_temperature(
    temperature=95,
    hold_time_seconds=180,  # 保持3分钟
    block_max_volume=50     # 孔内体积(µL)
)

# 块自动在hold_time期间保持温度

块温度范围: 4-99°C

参数:

  • temperature - 目标温度(°C,必需)
  • hold_time_seconds - 保持温度的持续时间
  • hold_time_minutes - 替代持续时间(分钟)
  • block_max_volume - 样品体积(µL,默认:25µL)

保持时间行为

使用 hold_time: 协议在指定持续时间内等待在温度

# 在95°C等待5分钟
tc_mod.set_block_temperature(
    temperature=95,
    hold_time_minutes=5,
    block_max_volume=50
)
# 5分钟后协议继续

无 hold_time: 设置温度并立即继续

# 设置到4°C并继续(无保持)
tc_mod.set_block_temperature(temperature=4)

# 在保持4°C的同时可执行其他操作

块最大体积

指定样品体积以提高温度准确性:

# 50µL反应
tc_mod.set_block_temperature(
    temperature=72,
    hold_time_minutes=10,
    block_max_volume=50  # 为50µL优化加热/冷却
)

默认: 如果未指定,则为25µL

为什么重要: 算法调整液体热质量以确保准确的样品温度。

温度配置文件

为PCR自动化重复温度循环:

定义配置文件

# PCR配置文件:变性 → 退火 → 延伸
pcr_profile = [
    {"temperature": 95, "hold_time_seconds": 30},  # 变性
    {"temperature": 57, "hold_time_seconds": 30},  # 退火
    {"temperature": 72, "hold_time_seconds": 60}   # 延伸
]

配置文件结构: 包含 temperaturehold_time_seconds 的字典列表

执行配置文件

# 运行配置文件30个循环
tc_mod.execute_profile(
    steps=pcr_profile,
    repetitions=30,
    block_max_volume=50
)

参数:

  • steps - 温度步骤列表(必需)
  • repetitions - 重复配置文件的次数(必需)
  • block_max_volume - 样品体积(µL)

完整PCR协议

# 设置
tc_mod = protocol.load_module("thermocyclerModuleV2")
pcr_plate = tc_mod.load_labware("opentrons_96_wellplate_200ul_pcr_full_skirt")

# 打开盖子以便加载
tc_mod.open_lid()

# 移液PCR试剂(未显示)
# ... 添加模板、引物、聚合酶等 ...

# 关闭盖子并设置盖温度
tc_mod.close_lid()
tc_mod.set_lid_temperature(105)

# 初始变性
tc_mod.set_block_temperature(
    temperature=95,
    hold_time_seconds=180,  # 3分钟
    block_max_volume=50
)

# PCR循环
pcr_profile = [
    {"temperature": 95, "hold_time_seconds": 30},
    {"temperature": 57, "hold_time_seconds": 30},
    {"temperature": 72, "hold_time_seconds": 60}
]

tc_mod.execute_profile(steps=pcr_profile, repetitions=30, block_max_volume=50)

# 最终延伸
tc_mod.set_block_temperature(
    temperature=72,
    hold_time_minutes=5,
    block_max_volume=50
)

# 保持在4°C
tc_mod.set_block_temperature(temperature=4)

# 清理
tc_mod.deactivate_lid()
tc_mod.deactivate_block()
tc_mod.open_lid()

自动密封盖(GEN2)

Opentrons Flex GEN2 热循环仪 支持自动密封盖用于无人值守协议:

自动密封盖实验器具

# 加载自动密封盖和提升器
auto_seal_lid = protocol.load_labware(
    "opentrons_tough_pcr_auto_sealing_lid",
    location="lid_stack_location"
)

riser = protocol.load_labware(
    "opentrons_flex_deck_riser",
    location="deck_location"
)

盖子堆栈管理

# 堆叠最多5个自动密封盖
lid_stack = tc_mod.load_lid_stack(
    "opentrons_tough_pcr_auto_sealing_lid",
    quantity=5
)

# 用夹爪移动盖子
protocol.move_lid(
    lid=lid_stack,
    new_location=pcr_plate,
    use_gripper=True
)

重要: 使用自动密封盖时,不要将橡胶密封件粘贴到内部热循环仪盖子上。

使用自动密封盖的完整工作流

# 加载模块和实验器具
tc_mod = protocol.load_module("thermocyclerModuleV2")
pcr_plate = tc_mod.load_labware("opentrons_96_wellplate_200ul_pcr_full_skirt")

# 加载自动密封盖
lid_stack = tc_mod.load_lid_stack(
    "opentrons_tough_pcr_auto_sealing_lid",
    quantity=3
)

# 设置样品
tc_mod.open_lid()
# ... 移液试剂 ...

# 用夹爪应用自动密封盖
protocol.move_lid(lid_stack, pcr_plate, use_gripper=True)

# 关闭热循环仪盖子
tc_mod.close_lid()

# 运行PCR
# ... 热循环 ...

# 打开以检索
tc_mod.open_lid()

常见模式

标准PCR

# 标准 Taq PCR 协议
tc_mod.close_lid()
tc_mod.set_lid_temperature(105)

# 初始变性
tc_mod.set_block_temperature(95, hold_time_minutes=3, block_max_volume=50)

# 循环
standard_pcr = [
    {"temperature": 95, "hold_time_seconds": 30},
    {"temperature": 55, "hold_time_seconds": 30},
    {"temperature": 72, "hold_time_seconds": 60}
]
tc_mod.execute_profile(steps=standard_pcr, repetitions=35, block_max_volume=50)

# 最终延伸
tc_mod.set_block_temperature(72, hold_time_minutes=10, block_max_volume=50)

# 保持在4°C
tc_mod.set_block_temperature(4)

tc_mod.deactivate_lid()
tc_mod.deactivate_block()
tc_mod.open_lid()

梯度PCR(多個退火温度)

# 在列中测试多个退火温度
annealing_temps = [52, 54, 56, 58, 60, 62, 64, 66]  # 8个温度

for i, temp in enumerate(annealing_temps):
    protocol.comment(f"Column {i+1}: {temp}°C annealing")

    # 移液样品到列(示例)
    # pipette.transfer(50, master_mix, pcr_plate.columns()[i])

    # 为此列运行梯度PCR
    gradient_profile = [
        {"temperature": 95, "hold_time_seconds": 30},
        {"temperature": temp, "hold_time_seconds": 30},  # 可变退火
        {"temperature": 72, "hold_time_seconds": 60}
    ]

    tc_mod.execute_profile(steps=gradient_profile, repetitions=30, block_max_volume=50)

注意: 此示例简化。真正的梯度PCR需要支持跨块同时温度梯度的硬件。

两步PCR(无延伸)

# 两步PCR(变性 + 退火/延伸组合)
tc_mod.close_lid()
tc_mod.set_lid_temperature(105)

tc_mod.set_block_temperature(95, hold_time_minutes=3, block_max_volume=25)

two_step = [
    {"temperature": 95, "hold_time_seconds": 15},
    {"temperature": 60, "hold_time_seconds": 60}  # 组合退火/延伸
]

tc_mod.execute_profile(steps=two_step, repetitions=40, block_max_volume=25)

tc_mod.set_block_temperature(4)
tc_mod.deactivate_lid()
tc_mod.deactivate_block()
tc_mod.open_lid()

RT-PCR(反转录 + PCR)

# 反转录 + PCR
tc_mod.close_lid()
tc_mod.set_lid_temperature(100)

# 反转录
tc_mod.set_block_temperature(42, hold_time_minutes=30, block_max_volume=20)

# RT失活
tc_mod.set_block_temperature(85, hold_time_minutes=5, block_max_volume=20)

# 冷却以添加PCR酶(如果需要)
tc_mod.set_block_temperature(4)
tc_mod.open_lid()

# 添加PCR酶
# pipette.transfer(...)

tc_mod.close_lid()
tc_mod.set_lid_temperature(105)

# PCR循环
tc_mod.set_block_temperature(95, hold_time_minutes=2, block_max_volume=25)

rt_pcr_profile = [
    {"temperature": 95, "hold_time_seconds": 15},
    {"temperature": 60, "hold_time_seconds": 30},
    {"temperature": 72, "hold_time_seconds": 30}
]

tc_mod.execute_profile(steps=rt_pcr_profile, repetitions=40, block_max_volume=25)

tc_mod.set_block_temperature(4)
tc_mod.deactivate_lid()
tc_mod.deactivate_block()
tc_mod.open_lid()

降落PCR

# 降落PCR - 递减退火温度
tc_mod.close_lid()
tc_mod.set_lid_temperature(105)
tc_mod.set_block_temperature(95, hold_time_minutes=3, block_max_volume=50)

# 高严格性循环(65°C → 55°C,每循环-1°C)
for temp in range(65, 54, -1):
    touchdown_profile = [
        {"temperature": 95, "hold_time_seconds": 30},
        {"temperature": temp, "hold_time_seconds": 30},
        {"temperature": 72, "hold_time_seconds": 60}
    ]
    tc_mod.execute_profile(steps=touchdown_profile, repetitions=1, block_max_volume=50)

# 低严格性循环(剩余55°C)
standard_profile = [
    {"temperature": 95, "hold_time_seconds": 30},
    {"temperature": 55, "hold_time_seconds": 30},
    {"temperature": 72, "hold_time_seconds": 60}
]
tc_mod.execute_profile(steps=standard_profile, repetitions=25, block_max_volume=50)

tc_mod.set_block_temperature(72, hold_time_minutes=10, block_max_volume=50)
tc_mod.set_block_temperature(4)
tc_mod.deactivate_lid()
tc_mod.deactivate_block()
tc_mod.open_lid()

与液体处理集成

自动化PCR设置

# 完整自动化PCR设置
tc_mod = protocol.load_module("thermocyclerModuleV2")
pcr_plate = tc_mod.load_labware("opentrons_96_wellplate_200ul_pcr_full_skirt")
pipette = protocol.load_instrument("flex_1channel_1000", "left")

# 试剂
master_mix = protocol.load_labware("opentrons_24_tuberack_nest_1.5ml_snapcap", "C1")
template_plate = protocol.load_labware("biorad_96_wellplate_200ul_pcr", "C2")

# 打开热循环仪
tc_mod.open_lid()

# 分配主混合液
pipette.distribute(
    volume=45,
    source=master_mix["A1"],
    dest=pcr_plate.wells(),
    new_tip="once"
)

# 添加模板DNA
pipette.transfer(
    volume=5,
    source=template_plate.wells(),
    dest=pcr_plate.wells(),
    mix_after=(3, 25),
    new_tip="always"
)

# 运行PCR
tc_mod.close_lid()
tc_mod.set_lid_temperature(105)
tc_mod.set_block_temperature(95, hold_time_minutes=3, block_max_volume=50)

pcr_profile = [
    {"temperature": 95, "hold_time_seconds": 30},
    {"temperature": 58, "hold_time_seconds": 30},
    {"temperature": 72, "hold_time_seconds": 60}
]

tc_mod.execute_profile(steps=pcr_profile, repetitions=30, block_max_volume=50)
tc_mod.set_block_temperature(72, hold_time_minutes=5, block_max_volume=50)
tc_mod.set_block_temperature(4)

tc_mod.deactivate_lid()
tc_mod.deactivate_block()
tc_mod.open_lid()

与夹爪集成(Flex)

# 在甲板外准备样品,移动到热循环仪
sample_plate = protocol.load_labware("opentrons_96_wellplate_200ul_pcr_full_skirt", "C2")

# 设置样品
# ... 移液 ...

# 用夹爪移动到热循环仪
tc_mod.open_lid()
protocol.move_labware(sample_plate, tc_mod, use_gripper=True)

# 运行PCR
tc_mod.close_lid()
# ... 热循环 ...

# 检索板
tc_mod.open_lid()
protocol.move_labware(sample_plate, "C2", use_gripper=True)

GEN2 改进

板抬升机制:

  • 盖子打开时按按钮3秒以激活
  • 抬升板以便手动或夹爪移除
  • 改善板访问并防止损坏

自动密封盖支持:

  • 使用 Opentrons Tough PCR 自动密封盖
  • 堆叠最多5个盖
  • 用夹爪自动放置盖

最佳实践

  1. 在循环前设置盖温度 - 防止冷凝
  2. 使用 block_max_volume 参数 - 提高温度准确性
  3. 在协议结束时停用块和盖 - 防止设备无限运行
  4. 在夹爪操作前打开盖子 - 板移动所需
  5. 使用配置文件进行重复循环 - 比单独调用 set_block_temperature 更高效
  6. 结束时冷却到4°C - 保护样品直到检索
  7. 计划热平衡 - 为大的温度变化留出额外时间
  8. 用模拟测试配置文件 - 在硬件上运行前验证时间
  9. 记录配置文件参数 - 在协议注释中包含理由
  10. 考虑酶规格 - 匹配聚合酶要求的温度

常见错误

❌ 不设置盖温度:

tc_mod.close_lid()
tc_mod.execute_profile(...)  # 冷凝风险 - 无盖加热

✅ 正确:

tc_mod.close_lid()
tc_mod.set_lid_temperature(105)
tc_mod.execute_profile(...)

❌ 盖子关闭时夹爪移动:

protocol.move_labware(plate, tc_mod, use_gripper=True)  # 错误:盖子关闭

✅ 正确:

tc_mod.open_lid()
protocol.move_labware(plate, tc_mod, use_gripper=True)

❌ 不停用模块:

tc_mod.execute_profile(...)
# 协议结束 - 热循环仪仍在加热!

✅ 正确:

tc_mod.execute_profile(...)
tc_mod.deactivate_lid()
tc_mod.deactivate_block()

❌ 错误的配置文件结构:

# 缺少 hold_time_seconds
bad_profile = [
    {"temperature": 95},
    {"temperature": 55}
]
tc_mod.execute_profile(steps=bad_profile, repetitions=30)  # 错误

✅ 正确:

good_profile = [
    {"temperature": 95, "hold_time_seconds": 30},
    {"temperature": 55, "hold_time_seconds": 30}
]
tc_mod.execute_profile(steps=good_profile, repetitions=30)

故障排除

模块未达到温度:

  • 验证温度在范围内(块4-99°C,盖37-110°C)
  • 检查环境温度以获取低温目标
  • 允许足够的热平衡时间

孔内冷凝:

  • 确保在循环前设置并达到盖温度
  • 设置盖温度 ≥ 最高块温度 + 5-10°C
  • 验证盖子正确关闭

配置文件未执行:

  • 检查配置文件结构(包含 temperature 和 hold_time_seconds 的字典列表)
  • 验证提供了 repetitions 参数
  • 确保 block_max_volume 匹配样品体积

板移除困难(GEN1):

  • 等待块冷却到60°C以下
  • 使用板抬升机制(GEN2)
  • 确保盖子完全打开

夹爪错误:

  • 验证在移动前盖子打开
  • 检查板是兼容的PCR实验器具
  • 确保热循环仪位置清晰

与其他模块集成

与温度模块(预冷却)

temp_mod = protocol.load_module("temperature module gen2", "D1")
tc_mod = protocol.load_module("thermocyclerModuleV2")

# 在温度模块上预冷却样品
temp_mod.set_temperature(4)
protocol.move_labware(sample_plate, temp_mod, use_gripper=True)
protocol.delay(minutes=5)

# 转移到热循环仪
tc_mod.open_lid()
protocol.move_labware(sample_plate, tc_mod, use_gripper=True)

# 运行PCR
tc_mod.close_lid()
# ... 热循环 ...

与磁模块(PCR清理)

# PCR后,执行磁珠清理
tc_mod.set_block_temperature(4)
tc_mod.open_lid()

mag_block = protocol.load_module("magneticBlockV1", "D2")

# 移动PCR产物到磁模块
protocol.move_labware(pcr_plate, mag_block, use_gripper=True)

# 清理工作流
# ... 磁珠纯化 ...

API 版本要求

  • 最小API版本: 2.0(热循环仪支持)
  • GEN2 特性: API 2.13+
  • 自动密封盖: API 2.15+
  • 推荐: 2.19+ 以支持完整特性

附加资源

相关技能

  • opentrons - 主要 Opentrons Python API 技能
  • opentrons-temperature-module - 简单温度控制(4-95°C)
  • opentrons-gripper - 自动化实验器具移动(Flex)
  • opentrons-magnetic-block - 用于PCR清理的磁珠分离