OT-2 Python协议API版本2

OT-2 Python协议API是一个简单的Python框架,旨在简单地制作自动化生物学实验室协议。

我们以一种我们希望拥有基本Python和wetlab技能的人都能理解的方式来设计它。作为一名实验室科学家,你应该能够以一种读起来像实验室笔记本的方式编写你的自动协议。

API的版本2是编写Python协议的新方法。它更可靠,更简单,更能够得到支持。与版本1不同,它还支持像热控器这样的新模块。虽然版本1仍会收到错误修复,但新功能和改进将在版本2中降落2.有关从版本1转换到API的版本2的指南,请参阅这篇关于迁移的文章。对于更深入的讨论,为什么开发了API的版本2,与版本1相比,它有什么不同,请参阅本文介绍我们为什么要编写API V2


开始

新到Python吗?看看我们使用Python进行协议在继续之前先翻一页。要了解脚本的典型结构,请查看我们的例子页面。

要在笔记本电脑上模拟协议,请退房模拟脚本。当您在机器人上运行脚本时,请下载我们的最新消息桌面应用程序

故障排除

如果您在使用我们的产品时遇到问题,请查看我们的产品支持文档或通过对讲机在我们的网站上通过对讲机联系我们的团队Opentrons.com.


概述

看起来如何

此API的设计目标是使代码可读且易于理解。例如,下面是从井转移的一套短指令“A1”到好“B1”即使是计算机也可以理解:

该协议是我的;它被称为Opentrons协议教程,并用于演示OT-2 Python协议API。它使用此API的2.0版。

开始的协议

添加一个96个孔板,并将其放入机器人甲板的插槽'2'中

添加一个300µL尖端架,并将其放置在机器人甲板的插槽' 1 '

将单通道300μL移液器添加到左侧安装,并告诉它使用该尖端机架

将100µL从板的“A1”井转移到“B2”井

如果我们要使用Python协议API重写这一点,它将如下所示:

opentrons.进口protocol_api.#元数据元数据={“protocolName”:'我的协议',“作者”:'名称','描述':“简单的协议使用OT2”,'apilevel':“2.9”}#协议运行功能。冒号后的部分让您的编辑知道#在哪里寻找自动完成建议def跑步(协议:protocol_api.ProtocolContext.):#labware.=协议load_labware.('康宁_96_wellplate_360ul_flat',' 2 ')tiprack=协议load_labware.('OpenTrons_96_Tiprack_300UL',' 1 ')#吸量管left_pipette=协议load_instrument(“p300_single”,'剩下',tip_racks=(tiprack])#命令left_pipettepick_up_tip.()left_pipette抱怨(100.,(“A1”])left_pipette分配(100.,(“B2”])left_pipettedrop_tip()

它是如何组织的

当使用Python协议API编写协议时,通常有五个部分:

  1. 元数据和版本选择

  2. 运行函数

  3. 实验室

  4. 吸量管

  5. 命令

元数据和版本选择

元数据是一个由服务器读取并返回给客户端应用程序(如Opentrons应用程序)的数据字典。大多数元数据在运行协议时是不需要的,但是如果有的话可以帮助Opentrons应用显示关于当前正在执行的协议的额外数据。这些可选(但推荐)字段是(“协议名称”,“作者”, 和“描述”)。

元数据的所需元素是“apilevel”。这必须包含一个字符串,该字符串指定您的协议设计的Python协议API的主要版本。例如,为Python协议API的2.0版编写的协议(仅在协议API的启动版本中应该具有其元数据“apilevel”:“2.0”

有关Python协议API版本控制的详细信息,请参阅版本控制

运行函数和协议上下文

协议围绕调用的函数构建运行(协议),在这样的代码中定义:

这个函数必须精确命名跑步并且必须使用一个强制参数(名称不重要,但是我们建议使用)协议因为这个参数表示机器人将要执行的协议)。

功能跑步是定义协议的代码的容器。

物体协议是个协议上下文,它代表了机器人及其能力。它总是一个实例OpenTrons.protocol_api.contexts.protocolcontext.类(尽管你永远不需要自己实例化它——它总是被传入跑步()),并且它在示例协议中被标记为这样,以允许大多数编辑器给你自动完成。

协议上下文有两项职责:

  1. 记住,跟踪,检查机器人的状态

  2. 公开使机器人执行操作的函数

协议上下文播放与此相同的角色机器人,实验室,仪器, 和模块过去版本中的对象,一个重要的区别:它只是一个对象;因为它传递给您的协议而不是导入,因此API可能更严格地与现实分离模拟。

关键是不再需要进口opentrons.在每个协议的顶部,自以来机器人现在运行协议,而不是运行机器人的协议。示例协议导入协议上下文的定义,为编辑器提供自动完成源。

实验室

下一步是定义协议所需的LabWare。您必须告诉协议上下文关于甲板上应该存在的内容以及在哪里。通过调用该方法,您可以告诉LabWare的协议上下文protocol.load_labware(名称,投币口)并拯救结果。

实验件的名称是一个字符串,每种实验件的名称都不一样。你可以在opentron上查找labware来添加你的协议下载金宝搏188网址

槽是你放置实验用具的甲板上的标签位置。可用的槽位编号为1 ~ 11。

上面的示例协议加载

=协议load_labware.('康宁_96_wellplate_360ul_flat',2)
tiprack=协议load_labware.('OpenTrons_96_Tiprack_300UL',1)

可以在协议中稍后引用这些实验室软件tiprack分别。看看python文档为了进一步澄清,在代码中有效地使用变量。

你可以找到更多的信息处理实验室器具在实验室部分。

吸量管

定义LabWare后,您可以定义协议所需的仪器。您可以通过调用该方法,告诉应附加哪些移液器的协议上下文,以及它们应该附加的插槽protocol.load_instrument(模型,山,tip_racks)并拯救结果。

模型移液器是应该附着的吸移管;这要么是“剩下”或者“对”;和tip_racks是表示此仪器应使用的提示机架的对象列表。指定tip_racks是可选的,但如果您不这样做,那么您必须手动指定仪器应该从每次尝试拾取提示时拿起提示。

看到吸量管有关创建和使用移液器的更多信息。

我们的示例协议上面加载P300单通道移液管(“p300_single”)在左侧安装('剩下'),并使用我们以前作为提示源加载的Opentrons300μltiprack(tip_racks = [tiprack])。

命令

一旦定义了协议所需的仪器和实验设备,下一步就是定义组成协议的命令。最常见的命令是抽出物(),分发(),pick_up_tip(), 和drop_tip()。这些和许多其他人在中描述构建块命令复杂的命令部分,这些部分有关命令以及它们的工作方式。这些命令通常使用先前定义的LabWare指定与其与您定义的LabWare进行交互的井,以及您在移液器部分中创建的仪器的方法。例如,在我们的示例协议中,您可以使用您定义的移液器:

  1. 拾取提示(隐式地从插槽1中指定的Tiprack并分配给移液器):pipette.pick_up_tip()

  2. 从插槽2中指定的96个孔板的井A1起100μl从井A1中吸出100μl:移液管(100,板(“A1”))

  3. 在槽2中指定的96个孔板的井A2分配100μl:移液管.Dispense(100,板(A2的))

  4. 将尖端放下(隐式地进入机器人甲板的右侧的垃圾):pipette.drop_tip ()


特性请求

对我们的软件有什么有趣的想法或改进吗?通过以下步骤在GitHub上创建一个票据指导方针。

开发人员指南

你想为我们的开源API做贡献吗?你可以找到更多关于如何参与的信息这里。