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协议在继续之前,先看页面。要了解脚本的典型结构,请看我们的例子页面。

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

故障排除

如果您在使用我们的产品时遇到问题,请查看我们的支持文档或通过我们网站上的对讲机联系我们的团队www.richardlipsey.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”:'我的协议',“作者”:的名字< email@address.com > ',“描述”:“开始使用OT2的简单协议”,“apiLevel”:“2.9”}#协议运行函数。冒号之后的部分会让编辑器知道#在哪里寻找自动完成建议def运行(协议:protocol_apiProtocolContext.):#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吸入(One hundred.,(“A1”])left_pipette分发(One hundred.,(“B2”])left_pipettedrop_tip()

它是如何组织的

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

  1. 元数据和版本选择

  2. 运行函数

  3. 实验室的器具

  4. 吸量管

  5. 命令

元数据和版本选择

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

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

有关Python协议API版本控制的更多信息,请参见版本控制

运行函数和协议上下文

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

这个函数的名称必须精确运行并且必须只接受一个强制参数(名称无关紧要,但我们建议协议因为这个参数表示机器人将执行的协议)。

这个函数运行是定义协议的代码的容器。

的对象协议协议内容,代表机器人及其能力。它总是一个实例opentrons.protocol_api.contexts.ProtocolContext类(尽管你永远不必自己实例化一个——它总是被传入run ()),它在示例协议中被这样标记,以允许大多数编辑器给您自动完成。

协议上下文有两项职责:

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

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

协议上下文的作用与机器人,实验室的器具,仪器,模块对象,有一个重要的区别:它只有一个对象;而且因为它是传递到协议而不是导入的,所以API可以更加严格地将模拟与现实分离。

关键是再也没有必要进口opentrons在每项规定的顶端,自从机器人现在运行该协议,而不是运行机器人的协议。示例协议导入协议上下文的定义,为编辑器提供自动完成源。

实验室的器具

下一步是定义您的协议所需的实验设备。您必须告诉协议上下文应该在桥牌上显示什么以及在哪里。通过调用该方法,您可以告诉有关实验室的协议上下文protocol.load_labware(名称、投币口)保存结果。

一个实验器具的名字是一个字符串,每一种实验器具的名称都不同。你可以在Opentrons上查找添加到你的协议的实验室软件必威体育打水套利

槽是你放置实验器具的甲板上标有标签的位置。可用槽号从1-11开始编号。

我们上面的示例协议加载

=协议load_labware('康宁_96_wellplate_360ul_flat',2)
tiprack=协议load_labware(“opentrons_96_tiprack_300ul”,1)

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

你可以在图书馆找到更多关于处理实验室用具的信息实验室的器具部分。

吸量管

在定义了实验软件之后,您定义了您的协议所需的仪器。通过调用该方法,可以告诉协议上下文应该附加哪些移液管,以及它们应该附加到哪些槽protocol.load_instrument(模型,山,tip_racks)保存结果。

模型移液器的种类是应该附加的移液器;的要么是“左”“正确的”;和tip_racks表示该仪器应使用的尖端架的对象列表。指定tip_racks是可选的,但如果你不这么做,你就必须手动指定每次你试着拿小费的时候仪器应该在哪里拿小费。

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

我们上面的示例协议加载一个P300单通道移液管(“p300_single”)在左座(“左”),并使用我们之前加载的Opentrons 300µL tiprack作为提示来源(tip_racks = [tiprack])。

命令

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

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

  2. 从槽2中指定的96孔板的A1孔中吸出100µL:移液管(100,板(“A1”))

  3. 取100µL到2号槽指定的96孔板A2孔中:移液管.Dispense(100,板(A2的))

  4. 把小费(隐式地扔到机器人甲板后面右边的垃圾桶里):pipette.drop_tip ()


特性请求

对我们的软件有什么有趣的想法或改进?在GitHub上按照这些创建一张票指导方针。

开发人员指南

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