Deep Dalvi — HTGAA Spring 2026

About me

I come from a biotechnology background, but I don’t operate comfortably inside a single box. I move between wet lab concepts, computational thinking, and system architecture. I write code. I think about genetic circuits. I sketch startup ideas. I design frameworks for learning and decision-making.

My interests span synthetic biology, artificial intelligence, scalable bioproduction, design thinking, programmable biological systems and other such subjects. I explore broadly, try to synthesize patterns across disciplines. At the same time, I’m equally curious about how to build organizations, tools, and companies that can translate scientific insight into real-world impact.

I love structured experimentation and playful iteration. I’m interested not just in understanding biology, but in creating leverage: technical, intellectual, and eventually financial.

Contact info

Homework

Labs

Projects

Subsections of Deep Dalvi — HTGAA Spring 2026

Homework

Weekly homework submissions:

  • Week 1 HW: Principles and Practices

    A1. I want develop a living biological tool that works like a chromatography instrument. I have been thinking since a long time that what if we could use 3D bioprinting to create a living tissue (I like to call it an ‘organstrument’) that can selectively bind and separate ions/molecules. I propose it could work similar to a ion-exchange / affinity chromatography columns but instead of using mechanical parts, it would be bio-engineered. It would be made of cells and biomaterials that do the separation biologically.

  • Week 2 HW: DNA Read, Write & Edit

    Week 2 : Pre-HW Professor Jacobson: A1. DNA polymerase with proofreading has an error rate of about 1 error per 10⁶ bases (10⁻⁶). This is due to its proofreading and exonuclease activity. The human genome is about 3.2 billion base pairs. At a raw error rate of 10⁻⁶, replication would introduce thousands of errors per genome copy, which is unacceptable. Biology deals with this via multiple layers of correction, DNA Polymerase proofreading, post replication mismatch repair and other such systems.

  • Week 3 HW: Lab Automation

    Assignment : Python Script for Opentrons Artwork I had to write a Python script for a art design. I chose to create a silhouette of the Indian subcontinent, with my city being highlighted. I did that using the Opentrons Artwork website. I thought I will make a pattern of sorts with code but I realized that would time consuming and not very symbolic as such. I got a clipart of India from google and cropped it and then used that too generate my artwork. It didn’t look very good, I had to fiddle around with the contrast, brightness and other values to make it work. It still wasn’t looking how I’d expected it too. I decided to redo it.

Subsections of Homework

Week 1 HW: Principles and Practices

A1. I want develop a living biological tool that works like a chromatography instrument. I have been thinking since a long time that what if we could use 3D bioprinting to create a living tissue (I like to call it an ‘organstrument’) that can selectively bind and separate ions/molecules. I propose it could work similar to a ion-exchange / affinity chromatography columns but instead of using mechanical parts, it would be bio-engineered. It would be made of cells and biomaterials that do the separation biologically.

The idea came to me while attending an industrial training program wherein we were being taught chromatography and other such techniques, the program also had a guest lecture on 3D bioprinting. While being taught HPLC, I asked if I could do it hands-on and try things out. The lecturer refused as if anything went awry, it would cost the university a lot of money as the column could get damaged. I thought that if the current instruments are so expensive and rigid, how about entirely replacing them entirely and biologically. The bio-nature might allows for self-adaptation and regeneration. Perhaps this could open way for bio-disposable columns (one and done kind of way). One thing that also sort of fascinates me is the ethics behind idea of using a living system as a tool.

A2. Overall goal should be that these ‘organstruments’ are developed and used safely without causing any kind of harm. The goal can be divided into 2 further subgoals.

a. Prevent harm - if the tool is highly efficient, it has to be made sure that it is not used for concentrating toxic compounds. The access will have to monitored or the tool will have to be tested for alternate use cases.

b. Ensure safety and environmental protection - reduce risks of contamination and make sure these tissues cannot evolve outside controlled settings.

A3. Governance Actions

  1. Safe by Design - Biosafety is a major factor to consider if these tools are going to be used. Biosafety as of now depends on lab training and rules, we would have to make the tools safe by design. Incorporating specific nutrient dependence to function or using non replicating cells would make it so. The assumptions here are that these safety mechanism work properly and reliably and that the standards of use are being followed honestly. Risks - safety mechanisms fail over time. complexity of design.
  2. Class based tools division - Dividing the organstruments into different categories based on their risk would make it easy to ensure/reduce malicious use of the tools. low risk tools would be open to use, high risks would have restricted access and so on. The assumption is that risks can be clearly defined. Reliance on too much documentations, approvals for restricted access could slow down research.
  3. Transparency and shared registry - Researchers would voluntarily register organstrument designs, uses and safety features. if we provide incentives to them for doing so, the sharing of information would help in making the tools better and safer. The risks here would be that the shared information could be misused, the friction of registration could lead researchers to not register, therefore the registration process would have to be made smoother.
