You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -54,7 +54,7 @@ Now that you've installed Opentrons API on your computer, you have access to a v
54
54
trash_container=trash,
55
55
tip_racks=[tiprack],
56
56
min_volume=20,
57
-
max_volume=2000,
57
+
max_volume=200,
58
58
axis="a",
59
59
channels=1
60
60
)
@@ -78,46 +78,29 @@ Now that you have a robot to run commands on, you need to tell it what container
78
78
Containers
79
79
^^^^^^^^^^
80
80
81
-
For each container you want to use on the deck, you need to load it into your file by telling the robot what it is, where it is, and what to label it. The label you give the container is what will appear in the app when you start calibrating.
Each container on the deck is loaded using the container's name and assign it to a slot. The API comes packaged with a set of containers, and users can create and add their own custom containers.
90
86
91
87
**containers.load** (*container, slot, name*)
92
88
93
89
* **container -** type of container (aka "trough-12row")
94
90
* **slot -** the slot location on the deck ("A1" through "E3")
95
-
* **name -** custom name, used inside API when saving calibration data
91
+
* **name -** (optional) custom name, used inside API when saving calibration data
96
92
97
-
The example below declares 3 different containers and assigns them to the appropriate slots on the deck.
93
+
The robot will save calibrated container coordinates from old runs based on the ``container`` and ``slot`` combination. Therefore, if you repeatedly place the same container type in the same slot, the robot will assume your old calibrated coordinates for that container.
98
94
99
-
.. testcode:: main
100
-
101
-
tiprack = containers.load(
102
-
'tiprack-200ul',
103
-
'A1',
104
-
'tiprack'
105
-
)
95
+
However, if you include the optional third argument ``name``, the robot will assume coordinates based off the ``name`` and ``slot`` combination. This allows a container to differentiate it's saved coordinates from previous protocols.
106
96
107
-
plate = containers.load(
108
-
'96-PCR-flat',
109
-
'B2',
110
-
'plate'
111
-
)
112
-
113
-
trash = containers.load(
114
-
'point',
115
-
'C3',
116
-
'trash'
117
-
)
97
+
The example below declares 3 different containers and assigns them to the appropriate slots on the deck. The trash uses a custom name, so that it doesn not inherit the coordinates of previous "point" containers at slot "C3".
118
98
119
-
120
-
The robot will save calibration data from old runs based on the container type, slot position and given name. Thus, if you always give something the same arguments, it will populate the app with old calibration data. If you do not want it to do this, simply change the given name to unique names.
* **trash_container -** given name of container where you want to deposit tips
145
-
* **tip_racks -** array (list) of container(s) where you want to pick up tips
146
-
* **channels -** number of channels (1 or 8)
125
+
* **min_volume -** (optional) minimum volume of pipette
126
+
* **tip_racks -** (optional) array (list) of container(s) where you want to pick up tips
127
+
* **trash_container -** (optional) given name of container where you want to deposit tips
128
+
* **channels -** (optional) number of channels (1 or 8)
129
+
* **name -** (optional) name you give pipette
147
130
148
-
This example loads a single channel, 20-200 uL pipette on the ``b`` axis that pulls tips from tiprack and deposits them in trash
149
-
150
-
.. testcode:: main
131
+
To use the tip-tracking features, create your pipette with tip racks and a trash container like the following example:
151
132
152
-
pipette = instruments.Pipette(
153
-
name="p200",
154
-
trash_container=trash,
155
-
tip_racks=[tiprack],
156
-
min_volume=20,
133
+
.. code-block:: python
134
+
135
+
mypipette = instruments.Pipette(
136
+
axis="b",
157
137
max_volume=200,
158
-
axis="b",
159
-
channels=1
138
+
tip_racks=[tiprack],
139
+
trash_container=trash
160
140
)
161
141
142
+
mypipette.pick_up_tip() # picks up tip at A1
143
+
mypipette.drop_tip() # drops tip in the trash container
144
+
mypipette.pick_up_tip() # picks up tip at B1
145
+
mypipette.return_tip() # drops tip back at B1
146
+
147
+
.. testcode:: main
148
+
149
+
150
+
162
151
Commands
163
152
-----------------------------
164
153
@@ -172,33 +161,48 @@ Before you can start moving liquid around, you need to pick up a tip! You can p
172
161
173
162
**pipette.pick_up_tip** (*location*)
174
163
175
-
* **location -** container[position] location to pick up tip
164
+
* **location -** container[position] the tip's current position
176
165
177
166
.. testcode:: main
178
167
179
168
p200.pick_up_tip(tiprack['A2'])
180
169
181
-
However, if you just want to go through the tips in a tip rack in order, there is no need to call a location. The example below will pick up the first available tip, and the API will keep track of which tips have been used so far in the protocol.
182
-
183
-
.. testcode:: main
184
-
185
-
p200.pick_up_tip()
186
-
187
170
In addition to picking up a tip, there is a command to drop tip.
188
171
189
172
**pipette.drop_tip** (*location*)
190
173
191
-
* **location -** container[position] location to drop tip
174
+
* **location -** container[position] the position to drop the tip
192
175
193
176
.. testcode:: main
194
177
195
178
p200.drop_tip(tiprack['A2'])
196
179
197
-
While you can only pick up tips from tip racks, you can eject tips back into the tiprack, or send them to the trash. While you can specify trash as a location, you can also use the default version of drop tip like the example below.
180
+
The behavior or tip commands changes depending on whether you have attached tip racks and/or trash containers to your pipette.
181
+
This happens when a pipette is created through using it's ``tip_racks`` and ``trash`` properties.
198
182
199
-
.. testcode:: main
183
+
.. code-block:: python
200
184
201
-
p200.drop_tip()
185
+
p200 = instruments.Pipette(
186
+
axis='a',
187
+
max_volume=200,
188
+
tip_racks=[tiprack],
189
+
trash=trash)
190
+
191
+
With a list of one or more tip racks, a pipette can automatically iterate through it's tips without passing any arguments, and automatically drop tips in the trash.
192
+
193
+
.. code-block:: python
194
+
195
+
p200.pick_up_tip() # automatically goes to tiprack['A1']
196
+
p200.drop_tip() # automatically goes to trash
197
+
198
+
**pipette.return_tip** ()
199
+
200
+
With one or more tip racks attached, a pipette can also return a tip to it's original position
201
+
202
+
.. code-block:: python
203
+
204
+
p200.pick_up_tip() # automatically goes to tiprack['A1']
205
+
p200.return_tip() # automatically goes back to tiprack['A1']
202
206
203
207
204
208
Aspirate
@@ -212,13 +216,26 @@ Aspirate
212
216
.. testcode:: main
213
217
214
218
p200.aspirate(200, plate['A1'])
219
+
p200.dispense()
215
220
216
221
You can link multiple aspirates together in order to pick up liquid from multiple locations
In addition to commands, you can attach attributes to your movements.
302
+
286
303
287
304
Touch Tip
288
305
^^^^^^^^^
@@ -311,7 +328,7 @@ You can blow out liquid immediately after a dispense command in the same locatio
311
328
312
329
.. note::
313
330
314
-
If the trash container is given a "point" labware name, instead of another container (like "trough-12row"), there is no need to call a position within the container.
331
+
Since the trash container is given a "point" labware name, it has no wells inside it. Therefore there is no need to call a position within the container.
315
332
316
333
Delay
317
334
^^^^^
@@ -324,26 +341,29 @@ Delay commands can be called between any movement commands, so you have complete
Want to deposit at the top of a tube? Pull liquid from the bottom of the well? Mix from the middle? Easy.
351
+
Want to deposit at the top of a tube? Pull liquid from the bottom of the well? It's easy with a Well's ``top()`` and ``bottom()`` methods.
333
352
334
353
**container.top** (*distance*)
335
354
336
-
**container.bottom** (*distance*)
355
+
* **distance -** (optional) distance above/below top of Well (mm)
337
356
338
-
* **distance -** distance from calibration position (mm)
357
+
**container.bottom** (*distance*)
339
358
340
-
Containers are calibrated to the bottom of the well, and each labware definition has an inherent depth, which provides the calculated top position. You can specify each of these locations anytime you use a container[position], as well as adjust them up (+) or down (-) by adding a distance.
359
+
* **distance -** (optional) distance above bottom of Well (mm)
341
360
342
361
.. testcode:: main
343
362
344
-
p200.dispense(plate['A1'].top()) # at the top of well
345
-
p200.mix(3, 100, plate['B2'].bottom(5)) # 5mm above bottom of well
346
-
p200.dispense(plate['A1'].top(-3)) # 3mm below top of well
363
+
well = plate['A1']
364
+
p200.dispense(well.top()) # at the top of well
365
+
p200.mix(3, 100, well.bottom(5)) # 5mm above bottom of well
366
+
p200.aspirate(well.top(-3)) # 3mm below top of well
347
367
348
368
Homing
349
369
------
@@ -355,7 +375,7 @@ You can instruct the robot to home at any point in the protocol, or just home on
355
375
* **axes -** the axes you want to home
356
376
* **enqueue -** True or False
357
377
358
-
When the python file is loaded into the protocol, it runs through all of the commands. When enqueue=False (default), this will cause the robot to home immediately upon loading the protocol, whereas if enqueue=True, it will run when it is called in the protocol.
378
+
Normally, home commands are run immediately when called, and therefore should not be included in a protocol. However, if you need to home during a protocol run, include the argument ``enqueue=True``.
359
379
360
380
.. testcode:: main
361
381
@@ -364,6 +384,25 @@ When the python file is loaded into the protocol, it runs through all of the com
364
384
robot.home('ab', enqueue=True) # adds "home ab" command to protocol queue
365
385
robot.home('xyz', enqueue=True) # adds "home xyz" command to protocol queue
366
386
387
+
Head Speed
388
+
----------
389
+
390
+
The speed of the robot's X and Y movements can be sped up or slowed down.
391
+
392
+
**robot.head_speed** (*rate*)
393
+
394
+
* **rate -** the speed at which the X and Y axis will move (millimeters per minute)
395
+
396
+
This method will immediately set the speed of the robot, and all following movements will use that speed.
397
+
398
+
.. note::
399
+
Speeds too fast (around 6000 and higher) will cause the robot to skip step, be careful when using this method
0 commit comments