|
12 | 12 | },
|
13 | 13 | {
|
14 | 14 | "cell_type": "code",
|
15 |
| - "execution_count": 1, |
| 15 | + "execution_count": 5, |
16 | 16 | "id": "ca4352ca",
|
17 | 17 | "metadata": {},
|
18 | 18 | "outputs": [],
|
19 | 19 | "source": [
|
20 |
| - "from labware.Labware import Labware" |
| 20 | + "from science_jubilee.labware.Labware import Labware" |
21 | 21 | ]
|
22 | 22 | },
|
23 | 23 | {
|
|
36 | 36 | },
|
37 | 37 | {
|
38 | 38 | "cell_type": "code",
|
39 |
| - "execution_count": 14, |
| 39 | + "execution_count": 6, |
40 | 40 | "id": "4a7e9ac8",
|
41 | 41 | "metadata": {},
|
42 | 42 | "outputs": [
|
|
46 | 46 | "wellPlate: 20mlscintillation_12_wellplate_18000ul"
|
47 | 47 | ]
|
48 | 48 | },
|
49 |
| - "execution_count": 14, |
| 49 | + "execution_count": 6, |
50 | 50 | "metadata": {},
|
51 | 51 | "output_type": "execute_result"
|
52 | 52 | }
|
|
97 | 97 | },
|
98 | 98 | {
|
99 | 99 | "cell_type": "code",
|
100 |
| - "execution_count": 19, |
| 100 | + "execution_count": 7, |
101 | 101 | "id": "7091aef9",
|
102 | 102 | "metadata": {},
|
103 | 103 | "outputs": [
|
104 | 104 | {
|
105 | 105 | "data": {
|
106 | 106 | "text/plain": [
|
107 |
| - "Well(name='C3', depth=53, totalLiquidVolume=18000, shape='circular', diameter=27.85, xDimension=None, yDimension=None, x=77.47, y=15.03, z=7.5, offset=None)" |
| 107 | + "Well(name='C3', depth=53, totalLiquidVolume=18000, shape='circular', diameter=27.85, xDimension=None, yDimension=None, x=77.47, y=15.03, z=7.5, offset=None, slot=None)" |
108 | 108 | ]
|
109 | 109 | },
|
110 |
| - "execution_count": 19, |
| 110 | + "execution_count": 7, |
111 | 111 | "metadata": {},
|
112 | 112 | "output_type": "execute_result"
|
113 | 113 | }
|
|
118 | 118 | },
|
119 | 119 | {
|
120 | 120 | "cell_type": "code",
|
121 |
| - "execution_count": 18, |
| 121 | + "execution_count": 8, |
122 | 122 | "id": "53e3df86",
|
123 | 123 | "metadata": {
|
124 | 124 | "scrolled": true
|
|
127 | 127 | {
|
128 | 128 | "data": {
|
129 | 129 | "text/plain": [
|
130 |
| - "Well(name='C3', depth=53, totalLiquidVolume=18000, shape='circular', diameter=27.85, xDimension=None, yDimension=None, x=77.47, y=15.03, z=7.5, offset=None)" |
| 130 | + "Well(name='B4', depth=53, totalLiquidVolume=18000, shape='circular', diameter=27.85, xDimension=None, yDimension=None, x=105.3, y=42.86, z=7.5, offset=None, slot=None)" |
131 | 131 | ]
|
132 | 132 | },
|
133 |
| - "execution_count": 18, |
| 133 | + "execution_count": 8, |
134 | 134 | "metadata": {},
|
135 | 135 | "output_type": "execute_result"
|
136 | 136 | }
|
|
149 | 149 | },
|
150 | 150 | {
|
151 | 151 | "cell_type": "code",
|
152 |
| - "execution_count": 20, |
| 152 | + "execution_count": 9, |
153 | 153 | "id": "0933c8fb",
|
154 | 154 | "metadata": {},
|
155 | 155 | "outputs": [
|
|
159 | 159 | "77.47"
|
160 | 160 | ]
|
161 | 161 | },
|
162 |
| - "execution_count": 20, |
| 162 | + "execution_count": 9, |
163 | 163 | "metadata": {},
|
164 | 164 | "output_type": "execute_result"
|
165 | 165 | }
|
|
170 | 170 | },
|
171 | 171 | {
|
172 | 172 | "cell_type": "code",
|
173 |
| - "execution_count": 21, |
| 173 | + "execution_count": 10, |
174 | 174 | "id": "919cbb2e",
|
175 | 175 | "metadata": {},
|
176 | 176 | "outputs": [
|
|
180 | 180 | "53"
|
181 | 181 | ]
|
182 | 182 | },
|
183 |
| - "execution_count": 21, |
| 183 | + "execution_count": 10, |
184 | 184 | "metadata": {},
|
185 | 185 | "output_type": "execute_result"
|
186 | 186 | }
|
|
199 | 199 | },
|
200 | 200 | {
|
201 | 201 | "cell_type": "code",
|
202 |
| - "execution_count": 22, |
| 202 | + "execution_count": 13, |
203 | 203 | "id": "15e8a5bf",
|
204 | 204 | "metadata": {},
|
205 | 205 | "outputs": [
|
|
209 | 209 | "60.5"
|
210 | 210 | ]
|
211 | 211 | },
|
212 |
| - "execution_count": 22, |
| 212 | + "execution_count": 13, |
213 | 213 | "metadata": {},
|
214 | 214 | "output_type": "execute_result"
|
215 | 215 | }
|
216 | 216 | ],
|
217 | 217 | "source": [
|
218 |
| - "lab[10].top # the actual top of the well" |
| 218 | + "lab[10].top_ # the actual top of the well" |
| 219 | + ] |
| 220 | + }, |
| 221 | + { |
| 222 | + "cell_type": "markdown", |
| 223 | + "id": "0e23606e", |
| 224 | + "metadata": {}, |
| 225 | + "source": [ |
| 226 | + "However, you can also indicate a `z` position with resposect to the top or bottom of the well.\n", |
| 227 | + "The `x` and `y` coordinates are the same, this command will change the `z` coordinate and return a Location(Point, Well) object" |
219 | 228 | ]
|
220 | 229 | },
|
221 | 230 | {
|
222 | 231 | "cell_type": "code",
|
223 |
| - "execution_count": 23, |
| 232 | + "execution_count": 14, |
224 | 233 | "id": "43803268",
|
225 | 234 | "metadata": {},
|
226 | 235 | "outputs": [
|
227 | 236 | {
|
228 | 237 | "data": {
|
229 | 238 | "text/plain": [
|
230 |
| - "7.5" |
| 239 | + "Location(point=(105.3, 42.86, 12.5), labware=Well(name='B4', depth=53, totalLiquidVolume=18000, shape='circular', diameter=27.85, xDimension=None, yDimension=None, x=105.3, y=42.86, z=7.5, offset=None, slot=None))" |
231 | 240 | ]
|
232 | 241 | },
|
233 |
| - "execution_count": 23, |
| 242 | + "execution_count": 14, |
234 | 243 | "metadata": {},
|
235 | 244 | "output_type": "execute_result"
|
236 | 245 | }
|
237 | 246 | ],
|
238 | 247 | "source": [
|
239 |
| - "lab[10].bottom" |
| 248 | + "lab[10].bottom(+5) " |
240 | 249 | ]
|
241 | 250 | },
|
242 | 251 | {
|
|
254 | 263 | },
|
255 | 264 | {
|
256 | 265 | "cell_type": "code",
|
257 |
| - "execution_count": 25, |
| 266 | + "execution_count": 15, |
258 | 267 | "id": "1239f391",
|
259 | 268 | "metadata": {},
|
260 | 269 | "outputs": [
|
261 | 270 | {
|
262 | 271 | "data": {
|
263 | 272 | "text/plain": [
|
264 |
| - "dict_keys(['A1', 'A2', 'A3', 'A4', 'B1', 'B2', 'B3', 'B4', 'C1', 'C2', 'C3', 'C4'])" |
| 273 | + "dict_keys(['A1', 'B1', 'C1', 'A2', 'B2', 'C2', 'A3', 'B3', 'C3', 'A4', 'B4', 'C4'])" |
265 | 274 | ]
|
266 | 275 | },
|
267 |
| - "execution_count": 25, |
| 276 | + "execution_count": 15, |
268 | 277 | "metadata": {},
|
269 | 278 | "output_type": "execute_result"
|
270 | 279 | }
|
|
286 | 295 | },
|
287 | 296 | {
|
288 | 297 | "cell_type": "code",
|
289 |
| - "execution_count": 27, |
| 298 | + "execution_count": 16, |
290 | 299 | "id": "85d6061d",
|
291 | 300 | "metadata": {},
|
292 | 301 | "outputs": [
|
293 | 302 | {
|
294 | 303 | "data": {
|
295 | 304 | "text/plain": [
|
296 |
| - "dict_keys(['A1', 'B1', 'C1', 'A2', 'B2', 'C2', 'A3', 'B3', 'C3', 'A4', 'B4', 'C4'])" |
| 305 | + "dict_keys(['A1', 'A2', 'A3', 'A4', 'B1', 'B2', 'B3', 'B4', 'C1', 'C2', 'C3', 'C4'])" |
297 | 306 | ]
|
298 | 307 | },
|
299 |
| - "execution_count": 27, |
| 308 | + "execution_count": 16, |
300 | 309 | "metadata": {},
|
301 | 310 | "output_type": "execute_result"
|
302 | 311 | }
|
|
316 | 325 | },
|
317 | 326 | {
|
318 | 327 | "cell_type": "code",
|
319 |
| - "execution_count": 29, |
| 328 | + "execution_count": 17, |
320 | 329 | "id": "b658640c",
|
321 | 330 | "metadata": {},
|
322 | 331 | "outputs": [
|
323 | 332 | {
|
324 | 333 | "data": {
|
325 | 334 | "text/plain": [
|
326 |
| - "dict_keys(['A1', 'B1', 'C1', 'A2', 'B2', 'C2', 'A3', 'B3', 'C3', 'A4', 'B4', 'C4'])" |
| 335 | + "dict_keys(['A1', 'A2', 'A3', 'A4', 'B1', 'B2', 'B3', 'B4', 'C1', 'C2', 'C3', 'C4'])" |
327 | 336 | ]
|
328 | 337 | },
|
329 |
| - "execution_count": 29, |
| 338 | + "execution_count": 17, |
330 | 339 | "metadata": {},
|
331 | 340 | "output_type": "execute_result"
|
332 | 341 | }
|
|
349 | 358 | },
|
350 | 359 | {
|
351 | 360 | "cell_type": "code",
|
352 |
| - "execution_count": 10, |
| 361 | + "execution_count": 18, |
353 | 362 | "id": "72278f1e",
|
354 | 363 | "metadata": {},
|
355 | 364 | "outputs": [
|
|
358 | 367 | "output_type": "stream",
|
359 | 368 | "text": [
|
360 | 369 | "Well Coordinates for well A1\n",
|
361 |
| - "x: 23.81\n", |
362 |
| - "y: 73.69\n", |
363 |
| - "z: 10.95\n" |
| 370 | + "x: 21.81\n", |
| 371 | + "y: 70.69\n", |
| 372 | + "z: 7.5\n" |
364 | 373 | ]
|
365 | 374 | }
|
366 | 375 | ],
|
|
381 | 390 | },
|
382 | 391 | {
|
383 | 392 | "cell_type": "code",
|
384 |
| - "execution_count": 11, |
| 393 | + "execution_count": 19, |
385 | 394 | "id": "5bc59fd4",
|
386 | 395 | "metadata": {},
|
387 | 396 | "outputs": [
|
|
414 | 423 | },
|
415 | 424 | {
|
416 | 425 | "cell_type": "code",
|
417 |
| - "execution_count": 12, |
| 426 | + "execution_count": 20, |
418 | 427 | "id": "2027a50d",
|
419 | 428 | "metadata": {},
|
420 | 429 | "outputs": [
|
|
429 | 438 | "source": [
|
430 | 439 | "print('Offset : {}'.format(lab[0].offset))"
|
431 | 440 | ]
|
| 441 | + }, |
| 442 | + { |
| 443 | + "cell_type": "markdown", |
| 444 | + "id": "e53a2ea3", |
| 445 | + "metadata": {}, |
| 446 | + "source": [ |
| 447 | + "### 5. Manual Labware Offset Calibration\n", |
| 448 | + "\n", |
| 449 | + "There may be instances in which the squaring between the deck and the carriage arm of your Jubilee might not be 100% the same. \n", |
| 450 | + "To avoid issues with your labware positionining, we've implemented another offset calibration method. \n", |
| 451 | + "\n", |
| 452 | + "After placing your labware onto the deck slot, you can follow follow the next few steps to record and apply a namual offset for your labware in *that* slot.\n", |
| 453 | + "For this you will record the **true** `x` and `y` coordinates 3 corner wells of your labware. Generally these will be you top left, top right, and bottom right wells. For examples for a 96-well wellplate, these will be : `A1`, `A12`, and `H12`, respectively. \n", |
| 454 | + "\n", |
| 455 | + "Note: you can perform the next steps using the Camera/WebCamera tool if you want, the procedure is the same. \n", |
| 456 | + "\n", |
| 457 | + "1. Pick up a tool (e.g., an OT2 pipette)\n", |
| 458 | + "2. Navigate to your labware **top_left** well\n", |
| 459 | + "3. Use the Duet GUI to move the pipette to the \"actual\" center of your well if the tool is nto perfectly centered over the well. \n", |
| 460 | + "4. Record your new `x` and `y` coordinates as a tuple.\n", |
| 461 | + "5. Repeat steps 2-4 for the **top_right** and **bottom_right** well\n", |
| 462 | + "\n", |
| 463 | + "After this, you can run the `your_labware.manual_offset()` method. This allows also to save these offsets in the labware `.json` file for future use, as well as later on load them back up without having to re-run this procedure. Note: this will need to be repeated if you laod your labware on a different slot *OR* if you take down and re-build your machine. " |
| 464 | + ] |
| 465 | + }, |
| 466 | + { |
| 467 | + "cell_type": "code", |
| 468 | + "execution_count": 21, |
| 469 | + "id": "22d80cc6", |
| 470 | + "metadata": {}, |
| 471 | + "outputs": [ |
| 472 | + { |
| 473 | + "name": "stdout", |
| 474 | + "output_type": "stream", |
| 475 | + "text": [ |
| 476 | + "New manual offset applied to 20mlscintillation_12_wellplate_18000ul\n" |
| 477 | + ] |
| 478 | + } |
| 479 | + ], |
| 480 | + "source": [ |
| 481 | + "lab.slot = 0 # this will be taken care of by the deck.load_labware() method\n", |
| 482 | + "UL = (29.3,78.1)\n", |
| 483 | + "UR = (128.0, 77.9)\n", |
| 484 | + "BR = (128.2, 15.3)\n", |
| 485 | + "\n", |
| 486 | + "lab.manual_offset([UL, UR, BR], save= False)" |
| 487 | + ] |
| 488 | + }, |
| 489 | + { |
| 490 | + "cell_type": "markdown", |
| 491 | + "id": "73b9891e", |
| 492 | + "metadata": {}, |
| 493 | + "source": [ |
| 494 | + "You can check if the offset was applied by checking the attribute `manualOffset`." |
| 495 | + ] |
| 496 | + }, |
| 497 | + { |
| 498 | + "cell_type": "code", |
| 499 | + "execution_count": 24, |
| 500 | + "id": "1e32ddd0", |
| 501 | + "metadata": {}, |
| 502 | + "outputs": [ |
| 503 | + { |
| 504 | + "data": { |
| 505 | + "text/plain": [ |
| 506 | + "{'0': [(29.3, 78.1), (128.0, 77.9), (128.2, 15.3)]}" |
| 507 | + ] |
| 508 | + }, |
| 509 | + "execution_count": 24, |
| 510 | + "metadata": {}, |
| 511 | + "output_type": "execute_result" |
| 512 | + } |
| 513 | + ], |
| 514 | + "source": [ |
| 515 | + "lab.manualOffset" |
| 516 | + ] |
432 | 517 | }
|
433 | 518 | ],
|
434 | 519 | "metadata": {
|
|
447 | 532 | "name": "python",
|
448 | 533 | "nbconvert_exporter": "python",
|
449 | 534 | "pygments_lexer": "ipython3",
|
450 |
| - "version": "3.8.9" |
| 535 | + "version": "3.9.12" |
451 | 536 | }
|
452 | 537 | },
|
453 | 538 | "nbformat": 4,
|
|
0 commit comments