<Giulia Sironi> — HTGAA Spring 2026

cover image cover image

About me

Hi, I’m Giulia Sironi, based in Italy.
I ma currently involve in:

  • Bioprinting
  • Cellular biology and regeneration research
  • Experimental tool building (e.g. clinostat for microgravity simulation)

Contact info

Homework

Week2 preparation →

Labs

Projects

Subsections of <Giulia Sironi> — HTGAA Spring 2026

Homework

Weekly homework submissions:

  • Week 1 HW: Principles and Practices

    Conceptual question How many molecules of amino acids do you take with a piece of 500 grams of meat? (on average an amino acid is ~100 Daltons) Meat is primarily composed of approximately 75% water, 19% protein, and 5% fat, along with small amounts of minerals and carbohydrates. 500 less or more 100g of protein (100g / 1.66×10−24 )/100 = 6.0×1023

  • Week 1 HW: Principles and Practices

    complete controll of the system, no limit of cellular variability, expression is faster and you can add and remove stuff in real life. protein can be toxic for the cell and some are difficult to express in vivo cellukar extract, dna template, aminoacid, nucleotide to trascribe mrna , atp and gtp , buffer like mg k and ph to stabilize anzime and e ribosom and chaperoni or othe racessory stuff to have correct folding and energetic regeneration is critical bc ATP is crucial and widly use, example can be PEP or creatin + phosphate, or glycolycic like pathways. Prokaryotic vs eukaryotic CFPS Prokaryotic (E. coli extract) limitat folding but cheap and fast GFP o baterial enzymes (es. T7 RNA polymerase) Eukaryotic (rabbit reticulocyte / insect / mammalian extract) support complex folding and glycolysation slow and expensive IgG for example

  • week-03-hw-lab-automation

    Opentrone code Using https://docs.opentrons.com/python-api/ and Gemini from opentrons import protocol_api from opentrons.types import Point import math metadata = { “protocolName”: “Fluorescent Agar Art from Coordinate Lists”, “author”: “OpenAI”, “description”: “Draws a multicolor design on agar using Opentrons from GUI coordinate lists.”, “apiLevel”: “2.15” } mscarlet_i_points = [(-20.7, 26.1),(-20.7, 24.3),(-20.7, 22.5),(-18.9, 22.5),(-20.7, 20.7),(-18.9, 20.7),(-20.7, 18.9),(-18.9, 18.9),(-17.1, 18.9),(-20.7, 17.1),(-18.9, 17.1),(-17.1, 17.1),(-15.3, 17.1),(-18.9, 15.3),(-17.1, 15.3),(-15.3, 15.3),(-13.5, 15.3),(-18.9, 13.5),(-17.1, 13.5),(-15.3, 13.5),(-13.5, 13.5),(-11.7, 13.5),(-18.9, 11.7),(-17.1, 11.7),(-15.3, 11.7),(-13.5, 11.7),(-11.7, 11.7),(-9.9, 11.7),(9.9, 11.7),(22.5, 11.7),(24.3, 11.7),(26.1, 11.7),(-26.1, 9.9),(-17.1, 9.9),(-15.3, 9.9),(-13.5, 9.9),(-11.7, 9.9),(-9.9, 9.9),(-8.1, 9.9),(-6.3, 9.9),(8.1, 9.9),(9.9, 9.9),(11.7, 9.9),(-26.1, 8.1),(-24.3, 8.1),(-22.5, 8.1),(-15.3, 8.1),(-13.5, 8.1),(-11.7, 8.1),(-9.9, 8.1),(-8.1, 8.1),(-6.3, 8.1),(-4.5, 8.1),(-2.7, 8.1),(8.1, 8.1),(9.9, 8.1),(11.7, 8.1),(13.5, 8.1),(-24.3, 6.3),(-22.5, 6.3),(-20.7, 6.3),(-18.9, 6.3),(-13.5, 6.3),(-11.7, 6.3),(-9.9, 6.3),(-8.1, 6.3),(-6.3, 6.3),(-4.5, 6.3),(-2.7, 6.3),(-0.9, 6.3),(0.9, 6.3),(9.9, 6.3),(11.7, 6.3),(13.5, 6.3),(15.3, 6.3),(17.1, 6.3),(-22.5, 4.5),(-20.7, 4.5),(-18.9, 4.5),(-17.1, 4.5),(-15.3, 4.5),(-9.9, 4.5),(-8.1, 4.5),(-6.3, 4.5),(-4.5, 4.5),(-2.7, 4.5),(-0.9, 4.5),(0.9, 4.5),(2.7, 4.5),(11.7, 4.5),(13.5, 4.5),(15.3, 4.5),(17.1, 4.5),(-22.5, 2.7),(-20.7, 2.7),(-18.9, 2.7),(-17.1, 2.7),(-15.3, 2.7),(-13.5, 2.7),(-11.7, 2.7),(-9.9, 2.7),(-8.1, 2.7),(-6.3, 2.7),(-4.5, 2.7),(-2.7, 2.7),(-0.9, 2.7),(0.9, 2.7),(2.7, 2.7),(4.5, 2.7),(6.3, 2.7),(13.5, 2.7),(15.3, 2.7),(17.1, 2.7),(18.9, 2.7),(-18.9, 0.9),(-17.1, 0.9),(-15.3, 0.9),(-13.5, 0.9),(-11.7, 0.9),(-9.9, 0.9),(-8.1, 0.9),(-6.3, 0.9),(-4.5, 0.9),(-2.7, 0.9),(-0.9, 0.9),(0.9, 0.9),(2.7, 0.9),(4.5, 0.9),(6.3, 0.9),(8.1, 0.9),(13.5, 0.9),(15.3, 0.9),(17.1, 0.9),(18.9, 0.9),(-17.1, -0.9),(-15.3, -0.9),(-13.5, -0.9),(-11.7, -0.9),(-9.9, -0.9),(-8.1, -0.9),(-6.3, -0.9),(-4.5, -0.9),(-2.7, -0.9),(-0.9, -0.9),(0.9, -0.9),(2.7, -0.9),(4.5, -0.9),(6.3, -0.9),(8.1, -0.9),(9.9, -0.9),(15.3, -0.9),(17.1, -0.9),(18.9, -0.9),(6.3, -2.7),(8.1, -2.7),(9.9, -2.7),(15.3, -2.7),(17.1, -2.7),(18.9, -2.7),(9.9, -4.5),(11.7, -4.5),(15.3, -4.5),(17.1, -4.5),(18.9, -4.5),(11.7, -6.3),(15.3, -6.3),(17.1, -6.3),(18.9, -6.3),(11.7, -8.1),(15.3, -8.1),(17.1, -8.1),(18.9, -8.1),(11.7, -9.9),(15.3, -9.9),(17.1, -9.9),(11.7, -11.7),(15.3, -11.7),(17.1, -11.7),(11.7, -13.5),(13.5, -13.5),(15.3, -13.5),(9.9, -15.3),(11.7, -15.3),(13.5, -15.3),(9.9, -17.1)]