Does the option:Option 1Option 2Option 3
Enhance Biosecurity
• By preventing incidents123
• By helping respond212
Foster Lab Safety
• By preventing incident122
• By helping respond221
Protect the environment
• By preventing incidents122
• By helping respond221
Other considerations
• Minimizing costs and burdens to stakeholders231
• Feasibility?121
• Not impede research231
• Promote constructive applications221

Week 2 HW: DNA Read, Write & Edit

Week 2 : Pre-HW

Professor Jacobson:

A1. DNA polymerase with proofreading has an error rate of about 1 error per 10⁶ bases (10⁻⁶). This is due to its proofreading and exonuclease activity. The human genome is about 3.2 billion base pairs. At a raw error rate of 10⁻⁶, replication would introduce thousands of errors per genome copy, which is unacceptable. Biology deals with this via multiple layers of correction, DNA Polymerase proofreading, post replication mismatch repair and other such systems.

A2. The genetic code is degenerate in nature, therefore there could be many possible DNA sequences that could encode the same protein sequence. There could be in theory, millions of DNA sequences that could encode one protein. Most of these sequences wouldn’t work due to biological constraints like Codon bias, repetitive sequences causing errors, Inhibiions in transcription/translation.

Dr. LeProust:

A1. The most common method is chemical phosphoramidite DNA synthesis. It works via:

Stepwise base addition Chemical protection/deprotection cycles Typically ~5 minutes per base addition A2. It is harder to synthesize oligos longer than ~200 nt as errors accumulate with the addition of every base. Depurination and incomplete reactions increase with time and by the time you reach ~200 nt the drops in yield and accuracy make the product unreliable.

A3. Directly synthesizing a 2000 bp gene would accumulate too many errors to be of actually use. The yield would be extremely low and the process would be expensive. We use assembly based approaches to make long genes instead via using medthods like Gibson Assemby then doing sequencing and error correction later on.

George Church:

A1. There are 10 essential amino acids that animals cannot synthesize and must get from food. They are:

Isoleucine Leucine Lysine Histidine Methionine Phenylalanine Threonine Tryptophan Valine Arginine

I wasn’t aware of the ‘Lysine Contingency’ but a quick google search revealed that it is a reference to “Jurassic Park” wherein they engineer dinosaurs so they cannot synthesize lysine and must receive it externally, acting as a biological control mechanism. In reality, all animals already lack the ability to synthesize lysine, making them inherently dependent on plants and microbes. This makes the Lysine contingency an actually real thing, but if such dependencies could be engineered then it could be used to control organisms.

Part 1: BENCHLING ADVENTURES AND GEL ART

This week’s homework was pretty daunting as it involved Benchling. Something I’d never heard of before. I just decided to follow, the steps and figure out stuff as I go.

After creating a Benchling account and logging in, I was greeted by a screen that looked so complex. A plasmid on the right, DNA sequence on the left, a lot of restriction sites. I decided to just follow the next step. After clicking on the ‘plus’ icon and selecting Import DNA/RNA sequence.

A pop up window asked me to upload the DNA Sequence, I thought I could just add the accession number or something (Something I’d used in my graduate biotechnology coursework) I wasn’t sure, so I still decided to stick to the scaffold and just follow the next step. :)

The link to lambda DNA Sequence was in the Google Doc for the homework, I opened the link and right-clicked to save the file.

I made sure that I saved with the .gb extension as I was downloading a GenBank file, it was being downloaded as a .txt file. (I didn’t want any uploading problems)

Then I just drag and dropped the .gb file to the Benchling pop-up window and the sequence started to be uploaded. (So far so good.)

I was awestruck when I saw the screen post sequence upload; I was being overwhelmed with information. Everywhere I looked, there was something new yet it seemed familiar. I then found the digest button in the side panel on the left (SCISSOR ICON).

Clicking on the scissor icon, another panel for ’new digest’ opened up and it seemed intuitive. I was supposed to add the enzymes from the HW Doc, and then do an in-silico restriction of the DNA. I managed to add all the enzymes into the list and then clicked on the big blue ‘RUN DIGEST’ button.

