Assignment no. 1: Python Script for Opentrons Artwork
The code used was the following to create a simple swirl pattenr with four different colors:
fromopentronsimporttypesimportmathmetadata={'author':'Jean Colmenares','protocolName':'Agar Swirl Pattern - 4 Colors','description':'Swirl pattern with four colors per branch','source':'HTGAA 2026 Opentrons Lab','apiLevel':'2.20'}TIP_RACK_DECK_SLOT=9COLORS_DECK_SLOT=6AGAR_DECK_SLOT=5PIPETTE_STARTING_TIP_WELL='A1'well_colors={'A1':'Red','B1':'Green','C1':'Orange','D1':'Blue'}defrun(protocol):tips_20ul=protocol.load_labware('opentrons_96_tiprack_20ul',TIP_RACK_DECK_SLOT,'Opentrons 20uL Tips')pipette_20ul=protocol.load_instrument("p20_single_gen2","right",[tips_20ul])temperature_module=protocol.load_module('temperature module gen2',COLORS_DECK_SLOT)temperature_plate=temperature_module.load_labware('opentrons_96_aluminumblock_generic_pcr_strip_200ul','Cold Plate')color_plate=temperature_plateagar_plate=protocol.load_labware('htgaa_agar_plate',AGAR_DECK_SLOT,'Agar Plate')center_location=agar_plate['A1'].top()pipette_20ul.starting_tip=tips_20ul.well(PIPETTE_STARTING_TIP_WELL)# ------------------------------------------------------------------# Helper functions# ------------------------------------------------------------------deflocation_of_color(color_string):forwell,colorinwell_colors.items():ifcolor.lower()==color_string.lower():returncolor_plate[well]raiseValueError(f"No well found with color {color_string}")defdispense_and_detach(pipette,volume,location):above_location=location.move(types.Point(z=location.point.z+5))pipette.move_to(above_location)pipette.dispense(volume,location)pipette.move_to(above_location)# ------------------------------------------------------------------# SWIRL PATTERN — BIG + FIXED COLOR PER BRANCH (P20 SAFE)# ------------------------------------------------------------------DROP_VOLUME=3branches=4points_per_branch=24radius_start=3radius_step=1.6angle_step=math.pi/9branch_colors=['Red','Green','Orange','Blue']forbranchinrange(branches):base_angle=branch*(2*math.pi/branches)color=branch_colors[branch]source=location_of_color(color)foriinrange(points_per_branch):pipette_20ul.pick_up_tip()pipette_20ul.aspirate(DROP_VOLUME,source.bottom(1))angle=base_angle+i*angle_stepradius=radius_start+i*radius_stepx=radius*math.cos(angle)y=radius*math.sin(angle)loc=center_location.move(types.Point(x=x,y=y,z=0))dispense_and_detach(pipette_20ul,DROP_VOLUME,loc)pipette_20ul.drop_tip()
The pattern is shown below:
Assignment no.2: Find and describe a published paper that utilizes the Opentrons or an automation tool to achieve novel biological applications.
Automated Strain Construction for Biosynthetic Pathway Screening in Yeast Astolfi et al., 2025
In this study, the researchers programmed a Hamilton Microlab VANTAGE liquid-handling robot (a high-end automation platform, not an Opentrons) to integrate with additional on- and off-deck hardware (e.g., thermocyclers, plate sealers, colony pickers) via its central arm. Together with custom software and a user interface developed in the Hamilton VENUS environment, this system automated key steps in yeast strain construction such as transformation setup, heat-shock, washing, and plating.
This automated workflow achieved a throughput of up to ~2,000 transformations per week, enabling high-throughput construction and screening of libraries of engineered yeast strains. As a proof of concept, the team applied the system to screen gene variants within a biosynthetic pathway for the plant alkaloid precursor verazine. They identified several genes that significantly increased pathway product titers, demonstrating the utility of automated strain construction for rapid pathway discovery and optimization.
Assignment no. 3: Write a description about what you intend to do with automation tools for your final project. You may include example pseudocode, Python scripts, 3D printed holders, a plan for how to use Ginkgo Nebula, and more. You may reference this week’s recitation slide deck for lab automation details.
For my first idea, using a liquid-handling robot like the ones at Opentrons would be a crucial step in figuring out the right enzyme concentration for dye breakdown.