Subsections of Homework

Week 1 HW: Principles and Practices

Conceptual question

How many molecules of amino acids do you take with a piece of 500 grams of meat? (on average an amino acid is ~100 Daltons)

Meat is primarily composed of approximately 75% water, 19% protein, and 5% fat, along with small amounts of minerals and carbohydrates. 500 less or more 100g of protein (100g / 1.66×10−24 )/100 = 6.0×1023

Why do humans eat beef but do not become a cow, eat fish but do not become fish?

Enzime breaks cow or fish proteins into amino acids, fats into fatty acids, and nucleic acids into small components. Then your own cells rebuild human molecules from those parts according to the human genome and human regulatory patterns

Why are there only 20 natural amino acids?

enough chemical diversity to build stable, functional proteins, but not so many building blocks that translation machinery becomes much harder to evolve and maintain

Can you make other non-natural amino acids? Design some new amino acids.

They can be added chemically during peptide synthesis or genetically encoded using engineered tRNA/aminoacyl-tRNA synthetase systems.

Where did amino acids come from before enzymes that make them, and before life started?

Before enzymes and life, amino acids were synthesized via non-biological (abiotic) processes, likely arising from atmospheric chemical reactions, hydrothermal vents, or extraterrestrial impacts. Simple compounds like methane, ammonia, and cyanide combined using energy sources like lightning, ultraviolet light, or heat to produce these building blocks, creating a “primordial soup”.