Okay so before moving ahead. I was very intimidated by Benchling and the entire homework so I had tinkered around in the whole HW Doc and I had also visited the DNA Gel Art Interface website by ‘rdonovan’ (https://rcdonovan.com/gel-art) At first I wasn’t able to understand what was happening, I only had a general idea of what this was, but there was no tutorial/tooltips, I wasn’t sure what button did what. After selecting/deselecting enzymes and pressing the arrows, I found out that this was also like Benchling’s Digest thingie but this was quicker and allowed faster tweaks. To make sure, I selected all the enzymes in DGAI (I’ll refer to rdonovan’s website this way to keep things simple) and then tried to replicate the same in Benchling.

While trying to do this, I found out that the table below the enzymes in DGAI was the main thing to focus on. When I clicked on the arrows for a specific well, with a specific combination of enzymes, the table showed what enzymes were used for THAT specific result. This was I was able to find out how to replicate the DGAI gel in Benchling. For some reason, my Benchling results looked slightly different then DGAI. (side by side comparison below)

I thought maybe it was because in Benchling, it showed N/A for KpnI and SacI and in DGAI, they were selected??

I decided that to make my pattern, I’ll tinker around with different enzyme combination and see what they give me, note that down and then see what I could muster up from the patterns. I did think that maybe I could reverse engineer somehow that this combination gives these types of bands and then make a program that could somehow tell me the closest enzymes I could use to get a particular result. Like I could select the areas to keep on, like a display but all that abductive reasoning would be of no use as I wasn’t sure if it could be done. I continued with trying to make a pattern art.

This the table that I mentioned a while ago, If you can see that in well 1, the enzymes used are BamHI and SacI. I then used the same combination in Benchling and ran a digest.

Mission Successful! I was able to get how to replicate DGAI Gels in Benchling Digest (mostly.)

Fast forward to after experimenting with multiple combos for an hour or so, I was able to make something that looked like an M. My friends said that, I do see it but to me it looked like that one cat meme (minus the whiskers and ears) in DGAI.

Then I used the table and enzymes combos from DGAI to replicate the digest in Benchling!

I had to get a bit crafty as Benchling didn’t allow an empty digest. I googled which enzyme doesn’t cut lambda DNA.

I used NotI in the digest to get an empty well. :) Mission two Successful! I was able to achieve the same output in Benchling.

It was the end but I clicked on a band in the Benchling Gel and found out that it also shows you the exact point where the cut was made and what made THAT band. I figured that if I want to refine my art further, I can maybe use this information to my advantage.

Part 3: DNA Design

3.1. Choose your protein.

The protein that I would choose is Green Fluorescent Protein. I choose GFP because it is used a lot to track other proteins, to see expression of proteins. It’s just interesting to me that it allows us to study other proteins up close.

The protein sequence for GFP (I used UniProt to get it):

>sp|P42212|GFP_AEQVI Green fluorescent protein OS=Aequorea victoria OX=6100 GN=GFP PE=1 SV=1
MSKGEELFTGVVPILVELDGDVNGHKFSVSGEGEGDATYGKLTLKFICTTGKLPVPWPTL
VTTFSYGVQCFSRYPDHMKQHDFFKSAMPEGYVQERTIFFKDDGNYKTRAEVKFEGDTLV
NRIELKGIDFKEDGNILGHKLEYNYNSHNVYIMADKQKNGIKVNFKIRHNIEDGSVQLAD
HYQQNTPIGDGPVLLPDNHYLSTQSALSKDPNEKRDHMVLLEFVTAAGITHGMDELYK

3.2. Reverse Translate: Protein (amino acid) sequence to DNA (nucleotide) sequence.

The nucleotide sequence is:

>reverse translation of sp|P42212|GFP_AEQVI Green fluorescent protein OS=Aequorea victoria OX=6100 GN=GFP PE=1 SV=1 to a 714 base sequence of most likely codons. atgagcaaaggcgaagaactgtttaccggcgtggtgccgattctggtggaactggatggc gatgtgaacggccataaatttagcgtgagcggcgaaggcgaaggcgatgcgacctatggc aaactgaccctgaaatttatttgcaccaccggcaaactgccggtgccgtggccgaccctg gtgaccacctttagctatggcgtgcagtgctttagccgctatccggatcatatgaaacag catgatttttttaaaagcgcgatgccggaaggctatgtgcaggaacgcaccatttttttt aaagatgatggcaactataaaacccgcgcggaagtgaaatttgaaggcgataccctggtg aaccgcattgaactgaaaggcattgattttaaagaagatggcaacattctgggccataaa ctggaatataactataacagccataacgtgtatattatggcggataaacagaaaaacggc attaaagtgaactttaaaattcgccataacattgaagatggcagcgtgcagctggcggat cattatcagcagaacaccccgattggcgatggcccggtgctgctgccggataaccattat ctgagcacccagagcgcgctgagcaaagatccgaacgaaaaacgcgatcatatggtgctg ctggaatttgtgaccgcggcgggcattacccatggcatggatgaactgtataaa

I used Bioinformatics.org Reverse Translation tool to reverse translate the AA sequence to the DNA sequence.

3.3. Codon optimization.

I would optimize the codon usage for E.coli because it grows fast, it is well-researched. The thing about GFP is that it will not be the main protein of interest but rather it’ll be used to study one. So if I have a protein that I have expressed in a certain microorganism, then I will have to optimize the codon according to that.

About why do we optimize codons, I know this! I once had a question in my mind that why is thermos thermophilus heat resistant. Why can it live in such high temperatures? I basically went on a bioinformatics quest. To answer the question so I. First, my hypothesis was that maybe it has more GC content because GC has three hydrogen bonds and just having overall more hydrogen bonds would make it more heat stable. Then to validate my hypothesis, I had to see what genes it had and I had to compare it genes with. E coli. I saw that the codons with GC were preferred more. (Codon Bias) https://www.youtube.com/watch?v=1Jrawq9fnMs&t=1791s

