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进行协议在继续之前先翻一页。要了解脚本的典型结构,请查看我们的例子页面。
概述¶
看起来如何¶
此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_pipette。pick_up_tip.()left_pipette。抱怨(100.,板(“A1”])left_pipette。分配(100.,板(“B2”])left_pipette。drop_tip()
它是如何组织的¶
当使用Python协议API编写协议时,通常有五个部分:
元数据和版本选择
运行函数
实验室
吸量管
命令
元数据和版本选择¶
元数据是一个由服务器读取并返回给客户端应用程序(如Opentrons应用程序)的数据字典。大多数元数据在运行协议时是不需要的,但是如果有的话可以帮助Opentrons应用显示关于当前正在执行的协议的额外数据。这些可选(但推荐)字段是(“协议名称”
,“作者”
, 和“描述”
)。
元数据的所需元素是“apilevel”
。这必须包含一个字符串,该字符串指定您的协议设计的Python协议API的主要版本。例如,为Python协议API的2.0版编写的协议(仅在协议API的启动版本中应该具有其元数据“apilevel”:“2.0”
。
有关Python协议API版本控制的详细信息,请参阅版本控制。
运行函数和协议上下文¶
协议围绕调用的函数构建运行(协议)
,在这样的代码中定义:
这个函数必须精确命名跑步
并且必须使用一个强制参数(名称不重要,但是我们建议使用)协议
因为这个参数表示机器人将要执行的协议)。
功能跑步
是定义协议的代码的容器。
物体协议
是个协议上下文,它代表了机器人及其能力。它总是一个实例OpenTrons.protocol_api.contexts.protocolcontext.
类(尽管你永远不需要自己实例化它——它总是被传入跑步()
),并且它在示例协议中被标记为这样,以允许大多数编辑器给你自动完成。
协议上下文有两项职责:
记住,跟踪,检查机器人的状态
公开使机器人执行操作的函数
协议上下文播放与此相同的角色机器人
,实验室
,仪器
, 和模块
过去版本中的对象,一个重要的区别:它只是一个对象;因为它传递给您的协议而不是导入,因此API可能更严格地与现实分离模拟。
关键是不再需要进口opentrons.
在每个协议的顶部,自以来机器人现在运行协议,而不是运行机器人的协议。示例协议导入协议上下文的定义,为编辑器提供自动完成源。
实验室¶
下一步是定义协议所需的LabWare。您必须告诉协议上下文关于甲板上应该存在的内容以及在哪里。通过调用该方法,您可以告诉LabWare的协议上下文protocol.load_labware(名称,投币口)
并拯救结果。
实验件的名称是一个字符串,每种实验件的名称都不一样。你可以在opentron上查找labware来添加你的协议下载金宝搏188网址。
槽是你放置实验用具的甲板上的标签位置。可用的槽位编号为1 ~ 11。
上面的示例协议加载
一个康宁96孔板在插槽2中:
板=协议。load_labware.('康宁_96_wellplate_360ul_flat',2)
一个Opentrons300μltiprack.在插槽1:
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中指定的Tiprack并分配给移液器):
pipette.pick_up_tip()
从插槽2中指定的96个孔板的井A1起100μl从井A1中吸出100μl:
移液管(100,板(“A1”))
在槽2中指定的96个孔板的井A2分配100μl:
移液管.Dispense(100,板(A2的))
将尖端放下(隐式地进入机器人甲板的右侧的垃圾):
pipette.drop_tip ()