If you make an α-helix using D-amino acids, what handedness (right or left) would you expect?

right-handed α-helices are favored because proteins are built almost entirely from L-amino acids.

Can you discover additional helices in proteins?

Many theoretically possible helices are unstable or transient, which is why only a few are commonly observed.

Why do β-sheets tend to aggregate?

β-strands expose backbone hydrogen-bonding groups that can easily form intermolecular interactions.

What is the driving force for β-sheet aggregation?

Hdrogen bonding Hydrophobic interactions (exclusion of water) and tight side-chain packing (dry, low-energy interfaces)

Why do many amyloid diseases form β-sheets?

When normal protein folding or clearance fails, proteins can misfold into β-rich structures that self-assemble into fibrils, which are often toxic and accumulate in tissues.

Can you use amyloid β-sheets as materials

Yes bc they are ordinate and resistent

Analyzing protein

cover image cover image

Deep Mutational Scans

the blu line convy the importance of that aminoacid. I sprobabily a binding site or have idrophobicity

Latent Space Analysis

Similar protein with gradual change, no group detected

Folding

Depend on the site the resistace to mutation

Inverse-Folding a protein

Nope not close many mutation

Engeneer

Our group plans to computationally engineer the ΦX174 L lysis protein for increased stability. We will use protein language models for mutational scanning, conservation analysis to avoid critical residues, structure prediction to check fold preservation, and stability prediction tools to rank candidate mutations. Our hypothesis is that a more stable L protein may function more reliably and potentially improve phage performance. The main risk is that computational stability does not necessarily translate to improved biological activity.

Week 1 HW: Principles and Practices

  1. complete controll of the system, no limit of cellular variability, expression is faster and you can add and remove stuff in real life. protein can be toxic for the cell and some are difficult to express in vivo
  2. cellukar extract, dna template, aminoacid, nucleotide to trascribe mrna , atp and gtp , buffer like mg k and ph to stabilize anzime and e ribosom and chaperoni or othe racessory stuff to have correct folding and
  3. energetic regeneration is critical bc ATP is crucial and widly use, example can be PEP or creatin + phosphate, or glycolycic like pathways.
  4. Prokaryotic vs eukaryotic CFPS Prokaryotic (E. coli extract) limitat folding but cheap and fast GFP o baterial enzymes (es. T7 RNA polymerase)

Eukaryotic (rabbit reticulocyte / insect / mammalian extract) support complex folding and glycolysation slow and expensive IgG for example

  1. idrofobic agregation, misfolding, no membran is present, so you can add liposom or nanodisc, chaperoni, you can tune codons to express slower or use detergent like DDM

  2. you cna produce less if yo have

    • low energy -> change ATP or GTP
    • mRNA instable, use inibiitor or stabilize UTR (segment of mrna not trascribe )
    • misoflding -> add chaperon or change system maybe u need eucariot

Synthetic minimal cell (Kate Adamala)

