OT-2 python program

掲載しているプロトコルは、プロトコル作成者(ほとんど学生)のメモ書きに近い記載であり、ミスも含まれるかもしれませんが、一応OT2で動かして研究に使用したプロトコルです。プロトコル作成者のなんらかのヒントになれば幸いです。


 96well plate

コードを作製しやすいように右側にwell位置を並べておきます。上段は96wellプレートの縦使い↓、下段は横使い→です。

 

Q: CSVデータからテキストに表示したときに、両サイドに  '   ' を付けるにはどうすればいいのだろうか、、、。

A: ''A1'と入れるとうまくいきます。

'A1','B1','C1','D1','E1','F1','G1','H1',
'A2','B2','C2','D2','E2','F2','G2','H2',
'A3','B3','C3','D3','E3','F3','G3','H3',
'A4','B4','C4','D4','E4','F4','G4','H4',
'A5','B5','C5','D5','E5','F5','G5','H5',
'A6','B6','C6','D6','E6','F6','G6','H6',
'A7','B7','C7','D7','E7','F7','G7','H7',
'A8','B8','C8','D8','E8','F8','G8','H8',
'A9','B9','C9','D9','E9','F9','G9','H9',
'A10','B10','C10','D10','E10','F10','G10','H10',
'A11','B11','C11','D11','E11','F11','G11','H11',
'A12','B12','C12','D12','E12','F12','G12','H12',

 

'A1','A2','A3','A4','A5','A6','A7','A8','A9','A10','A11','A12',

'B1','B2','B3','B4','B5','B6','B7','B8','B9','B10','B11','B12',

'C1','C2','C3','C4','C5','C6','C7','C8','C9','C10','C11','C12',

'D1','D2','D3','D4','D5','D6','D7','D8','D9','D10','D11','D12',

'E1','E2','E3','E4','E5','E6','E7','E8','E9','E10','E11','E12',

'F1','F2','F3','F4','F5','F6','F7','F8','F9','F10','F11','F12',

'G1','G2','G3','G4','G5','G6','G7','G8','G9','G10','G11','G12',

'H1','H2','H3','H4','H5','H6','H7','H8','H9','H10','H11','H12'

 24well plate 'A1','A2','A3','A4','A5','A6','B1','B2','B3','B4','B5','B6','C1','C2','C3','C4','C5','C6','D1','D2','D3','D4','D5','D6'

プレート等の定義付け

 

「plate1」の定義opentrons_24_tuberack_eppendorf_2ml_safelock_snapcapのプレートを用い、10の場所に設置

「plate2」の定義opentrons_24_tuberack_eppendorf_2ml_safelock_snapcapのプレートを用い、7の場所に設置

「plate3」の定義opentrons_24_tuberack_eppendorf_2ml_safelock_snapcapのプレートを用い、8の場所に設置

「source_tube」の定義opentrons_10_tuberack_falcon_4x50ml_6x15ml_conicalのプレートを用い、11の場所に設置

「tiprack」とは、opentrons_96_tiprack_1000ulのプレートを用い、1の場所に設置

「tiprack2」とは、opentrons_96_tiprack_300ulのプレートを用い、4の場所に設置

「right_pipette」とは、アーム右側に取り付けているp1000のピペットを用い、tiprackのチップを用いる

 

right_pipetteの吸引するスピードは100

 

「left_pipette」とは、p300のピペットを用い、左側にあり、tiprack2のチップを用いる

 

 

 

plate1 = protocol.load_labware(

'opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap', '10')

 

plate2 = protocol.load_labware(

'opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap', '7')

 