The reason that we optimize codons is because certain microorganisms have their own preferences of codons to use. It could be so that if the organism has a preference of a certain codon then that tRNA which is required for the protein expression is in abundance and if you pick a codon whose tRNA is not readily available in that organism, then there is a chance that because of the lack of the tRNA the protein might not be expressed. Therefore in order to increase the chances of expression we have to optimize the codons for our nucleotide sequence.

I used VectorBuilder to optimize the codons. The interface is pretty intuitive. Just paste your sequence, select the organism. (There was also an option to avoid sites for certain restriction enzymes, I think that is to avoid having the sites of the enzymes that we might work with, so that our DNA doesn’t get damaged while working with something else?)

GFP protein DNA sequence with codons optimized for E.Coli
ATGAGCAAAGGCGAAGAACTGTTTACCGGCGTGGTGCCGATTCTGGTGGAACTGGATGGCGATGTGAATGGCCATAAATTTAGCGTGAGCGGCGAAGGTGAAGGCGATGCGACCTATGGCAAACTGACCCTGAAATTTATCTGCACCACCGGTAAACTGCCGGTGCCGTGGCCGACCCTGGTGACCACCTTCAGCTACGGCGTGCAGTGTTTTAGCCGCTACCCGGATCATATGAAACAGCATGATTTTTTTAAAAGCGCGATGCCGGAAGGCTATGTGCAGGAACGCACCATTTTTTTCAAAGATGATGGCAATTACAAAACCCGTGCCGAAGTGAAATTCGAAGGCGATACCCTGGTGAATCGCATTGAACTGAAAGGCATTGATTTTAAAGAAGATGGTAACATTCTGGGCCACAAACTGGAATACAACTATAACAGCCATAACGTGTACATTATGGCGGATAAACAGAAAAATGGCATTAAAGTGAACTTTAAAATTCGCCATAACATTGAAGATGGCTCAGTGCAGCTGGCGGATCACTATCAGCAGAACACCCCGATTGGCGATGGCCCGGTTCTGCTGCCGGATAACCACTATCTGAGCACCCAGAGCGCGCTGTCGAAAGATCCGAACGAAAAACGCGATCACATGGTGCTGCTGGAATTTGTGACCGCCGCGGGCATCACCCATGGTATGGATGAACTGTATAAA

3.4. What do we do with the sequence?

The sequence can be used to chemically synthesize the DNA and then be put into a plasmid. The plasmid can then be inserted into our host organism (via electroporesis?) and then our protein can be expressed.

3.5.

  1. Describe how a single gene codes for multiple proteins at the transcriptional level.

A single gene can code for multiple proteins via something called ‘Alternative Splicing’. Different combinations of exons are joined together from same pre-mRNA, to create varied mRNA molecules, this allows one gene to produce multiple protein isoforms (variants).

  1. I aligned the DNA sequence, the transcribed RNA, and also the resulting translated Protein!!! (Using Photoshop, stitching together screenshots from Benchling)

BTS: Aligning Sequences in Photoshop

Part 4 : Fake Twist DNA Synthesis Order

I just created a account using the ‘Sign Up’ Button. Pretty simple stuff really. Just add details, set a password. In the organization field I added HTGAA and Lab = 2026. I didn’t really think too much. I verified my email and I was in! I didn’t have to create a Benchling account as getting through Part 1 of the HW required using Benchling, so I already had an account.

4.2. Build Your DNA Insert Sequence

I imported the DNA Sequence into Benchling, just like from Part 1. Selected Linear topology as this is meant to be inserted into a circular vector of our choice. As I was going ahead, i realized that the exercise is already making use of GFP as an example. (well, good for me :))

I went through the sequences given in the HW document and then pasted the sequences into the Benchling file one after the other (Just the way we imported a sequence in Part 1, but here I had to copy everything one by one and then paste). I annotate the sequences based on the information in the HW document. (screenshots below on how, from the HW Doc)

My Benchling Annotation Screenshots:

After about 15 mins, I was done with it and I turned sharing on: here’s the link to my sequence: https://benchling.com/s/seq-bXgbXvSR0KND8n5Y59IJ?m=slm-FudwlRJXB3kzUe0O5m3M

I then went and exported the sequence, by clicking on the metadata tab and then clicking on the three dots and selecting export sequence, I selected FASTA format to export.

4.3. Benchling to Twist: continuing with our fake order

On the Twist E-commerce platform, I went and selected Genes -> Clonal Genes. (Screenshot from HW Doc)

Then I had to import my sequence, I drag and dropped the FASTA file that I downloaded from Benchling.

After the sequence had been uploaded successfuly, I clicked on the sequence and I saw this screen. (the twist platform also allows you to do codon optimization, niceee!)