A synthetic minimal cell designed to detect stress-related biomarkers in sweat and convert them into a visible colorimetric output representing different physiological states Input: sweat containing biomarkers such as cortisol and lactate Output: blue color → predominantly physical stress (high lactate, moderate cortisol) red color → predominantly psychological stress (high cortisol, low lactate) This requires a multi-analyte sensing system rather than a single biomarker, since cortisol alone cannot distinguish between stress types The function could be partially realized using cell-free Tx/Tl alone, but without encapsulation it would lack spatial control, suffer from cross-reactivity, and have reduced specificity The function could also be implemented in genetically modified natural cells (e.g. bacteria), but this would introduce limitations such as slower response time, less control over conditions, and regulatory concerns Desired outcome: a robust and reliable color change that encodes biochemical information about stress state in real time Membrane composition: phospholipid bilayer including POPC and cholesterol to provide structural stability and semi-permeability Encapsulated components: cell-free transcription/translation system (e.g. E. coli extract) DNA circuits encoding sensing and reporting functions ATP regeneration system sensing modules for cortisol (aptamer or receptor-based) and lactate (enzyme or transcription factor-based) Genetic components: α-hemolysin (aHL) gene for membrane pore formation LldR regulatory system for lactate sensing engineered cortisol-responsive genetic circuit (e.g. aptamer-controlled expression) reporter genes: amilCP (blue chromoprotein) and mCherry (red fluorescent protein) Tx/Tl system source: E. coli-based system is sufficient due to efficiency, simplicity, and compatibility with the required genetic circuits Communication with environment: small molecules from sweat diffuse across the membrane or pass through pores (α-hemolysin) internal sensing triggers gene expression leading to production of color reporters Lipids: POPC, cholesterol, optionally PEGylated lipids (e.g. DSPE-PEG) for increased stability Measurement of system function: colorimetry (absorbance measurements for blue/red output) fluorescence measurement for mCherry ratio of red to blue signal used to classify stress type

#Peter Nhuyen

CFS in Architecture, Textiles/Fashion, or Robotics

One-sentence pitch: A smart bridge-mounted biosensing system that uses synthetic cell-based colorimetric sensors to detect and visually signal water pollution in real time.

How it works (more detail): The system consists of a modular coating or panel applied to bridges, containing encapsulated cell-free biosensors embedded in a stable substrate. As river water flows past, small molecules diffuse into these micro-compartments and activate specific sensing circuits that respond to pollutants such as toxins, pathogens, or chemical contaminants. Each sensor produces a distinct color output depending on the type of pollutant detected, enabling rapid visual assessment without specialized equipment. Data can also be captured via camera systems and transmitted to city monitoring platforms for continuous tracking.

Societal challenge / market need: This addresses the global challenge of water pollution and ecosystem degradation, aligning with UN Sustainable Development Goal 14 (Life Below Water) by enabling accessible, real-time monitoring of water quality for both authorities and the public.

Addressing limitations of cell-free systems: The system is designed to activate upon contact with water, eliminating the need for manual triggering. Encapsulation within protective materials (e.g., hydrogels or polymer matrices) improves stability and prolongs functionality. To address degradation and one-time use constraints, the sensors are engineered for a defined operational lifespan (e.g., up to three months), after which panels can be replaced or regenerated.

#Allay Huang

Long-duration space missions expose astronauts to microgravity-induced immune dysregulation, chronic inflammation, and increased infection risk. At the same time, spacecraft environments are closed systems where medical resources are limited and delayed from Earth. This creates a need for autonomous, on-demand therapeutic production. Cell-free systems like BioBits offer a unique solution by enabling in situ synthesis of functional biomolecules without living cells. Developing a system that can both detect biological stress and produce therapeutic proteins could transform space medicine and improve crew health management in deep-space missions and lunar/Mars habitats.

Molecular or genetic target

Synthetic DNA templates encoding anti-inflammatory peptides (e.g., IL-10 mimetic peptides) and antimicrobial peptides (e.g., defensin-like sequences) regulated by stress-responsive promoters.

Relation to space biology challenge

Microgravity and radiation alter immune signaling pathways, leading to chronic inflammation and reduced pathogen resistance in astronauts. Anti-inflammatory and antimicrobial peptides directly target these dysfunctions by restoring immune balance and preventing microbial infections in closed spacecraft environments. Using synthetic DNA templates in BioBits enables rapid, on-demand production of these therapeutic molecules in response to detected stress signals. This approach links environmental sensing with immediate biochemical response, addressing the core challenge of maintaining astronaut health autonomously during long-duration missions where resupply or traditional pharmaceuticals are limited.