plate3 = protocol.load_labware('

opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap', '8')

 

source_tube = protocol.load_labware(

'opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical', '11')

 

tiprack = protocol.load_labware('opentrons_96_tiprack_1000ul', '1')

 

tiprack2 = protocol.load_labware('opentrons_96_tiprack_300ul', '4')

 

right_pipette = protocol.load_instrument(

'p1000_single', 'right', tip_racks=[tiprack])

 

right_pipette.flow_rate.aspirate = 100

 

left_pipette = protocol.load_instrument(

'p300_single', 'left', tip_racks=[tiprack2])

  

protocol 1

 

 

 

 

 

 

 

 

 

 

right_pipetteにチップをつける

 

「well_name」を定義する

「well_name」とは、A1, A2, … , D5, D6の24wellsのことである

 

source_tubeのA3(水)を500µLずつplate1の24wellsに添加

  • 添加するとき、チューブの底から15mmの位置で排出
  • 同じチップで全ての作業を行う
right_pipetteのチップを捨てる

 

from opentrons import protocol_api

metadata = {

'protocolName': 'My Protocol',

'author': 'Name <email@address.com>',

'description': 'Simple protocol to get started using OT2',

'apiLevel': '2.2'

}

 

def run(protocol: protocol_api.ProtocolContext):

〈プレート等の定義付け〉

 

 right_pipette.pick_up_tip()

 

well_name=['A1','A2','A3','A4','A5','A6',

'B1','B2','B3','B4','B5','B6','C1','C2','C3','C4','C5','C6','D1','D2','D3','D4','D5','D6']

 

for i in well_name:

right_pipette.transfer(500,

source_tube['A3'],

plate1[i].bottom(z=15),

new_tip='never')

 

right_pipette.drop_tip()

 

protocol 2

 

 

 

 

 

 

 

 

 

 

 

right_pipetteにチップをつける

 

「well_name」を定義する

 

source_tubeのA4(アセトニトリル)を900µLずつplate1の24wellsに添加

  • 添加するとき、チューブの底から30mmの位置で排出
  • 同じチップで全ての作業を行う
  • air gap 20µL

right_pipetteのチップを捨てる

 

from opentrons import protocol_api

metadata = {

'protocolName': 'My Protocol',

'author': 'Name <email@address.com>',

'description': 'Simple protocol to get started using OT2',

'apiLevel': '2.2'

}

 

def run(protocol: protocol_api.ProtocolContext):

〈プレート等の定義付け〉

 

right_pipette.pick_up_tip()

 

well_name=['A1','A2','A3','A4','A5','A6',

'B1','B2','B3','B4','B5','B6','C1','C2','C3','C4','C5','C6','D1','D2','D3','D4','D5','D6']

 

for i in well_name:

      right_pipette.transfer([900],

      source_tube['A4'],

      plate2[i].bottom(z=30),

      new_tip='never',air_gap=20)

 

right_pipette.drop_tip() 

 

protocol 3

 

 

 

 

 

 

 

 

 

 

 

「well_name」を定義する

 

plate1の上清を50µLずつplate2に移す

  • 吸引するとき、チューブの底から15mmの位置で排出
  • チップは毎回捨てる

 

 

from opentrons import protocol_api

metadata = {

'protocolName': 'My Protocol',

'author': 'Name <email@address.com>',

'description': 'Simple protocol to get started using OT2',

'apiLevel': '2.2'

}

 

def run(protocol: protocol_api.ProtocolContext):

〈プレート等の定義付け〉

 

well_name=['A1','A2','A3','A4','A5','A6',

'B1','B2','B3','B4','B5','B6','C1','C2','C3','C4','C5','C6','D1','D2','D3','D4','D5','D6']

 

for i in well_name:

left_pipette.transfer(

50,

plate1[i].bottom(z=15),

plate2[i],

new_tip='always')

 

protocol 4

 

 

 

 

 

 

 

 

 

 

right pipetteにチップをつける

 

「well_name」を定義する

 

source_tubeのA4(アセトニトリル)を450µLずつplate2の24wellsに添加

  • 添加するとき、チューブの底から15mmの位置で排出
  • 同じチップで全ての作業を行う
  • air gap 20µL

right pipetteのチップを捨てる

 

from opentrons import protocol_api

metadata = {

'protocolName': 'My Protocol',

'author': 'Name <email@address.com>',

'description': 'Simple protocol to get started using OT2',

'apiLevel': '2.2'

}

 

def run(protocol: protocol_api.ProtocolContext):

〈プレート等の定義付け〉

 

right_pipette.pick_up_tip()

 

well_name=['A1','A2','A3','A4','A5','A6',

'B1','B2','B3','B4','B5','B6','C1','C2','C3','C4','C5','C6','D1','D2','D3','D4','D5','D6']

 

for i in well_name:

      right_pipette.transfer([450],

      source_tube['A4'],

      plate2[i].bottom(z=15),

      new_tip='never',air_gap=20)

 

right_pipette.drop_tip()

 

protocol 5

 

 

 

 

 

 

 

 

 

 

 

 

plate2の24wellsをそれぞれ50µLずつplate3の24wellsに移す

 

 

 

 

 

 

from opentrons import protocol_api

metadata = {

'protocolName': 'My Protocol',

'author': 'Name <email@address.com>',

'description': 'Simple protocol to get started using OT2',

'apiLevel': '2.2'

}

 

def run(protocol: protocol_api.ProtocolContext):

〈プレート等の定義付け〉

 

left_pipette.transfer(

50,

    [plate2.wells_by_name()[well_name] for well_name in ['A1','A2','A3','A4','A5','A6','B1','B2','B3','B4','B5','B6','C1','C2','C3','C4',

'C5','C6','D1','D2','D3','D4','D5','D6']],

    [plate3.wells_by_name()[well_name] for well_name in ['A1','A2','A3','A4','A5','A6','B1','B2','B3','B4','B5','B6','C1','C2','C3','C4',

'C5','C6','D1','D2','D3','D4','D5','D6']],

    new_tip='always')

 

protocol 6

 

 

 

 

 

 

 

 

 

 

left pipetteにチップをつける

 

「well_name」を定義する

 

source_tubeのB3(ホウ酸バッファー)を50µLずつplate1の24wellsに添加

  • 添加するとき、チューブの底から15mmの位置で排出
  • 同じチップで全ての作業を行う 

left pipetteのチップを捨てる

 

from opentrons import protocol_api

metadata = {

'protocolName': 'My Protocol',

'author': 'Name <email@address.com>',

'description': 'Simple protocol to get started using OT2',

'apiLevel': '2.2'

}

 

def run(protocol: protocol_api.ProtocolContext):

〈プレート等の定義付け〉

 

left_pipette.pick_up_tip()

 

well_name=['A1','A2','A3','A4','A5','A6',

'B1','B2','B3','B4','B5','B6','C1','C2','C3','C4','C5','C6','D1','D2','D3','D4','D5','D6']

 

left_pipette.transfer([50],

      source_tube['B3'],

      plate1[i].bottom(z=15),

      new_tip='never')

 

left_pipette.drop_tip()

 

protocol 7

 

 

 

 

 

 

 

 

 

 

left pipetteにチップをつける

 

「well_name」を定義する

 

source_tubeのB4(FMOC-Osu)を50µLずつplate1の24wellsに添加

  • 添加するとき、チューブの底から15mmの位置で排出
  • 同じチップで全ての作業を行う

left pipetteのチップを捨てる

 

from opentrons import protocol_api

metadata = {

'protocolName': 'My Protocol',

'author': 'Name <email@address.com>',

'description': 'Simple protocol to get started using OT2',

'apiLevel': '2.2'

}

 

def run(protocol: protocol_api.ProtocolContext):

〈プレート等の定義付け〉

 

left_pipette.pick_up_tip()

 

well_name=['A1','A2','A3','A4','A5','A6',

'B1','B2','B3','B4','B5','B6','C1','C2','C3','C4','C5','C6','D1','D2','D3','D4','D5','D6']

 

for i in well_name:

      left_pipette.transfer([50],

      source_tube['B4'],

      plate1[i].bottom(z=15),

      new_tip='never')

 

left_pipette.drop_tip()

 

T. M. and N. N.

protocol1

100倍希釈尿1mLの作成(10検体)

 

 

 

 

 

                

 

                          

 plate置き場とplate番号を同じにしている。

 

 

 

 

#尿を30µL,水270µLで一段階希釈(10倍希釈)

 ①plate6から水を270µLとりplate3へ

 

 ②plate2から尿を30µLとり、plate3へ移す

  mix_[before,after] =(回数,量);とる[前or後]にpipetting

  new_tip='always'           ;tipは常に交換

 

 

 

 

 

 

 

 

 

 ③10倍希釈尿100µLをplate3[A1~B2]から[A3~B4]へ

 

 

 

 

 

 

 ④plate6から水を900µLとり二段階希釈(100倍希釈)

 

 

 

 

 

 

from opentrons import protocol_api

metadata = {

    'protocolName': 'My Protocol',

    'author': 'Name <email@address.com>',

    'description': 'Simple protocol to get started using OT2',

    'apiLevel': '2.2'

}

 

def run(protocol: protocol_api.ProtocolContext):

  〈プレート等の定義付け〉

    plate2 :#urineが入っています

    plate3 :#ここでmixされます

    plate6 :#水が入っています

   

 #commands

    right_pipette.transfer([270,270,270,270,270,270,270,270,270,270],

          plate6['A1'],

          [plate3.wells_by_name()[well_name] for well_name in           ['A1','B1','C1','D1','E1','F1','G1','H1','A2','B2']])

 

    left_pipette.transfer([30,30,30,30,30,30,30,30,30,30],

          [plate2.wells_by_name()[well_name] for well_name in                 ['A1','B1','C1','D1','E1','F1','G1','H1','A2','B2']],

                                          [plate3.wells_by_name()[well_name] for well_name in                 ['A1','B1','C1','D1','E1','F1','G1','H1','A2','B2']],

                                        mix_before=(2, 100),mix_after=(2,100)

          new_tip='always')

   

  

    left_pipette.transfer([100,100,100,100,100,100,100,100,100,100],                                                          [plate3.wells_by_name()[well_name] for well_name in                                                                   ['A1','B1','C1','D1','E1','F1','G1','H1','A2','B2']],

                                         [plate3.wells_by_name()[well_name] for well_name in                                                                   ['A3','B3','C3','D3','E3','F3','G3','H3','A4','B4']],

                                         mix_before=(2,100),

                                         new_tip='always')

 

     right_pipette.transfer([900,900,900,900,900,900,900,900,900,900],

                                         plate6['A1'],

                                         [plate3.wells_by_name()[well_name] for well_name in                                                                   ['A3','B3','C3','D3','E3','F3','G3','H3','A4','B4']]

                                         mix_after=(2,500),

                                         new_tip='always' )

 

protocol2

 CreMDi(creatinine matching method)について

 (8検体のとき)

 

 

 

 

 

 

 

 

 

 

 

 

  #元の尿の10倍希釈を1mL作成

①plate2に 300μlずつ分注した尿を、plate3に

 100μlずつ移す

 

 

 

 

 

 

 

 

②水を900μlずついれる。

 topから1.5mm低い位置から分注する well_nameをi と

 置き換えている。『900μl→i に分注する』

 

 

 

  #計算した尿量を分注

 ③300µL以上の尿量の場合はp1000を用いる。

 (尿量が300µL以上必要な場合)

 

 

 

 

 

 

 

 ④30~300µLの尿量はp300を用いる。

 (尿量が30~300µLの場合)

 

 

 

 

 

 

⑤クレアチニン濃度が0.05g/Lとなるように各セルに水を

 各量分注する。

 

 

 

 

 

 

 

 

 

 

 

 from opentrons import protocol_api

# metadata

metadata = {

    'protocolName': 'My Protocol',

    'author': 'Name <email@address.com>',

    'description': 'Simple protocol to get started using OT2',

    'apiLevel': '2.2'

}

  

def run(protocol: protocol_api.ProtocolContext):

  〈プレート等の定義付け〉

    plate2 :#urine

    plate3 :#mix

 

    plate6 :#水

 

# commands

    left_pipette.transfer([100,100,100,100,100,100,100,100],

             [plate2.wells_by_name()[well_name] for well_name in                     ['A1','B1','C1','D1','E1','F1','G1','H1']],

             [plate3.wells_by_name()[well_name] for well_name in                     ['A1','B1','C1','D1','E1','F1','G1','H1']],

             mix_before=(2, 200), 

             new_tip='always')

    

    

    

 

    right_pipette.pick_up_tip()

    well__name=['A1','B1','C1','D1','E1','F1','G1','H1']

    for i in well__name:

    right_pipette.transfer([900],plate6['A1'],plate3[i].top(z=-1.5),

    new_tip='never')

    right_pipette.drop_tip()

    

 

 

    right_pipette.transfer([計算した各量],

              [plate3.wells_by_name()[well_name] for well_name in

                        [’対応するセル’]],

              [plate3.wells_by_name()[well_name] for well_name in

                                                                         ['対応するセル']],

              mix_before=(2, 量に合わせて), 

              new_tip='always')

 

    left_pipette.transfer([計算した各量],

              [plate3.wells_by_name()[well_name] for well_name in

                        ['対応するセル']],

              [plate3.wells_by_name()[well_name] for well_name in

                        ['対応するセル']],

              mix_before=(3, 量に合わせて), 

              new_tip='always')

 

    right_pipette.transfer([計算した各量], 

              plate6['A1'],

             [plate3.wells_by_name()[well_name] for well_name in                               ['対応するセル']],

                                        mix_after=(2, 量に合わせて), 

                                        new_tip='always')

 

 

 

 

 

 plate1のA1から800uLとり、

plate1の3列目(A3~H)に100uLずつ排出

 

 

 

 

 from opentrons import protocol_api

metadata = {

'protocolName': 'My Protocol',

'author': 'Name <email@address.com>',

'description': 'Simple protocol to get started using OT2',

'apiLevel': '2.2'

}

def run(protocol: protocol_api.ProtocolContext):

  plate1=protocol.load_labware('usascientific_96_wellplate_2.4ml_deep', '3')

  tiprack = protocol.load_labware('opentrons_96_tiprack_1000ul', '1')

  tiprack2 = protocol.load_labware('opentrons_96_tiprack_300ul', '4')

  right_pipette = protocol.load_instrument('p1000_single', 'right', tip_racks=[tiprack])

  left_pipette = protocol.load_instrument('p300_single', 'left', tip_racks=[tiprack2])

              right_pipette.pick_up_tip()

              right_pipette.aspirate(800,plate1['A1'])

              well_name = ['A3','B3','C3','D3','E3','F3','G3','H3']

              for i in well_name: right_pipette.dispense(100,plate1[i].top(z = -5))

              right_pipette.drop_tip()

K.Y.

protocol

クレアチニンが0.05 g/Lになるように

サンプル尿を希釈する。

 

予めクレアチニンを測定し、0.05g/L

になるように希釈倍率を計算する。

計算した尿と精製水の分注量を下記の

青字に当てはめる。

 

 

 

 

 

 

 

 

<プレート等の定義付け>

 

 

 

 

 

 

 

 

 

 

 

 

96wellプレート上で尿を隣の列に分注する。

 

 

精製水を尿を分注した列に分注する。

 

 

 

by U.T

from opentrons import protocol_api

 

#metadata

 

metadata = {

    'protocolName': 'My Protocol',

 

    'author': 'Name <email@address.com>',

 

    'description': 'Simple protocol to get started using OT2',

 

    'apiLevel': '2.2'

 

}

 

def run(protocol: protocol_api.ProtocolContext):

  # labware

    plate1 = protocol.load_labware('usascientific_96_wellplate_2.4ml_deep', '2')

    plate2 = protocol.load_labware('usascientific_96_wellplate_2.4ml_deep', '3')

    source_tube = protocol.load_labware('opentrons_15_tuberack_nest_15ml_conical', '5')

    tiprack = protocol.load_labware('opentrons_96_tiprack_1000ul', '1')

    tiprack2 = protocol.load_labware('opentrons_96_tiprack_300ul', '4')  # pipettes

    right_pipette = protocol.load_instrument('p1000_single', 'right', tip_racks=[tiprack])

    right_pipette.flow_rate.aspirate = 100

    left_pipette = protocol.load_instrument(

         'p300_single', 'left', tip_racks=[tiprack2])    

 

  #commands

 

    left_pipette.transfer([114,104,48,107,204,94,75,192],

        [plate1.wells_by_name()[well_name] for well_name in ['A1','B1','C1','D1','E1','F1','G1','H1']],

        [plate1.wells_by_name()[well_name] for well_name in ['A2','B2','C2','D2','E2','F2','G2','H2']],

new_tip='always')

    right_pipette.transfer([1886,1693,1952,1893,1184,1906,1925,1808],

        [plate2.wells_by_name()[well_name] for well_name in ['A1']],

        [plate1.wells_by_name()[well_name] for well_name in ['A2','B2','C2','D2','E2','F2','G2','H2']], new_tip='always')

 


Original Labware file

Poevair 24well plate (44mm height)

https://nuss.nagoya-u.ac.jp/s/XnSzHMpLLRr5yf4

 

 



Original Labware file

Poevair 24well plate with 10 ml glass test tube (105 mm height)

https://nuss.nagoya-u.ac.jp/s/J9sHzp2X9wx6yPr



Liquid-Liquid extraction

transfer upper solv. ether

Poevair 24well plate with 10 ml glass test tube

 

Protocol URL

https://nuss.nagoya-u.ac.jp/s/jnrStiWX4cns64G

 

movie URL

https://nuss.nagoya-u.ac.jp/s/SZeeKtnwxMmpEgA