Zoe's Page — HTGAA Spring 2026
About me
Hi! Testing this
Hi! Testing this
Week 1 HW: Principles and Practices
Class assignment – designing policy frameworks around bioengineering tools ⭐⭐ Web app with policy homework content ⭐⭐ (external link) 🔗✏️ Proof-of-work links (drafts, AI conversations/prompts used to brainstorm, generate the web app, and other sections) ✏️🔗 HTGAA 2026: Week 1 Governance Framework Project: DIY Aging Biomarkers Kit for Community Labs Objective: To lower the single biggest barrier to longevity research (cost) through an affordable, open-source testing kit.
Week 2 HW: DNA Sequencing and Synthesis
PART 2 path to image: 2026a-zoe-isabel-senon/webpages/src/branch/main/assets/images/heartsim.jpg (I tried to recreate a heart shape…) I did the digest simulation in Benchling and checked the virtual gel simulation result: image in: 2026a-zoe-isabel-senon/webpages/src/branch/main/assets/images/benchlingdigest1.jpg image in: 2026a-zoe-isabel-senon/webpages/src/branch/main/assets/images/benchlingdigest2.jpg 3.1 PICK A PROTEIN & Find the protein sequence: I picked SIRT1
Week 3 HW: Lab Automation 🎨 Assignment: Python Script for Opentrons Artwork Link: https://colab.research.google.com/drive/1Yw0ZrnxIz1kG73b_9PcuZNgXGv6uQy9s?usp=sharing Click to expand code mscarlet_i_points = [(-17.6, 17.6),(-15.4, 17.6),(-13.2, 17.6),(-11, 17.6),(-8.8, 17.6),(-6.6, 17.6),(-4.4, 17.6),(-2.2, 17.6),(0, 17.6),(2.2, 17.6),(4.4, 17.6),(6.6, 17.6),(8.8, 17.6),(11, 17.6),(13.2, 17.6),(15.4, 17.6),(17.6, 17.6),(19.8, 17.6),(-17.6, 15.4),(-15.4, 15.4),(-13.2, 15.4),(-11, 15.4),(-8.8, 15.4),(-6.6, 15.4),(-4.4, 15.4),(-2.2, 15.4),(0, 15.4),(2.2, 15.4),(4.4, 15.4),(6.6, 15.4),(8.8, 15.4),(11, 15.4),(13.2, 15.4),(15.4, 15.4),(17.6, 15.4),(19.8, 15.4),(-17.6, 13.2),(-15.4, 13.2),(-13.2, 13.2),(-11, 13.2),(-8.8, 13.2),(-6.6, 13.2),(-4.4, 13.2),(-2.2, 13.2),(0, 13.2),(2.2, 13.2),(4.4, 13.2),(6.6, 13.2),(8.8, 13.2),(11, 13.2),(13.2, 13.2),(15.4, 13.2),(17.6, 13.2),(19.8, 13.2),(-17.6, 11),(-15.4, 11),(-13.2, 11),(-11, 11),(-8.8, 11),(-6.6, 11),(-4.4, 11),(-2.2, 11),(0, 11),(2.2, 11),(4.4, 11),(6.6, 11),(8.8, 11),(11, 11),(13.2, 11),(15.4, 11),(17.6, 11),(19.8, 11),(-17.6, 8.8),(-15.4, 8.8),(-13.2, 8.8),(-11, 8.8),(-6.6, 8.8),(-4.4, 8.8),(-2.2, 8.8),(0, 8.8),(2.2, 8.8),(4.4, 8.8),(6.6, 8.8),(8.8, 8.8),(13.2, 8.8),(15.4, 8.8),(17.6, 8.8),(19.8, 8.8),(-17.6, 6.6),(-15.4, 6.6),(-13.2, 6.6),(-11, 6.6),(-6.6, 6.6),(-4.4, 6.6),(-2.2, 6.6),(0, 6.6),(2.2, 6.6),(4.4, 6.6),(6.6, 6.6),(8.8, 6.6),(13.2, 6.6),(15.4, 6.6),(17.6, 6.6),(19.8, 6.6),(-17.6, 4.4),(-15.4, 4.4),(-13.2, 4.4),(-11, 4.4),(-6.6, 4.4),(-4.4, 4.4),(-2.2, 4.4),(0, 4.4),(2.2, 4.4),(4.4, 4.4),(6.6, 4.4),(8.8, 4.4),(13.2, 4.4),(15.4, 4.4),(17.6, 4.4),(19.8, 4.4),(-17.6, 2.2),(-15.4, 2.2),(-13.2, 2.2),(-11, 2.2),(-8.8, 2.2),(-6.6, 2.2),(-4.4, 2.2),(-2.2, 2.2),(0, 2.2),(2.2, 2.2),(4.4, 2.2),(6.6, 2.2),(8.8, 2.2),(11, 2.2),(13.2, 2.2),(15.4, 2.2),(17.6, 2.2),(19.8, 2.2),(-24.2, 0),(-22, 0),(-19.8, 0),(-17.6, 0),(-15.4, 0),(-13.2, 0),(-11, 0),(-8.8, 0),(-6.6, 0),(-4.4, 0),(-2.2, 0),(0, 0),(2.2, 0),(4.4, 0),(6.6, 0),(8.8, 0),(11, 0),(13.2, 0),(15.4, 0),(17.6, 0),(19.8, 0),(22, 0),(24.2, 0),(26.4, 0),(-24.2, -2.2),(-22, -2.2),(-19.8, -2.2),(-17.6, -2.2),(-15.4, -2.2),(-13.2, -2.2),(-11, -2.2),(-8.8, -2.2),(-6.6, -2.2),(-4.4, -2.2),(-2.2, -2.2),(0, -2.2),(2.2, -2.2),(4.4, -2.2),(6.6, -2.2),(8.8, -2.2),(11, -2.2),(13.2, -2.2),(15.4, -2.2),(17.6, -2.2),(19.8, -2.2),(22, -2.2),(24.2, -2.2),(26.4, -2.2),(-24.2, -4.4),(-22, -4.4),(-19.8, -4.4),(-17.6, -4.4),(-15.4, -4.4),(-13.2, -4.4),(-11, -4.4),(-8.8, -4.4),(-6.6, -4.4),(-4.4, -4.4),(-2.2, -4.4),(0, -4.4),(2.2, -4.4),(4.4, -4.4),(6.6, -4.4),(8.8, -4.4),(11, -4.4),(13.2, -4.4),(15.4, -4.4),(17.6, -4.4),(19.8, -4.4),(22, -4.4),(24.2, -4.4),(26.4, -4.4),(-17.6, -6.6),(-15.4, -6.6),(-13.2, -6.6),(-11, -6.6),(-8.8, -6.6),(-6.6, -6.6),(-4.4, -6.6),(-2.2, -6.6),(0, -6.6),(2.2, -6.6),(4.4, -6.6),(6.6, -6.6),(8.8, -6.6),(11, -6.6),(13.2, -6.6),(15.4, -6.6),(17.6, -6.6),(19.8, -6.6),(-17.6, -8.8),(-15.4, -8.8),(-13.2, -8.8),(-11, -8.8),(-8.8, -8.8),(-6.6, -8.8),(-4.4, -8.8),(-2.2, -8.8),(0, -8.8),(2.2, -8.8),(4.4, -8.8),(6.6, -8.8),(8.8, -8.8),(11, -8.8),(13.2, -8.8),(15.4, -8.8),(17.6, -8.8),(19.8, -8.8),(-17.6, -11),(-15.4, -11),(-13.2, -11),(-11, -11),(-8.8, -11),(-6.6, -11),(-4.4, -11),(-2.2, -11),(0, -11),(2.2, -11),(4.4, -11),(6.6, -11),(8.8, -11),(11, -11),(13.2, -11),(15.4, -11),(17.6, -11),(19.8, -11),(-13.2, -13.2),(-11, -13.2),(-6.6, -13.2),(-4.4, -13.2),(6.6, -13.2),(8.8, -13.2),(13.2, -13.2),(15.4, -13.2),(-13.2, -15.4),(-11, -15.4),(-6.6, -15.4),(-4.4, -15.4),(6.6, -15.4),(8.8, -15.4),(13.2, -15.4),(15.4, -15.4),(-13.2, -17.6),(-11, -17.6),(-6.6, -17.6),(-4.4, -17.6),(6.6, -17.6),(8.8, -17.6),(13.2, -17.6),(15.4, -17.6),(-13.2, -19.8),(-11, -19.8),(-6.6, -19.8),(-4.4, -19.8),(6.6, -19.8),(8.8, -19.8),(13.2, -19.8),(15.4, -19.8)] mjuniper_points = [(-4.4, 28.6),(-2.2, 28.6),(0, 28.6),(2.2, 28.6),(4.4, 28.6),(-4.4, 26.4),(-2.2, 26.4),(2.2, 26.4),(4.4, 26.4),(-4.4, 24.2),(-2.2, 24.2),(2.2, 24.2),(4.4, 24.2),(-6.6, 22),(-4.4, 22),(-2.2, 22),(2.2, 22),(4.4, 22),(6.6, 22),(-6.6, 19.8),(-4.4, 19.8),(-2.2, 19.8),(0, 19.8),(2.2, 19.8),(4.4, 19.8),(6.6, 19.8)] mturquoise2_points = [(0, 26.4),(0, 24.2),(0, 22)] 📖 Assigment: Automation paper “Automated Cell Culture Splitter (ACCS): An open-source benchtop system for cell passaging with integrated cell counting” — PNAS Nexus, December 2025
⭐⭐ Web app with policy homework content ⭐⭐ (external link)
Project: DIY Aging Biomarkers Kit for Community Labs
Objective: To lower the single biggest barrier to longevity research (cost) through an affordable, open-source testing kit.
Context: Diseases of aging account for 3/4 of global deaths, yet independent research is gated by prohibitive costs (often $500+ per commercial assay).
Proposed Tool: An accessible, open-source DIY Aging Biomarkers Kit designed specifically for the ~50 community biolabs worldwide. This kit allows independent researchers to measure cellular senescence and other aging hallmarks without relying on expensive institutional supply chains.
I am extremely passionate about the topic of “solving aging” as a way to reduce suffering in the world at scale (as typically called “diseases of aging” ultimately account for somewhere between 1/3 and ~3/4 of all deaths (1) (2)).
With this goal in mind, I decided to fully focus my efforts on biotech, coming from a computational background, and learn hands-on by joining an open community lab (Biopunk Labs in San Francisco – one of the HTGAA nodes) and running my own bioengineering experiments.
(I wrote an article about my first experience at the lab doing wet lab/bioengineering: https://acceleratingutopia.com/my-biotech-journey-pt-i-wet-lab-genetic-engineering/)
For my second experiment I decided to use mammalian cells (fibroblasts) instead of bacteria, as bacteria do not share our mechanisms of aging and are therefore not a good model to study this.
However, I quickly realized how severely limited the scope of what I could do in the lab would be due to the high costs associated with working independently in the lab (without external funding), especially when mammalian cells are involved. Initially, I was planning to replicate a full cellular reprogramming protocol, but quickly learned this would not be a possibility for me due to the cost, so I pivoted to a “partial reprogramming” protocol.
I managed to secure sample cells and some media through donations, thanks to some very kind fellow scientists and mentors who wanted to support such an initiative*. However, none of my work would have any validity unless I could find a reliable way to measure the effects of my interventions on biomarkers classically associated with longevity (see: Hallmarks of Aging), such as senescence.
*(people thought I was crazy for even attempting to run mammalian cell experiments independently, as a beginner, given the costs and difficulty!)
I quickly learned that assay kits would quickly eat up a big portion of my budget, especially given that most companies sell them in bulk, which makes them prohibitively expensive for independent researchers wanting to run just a few small assays.
This whole experience opened my eyes to how non-accessible aging research is at moment.
Given that a big part of my mission is to enable others to help accelerate the eradication of all human disease (with a special focus on longevity), a straightforward way in which I could contribute to this acceleration is by enabling more independent research to happen by lowering the biggest entry barrier: the cost to even get started with simple longevity experiments.
Actor: Government funding bodies (NIH, ERC)
A dedicated micro-grant program (€5–25K) for community labs to accelerate biomedical progress by enabling new and existing scientists to carry out independent aging research.
Actor: Academic Institutions, Incubators
An “Airbnb for lab benches” connecting institutions with spare capacity to independent researchers.
Actor: Open-source developers, DIYbio.org
A software tool that checks experiment plans against biosafety databases, flags risks, and requires mentor sign-off. Serves as a dynamic guardrail.
| Criteria | A1: Subsidies | A2: Lab Network | A3: AI Co-Pilot |
|---|---|---|---|
| Access Democratization | High | High | Indirect |
| Enables new talent | ✓ | ✓ | ✓ |
| Enables existing researchers | ✓ | ✓ | — |
| Misuse Prevention | — | — | Most |
| Ensures safety standards | — | — | ✓ |
| Blocks malign applications | — | — | ✓ |
| Translation | Partial | Partial | — |
| Incentivizes translation | ✓ | ✓ | — |
| Directly aids translation | ✓ | ✓ | — |
| Feasibility | Low | Medium | High |
Legend:
✓ = Strong positive contribution
— = Not applicable / No direct impact
Nature’s machinery for copying DNA is called polymerase. What is the error rate of polymerase? How does this compare to the length of the human genome. How does biology deal with that discrepancy?
Polymerase’s error rate is 1:106 (one error per 106 bases), about one in ten million. The human genome is 3.2 Gbp (3.2 * 109), which would then mean that we would expect to see 320 errors per haploid genome copy with no additional repair mechanisms (or double that amount for diploid replication). Yet we see that the actual final mutation rate is closer to 1 in 109, which is multiple orders of magnitude less.
This is because the body applies additional “proofreading” and repair mechanisms, such as by leveraging mismatch repair proteins that scan newly synthesized DNA (they can recognize helix distortions where bases are mismatched and resynthesize them). Additionally, polymerase itself has a 3’ to 5’ exonuclease activity that removes incorrectly incorporated nucleotides immediately, allowing polymerase to redo the badly-synthesized base section.
How many different ways are there to code (DNA nucleotide code) for an average human protein? In practice, what are some of the reasons that all of these different codes don’t work to code for the protein of interest?
Given that an average human protein is encoded by 1036 bp, and each codon consists of 3 bases, we can calculate that each protein is approximately 345 amino acids long (1036/3 ≈345).
Since there are 61 codons that can code for 20 amino acids (64 total codons, but 3 of them are “stop” codons), and multiple codons can code for the same amino acid, a theoretically enormous number of DNA sequences could code for the same protein. Yet in practice we see that only a limited set of codon combinations actually lead to the production of a specific protein, and this is because there are additional biological limitations that dictate these capabilities: certain combinations are more viable (or not viable at all) based on external factors like the availability of matching tRNAs to produce it, or a given organism’s preference for a specific codon sequence, regulatory sequences that might be accidentally created, mRNA secondary structure stability, and translation efficiency.
The current standard for de novo gene synthesis is solid‑phase phosphoramidite chemistry. It is effective but highly noisy (errors accumulate rapidly on each iteration due to approximately 95-99.5% stepwise coupling efficiency), which currently limits the total amount of viable DNA that can be synthesized, as, for a coding gene, a single base error can cause malfunction.
200 nt is the standard limit because at that point most strands have some error, but at a level where it is still feasible to fix it through cloning or purification.
A 2,000 bp gene would require 2,000 single-stranded nucleotides. The most optimistic coupling efficiency per base (99.9%), the accumulation of errors (only about 13.5% of synthesized strands would be full-length and error-free) would make the final product differ too much from the desired sequence to be useful.
We can, however, assemble genes of lengths much longer than the theoretical limitation for the method by synthesizing much smaller and more manageable strands (~50-150 bp) and assembling them through methods like PCR and Gibson assembly. This is the standard for longer DNA synthesis.
Using Google & Prof. Church’s slide #4: What are the 10 essential amino acids in all animals and how does this affect your view of the “Lysine Contingency”?
The 10 essential amino acids are
(Note: in humans, arginine is considered conditionally essential and is sometimes included in the list of 10)
The definition of an “essential amino acid” is that it must be obtained from external sources because the organism cannot produce it on its own, so by this definition, and given that lysine is already found in this category, the “lysine contingency” would be a nonsensical solution (even without additional bioengineering, the dinosaurs would still have to rely on obtaining lysine from external sources like lysine-rich prey and plants, and in the movie they are already shown consuming these).
path to image: 2026a-zoe-isabel-senon/webpages/src/branch/main/assets/images/heartsim.jpg
(I tried to recreate a heart shape…)
I did the digest simulation in Benchling and checked the virtual gel simulation result:
image in: 2026a-zoe-isabel-senon/webpages/src/branch/main/assets/images/benchlingdigest1.jpg
image in: 2026a-zoe-isabel-senon/webpages/src/branch/main/assets/images/benchlingdigest2.jpg
I picked SIRT1
And downloaded the sequence from Uniprot:
Obtained through the reverse translation tool after attaching the human codon table:
```jsx
Reverse Translate
Results for 747 residue sequence "sp|Q96EB6|SIR1_HUMAN NAD-dependent protein deacetylase sirtuin-1 OS=Homo sapiens OX=9606 GN=SIRT1 PE=1 SV=2" starting "MADEAALALQ"
>reverse translation of sp|Q96EB6|SIR1_HUMAN NAD-dependent protein deacetylase sirtuin-1 OS=Homo sapiens OX=9606 GN=SIRT1 PE=1 SV=2 to a 2241 base sequence of most likely codons.
atggccgacgaggccgccctggccctgcagcccggcggcagccccagcgccgccggcgcc
gacagagaggccgccagcagccccgccggcgagcccctgagaaagagacccagaagagac
ggccccggcctggagagaagccccggcgagcccggcggcgccgcccccgagagagaggtg
cccgccgccgccagaggctgccccggcgccgccgccgccgccctgtggagagaggccgag
gccgaggccgccgccgccggcggcgagcaggaggcccaggccaccgccgccgccggcgag
ggcgacaacggccccggcctgcagggccccagcagagagccccccctggccgacaacctg
tacgacgaggacgacgacgacgagggcgaggaggaggaggaggccgccgccgccgccatc
ggctacagagacaacctgctgttcggcgacgagatcatcaccaacggcttccacagctgc
gagagcgacgaggaggacagagccagccacgccagcagcagcgactggacccccagaccc
agaatcggcccctacaccttcgtgcagcagcacctgatgatcggcaccgaccccagaacc
atcctgaaggacctgctgcccgagaccatccccccccccgagctggacgacatgaccctg
tggcagatcgtgatcaacatcctgagcgagccccccaagagaaagaagagaaaggacatc
aacaccatcgaggacgccgtgaagctgctgcaggagtgcaagaagatcatcgtgctgacc
ggcgccggcgtgagcgtgagctgcggcatccccgacttcagaagcagagacggcatctac
gccagactggccgtggacttccccgacctgcccgacccccaggccatgttcgacatcgag
tacttcagaaaggaccccagacccttcttcaagttcgccaaggagatctaccccggccag
ttccagcccagcctgtgccacaagttcatcgccctgagcgacaaggagggcaagctgctg
agaaactacacccagaacatcgacaccctggagcaggtggccggcatccagagaatcatc
cagtgccacggcagcttcgccaccgccagctgcctgatctgcaagtacaaggtggactgc
gaggccgtgagaggcgacatcttcaaccaggtggtgcccagatgccccagatgccccgcc
gacgagcccctggccatcatgaagcccgagatcgtgttcttcggcgagaacctgcccgag
cagttccacagagccatgaagtacgacaaggacgaggtggacctgctgatcgtgatcggc
agcagcctgaaggtgagacccgtggccctgatccccagcagcatcccccacgaggtgccc
cagatcctgatcaacagagagcccctgccccacctgcacttcgacgtggagctgctgggc
gactgcgacgtgatcatcaacgagctgtgccacagactgggcggcgagtacgccaagctg
tgctgcaaccccgtgaagctgagcgagatcaccgagaagccccccagaacccagaaggag
ctggcctacctgagcgagctgccccccacccccctgcacgtgagcgaggacagcagcagc
cccgagagaaccagcccccccgacagcagcgtgatcgtgaccctgctggaccaggccgcc
aagagcaacgacgacctggacgtgagcgagagcaagggctgcatggaggagaagccccag
gaggtgcagaccagcagaaacgtggagagcatcgccgagcagatggagaaccccgacctg
aagaacgtgggcagcagcaccggcgagaagaacgagagaaccagcgtggccggcaccgtg
agaaagtgctggcccaacagagtggccaaggagcagatcagcagaagactggacggcaac
cagtacctgttcctgccccccaacagatacatcttccacggcgccgaggtgtacagcgac
agcgaggacgacgtgctgagcagcagcagctgcggcagcaacagcgacagcggcacctgc
cagagccccagcctggaggagcccatggaggacgagagcgagatcgaggagttctacaac
ggcctggaggacgagcccgacgtgcccgagagagccggcggcgccggcttcggcaccgac
ggcgacgaccaggaggccatcaacgaggccatcagcgtgaagcaggaggtgaccgacatg
aactaccccagcaacaagagc
>reverse translation of sp|Q96EB6|SIR1_HUMAN NAD-dependent protein deacetylase sirtuin-1 OS=Homo sapiens OX=9606 GN=SIRT1 PE=1 SV=2 to a 2241 base sequence of consensus codons.
atggcngaygargcngcnytngcnytncarccnggnggnwsnccnwsngcngcnggngcn
gaymgngargcngcnwsnwsnccngcnggngarccnytnmgnaarmgnccnmgnmgngay
ggnccnggnytngarmgnwsnccnggngarccnggnggngcngcnccngarmgngargtn
ccngcngcngcnmgnggntgyccnggngcngcngcngcngcnytntggmgngargcngar
gcngargcngcngcngcnggnggngarcargargcncargcnacngcngcngcnggngar
ggngayaayggnccnggnytncarggnccnwsnmgngarccnccnytngcngayaayytn
taygaygargaygaygaygaygarggngargargargargargcngcngcngcngcnath
ggntaymgngayaayytnytnttyggngaygarathathacnaayggnttycaywsntgy
garwsngaygargargaymgngcnwsncaygcnwsnwsnwsngaytggacnccnmgnccn
mgnathggnccntayacnttygtncarcarcayytnatgathggnacngayccnmgnacn
athytnaargayytnytnccngaracnathccnccnccngarytngaygayatgacnytn
tggcarathgtnathaayathytnwsngarccnccnaarmgnaaraarmgnaargayath
aayacnathgargaygcngtnaarytnytncargartgyaaraarathathgtnytnacn
ggngcnggngtnwsngtnwsntgyggnathccngayttymgnwsnmgngayggnathtay
gcnmgnytngcngtngayttyccngayytnccngayccncargcnatgttygayathgar
tayttymgnaargayccnmgnccnttyttyaarttygcnaargarathtayccnggncar
ttycarccnwsnytntgycayaarttyathgcnytnwsngayaargarggnaarytnytn
mgnaaytayacncaraayathgayacnytngarcargtngcnggnathcarmgnathath
cartgycayggnwsnttygcnacngcnwsntgyytnathtgyaartayaargtngaytgy
gargcngtnmgnggngayathttyaaycargtngtnccnmgntgyccnmgntgyccngcn
gaygarccnytngcnathatgaarccngarathgtnttyttyggngaraayytnccngar
carttycaymgngcnatgaartaygayaargaygargtngayytnytnathgtnathggn
wsnwsnytnaargtnmgnccngtngcnytnathccnwsnwsnathccncaygargtnccn
carathytnathaaymgngarccnytnccncayytncayttygaygtngarytnytnggn
gaytgygaygtnathathaaygarytntgycaymgnytnggnggngartaygcnaarytn
tgytgyaayccngtnaarytnwsngarathacngaraarccnccnmgnacncaraargar
ytngcntayytnwsngarytnccnccnacnccnytncaygtnwsngargaywsnwsnwsn
ccngarmgnacnwsnccnccngaywsnwsngtnathgtnacnytnytngaycargcngcn
aarwsnaaygaygayytngaygtnwsngarwsnaarggntgyatggargaraarccncar
gargtncaracnwsnmgnaaygtngarwsnathgcngarcaratggaraayccngayytn
aaraaygtnggnwsnwsnacnggngaraaraaygarmgnacnwsngtngcnggnacngtn
mgnaartgytggccnaaymgngtngcnaargarcarathwsnmgnmgnytngayggnaay
cartayytnttyytnccnccnaaymgntayathttycayggngcngargtntaywsngay
wsngargaygaygtnytnwsnwsnwsnwsntgyggnwsnaaywsngaywsnggnacntgy
carwsnccnwsnytngargarccnatggargaygarwsngarathgargarttytayaay
ggnytngargaygarccngaygtnccngarmgngcnggnggngcnggnttyggnacngay
ggngaygaycargargcnathaaygargcnathwsngtnaarcargargtnacngayatg
aaytayccnwsnaayaarwsn
```
I have chosen to optimize it for homo sapiens, because I am interested in human medicine and I want to learn more about how certain proteins might affect human lifespans.
We need to optimize codon usage because different organisms have different availability of tRNA to match certain codons, and we want to optimize for tRNA abundance to maximize translation speed, and mRNA stability and structure. These optimizations can be made because the same amino acid can be produced with different codons.
I could transfect the necessary genes into mammalian cells (like neurons, or HEK cells, which divide rapidly!) to make them express this protein in large quantities. We do this by basically integrating these “instructions” (as, for example, plasmids) for producing different specific proteins into the cell, and letting their machinery decode them in the same way that it does with their own genome.
(I have done this in the past with HEK cells to make them express RFP, using lipofectamine as the transfection method/reagent.)
We optimize the plasmid content for the target organism by choosing a certain promoter, codon-optimized CDS, and regulatory elements.
I would want to sequence the genomes of healthy centenarians or supercentenarians (people who reach 110 years of age), so that we can learn if there is a genetic basis for longevity and find enhancing variants. I know that certain variants of the FOXO3 gene have been found to be more prevalently enriched among this population (paper), and I would like to learn more.
I would choose Illumina short-read WGS, which is a relatively quick, affordable and accurate current industry standard for consumer sequencing.
It is a second-generation method that allows to do massively-parallelized short-reads.
To do this, we would take a sample from the supercentenarians (saliva or blood), perform end-repair and A-tailing, ligate Illumina adapters, and PCR-amplify to make libraries.
The output is a FASTQ file which we align to the human reference genome to find (call) SNPs, indels, etc. Basically to identify how and where this given genome differs from the “reference” one (assembled as an average of a group of +100 individuals).
Klotho gene therapy for cognitive enhancement and longevity! I has been linked to better cognition in mice and humans (paper: https://pmc.ncbi.nlm.nih.gov/articles/PMC4176932/ )
I would use the industry standard (phosphoramidite chemical oligo synthesis + Gibson assembly) as it is currently the most battle-tested one.
The limitation is that it only allows us to assemble up to around 200 nucleotides at a time before the error rate becomes so high as to make the output unusable (too different from the referent we want to “print”). To print out longer sequences, we must separately assemble them using methods like Gibson assembly.
Genes associated with longevity or cognitive enhancement, like FOXO3 or Klotho. I would like to test these in both humans and animals, especially dogs, since it could be helpful to obtain faster data about the effects in mammals, and possibly buy a few people additional time with their beloved pets :)
I would use a CRISPR-based editing system and deliver it with AAV (the current most widely-used delivery mechanism for gene therapies). AAV is safer because it doesn’t integrate, which means that it doesn’t actually modify the existing genome (which can cause issues like cancer through insertional mutagenesis).
The main limitation of AAVs is their small cargo sizes, which severely limits the number of genes we could deliver through this method.
Link: https://colab.research.google.com/drive/1Yw0ZrnxIz1kG73b_9PcuZNgXGv6uQy9s?usp=sharing
mscarlet_i_points = [(-17.6, 17.6),(-15.4, 17.6),(-13.2, 17.6),(-11, 17.6),(-8.8, 17.6),(-6.6, 17.6),(-4.4, 17.6),(-2.2, 17.6),(0, 17.6),(2.2, 17.6),(4.4, 17.6),(6.6, 17.6),(8.8, 17.6),(11, 17.6),(13.2, 17.6),(15.4, 17.6),(17.6, 17.6),(19.8, 17.6),(-17.6, 15.4),(-15.4, 15.4),(-13.2, 15.4),(-11, 15.4),(-8.8, 15.4),(-6.6, 15.4),(-4.4, 15.4),(-2.2, 15.4),(0, 15.4),(2.2, 15.4),(4.4, 15.4),(6.6, 15.4),(8.8, 15.4),(11, 15.4),(13.2, 15.4),(15.4, 15.4),(17.6, 15.4),(19.8, 15.4),(-17.6, 13.2),(-15.4, 13.2),(-13.2, 13.2),(-11, 13.2),(-8.8, 13.2),(-6.6, 13.2),(-4.4, 13.2),(-2.2, 13.2),(0, 13.2),(2.2, 13.2),(4.4, 13.2),(6.6, 13.2),(8.8, 13.2),(11, 13.2),(13.2, 13.2),(15.4, 13.2),(17.6, 13.2),(19.8, 13.2),(-17.6, 11),(-15.4, 11),(-13.2, 11),(-11, 11),(-8.8, 11),(-6.6, 11),(-4.4, 11),(-2.2, 11),(0, 11),(2.2, 11),(4.4, 11),(6.6, 11),(8.8, 11),(11, 11),(13.2, 11),(15.4, 11),(17.6, 11),(19.8, 11),(-17.6, 8.8),(-15.4, 8.8),(-13.2, 8.8),(-11, 8.8),(-6.6, 8.8),(-4.4, 8.8),(-2.2, 8.8),(0, 8.8),(2.2, 8.8),(4.4, 8.8),(6.6, 8.8),(8.8, 8.8),(13.2, 8.8),(15.4, 8.8),(17.6, 8.8),(19.8, 8.8),(-17.6, 6.6),(-15.4, 6.6),(-13.2, 6.6),(-11, 6.6),(-6.6, 6.6),(-4.4, 6.6),(-2.2, 6.6),(0, 6.6),(2.2, 6.6),(4.4, 6.6),(6.6, 6.6),(8.8, 6.6),(13.2, 6.6),(15.4, 6.6),(17.6, 6.6),(19.8, 6.6),(-17.6, 4.4),(-15.4, 4.4),(-13.2, 4.4),(-11, 4.4),(-6.6, 4.4),(-4.4, 4.4),(-2.2, 4.4),(0, 4.4),(2.2, 4.4),(4.4, 4.4),(6.6, 4.4),(8.8, 4.4),(13.2, 4.4),(15.4, 4.4),(17.6, 4.4),(19.8, 4.4),(-17.6, 2.2),(-15.4, 2.2),(-13.2, 2.2),(-11, 2.2),(-8.8, 2.2),(-6.6, 2.2),(-4.4, 2.2),(-2.2, 2.2),(0, 2.2),(2.2, 2.2),(4.4, 2.2),(6.6, 2.2),(8.8, 2.2),(11, 2.2),(13.2, 2.2),(15.4, 2.2),(17.6, 2.2),(19.8, 2.2),(-24.2, 0),(-22, 0),(-19.8, 0),(-17.6, 0),(-15.4, 0),(-13.2, 0),(-11, 0),(-8.8, 0),(-6.6, 0),(-4.4, 0),(-2.2, 0),(0, 0),(2.2, 0),(4.4, 0),(6.6, 0),(8.8, 0),(11, 0),(13.2, 0),(15.4, 0),(17.6, 0),(19.8, 0),(22, 0),(24.2, 0),(26.4, 0),(-24.2, -2.2),(-22, -2.2),(-19.8, -2.2),(-17.6, -2.2),(-15.4, -2.2),(-13.2, -2.2),(-11, -2.2),(-8.8, -2.2),(-6.6, -2.2),(-4.4, -2.2),(-2.2, -2.2),(0, -2.2),(2.2, -2.2),(4.4, -2.2),(6.6, -2.2),(8.8, -2.2),(11, -2.2),(13.2, -2.2),(15.4, -2.2),(17.6, -2.2),(19.8, -2.2),(22, -2.2),(24.2, -2.2),(26.4, -2.2),(-24.2, -4.4),(-22, -4.4),(-19.8, -4.4),(-17.6, -4.4),(-15.4, -4.4),(-13.2, -4.4),(-11, -4.4),(-8.8, -4.4),(-6.6, -4.4),(-4.4, -4.4),(-2.2, -4.4),(0, -4.4),(2.2, -4.4),(4.4, -4.4),(6.6, -4.4),(8.8, -4.4),(11, -4.4),(13.2, -4.4),(15.4, -4.4),(17.6, -4.4),(19.8, -4.4),(22, -4.4),(24.2, -4.4),(26.4, -4.4),(-17.6, -6.6),(-15.4, -6.6),(-13.2, -6.6),(-11, -6.6),(-8.8, -6.6),(-6.6, -6.6),(-4.4, -6.6),(-2.2, -6.6),(0, -6.6),(2.2, -6.6),(4.4, -6.6),(6.6, -6.6),(8.8, -6.6),(11, -6.6),(13.2, -6.6),(15.4, -6.6),(17.6, -6.6),(19.8, -6.6),(-17.6, -8.8),(-15.4, -8.8),(-13.2, -8.8),(-11, -8.8),(-8.8, -8.8),(-6.6, -8.8),(-4.4, -8.8),(-2.2, -8.8),(0, -8.8),(2.2, -8.8),(4.4, -8.8),(6.6, -8.8),(8.8, -8.8),(11, -8.8),(13.2, -8.8),(15.4, -8.8),(17.6, -8.8),(19.8, -8.8),(-17.6, -11),(-15.4, -11),(-13.2, -11),(-11, -11),(-8.8, -11),(-6.6, -11),(-4.4, -11),(-2.2, -11),(0, -11),(2.2, -11),(4.4, -11),(6.6, -11),(8.8, -11),(11, -11),(13.2, -11),(15.4, -11),(17.6, -11),(19.8, -11),(-13.2, -13.2),(-11, -13.2),(-6.6, -13.2),(-4.4, -13.2),(6.6, -13.2),(8.8, -13.2),(13.2, -13.2),(15.4, -13.2),(-13.2, -15.4),(-11, -15.4),(-6.6, -15.4),(-4.4, -15.4),(6.6, -15.4),(8.8, -15.4),(13.2, -15.4),(15.4, -15.4),(-13.2, -17.6),(-11, -17.6),(-6.6, -17.6),(-4.4, -17.6),(6.6, -17.6),(8.8, -17.6),(13.2, -17.6),(15.4, -17.6),(-13.2, -19.8),(-11, -19.8),(-6.6, -19.8),(-4.4, -19.8),(6.6, -19.8),(8.8, -19.8),(13.2, -19.8),(15.4, -19.8)]
mjuniper_points = [(-4.4, 28.6),(-2.2, 28.6),(0, 28.6),(2.2, 28.6),(4.4, 28.6),(-4.4, 26.4),(-2.2, 26.4),(2.2, 26.4),(4.4, 26.4),(-4.4, 24.2),(-2.2, 24.2),(2.2, 24.2),(4.4, 24.2),(-6.6, 22),(-4.4, 22),(-2.2, 22),(2.2, 22),(4.4, 22),(6.6, 22),(-6.6, 19.8),(-4.4, 19.8),(-2.2, 19.8),(0, 19.8),(2.2, 19.8),(4.4, 19.8),(6.6, 19.8)]
mturquoise2_points = [(0, 26.4),(0, 24.2),(0, 22)]
“Automated Cell Culture Splitter (ACCS): An open-source benchtop system for cell passaging with integrated cell counting” — PNAS Nexus, December 2025
Citation: Automated Cell Culture Splitter (ACCS), PNAS Nexus, 4(12), pgaf385, 2025. https://academic.oup.com/pnasnexus/article/4/12/pgaf385/8405882
Why this paper: This paper presents an open-source system built around the Opentrons OT-2 that automates the passaging of adherent or suspension cells in 96-well plates. What makes it novel is the integration of a custom Cell Counting Imager (CCI) that adjusts seeding volumes per-well based on measured cell density (the robot doesn’t just pipette blindly, it makes decisions based on real-time data). The system fits inside a biosafety cabinet, processes 2–3 plates per working day with minimal intervention, and communicates status updates via Slack.
Relevance to my final project ideas: All three of my proposed projects involve cell culture steps. Automated cell passaging with integrated counting is exactly the infrastructure needed upstream of any of these experiments. The paper also demonstrates how custom hardware (the CCI) can be integrated with the OT-2’s Python API, which is relevant for designing my own automation protocols that might need plate reader integration for fluorescence readouts.
This is how I’d use automation for my proposed final project #1 (“Idea 1: CRISPR Epigenome Editing at Clock CpG Sites”): Step 1 — Transfection Setup (Opentrons OT-2/Flex) Dispensing cells, transfection reagents (e.g., Lipofectamine or PEI), and different gRNA/construct combinations across a 96-well plate. Each well gets a different gRNA targeting a different CpG site, allowing parallel testing of multiple epigenome editing targets.
Step 2 — Bisulfite Conversion Sample Prep (Opentrons OT-2) After editing, validate whether methylation was actually changed at the target site. This requires bisulfite conversion of genomic DNA — a multi-step protocol (denaturation → bisulfite treatment → desulphonation → cleanup) that is repetitive, error-prone, and ideal for automation. Zymo Research already provides Opentrons-compatible scripts for their EZ DNA Methylation kits.
Step 3 — Targeted PCR Setup (Opentrons OT-2) Set up PCR reactions targeting the specific CpG sites of interest (using bisulfite-specific primers) across the 96-well plate for downstream sequencing.
from opentrons import protocol_api
metadata = {
‘protocolName’: ‘dCas9-TET1 Epigenome Editing Transfection Setup’,
‘author’: ‘[Your Name]’,
‘description’: ‘Automated transfection of dCas9-TET1 + gRNAs targeting aging clock CpG sites’
}
requirements = {“robotType”: “OT-2”, “apiLevel”: “2.16”}
def run(protocol: protocol_api.ProtocolContext):
# — LABWARE —
plate = protocol.load_labware(‘corning_96_wellplate_360ul_flat’, ‘1’)
reagent_rack = protocol.load_labware(‘opentrons_24_tuberack_nest_1.5ml’, ‘2’)
tiprack_20 = protocol.load_labware(‘opentrons_96_tiprack_20ul’, ‘3’)
tiprack_300 = protocol.load_labware(‘opentrons_96_tiprack_300ul’, ‘6’)
# --- INSTRUMENTS ---
p20 = protocol.load_instrument('p20_single_gen2', 'left', tip_racks=[tiprack_20])
p300 = protocol.load_instrument('p300_single_gen2', 'right', tip_racks=[tiprack_300])
# --- REAGENTS (in tube rack) ---
# A1: OptiMEM reduced serum media
# A2: Lipofectamine 3000 reagent
# A3: P3000 reagent
# A4: dCas9-TET1 plasmid (shared across all wells)
# B1-B6: gRNAs targeting 6 different aging clock CpG sites
# B1: gRNA for ELOVL2 promoter (cg16867657)
# B2: gRNA for FHL2 promoter (cg22454769)
# B3: gRNA for PENK intron (cg16008966)
# B4: gRNA for KLF14 promoter (cg07553761)
# B5: gRNA for TRIM59 (cg00481951)
# B6: non-targeting control gRNA
# C1: Cell suspension (pre-trypsinized, counted)
optimen = reagent_rack['A1']
lipofectamine = reagent_rack['A2']
p3000 = reagent_rack['A3']
dcas9_tet1 = reagent_rack['A4']
grnas = [reagent_rack[well] for well in ['B1', 'B2', 'B3', 'B4', 'B5', 'B6']]
cells = reagent_rack['C1']
# --- PROTOCOL ---
# Step 1: Seed cells into all wells (200 uL per well, ~40,000 cells)
# Note: In practice, cells would be seeded 24h prior
# This step shows the protocol for Day 0
protocol.comment("Step 1: Seeding cells")
for well in plate.wells()[:48]: # 48 wells = 6 gRNAs x 8 replicates
p300.transfer(200, cells, well, new_tip='always')
# [Protocol would pause here for 24h incubation]
protocol.pause("Incubate plate at 37°C, 5% CO2 for 24 hours. Resume for transfection.")
# Step 2: Prepare transfection complexes
# Each gRNA condition gets 8 replicate wells (columns)
protocol.comment("Step 2: Preparing lipofection complexes")
for grna_idx, grna in enumerate(grnas):
# Target wells: 8 wells per gRNA (one column)
target_wells = plate.columns()[grna_idx][:8]
for well in target_wells:
# Add OptiMEM
p20.transfer(10, optimen, well, new_tip='always')
# Add dCas9-TET1 plasmid (250 ng)
p20.transfer(2, dcas9_tet1, well, new_tip='always')
# Add specific gRNA plasmid (250 ng)
p20.transfer(2, grna, well, new_tip='always')
# Add P3000 reagent
p20.transfer(1, p3000, well, new_tip='always')
# Add Lipofectamine
p20.transfer(1, lipofectamine, well, mix_after=(3, 10), new_tip='always')
protocol.comment("Transfection complete. Incubate 72h before harvesting.")
# After 72h: harvest cells for bisulfite conversion + methylation analysis
def run_bisulfite_conversion(protocol: protocol_api.ProtocolContext):
"""
Automated bisulfite conversion of genomic DNA from transfected cells.
Validates whether dCas9-TET1 successfully demethylated target CpG sites.
Uses Zymo EZ DNA Methylation Kit protocol adapted for OT-2.
"""
# Step 1: Add CT Conversion Reagent to each DNA sample
# 130 uL CT reagent + 20 uL DNA sample per well
for well in sample_plate.wells()[:48]:
p300.transfer(130, ct_reagent, well, mix_after=(5, 100))
# Step 2: Thermal cycling for bisulfite conversion
# Would use Opentrons Thermocycler Module:
# 98°C for 8 min (denaturation)
# 64°C for 3.5 hours (conversion)
# 4°C hold
thermocycler.set_block_temperature(98, hold_time_minutes=8)
thermocycler.set_block_temperature(64, hold_time_minutes=210)
thermocycler.set_block_temperature(4)
# Step 3: Desulphonation + Cleanup
# Transfer to spin columns, wash, elute
# (Magnetic bead-based cleanup would be more OT-2 friendly)
for well in sample_plate.wells()[:48]:
# Add binding buffer
p300.transfer(600, binding_buffer, well, mix_after=(3, 200))
# Transfer to magnetic bead plate
# Wash 2x with wash buffer
# Elute in 10 uL elution buffer
p20.transfer(10, elution_buffer, well, mix_after=(5, 8))
# Step 4: Set up targeted PCR for clock CpG sites
# Bisulfite-specific primers for each target locus
for i, primer_pair in enumerate(bisulfite_primers):
target_wells = pcr_plate.columns()[i][:8]
for well in target_wells:
p20.transfer(10, pcr_master_mix, well)
p20.transfer(2, primer_pair, well)
p20.transfer(8, converted_dna, well, mix_after=(3, 15))
Added the slides to the slide deck.
Training a Minimal Epigenetic Aging Clock and Design of a Fluorescent Age Reporter Construct