Hypothesis / research goal

We hypothesize that a cell-free BioBits system can be engineered to autonomously produce functional anti-inflammatory and antimicrobial peptides in response to space-relevant stress signals, such as oxidative stress markers or pathogen-associated molecules. The reasoning is that immune dysregulation in microgravity can be partially mitigated by localized, rapid delivery of regulatory peptides rather than systemic drug administration. If BioBits can couple detection of stress biomarkers with transcription and translation of therapeutic proteins, it could function as a minimal synthetic immune support system. The research goal is to demonstrate that freeze-dried, programmable cell-free systems can serve as both biosensors and micro-factories for therapeutic protein production in space-like conditions.

Experimental plan

Freeze-dried BioBits reactions will be loaded with synthetic DNA templates encoding therapeutic peptides under stress-responsive promoters. Samples will be exposed to simulated space-relevant conditions (oxidative stress via H₂O₂, inflammatory cytokine analogs, microbial components like LPS). Controls include non-responsive constitutive expression systems and no-template reactions. Output will be measured via fluorescence-tagged peptide reporters and validated by protein quantification assays. Reaction efficiency, response time, and protein yield will be recorded using a portable fluorimeter. Comparison across conditions will assess whether stress triggers enhanced therapeutic protein production in the cell-free system.

week-03-hw-lab-automation

Opentrone code

Using https://docs.opentrons.com/python-api/ and Gemini

from opentrons import protocol_api from opentrons.types import Point import math

metadata = { “protocolName”: “Fluorescent Agar Art from Coordinate Lists”, “author”: “OpenAI”, “description”: “Draws a multicolor design on agar using Opentrons from GUI coordinate lists.”, “apiLevel”: “2.15” }