I had to refer to the HW Doc to know what was next. Turns out I had to select a vector, I did that by clicking on select vector option on the sequence, a drop-down dialog allowed me to choose a vector in ‘Cloning’. I chose pTwist Amp High Copy based on the HW Doc.

Then I clicked on my sequence again to see the ‘construct’. I pressed the ‘Show Construct’ button to view the construct and I was able to see two different tabs.

  1. Sequence
  1. Circular

Then I clicked on the Download Construct link to download the GenBank file to my construct. (screenshot below, from HW Doc) I downloaded the GenBank file of my construct and imported it to Benchling. Part 4: Done! I built a plasmid with my own DNA of choice that is ready to insert! exhilirating feeling!

Part 5: DNA RW+

5.1 DNA Read

(i) What DNA would you want to sequence (e.g., read) and why?

I would want to sequence my own DNA. I’ve wanted to understand for a long while, what makes me, ‘ME’. What is my ancestry, what genes have I carried. Why am I naturally strong but fat? Why can I conserve muscle by little workout but fat just never budges? It might seem a bit small but yes I would want to read my own DNA first. (priority-wise)

(ii) In lecture, a variety of sequencing technologies were mentioned. What technology or technologies would you use to perform sequencing on your DNA and why?

I would use WGS (Whole Genome Sequencing) using Illumina (Next-Gen Sequencing) as to analyze my genome, I would requite a method that covers the entire genome with high accuracy. Illumina’s NGS offers that high capability.

  1. Is your method first-, second- or third-generation or other? How so?
    • The method is second generation as first generation methods like Sanger sequencing make use of chain-termination methods to sequence DNA and the third generation methods provide single molecule real time reading. WGS uses parallel sequencing.
  2. What is your input? How do you prepare your input (e.g. fragmentation, adapter ligation, PCR)? List the essential steps.
    • The input would be a DNA Sample of mine (blood/saliva). The steps to prepare would include fragmentation, (breaking the DNA down using enzymes) attaching adapters to allow primers to bind and if the sample is little, then PCR (to amplify the DNA, to make sure there’s enough to sequence)
  3. What are the essential steps of your chosen sequencing technology, how does it decode the bases of your DNA sample (base calling)?
    • The fragments of DNA attach to the flow cell and undergo bridge amplification to create clusters of identical strands. The fluoroscently labeled reversible terminator nucleotides are added and then the polymerase adds a single matching base to the growing strand. (Thus this method is also called Sequencing by Synthesis) then a sensor captures the fluoroscent signal to identify which base was added, the terminator and dye are cleaved off, then next cycle begins.
  4. What is the output of your chosen sequencing technology?
    • The output of this sequencing method is FASTQ files. They are like FASTA files but in FASTQ files theres also a Q (quality score) for every base, indicating how confident the machine is.

5.2 DNA Write

(i) What DNA would you want to synthesize (e.g., write) and why? 

I would want to synthesize the PprI gene from Deinococcus radiodurans. Ever since I heard about a bacterium, surviving Chernobyl levels of radiation. I was pretty fascinated by it. I would want it synthesize its DNA and study it further, perhaps the genes for radiation resistance can be expressed in other organisms to help them operate in radiation heavy environments.

(ii) What technology or technologies would you use to perform this DNA synthesis and why?

I would use the phosphoramidite oligonucleotide synthesis method for DNA synthesis as to I would need accurate synthesis to create gene sequences to insert in other organisms.

  1. What are the essential steps of your chosen sequencing methods?
    • The first step is In-Silico Design, breaking down the gene of interest into shorter chunks. Removing the chemical cap from previous base to make it reactive then add the next nucleotide to the growing chain. Blocking strands that didn’t accept the new base then oxidation to make the bases stable. Once all the short fragments are made on the silicon chip, they are released and then stitched together to form the full length genes.
  2. What are the limitations of your sequencing method (if any) in terms of speed, accuracy, scalability?
    • High GC sequences are difficult to synthesize because they form secondary structures and they also have high melting temperatures, which can cause synthesis to fail or introduce errors.

5.3 DNA Edit

(i) What DNA would you want to edit and why? 

This might be a bit controversial but I would want to edit my MSTN gene and try and tweak the gene for lower myostatin expression. I would want to make myself more muscular. I am aware however that the cascading effects could be unwelcome and lead to disorders. That is why this is just hypothetical.

(ii) What technology or technologies would you use to perform these DNA edits and why?

The best method I know of CRISPR. CRISPR is the most programmable and efficient method to edit specific genes.

  1. How does your technology of choice edit DNA? What are the essential steps?

    • CRISPR makes use of a Guide RNA (gRNA) that binds to the Cas9 protein and directs it to the specific DNA sequence in the MSTN gene that matches the guide. The Cas9 nuclease creates a Double-Strand Break at that precise location. The cell then repairs the breakage. If we want to add a gene we provide a template, and the cell uses homology-directed repair to copy the new sequence into the DNA.
  2. What preparation do you need to do (e.g. design steps) and what is the input (e.g. DNA template, enzymes, plasmids, primers, guides, cells) for the editing?

    • We have to design the sgRNA to ensure it specifically targets the gene of interest with minimal off-target effect potential. Input materials are Cas9 nuclease, gRNA, Template DNA
  3. What are the limitations of your editing methods (if any) in terms of efficiency or precision?

    • Off-target effects- the nuclease might accidentally cut similar sequences elsewhere and cause mutations.
    • Getting the gRNA and Cas9 into the cell is difficult.
    • Not all cells get edited.

