Week 3 HW
Part 1: Code

from opentrons import types
import string
metadata = { ‘protocolName’: ‘{YOUR NAME} - Opentrons Art - HTGAA’, ‘author’: ‘HTGAA’, ‘source’: ‘HTGAA 2026’, ‘apiLevel’: ‘2.20’ }
Z_VALUE_AGAR = 2.0 POINT_SIZE = 1
egfp_points = [(-12.65,31.05), (-10.35,31.05), (-8.05,31.05), (-5.75,31.05), (-3.45,31.05), (-1.15,31.05), (1.15,31.05), (3.45,31.05), (5.75,31.05), (8.05,31.05), (10.35,31.05), (12.65,31.05), (14.95,31.05), (-24.15,28.75), (-17.25,28.75), (-14.95,28.75), (-12.65,28.75), (-10.35,28.75), (-8.05,28.75), (-5.75,28.75), (-3.45,28.75), (-1.15,28.75), (1.15,28.75), (3.45,28.75), (5.75,28.75), (8.05,28.75), (10.35,28.75), (12.65,28.75), (14.95,28.75), (17.25,28.75), (-21.85,26.45), (-19.55,26.45), (19.55,26.45), (21.85,26.45), (33.35,17.25), (-31.05,14.95), (31.05,14.95), (-33.35,12.65), (-3.45,12.65), (-1.15,12.65), (1.15,12.65), (3.45,12.65), (31.05,12.65), (-35.65,10.35), (-5.75,10.35), (-3.45,10.35), (-1.15,10.35), (1.15,10.35), (3.45,10.35), (5.75,10.35), (31.05,10.35), (33.35,10.35), (-35.65,8.05), (35.65,8.05), (-10.35,5.75), (10.35,5.75), (37.95,5.75), (-37.95,3.45), (37.95,3.45), (-37.95,1.15), (-12.65,1.15), (14.95,1.15), (37.95,1.15), (-37.95,-1.15), (-19.55,-1.15), (-17.25,-1.15), (-14.95,-1.15), (17.25,-1.15), (19.55,-1.15), (21.85,-1.15), (37.95,-1.15), (-37.95,-3.45), (37.95,-3.45), (-37.95,-5.75), (37.95,-5.75), (-37.95,-8.05), (37.95,-8.05), (-37.95,-10.35), (37.95,-10.35), (35.65,-12.65), (-35.65,-14.95), (35.65,-14.95), (-35.65,-17.25), (35.65,-17.25)] mlychee_tf_points = [(-26.45,28.75), (26.45,28.75), (-28.75,26.45), (-26.45,26.45), (-24.15,26.45), (24.15,26.45), (26.45,26.45), (28.75,26.45), (-31.05,24.15), (24.15,24.15), (26.45,24.15), (31.05,24.15), (-33.35,21.85), (-31.05,21.85), (26.45,21.85), (31.05,21.85), (33.35,21.85), (-33.35,19.55), (-31.05,19.55), (28.75,19.55), (31.05,19.55), (33.35,19.55), (-31.05,17.25), (-14.95,17.25), (-12.65,17.25), (-10.35,17.25), (10.35,17.25), (12.65,17.25), (14.95,17.25), (31.05,17.25), (-17.25,14.95), (-14.95,14.95), (-12.65,14.95), (-10.35,14.95), (10.35,14.95), (12.65,14.95), (14.95,14.95), (17.25,14.95), (26.45,14.95), (-19.55,12.65), (-14.95,12.65), (-12.65,12.65), (-10.35,12.65), (10.35,12.65), (12.65,12.65), (14.95,12.65), (19.55,12.65), (26.45,12.65), (-26.45,10.35), (-21.85,10.35), (-12.65,10.35), (-10.35,10.35), (10.35,10.35), (12.65,10.35), (19.55,10.35), (21.85,10.35), (26.45,10.35), (28.75,10.35), (-31.05,8.05), (-28.75,8.05), (-26.45,8.05), (-21.85,8.05), (-19.55,8.05), (-12.65,8.05), (10.35,8.05), (12.65,8.05), (19.55,8.05), (21.85,8.05), (26.45,8.05), (28.75,8.05), (31.05,8.05), (-33.35,5.75), (-31.05,5.75), (-28.75,5.75), (-26.45,5.75), (-21.85,5.75), (-14.95,5.75), (-12.65,5.75), (12.65,5.75), (14.95,5.75), (17.25,5.75), (21.85,5.75), (26.45,5.75), (28.75,5.75), (31.05,5.75), (-31.05,3.45), (-28.75,3.45), (-26.45,3.45), (-19.55,3.45), (-17.25,3.45), (-14.95,3.45), (14.95,3.45), (17.25,3.45), (19.55,3.45), (26.45,3.45), (28.75,3.45), (31.05,3.45), (33.35,3.45), (-33.35,1.15), (-31.05,1.15), (-28.75,1.15), (-26.45,1.15), (26.45,1.15), (28.75,1.15), (31.05,1.15), (33.35,1.15), (-33.35,-1.15), (-31.05,-1.15), (-28.75,-1.15), (-26.45,-1.15), (26.45,-1.15), (28.75,-1.15), (31.05,-1.15), (33.35,-1.15), (-35.65,-3.45), (-33.35,-3.45), (-31.05,-3.45), (-28.75,-3.45), (-26.45,-3.45), (-24.15,-3.45), (24.15,-3.45), (26.45,-3.45), (28.75,-3.45), (31.05,-3.45), (33.35,-3.45), (-33.35,-5.75), (-31.05,-5.75), (-28.75,-5.75), (-26.45,-5.75), (-24.15,-5.75), (-21.85,-5.75), (-19.55,-5.75), (19.55,-5.75), (21.85,-5.75), (24.15,-5.75), (26.45,-5.75), (28.75,-5.75), (31.05,-5.75), (33.35,-5.75), (-33.35,-8.05), (-31.05,-8.05), (-28.75,-8.05), (-26.45,-8.05), (-24.15,-8.05), (-21.85,-8.05), (-19.55,-8.05), (-5.75,-8.05), (-3.45,-8.05), (3.45,-8.05), (5.75,-8.05), (19.55,-8.05), (21.85,-8.05), (24.15,-8.05), (26.45,-8.05), (28.75,-8.05), (31.05,-8.05), (33.35,-8.05), (-33.35,-10.35), (-31.05,-10.35), (-28.75,-10.35), (-26.45,-10.35), (-24.15,-10.35), (-21.85,-10.35), (-19.55,-10.35), (-5.75,-10.35), (-3.45,-10.35), (3.45,-10.35), (5.75,-10.35), (19.55,-10.35), (21.85,-10.35), (24.15,-10.35), (26.45,-10.35), (28.75,-10.35), (31.05,-10.35), (33.35,-10.35), (-31.05,-12.65), (-28.75,-12.65), (-26.45,-12.65), (-24.15,-12.65), (-21.85,-12.65), (-19.55,-12.65), (19.55,-12.65), (21.85,-12.65), (24.15,-12.65), (26.45,-12.65), (28.75,-12.65), (31.05,-12.65), (33.35,-12.65), (-33.35,-14.95), (-31.05,-14.95), (-28.75,-14.95), (-26.45,-14.95), (-24.15,-14.95), (-21.85,-14.95), (-19.55,-14.95), (-17.25,-14.95), (19.55,-14.95), (21.85,-14.95), (24.15,-14.95), (26.45,-14.95), (28.75,-14.95), (31.05,-14.95), (-28.75,-17.25), (-26.45,-17.25), (-24.15,-17.25), (-21.85,-17.25), (-19.55,-17.25), (-17.25,-17.25), (17.25,-17.25), (19.55,-17.25), (21.85,-17.25), (24.15,-17.25), (26.45,-17.25), (28.75,-17.25), (31.05,-17.25), (-28.75,-19.55), (-26.45,-19.55), (-24.15,-19.55), (-21.85,-19.55), (-19.55,-19.55), (-17.25,-19.55), (-14.95,-19.55), (14.95,-19.55), (17.25,-19.55), (19.55,-19.55), (21.85,-19.55), (24.15,-19.55), (26.45,-19.55), (28.75,-19.55), (-26.45,-21.85), (-24.15,-21.85), (-21.85,-21.85), (-19.55,-21.85), (-17.25,-21.85), (-14.95,-21.85), (-12.65,-21.85), (12.65,-21.85), (14.95,-21.85), (17.25,-21.85), (19.55,-21.85), (21.85,-21.85), (24.15,-21.85), (26.45,-21.85), (28.75,-21.85), (31.05,-21.85), (33.35,-21.85), (-31.05,-24.15), (-28.75,-24.15), (-26.45,-24.15), (-24.15,-24.15), (-21.85,-24.15), (-19.55,-24.15), (-17.25,-24.15), (-14.95,-24.15), (-12.65,-24.15), (-10.35,-24.15), (12.65,-24.15), (14.95,-24.15), (17.25,-24.15), (19.55,-24.15), (21.85,-24.15), (24.15,-24.15), (26.45,-24.15), (28.75,-24.15), (31.05,-24.15), (-28.75,-26.45), (-26.45,-26.45), (-24.15,-26.45), (-21.85,-26.45), (-19.55,-26.45), (-17.25,-26.45), (-14.95,-26.45), (-12.65,-26.45), (-10.35,-26.45), (-8.05,-26.45), (-5.75,-26.45), (-3.45,-26.45), (-1.15,-26.45), (1.15,-26.45), (3.45,-26.45), (5.75,-26.45), (8.05,-26.45), (10.35,-26.45), (12.65,-26.45), (14.95,-26.45), (17.25,-26.45), (19.55,-26.45), (21.85,-26.45), (24.15,-26.45), (26.45,-26.45), (28.75,-26.45), (-26.45,-28.75), (-24.15,-28.75), (-21.85,-28.75), (-19.55,-28.75), (-17.25,-28.75), (-14.95,-28.75), (-12.65,-28.75), (-10.35,-28.75), (-8.05,-28.75), (-5.75,-28.75), (-3.45,-28.75), (-1.15,-28.75), (1.15,-28.75), (3.45,-28.75), (5.75,-28.75), (8.05,-28.75), (10.35,-28.75), (12.65,-28.75), (14.95,-28.75), (17.25,-28.75), (19.55,-28.75), (21.85,-28.75), (24.15,-28.75), (26.45,-28.75), (-24.15,-31.05), (-21.85,-31.05), (-19.55,-31.05), (-17.25,-31.05), (-14.95,-31.05), (-12.65,-31.05), (-10.35,-31.05), (-8.05,-31.05), (-5.75,-31.05), (-3.45,-31.05), (-1.15,-31.05), (1.15,-31.05), (3.45,-31.05), (5.75,-31.05), (8.05,-31.05), (10.35,-31.05), (12.65,-31.05), (14.95,-31.05), (17.25,-31.05), (19.55,-31.05), (21.85,-31.05), (24.15,-31.05), (-21.85,-33.35), (-19.55,-33.35), (-17.25,-33.35), (-14.95,-33.35), (-12.65,-33.35), (-10.35,-33.35), (-8.05,-33.35), (-5.75,-33.35), (-3.45,-33.35), (-1.15,-33.35), (1.15,-33.35), (3.45,-33.35), (5.75,-33.35), (8.05,-33.35), (10.35,-33.35), (12.65,-33.35), (14.95,-33.35), (17.25,-33.35), (19.55,-33.35), (21.85,-33.35), (-17.25,-35.65), (-14.95,-35.65), (-12.65,-35.65), (-10.35,-35.65), (-8.05,-35.65), (-5.75,-35.65), (-3.45,-35.65), (-1.15,-35.65), (1.15,-35.65), (3.45,-35.65), (5.75,-35.65), (8.05,-35.65), (10.35,-35.65), (12.65,-35.65), (14.95,-35.65), (17.25,-35.65), (-10.35,-37.95), (-8.05,-37.95), (-5.75,-37.95), (-3.45,-37.95), (-1.15,-37.95), (1.15,-37.95), (3.45,-37.95), (5.75,-37.95), (8.05,-37.95), (10.35,-37.95)] tagrfp_points = [(24.15,28.75), (-14.95,26.45), (-12.65,26.45), (-10.35,26.45), (-8.05,26.45), (-5.75,26.45), (-3.45,26.45), (-1.15,26.45), (1.15,26.45), (3.45,26.45), (5.75,26.45), (8.05,26.45), (10.35,26.45), (12.65,26.45), (14.95,26.45), (17.25,26.45), (-24.15,24.15), (-21.85,24.15), (-19.55,24.15), (-17.25,24.15), (-14.95,24.15), (-8.05,24.15), (-5.75,24.15), (-3.45,24.15), (3.45,24.15), (5.75,24.15), (8.05,24.15), (14.95,24.15), (17.25,24.15), (19.55,24.15), (21.85,24.15), (-24.15,21.85), (-19.55,21.85), (-14.95,21.85), (-8.05,21.85), (-5.75,21.85), (-3.45,21.85), (1.15,21.85), (3.45,21.85), (5.75,21.85), (8.05,21.85), (10.35,21.85), (14.95,21.85), (17.25,21.85), (19.55,21.85), (24.15,21.85), (-28.75,19.55), (-26.45,19.55), (-24.15,19.55), (-21.85,19.55), (-19.55,19.55), (19.55,19.55), (21.85,19.55), (24.15,19.55), (26.45,19.55), (-26.45,17.25), (-24.15,17.25), (26.45,17.25), (28.75,17.25), (-28.75,14.95), (-26.45,14.95), (-24.15,14.95), (-28.75,12.65), (-17.25,12.65), (17.25,12.65), (-31.05,10.35), (-28.75,10.35), (-19.55,10.35), (-33.35,8.05), (-17.25,5.75), (-35.65,3.45), (35.65,3.45), (-33.35,-17.25)] mruby2_points = [(-17.25,26.45), (-12.65,24.15), (-10.35,24.15), (10.35,24.15), (12.65,24.15), (-17.25,21.85), (-12.65,21.85), (-10.35,21.85), (12.65,21.85), (-17.25,19.55), (17.25,19.55), (-33.35,17.25), (-28.75,17.25), (-21.85,17.25), (-19.55,17.25), (19.55,17.25), (21.85,17.25), (-21.85,14.95), (21.85,14.95), (-31.05,12.65), (-33.35,10.35), (33.35,8.05), (-35.65,5.75), (35.65,5.75), (-12.65,3.45), (-21.85,1.15), (-19.55,1.15), (-17.25,1.15), (-14.95,1.15), (19.55,1.15), (21.85,1.15), (-21.85,-1.15), (-35.65,-8.05), (-35.65,-10.35), (35.65,-10.35), (-35.65,-12.65), (33.35,-17.25), (-33.35,-19.55), (33.35,-19.55)] mkate2_points = [(-1.15,24.15), (1.15,24.15), (-1.15,21.85), (-5.75,19.55), (-3.45,19.55), (-1.15,19.55), (1.15,19.55), (3.45,19.55), (5.75,19.55), (-5.75,17.25), (-3.45,17.25), (-1.15,17.25), (1.15,17.25), (3.45,17.25), (5.75,17.25), (-5.75,14.95), (-3.45,14.95), (-1.15,14.95), (1.15,14.95), (3.45,14.95), (5.75,14.95), (-5.75,12.65), (5.75,12.65), (-8.05,-3.45), (-5.75,-3.45), (-3.45,-3.45), (-1.15,-3.45), (1.15,-3.45), (3.45,-3.45), (5.75,-3.45), (8.05,-3.45), (-8.05,-5.75), (-5.75,-5.75), (-3.45,-5.75), (-1.15,-5.75), (1.15,-5.75), (3.45,-5.75), (5.75,-5.75), (8.05,-5.75), (-8.05,-8.05), (-1.15,-8.05), (1.15,-8.05), (8.05,-8.05), (-8.05,-10.35), (-1.15,-10.35), (1.15,-10.35), (8.05,-10.35), (-8.05,-12.65), (-5.75,-12.65), (-3.45,-12.65), (-1.15,-12.65), (1.15,-12.65), (3.45,-12.65), (5.75,-12.65), (8.05,-12.65), (-5.75,-14.95), (-3.45,-14.95), (-1.15,-14.95), (1.15,-14.95), (3.45,-14.95), (5.75,-14.95), (-1.15,-17.25), (1.15,-17.25), (-1.15,-19.55), (1.15,-19.55), (-8.05,-21.85), (-5.75,-21.85), (-3.45,-21.85), (-1.15,-21.85), (1.15,-21.85), (3.45,-21.85), (5.75,-21.85), (8.05,-21.85)] mkate2_tf_points = [(-21.85,21.85), (21.85,21.85), (24.15,17.25), (24.15,14.95), (28.75,14.95), (-26.45,12.65), (28.75,12.65), (-10.35,8.05), (-19.55,5.75), (19.55,5.75), (33.35,5.75), (-33.35,3.45), (-21.85,3.45), (21.85,3.45), (-35.65,1.15), (17.25,1.15), (35.65,1.15), (-35.65,-1.15), (35.65,-1.15), (35.65,-3.45), (-35.65,-5.75), (35.65,-5.75), (35.65,-8.05), (-33.35,-12.65), (33.35,-14.95), (-31.05,-17.25), (-31.05,-19.55), (31.05,-19.55), (-33.35,-21.85), (-31.05,-21.85), (-28.75,-21.85)] mko2_points = [(-14.95,19.55), (-12.65,19.55), (-10.35,19.55), (-8.05,19.55), (8.05,19.55), (10.35,19.55), (12.65,19.55), (14.95,19.55), (-17.25,17.25), (-8.05,17.25), (8.05,17.25), (17.25,17.25), (-19.55,14.95), (-8.05,14.95), (8.05,14.95), (19.55,14.95), (-24.15,12.65), (-21.85,12.65), (-8.05,12.65), (8.05,12.65), (21.85,12.65), (24.15,12.65), (-24.15,10.35), (-8.05,10.35), (8.05,10.35), (24.15,10.35), (-24.15,8.05), (-8.05,8.05), (-5.75,8.05), (-3.45,8.05), (-1.15,8.05), (1.15,8.05), (3.45,8.05), (5.75,8.05), (8.05,8.05), (24.15,8.05), (-24.15,5.75), (-8.05,5.75), (-5.75,5.75), (-3.45,5.75), (-1.15,5.75), (1.15,5.75), (3.45,5.75), (5.75,5.75), (8.05,5.75), (24.15,5.75), (-24.15,3.45), (-10.35,3.45), (-8.05,3.45), (-5.75,3.45), (-3.45,3.45), (-1.15,3.45), (1.15,3.45), (3.45,3.45), (5.75,3.45), (8.05,3.45), (10.35,3.45), (12.65,3.45), (24.15,3.45), (-24.15,1.15), (-10.35,1.15), (-8.05,1.15), (-5.75,1.15), (-3.45,1.15), (-1.15,1.15), (1.15,1.15), (3.45,1.15), (5.75,1.15), (8.05,1.15), (10.35,1.15), (12.65,1.15), (24.15,1.15), (-24.15,-1.15), (-12.65,-1.15), (-10.35,-1.15), (-8.05,-1.15), (-5.75,-1.15), (-3.45,-1.15), (-1.15,-1.15), (1.15,-1.15), (3.45,-1.15), (5.75,-1.15), (8.05,-1.15), (10.35,-1.15), (12.65,-1.15), (14.95,-1.15), (24.15,-1.15), (-21.85,-3.45), (-19.55,-3.45), (-17.25,-3.45), (-14.95,-3.45), (-12.65,-3.45), (-10.35,-3.45), (10.35,-3.45), (12.65,-3.45), (14.95,-3.45), (17.25,-3.45), (19.55,-3.45), (21.85,-3.45), (-17.25,-5.75), (-14.95,-5.75), (-12.65,-5.75), (-10.35,-5.75), (10.35,-5.75), (12.65,-5.75), (14.95,-5.75), (17.25,-5.75), (-17.25,-8.05), (-14.95,-8.05), (-12.65,-8.05), (-10.35,-8.05), (10.35,-8.05), (12.65,-8.05), (14.95,-8.05), (17.25,-8.05), (-17.25,-10.35), (-14.95,-10.35), (-12.65,-10.35), (-10.35,-10.35), (10.35,-10.35), (12.65,-10.35), (14.95,-10.35), (17.25,-10.35), (-17.25,-12.65), (-14.95,-12.65), (-12.65,-12.65), (-10.35,-12.65), (10.35,-12.65), (12.65,-12.65), (14.95,-12.65), (17.25,-12.65), (-14.95,-14.95), (-12.65,-14.95), (-10.35,-14.95), (-8.05,-14.95), (8.05,-14.95), (10.35,-14.95), (12.65,-14.95), (14.95,-14.95), (17.25,-14.95), (-14.95,-17.25), (-12.65,-17.25), (-10.35,-17.25), (-8.05,-17.25), (-5.75,-17.25), (-3.45,-17.25), (3.45,-17.25), (5.75,-17.25), (8.05,-17.25), (10.35,-17.25), (12.65,-17.25), (14.95,-17.25), (-12.65,-19.55), (-10.35,-19.55), (-8.05,-19.55), (-5.75,-19.55), (-3.45,-19.55), (3.45,-19.55), (5.75,-19.55), (8.05,-19.55), (10.35,-19.55), (12.65,-19.55), (-10.35,-21.85), (10.35,-21.85), (-8.05,-24.15), (-5.75,-24.15), (-3.45,-24.15), (-1.15,-24.15), (1.15,-24.15), (3.45,-24.15), (5.75,-24.15), (8.05,-24.15), (10.35,-24.15)]
point_name_pairing = [(“egfp”, egfp_points),(“mlychee_tf”, mlychee_tf_points),(“tagrfp”, tagrfp_points),(“mruby2”, mruby2_points),(“mkate2”, mkate2_points),(“mkate2_tf”, mkate2_tf_points),(“mko2”, mko2_points)]
Robot deck setup constants
TIP_RACK_DECK_SLOT = 9 COLORS_DECK_SLOT = 6 AGAR_DECK_SLOT = 5 PIPETTE_STARTING_TIP_WELL = ‘A1’
Place the PCR tubes in this order
well_colors = { ‘A1’: ‘sfGFP’, ‘A2’: ‘mRFP1’, ‘A3’: ‘mKO2’, ‘A4’: ‘Venus’, ‘A5’: ‘mKate2_TF’, ‘A6’: ‘Azurite’, ‘A7’: ‘mCerulean3’, ‘A8’: ‘mClover3’, ‘A9’: ‘mJuniper’, ‘A10’: ‘mTurquoise2’, ‘A11’: ‘mBanana’, ‘A12’: ‘mPlum’, ‘B1’: ‘Electra2’, ‘B2’: ‘mWasabi’, ‘B3’: ‘mScarlet_I’, ‘B4’: ‘mPapaya’, ‘B5’: ’eqFP578’, ‘B6’: ’tdTomato’, ‘B7’: ‘DsRed’, ‘B8’: ‘mKate2’, ‘B9’: ‘EGFP’, ‘B10’: ‘mRuby2’, ‘B11’: ‘TagBFP’, ‘B12’: ‘mChartreuse_TF’, ‘C1’: ‘mLychee_TF’, ‘C2’: ‘mTagBFP2’, ‘C3’: ‘mEGFP’, ‘C4’: ‘mNeonGreen’, ‘C5’: ‘mAzamiGreen’, ‘C6’: ‘mWatermelon’, ‘C7’: ‘avGFP’, ‘C8’: ‘mCitrine’, ‘C9’: ‘mVenus’, ‘C10’: ‘mCherry’, ‘C11’: ‘mHoneydew’, ‘C12’: ‘TagRFP’, ‘D1’: ‘mTFP1’, ‘D2’: ‘Ultramarine’, ‘D3’: ‘ZsGreen1’, ‘D4’: ‘mMiCy’, ‘D5’: ‘mStayGold2’, ‘D6’: ‘PA_GFP’ }
volume_used = { ’egfp’: 0, ‘mlychee_tf’: 0, ’tagrfp’: 0, ‘mruby2’: 0, ‘mkate2’: 0, ‘mkate2_tf’: 0, ‘mko2’: 0 }
def update_volume_remaining(current_color, quantity_to_aspirate): rows = string.ascii_uppercase for well, color in list(well_colors.items()): if color == current_color: if (volume_used[current_color] + quantity_to_aspirate) > 250: # Move to next well horizontally by advancing row letter, keeping column number row = well[0] col = well[1:]
# Find next row letter
next_row = rows[rows.index(row) + 1]
next_well = f"{next_row}{col}"
del well_colors[well]
well_colors[next_well] = current_color
volume_used[current_color] = quantity_to_aspirate
else:
volume_used[current_color] += quantity_to_aspirate
break
def run(protocol): # Load labware, modules and pipettes protocol.home()
# Tips
tips_20ul = protocol.load_labware('opentrons_96_tiprack_20ul', TIP_RACK_DECK_SLOT, 'Opentrons 20uL Tips')
# Pipettes
pipette_20ul = protocol.load_instrument("p20_single_gen2", "right", [tips_20ul])
# PCR Plate
temperature_plate = protocol.load_labware('opentrons_96_aluminumblock_generic_pcr_strip_200ul', 6)
# Agar Plate
agar_plate = protocol.load_labware('htgaa_agar_plate', AGAR_DECK_SLOT, 'Agar Plate')
agar_plate.set_offset(x=0.00, y=0.00, z=Z_VALUE_AGAR)
# Get the top-center of the plate, make sure the plate was calibrated before running this
center_location = agar_plate['A1'].top()
pipette_20ul.starting_tip = tips_20ul.well(PIPETTE_STARTING_TIP_WELL)
# Helper function (dispensing)
def dispense_and_jog(pipette, volume, location):
assert(isinstance(volume, (int, float)))
# Go above the location
above_location = location.move(types.Point(z=location.point.z + 2))
pipette.move_to(above_location)
# Go downwards and dispense
pipette.dispense(volume, location)
# Go upwards to avoid smearing
pipette.move_to(above_location)
# Helper function (color location)
def location_of_color(color_string):
for well,color in well_colors.items():
if color.lower() == color_string.lower():
return temperature_plate[well]
raise ValueError(f"No well found with color {color_string}")
# Print pattern by iterating over lists
for i, (current_color, point_list) in enumerate(point_name_pairing):
# Skip the rest of the loop if the list is empty
if not point_list:
continue
# Get the tip for this run, set the bacteria color, and the aspirate bacteria of choice
pipette_20ul.pick_up_tip()
max_aspirate = int(18 // POINT_SIZE) * POINT_SIZE
quantity_to_aspirate = min(len(point_list)*POINT_SIZE, max_aspirate)
update_volume_remaining(current_color, quantity_to_aspirate)
pipette_20ul.aspirate(quantity_to_aspirate, location_of_color(current_color))
# Iterate over the current points list and dispense them, refilling along the way
for i in range(len(point_list)):
x, y = point_list[i]
adjusted_location = center_location.move(types.Point(x, y))
dispense_and_jog(pipette_20ul, POINT_SIZE, adjusted_location)
if pipette_20ul.current_volume == 0 and len(point_list[i+1:]) > 0:
quantity_to_aspirate = min(len(point_list[i:])*POINT_SIZE, max_aspirate)
update_volume_remaining(current_color, quantity_to_aspirate)
pipette_20ul.aspirate(quantity_to_aspirate, location_of_color(current_color))
# Drop tip between each color
pipette_20ul.drop_tip()
Part 3: Post Lab Questions
- Automation Plan for Final Project The integration of automation tools, specifically the Opentrons, aims to minimize human intervention while maximizing precision in complex biological workflows. Below is the proposed strategy for utilizing automation in the final project.
A. Automation in Reaction Synthesis (Opentrons) Utilizing robotic systems to control contamination, increase accuracy, and improve reproducibility in large-scale transformation processes.
Procedures to Automate:
PCR & rt-PCR: Precise master mix preparation and DNA template distribution.
Bacterial Culture: Automated inoculations and serial dilutions.
Molecular Transformation: Systematic development of plasmid constructs.
Hardware Requirements: Custom 3D printed holders for non-standard tubes or specific labware geometries.
B. Automation in Marker Detection Integration of software and specialized hardware to standardize results and eliminate manual bias.
Software Integration: Utilizing ImageJ or Matlab for high-resolution image processing and automated gel electrophoresis analysis.
Quantification: Fluorescence, absorbance, and luminescence assays (e.g., mimicking the workflow of the Varioskan™ ALF Multimode Microplate Reader).
C. Automation in Data Analysis Leveraging computational tools to handle large-scale experimental statistics and expression data.
Tools: RStudio, Python, IBM SPSS Statistics, and Stata.
Applications:
Analyzing gene/protein expression trends.
Biostatistical comparison of experimental results.
- Literature Review: Automation in Biological Applications Case Study 1: DNA Assembly (AssemblyTron) Paper: AssemblyTron: flexible automation of DNA assembly with Opentrons OT-2 lab robots (2023)
Summary: This study introduces AssemblyTron, a Python-based package designed to automate the DNA assembly process. It streamlines the construction of plasmids and DNA fragments via homology or Golden Gate assembly.
Impact: Reduces human intervention to a minimum, ensuring high-fidelity assembly.
Link: Read Paper
Case Study 2: SARS-CoV-2 Diagnostic Strategy Paper: Efficient SARS-CoV-2 Quantitative Reverse Transcriptase PCR Saliva Diagnostic Strategy utilizing Open-Source Pipetting Robots
Summary: This research demonstrates a novel RT-qPCR method for saliva samples using open-source robots for the pipetting process.
Impact: Provides a cost-effective, scalable alternative to conventional manual methods while drastically reducing human experimental error.
Link: Read Paper
Case Study 3: Culture Media Inoculation Paper: Automation of inoculation in culture media for the microbiology laboratory
Summary: This article details the blueprint for an automated system dedicated to the inoculation of culture media.
Impact: Covers the entire production chain—from initial inoculation to disposal—significantly reducing contamination risks and mishandling.
Link: Read Paper
Additional Resource Review: Automated high-throughput DNA synthesis and assembly
Link: Read Review