mscarlet_i_points = [(-20.7, 26.1),(-20.7, 24.3),(-20.7, 22.5),(-18.9, 22.5),(-20.7, 20.7),(-18.9, 20.7),(-20.7, 18.9),(-18.9, 18.9),(-17.1, 18.9),(-20.7, 17.1),(-18.9, 17.1),(-17.1, 17.1),(-15.3, 17.1),(-18.9, 15.3),(-17.1, 15.3),(-15.3, 15.3),(-13.5, 15.3),(-18.9, 13.5),(-17.1, 13.5),(-15.3, 13.5),(-13.5, 13.5),(-11.7, 13.5),(-18.9, 11.7),(-17.1, 11.7),(-15.3, 11.7),(-13.5, 11.7),(-11.7, 11.7),(-9.9, 11.7),(9.9, 11.7),(22.5, 11.7),(24.3, 11.7),(26.1, 11.7),(-26.1, 9.9),(-17.1, 9.9),(-15.3, 9.9),(-13.5, 9.9),(-11.7, 9.9),(-9.9, 9.9),(-8.1, 9.9),(-6.3, 9.9),(8.1, 9.9),(9.9, 9.9),(11.7, 9.9),(-26.1, 8.1),(-24.3, 8.1),(-22.5, 8.1),(-15.3, 8.1),(-13.5, 8.1),(-11.7, 8.1),(-9.9, 8.1),(-8.1, 8.1),(-6.3, 8.1),(-4.5, 8.1),(-2.7, 8.1),(8.1, 8.1),(9.9, 8.1),(11.7, 8.1),(13.5, 8.1),(-24.3, 6.3),(-22.5, 6.3),(-20.7, 6.3),(-18.9, 6.3),(-13.5, 6.3),(-11.7, 6.3),(-9.9, 6.3),(-8.1, 6.3),(-6.3, 6.3),(-4.5, 6.3),(-2.7, 6.3),(-0.9, 6.3),(0.9, 6.3),(9.9, 6.3),(11.7, 6.3),(13.5, 6.3),(15.3, 6.3),(17.1, 6.3),(-22.5, 4.5),(-20.7, 4.5),(-18.9, 4.5),(-17.1, 4.5),(-15.3, 4.5),(-9.9, 4.5),(-8.1, 4.5),(-6.3, 4.5),(-4.5, 4.5),(-2.7, 4.5),(-0.9, 4.5),(0.9, 4.5),(2.7, 4.5),(11.7, 4.5),(13.5, 4.5),(15.3, 4.5),(17.1, 4.5),(-22.5, 2.7),(-20.7, 2.7),(-18.9, 2.7),(-17.1, 2.7),(-15.3, 2.7),(-13.5, 2.7),(-11.7, 2.7),(-9.9, 2.7),(-8.1, 2.7),(-6.3, 2.7),(-4.5, 2.7),(-2.7, 2.7),(-0.9, 2.7),(0.9, 2.7),(2.7, 2.7),(4.5, 2.7),(6.3, 2.7),(13.5, 2.7),(15.3, 2.7),(17.1, 2.7),(18.9, 2.7),(-18.9, 0.9),(-17.1, 0.9),(-15.3, 0.9),(-13.5, 0.9),(-11.7, 0.9),(-9.9, 0.9),(-8.1, 0.9),(-6.3, 0.9),(-4.5, 0.9),(-2.7, 0.9),(-0.9, 0.9),(0.9, 0.9),(2.7, 0.9),(4.5, 0.9),(6.3, 0.9),(8.1, 0.9),(13.5, 0.9),(15.3, 0.9),(17.1, 0.9),(18.9, 0.9),(-17.1, -0.9),(-15.3, -0.9),(-13.5, -0.9),(-11.7, -0.9),(-9.9, -0.9),(-8.1, -0.9),(-6.3, -0.9),(-4.5, -0.9),(-2.7, -0.9),(-0.9, -0.9),(0.9, -0.9),(2.7, -0.9),(4.5, -0.9),(6.3, -0.9),(8.1, -0.9),(9.9, -0.9),(15.3, -0.9),(17.1, -0.9),(18.9, -0.9),(6.3, -2.7),(8.1, -2.7),(9.9, -2.7),(15.3, -2.7),(17.1, -2.7),(18.9, -2.7),(9.9, -4.5),(11.7, -4.5),(15.3, -4.5),(17.1, -4.5),(18.9, -4.5),(11.7, -6.3),(15.3, -6.3),(17.1, -6.3),(18.9, -6.3),(11.7, -8.1),(15.3, -8.1),(17.1, -8.1),(18.9, -8.1),(11.7, -9.9),(15.3, -9.9),(17.1, -9.9),(11.7, -11.7),(15.3, -11.7),(17.1, -11.7),(11.7, -13.5),(13.5, -13.5),(15.3, -13.5),(9.9, -15.3),(11.7, -15.3),(13.5, -15.3),(9.9, -17.1)]

mko2_points = [(-11.7, 26.1),(-18.9, 24.3),(-11.7, 24.3),(-9.9, 24.3),(-11.7, 22.5),(-9.9, 22.5),(-11.7, 20.7),(-9.9, 20.7),(-8.1, 20.7),(-11.7, 18.9),(-9.9, 18.9),(-8.1, 18.9),(-9.9, 17.1),(-8.1, 17.1),(-6.3, 17.1),(-20.7, 15.3),(-9.9, 15.3),(-8.1, 15.3),(-6.3, 15.3),(-4.5, 15.3),(-8.1, 13.5),(-6.3, 13.5),(-4.5, 13.5),(-2.7, 13.5),(-8.1, 11.7),(-6.3, 11.7),(-4.5, 11.7),(-2.7, 11.7),(-0.9, 11.7),(-4.5, 9.9),(-2.7, 9.9),(-0.9, 9.9),(0.9, 9.9),(2.7, 9.9),(-0.9, 8.1),(0.9, 8.1),(2.7, 8.1),(4.5, 8.1),(6.3, 8.1),(2.7, 6.3),(4.5, 6.3),(6.3, 6.3),(8.1, 6.3),(4.5, 4.5),(6.3, 4.5),(8.1, 4.5),(9.9, 4.5),(8.1, 2.7),(9.9, 2.7),(11.7, 2.7),(9.9, 0.9),(11.7, 0.9),(11.7, -0.9),(13.5, -0.9),(11.7, -2.7),(13.5, -2.7),(13.5, -4.5),(13.5, -6.3),(13.5, -8.1),(13.5, -9.9),(13.5, -11.7)]