Week 3 HW: Lab Automation

Assignment : Python Script for Opentrons Artwork

I had to write a Python script for a art design. I chose to create a silhouette of the Indian subcontinent, with my city being highlighted. I did that using the Opentrons Artwork website. I thought I will make a pattern of sorts with code but I realized that would time consuming and not very symbolic as such. I got a clipart of India from google and cropped it and then used that too generate my artwork. It didn’t look very good, I had to fiddle around with the contrast, brightness and other values to make it work. It still wasn’t looking how I’d expected it too. I decided to redo it.

![[Screenshot 2026-02-22 153034.png]]

This is the India 2.0 Art (image below), I like this one much better. The green outline in the previous one was not a very good design choice. I don’t know what I was thinking. I created this one by editing my original clipart then striking a balance in the contrast, brightness values. This one look much better in my opinion.

![[Screenshot 2026-02-23 172213.png]]

![[Screenshot 2026-02-22 153040.png]]

The coordinates were right below my art on the opentrons art website, I just decided to download the script. I edited the script a bit in the PyCharm (adding my name).

![[Pasted image 20260223175557.png]]

Reading further, I found out that I didn’t even need to download my script. I could just publish my design on the opentrons art website and then share the link. I did exactly that and submitted my script to the google form. But in case, Murphy’s Law decides to apply, here’s my code:

The CODEfrom opentrons import types

import string

metadata = {
‘protocolName’: ‘Deep Dalvi - Opentrons Art - HTGAA’,
‘author’: ‘HTGAA’,
‘source’: ‘HTGAA 2026’,
‘apiLevel’: ‘2.20’
}

Z_VALUE_AGAR = 2.0
POINT_SIZE = 0.75