electra2_points = [(17.1, 17.1),(18.9, 17.1),(15.3, 15.3),(17.1, 15.3),(18.9, 15.3),(20.7, 15.3),(22.5, 15.3),(17.1, 13.5),(18.9, 13.5),(20.7, 13.5),(22.5, 13.5),(24.3, 13.5),(-18.9, -2.7),(-6.3, -2.7),(-4.5, -2.7),(-2.7, -2.7),(-0.9, -2.7),(0.9, -2.7),(2.7, -2.7),(4.5, -2.7),(-17.1, -4.5),(-15.3, -4.5),(-13.5, -4.5),(-11.7, -4.5),(-9.9, -4.5),(-8.1, -4.5),(-6.3, -4.5),(-4.5, -4.5),(-2.7, -4.5),(-0.9, -4.5),(0.9, -4.5),(2.7, -4.5),(4.5, -4.5),(6.3, -4.5),(8.1, -4.5),(-15.3, -6.3),(-13.5, -6.3),(-11.7, -6.3),(-9.9, -6.3),(-8.1, -6.3),(-6.3, -6.3),(-4.5, -6.3),(-2.7, -6.3),(0.9, -6.3),(2.7, -6.3),(4.5, -6.3),(6.3, -6.3),(-8.1, -8.1),(-2.7, -8.1),(-0.9, -8.1),(0.9, -8.1),(2.7, -8.1),(4.5, -8.1),(-6.3, -9.9),(-4.5, -9.9),(-2.7, -9.9),(-0.9, -9.9),(0.9, -9.9),(2.7, -9.9)]

azurite_points = [(13.5, 15.3),(11.7, 13.5),(13.5, 13.5),(15.3, 13.5),(11.7, 11.7),(13.5, 11.7),(15.3, 11.7),(17.1, 11.7),(18.9, 11.7),(20.7, 11.7),(13.5, 9.9),(15.3, 9.9),(17.1, 9.9),(18.9, 9.9),(15.3, 8.1),(17.1, 8.1),(-0.9, -6.3)]

mturquoise2_points = [(8.1, -6.3),(9.9, -6.3),(6.3, -8.1),(8.1, -8.1),(9.9, -8.1),(4.5, -9.9),(6.3, -9.9),(8.1, -9.9),(9.9, -9.9),(0.9, -11.7),(2.7, -11.7),(4.5, -11.7),(6.3, -11.7),(8.1, -11.7),(9.9, -11.7),(-0.9, -13.5),(0.9, -13.5),(2.7, -13.5),(4.5, -13.5),(6.3, -13.5),(8.1, -13.5),(9.9, -13.5),(-0.9, -15.3),(0.9, -15.3),(2.7, -15.3),(4.5, -15.3),(6.3, -15.3),(8.1, -15.3),(-2.7, -17.1),(-0.9, -17.1),(0.9, -17.1),(2.7, -17.1),(4.5, -17.1),(6.3, -17.1),(8.1, -17.1),(-4.5, -18.9),(-2.7, -18.9),(-0.9, -18.9),(0.9, -18.9),(2.7, -18.9),(4.5, -18.9),(6.3, -18.9),(-2.7, -20.7),(-0.9, -20.7),(0.9, -20.7),(2.7, -20.7),(4.5, -20.7),(-2.7, -22.5),(-0.9, -22.5),(0.9, -22.5),(2.7, -22.5),(4.5, -22.5),(-2.7, -24.3),(-0.9, -24.3),(0.9, -24.3),(-6.3, -26.1),(-4.5, -26.1),(-2.7, -26.1),(-0.9, -26.1),(-8.1, -27.9),(-6.3, -27.9),(-4.5, -27.9)]

sfgfp_points = [(-4.5, -20.7),(-6.3, -22.5),(-4.5, -22.5),(-9.9, -24.3),(-8.1, -24.3),(-6.3, -24.3),(-4.5, -24.3),(-11.7, -26.1),(-9.9, -26.1),(-8.1, -26.1),(-17.1, -27.9),(-15.3, -27.9),(-13.5, -27.9),(-11.7, -27.9),(-9.9, -27.9),(-15.3, -29.7),(-13.5, -29.7),(-11.7, -29.7),(-9.9, -29.7)]

DROP_VOL_UL = 1.0 DRAW_Z_MM = 1.0 TRAVEL_Z_MM = 10.0 EXTRA_ASPIRATE_UL = 2.0 MAX_BATCH_UL = 18.0 XY_SCALE = 1.0 X_OFFSET_MM = 0.0 Y_OFFSET_MM = 0.0

def run(protocol: protocol_api.ProtocolContext):

tiprack = protocol.load_labware("opentrons_96_tiprack_20ul", "1")
source_plate = protocol.load_labware("corning_96_wellplate_360ul_flat", "2")
agar_plate = protocol.load_labware("corning_6_wellplate_16.8ml_flat", "3")

p20 = protocol.load_instrument("p20_single_gen2", "right", tip_racks=[tiprack])

canvas = agar_plate["A1"]

color_sources = {
    "mscarlet_i": source_plate["A1"],
    "mko2": source_plate["A2"],
    "electra2": source_plate["A3"],
    "azurite": source_plate["A4"],
    "mturquoise2": source_plate["A5"],
    "sfgfp": source_plate["A6"],
}

design = [
    ("mscarlet_i", mscarlet_i_points),
    ("mko2", mko2_points),
    ("electra2", electra2_points),
    ("azurite", azurite_points),
    ("mturquoise2", mturquoise2_points),
    ("sfgfp", sfgfp_points),
]

protocol.max_speeds["X"] = 100
protocol.max_speeds["Y"] = 100
protocol.max_speeds["Z"] = 40

for color_name, points in design:
    source = color_sources[color_name]
    draw_points(protocol, p20, source, canvas, points, DROP_VOL_UL, DRAW_Z_MM, TRAVEL_Z_MM)

def draw_points(protocol, pipette, source, target, points, drop_vol_ul, draw_z_mm, travel_z_mm):

if len(points) == 0:
    return

points_per_batch = max(1, int((MAX_BATCH_UL - EXTRA_ASPIRATE_UL) // drop_vol_ul))

pipette.pick_up_tip()

for start_idx in range(0, len(points), points_per_batch):
    batch = points[start_idx:start_idx + points_per_batch]
    total_asp = len(batch) * drop_vol_ul + EXTRA_ASPIRATE_UL

    pipette.aspirate(total_asp, source.bottom(1.0))
    pipette.air_gap(1.0)

    pipette.move_to(target.top(travel_z_mm))

    for x, y in batch:
        target_loc = target.bottom(draw_z_mm).move(
            Point(
                x=(x * XY_SCALE) + X_OFFSET_MM,
                y=(y * XY_SCALE) + Y_OFFSET_MM,
                z=0
            )
        )
        pipette.move_to(target_loc)
        pipette.dispense(drop_vol_ul, target_loc)

    pipette.move_to(source.top())
    remaining = pipette.current_volume
    if remaining > 0:
        pipette.dispense(remaining, source.top())

pipette.drop_tip()

Ex 2, Project

  1. Gel dessert with different taste
  2. Robot that print different color and size base on <3 and bretahing pattern, detecting if you lie
  3. smell painting

Subsections of Labs

Week 1 Lab: Pipetting

cover image cover image

Subsections of Projects

Individual Final Project

cover image cover image

Group Final Project

cover image cover image