electra2_points = [(-18.7,29.7), (-16.5,29.7), (-14.3,29.7), (-12.1,29.7), (-9.9,29.7), (-16.5,27.5), (-14.3,27.5), (-12.1,27.5), (-9.9,27.5), (-7.7,27.5), (-16.5,25.3), (-14.3,25.3), (-12.1,25.3), (-9.9,25.3), (-7.7,25.3), (-5.5,25.3), (-16.5,23.1), (-14.3,23.1), (-12.1,23.1), (-9.9,23.1), (-7.7,23.1), (-5.5,23.1), (-14.3,20.9), (-12.1,20.9), (-9.9,20.9), (-7.7,20.9), (-14.3,18.7), (-12.1,18.7), (-9.9,18.7), (-7.7,18.7), (-5.5,18.7), (-16.5,16.5), (-14.3,16.5), (-12.1,16.5), (-9.9,16.5), (-7.7,16.5), (-5.5,16.5), (23.1,16.5), (25.3,16.5), (27.5,16.5), (-18.7,14.3), (-16.5,14.3), (-14.3,14.3), (-12.1,14.3), (-9.9,14.3), (-7.7,14.3), (-5.5,14.3), (23.1,14.3), (25.3,14.3), (27.5,14.3), (-20.9,12.1), (-18.7,12.1), (-16.5,12.1), (-14.3,12.1), (-12.1,12.1), (-9.9,12.1), (-7.7,12.1), (-5.5,12.1), (-3.3,12.1), (-1.1,12.1), (12.1,12.1), (20.9,12.1), (23.1,12.1), (25.3,12.1), (27.5,12.1), (-25.3,9.9), (-23.1,9.9), (-20.9,9.9), (-18.7,9.9), (-16.5,9.9), (-14.3,9.9), (-12.1,9.9), (-9.9,9.9), (-7.7,9.9), (-5.5,9.9), (-3.3,9.9), (-1.1,9.9), (1.1,9.9), (3.3,9.9), (5.5,9.9), (7.7,9.9), (9.9,9.9), (12.1,9.9), (14.3,9.9), (16.5,9.9), (18.7,9.9), (20.9,9.9), (23.1,9.9), (25.3,9.9), (-23.1,7.7), (-20.9,7.7), (-18.7,7.7), (-16.5,7.7), (-14.3,7.7), (-12.1,7.7), (-9.9,7.7), (-7.7,7.7), (-5.5,7.7), (-3.3,7.7), (-1.1,7.7), (1.1,7.7), (3.3,7.7), (5.5,7.7), (7.7,7.7), (9.9,7.7), (12.1,7.7), (16.5,7.7), (18.7,7.7), (20.9,7.7), (23.1,7.7), (25.3,7.7), (-23.1,5.5), (-20.9,5.5), (-18.7,5.5), (-16.5,5.5), (-14.3,5.5), (-12.1,5.5), (-9.9,5.5), (-7.7,5.5), (-5.5,5.5), (-3.3,5.5), (-1.1,5.5), (1.1,5.5), (3.3,5.5), (5.5,5.5), (7.7,5.5), (9.9,5.5), (12.1,5.5), (20.9,5.5), (23.1,5.5), (25.3,5.5), (-29.7,3.3), (-27.5,3.3), (-25.3,3.3), (-23.1,3.3), (-20.9,3.3), (-18.7,3.3), (-16.5,3.3), (-14.3,3.3), (-12.1,3.3), (-9.9,3.3), (-7.7,3.3), (-5.5,3.3), (-3.3,3.3), (-1.1,3.3), (1.1,3.3), (3.3,3.3), (5.5,3.3), (7.7,3.3), (9.9,3.3), (12.1,3.3), (14.3,3.3), (20.9,3.3), (-27.5,1.1), (-25.3,1.1), (-23.1,1.1), (-20.9,1.1), (-18.7,1.1), (-16.5,1.1), (-14.3,1.1), (-12.1,1.1), (-9.9,1.1), (-7.7,1.1), (-5.5,1.1), (-3.3,1.1), (-1.1,1.1), (1.1,1.1), (3.3,1.1), (5.5,1.1), (7.7,1.1), (9.9,1.1), (12.1,1.1), (14.3,1.1), (-27.5,-1.1), (-25.3,-1.1), (-23.1,-1.1), (-18.7,-1.1), (-16.5,-1.1), (-14.3,-1.1), (-12.1,-1.1), (-9.9,-1.1), (-7.7,-1.1), (-5.5,-1.1), (-3.3,-1.1), (-1.1,-1.1), (1.1,-1.1), (3.3,-1.1), (5.5,-1.1), (7.7,-1.1), (9.9,-1.1), (12.1,-1.1), (14.3,-1.1), (-20.9,-3.3), (-18.7,-3.3), (-16.5,-3.3), (-14.3,-3.3), (-12.1,-3.3), (-9.9,-3.3), (-7.7,-3.3), (-5.5,-3.3), (-3.3,-3.3), (-1.1,-3.3), (1.1,-3.3), (3.3,-3.3), (5.5,-3.3), (7.7,-3.3), (-20.9,-5.5), (-18.7,-5.5), (-16.5,-5.5), (-14.3,-5.5), (-12.1,-5.5), (-9.9,-5.5), (-7.7,-5.5), (-5.5,-5.5), (-3.3,-5.5), (-1.1,-5.5), (1.1,-5.5), (3.3,-5.5), (5.5,-5.5), (7.7,-5.5), (-20.9,-7.7), (-18.7,-7.7), (-16.5,-7.7), (-14.3,-7.7), (-12.1,-7.7), (-9.9,-7.7), (-7.7,-7.7), (-5.5,-7.7), (-3.3,-7.7), (-1.1,-7.7), (1.1,-7.7), (3.3,-7.7), (5.5,-7.7), (-18.7,-9.9), (-16.5,-9.9), (-14.3,-9.9), (-12.1,-9.9), (-9.9,-9.9), (-7.7,-9.9), (-5.5,-9.9), (-3.3,-9.9), (-1.1,-9.9), (1.1,-9.9), (-18.7,-12.1), (-16.5,-12.1), (-14.3,-12.1), (-12.1,-12.1), (-9.9,-12.1), (-7.7,-12.1), (-5.5,-12.1), (-3.3,-12.1), (-1.1,-12.1), (-18.7,-14.3), (-16.5,-14.3), (-14.3,-14.3), (-12.1,-14.3), (-9.9,-14.3), (-7.7,-14.3), (-5.5,-14.3), (-3.3,-14.3), (-16.5,-16.5), (-14.3,-16.5), (-12.1,-16.5), (-9.9,-16.5), (-7.7,-16.5), (-5.5,-16.5), (-16.5,-18.7), (-14.3,-18.7), (-12.1,-18.7), (-9.9,-18.7), (-7.7,-18.7), (-5.5,-18.7), (-16.5,-20.9), (-14.3,-20.9), (-12.1,-20.9), (-9.9,-20.9), (-7.7,-20.9), (-5.5,-20.9), (-14.3,-23.1), (-12.1,-23.1), (-9.9,-23.1), (-7.7,-23.1), (-5.5,-23.1), (-12.1,-25.3), (-9.9,-25.3), (-7.7,-25.3), (-5.5,-25.3), (-12.1,-27.5), (-9.9,-27.5), (-7.7,-27.5), (-9.9,-29.7)]
azurite_points = [(29.7,12.1), (18.7,-16.5), (20.9,-16.5), (18.7,-18.7), (20.9,-18.7), (-5.5,-27.5)]
mrfp1_points = [(-20.9,-1.1)]
mko2_points = [(12.1,-12.1), (14.3,-12.1), (16.5,-12.1), (18.7,-12.1), (20.9,-12.1), (23.1,-12.1), (25.3,-12.1), (27.5,-12.1), (12.1,-14.3), (14.3,-14.3), (16.5,-14.3), (18.7,-14.3), (20.9,-14.3), (23.1,-14.3), (25.3,-14.3), (27.5,-14.3)]
sfgfp_points = [(12.1,-20.9), (14.3,-20.9), (16.5,-20.9), (18.7,-20.9), (20.9,-20.9), (23.1,-20.9), (25.3,-20.9), (27.5,-20.9), (12.1,-23.1), (14.3,-23.1), (16.5,-23.1), (18.7,-23.1), (20.9,-23.1), (23.1,-23.1), (25.3,-23.1), (27.5,-23.1)]

point_name_pairing = [(“electra2”, electra2_points),(“azurite”, azurite_points),(“mrfp1”, mrfp1_points),(“mko2”, mko2_points),(“sfgfp”, sfgfp_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 = {
’electra2’: 0,
‘azurite’: 0,
‘mrfp1’: 0,
‘mko2’: 0,
‘sfgfp’: 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])  

# Deep Well Plate  
temperature_plate = protocol.load_labware('nest_96_wellplate_2ml_deep', 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()
</details>

### Post-Lab Questions 

##### Question 1. **Find and describe** a published paper that utilizes the Opentrons or an automation tool to achieve novel biological applications.

I thought that I will need to put in effort to find a paper but the Opentrons website has its own embedded search box thingie to find papers. I just selected the area of my preference and then got a paper I liked. 

![[Pasted image 20260224222356.png]]

The paper I chose was titled "Optimizing automated layer‑by‑layer deposition of engineered ECM‑like microenvironments for mammalian cell culture" I chose the paper because last year I'd attended a workshop on 3D Bioprinting and I'd learnt about organoid cultures and replication of the ECM-like conditions for better cell cultures, so I was aware about the what the paper was about. Here's a link to the paper. https://doi.org/10.1557/s43579-025-00912-9

![[Pasted image 20260224222741.png]]

##### Question 1 Detour: Reading a Paper and Consolidation.

Back in my graduate coursework, I didn't have to read a lot of papers but my final dissertation did require me to read a lot of papers. I'd chosen a broad topic "Machine Learning in Life Sciences" There were a lot of papers to be read and a lot of distillation to be done. I used to read papers like header-to-footer but I realized that it was not an optimal approach. The very act of reading 30+ papers for my bachelor's dissertation led me to evolve, iterate on my paper reading method. So now what I do is this. 

1. ABSTRACT! I read the abstract to get a basic idea of what the paper is about. If I don't get it, perhaps because of a lot of jargons. I search up on the jargons, revisit the fundamentals and then read the abstract again. I write it all down (what I understood from the abstract)
2. QUESTIONS! I try and see the abstract as a summary of the paper and the expectations I can make, then I skim the paper looking for the references to the abstract. For example, in this case the abstract talked about using heparin and collagen, I skimmed and found out the information related to it, WHY they were using it, WHAT were they creating. I try to connect the components via questions (you can see what I mean in my distillation sheet of sorts)
3. SKETCHES and FLOWS! I make a lot of sketches where there's methods/compositions involved. I also try to properly write workflows in a sequence as it aids in a narratively coherent understanding. I DO NOT try to polish it, nobody else has to understand it, only me. I try to not be a perfectionist as then looking of a proper sketch/metaphor often leads to time wasting. (In case, I am making some kind of content, I use this sheet as a start and polish it further. NEVER try to be clean while understanding especially if your sheet isn't going to be used by someone else!)
4. DATA! I have an inherent problem with graphs (I am actively trying to mitigate it) so I spend a lot of time, trying to understand graphs and then convert them into legit statements (for my ease, graphs don't instantly make sense to me for some reason) I verify if the data makes sense with respect to the abstract, how they've validated the results, the metrics they've chosen (this part can take some time, but with exposure to more papers, it starts getting efficient as validation methods/approaches often follow a core principle that can repeat (it's like a six basic plots type thing))

I don't try to make it clean. This is one might seem clean but as I've read a lot of papers before this and iterated on my method, I have sort of gained a knowledge of what to write, where and what can be expected so due to prior experience/iterations, the running clutter is naturally reduced.

My distillation sheet for the paper 
![[Scan_20260224.jpg]]


##### Question 2. **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](https://docs.google.com/presentation/d/e/2PACX-1vQc3zo7Z0b6HK7YeC56p_n2RbHNjUHh1HI66DH0cHbFk0db1HlbF7gILE__NCvhUiYMjIGSOHwHPv2_/pub?start=false&loop=false&delayms=3000) for lab automation details.


### Final Project Ideas

1. Organstrument 
2. Space Fermenter
3. Skwiz

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