# RERUN_NOTES — Trastuzumab IgG1 single-vector Golden Gate (CHO-K1)

## 1. What this project did
De novo design of a single-vector trastuzumab IgG1 mAb expression construct for CHO-K1 stable
lines, assembled in ONE BsaI Golden Gate reaction. Architecture: CMV - chimeric intron -
[Igk leader + heavy chain] - EMCV IRES - [Igk leader + light chain] - WPRE - bGH pA ;
SV40p - pac(PuroR) - SV40 pA ; pUC ori ; AmpR. Final plasmid 6,871 bp, split into 5 synthesisable
BsaI-flanked fragments; zero internal BsaI/BsmBI/SapI; 5 junction colony-PCR primer pairs.

## 2. Key biology decisions (the why)
- V-domains = trastuzumab (brief). VH/VL + full kappa LC taken from PDB 1N8Z (structure-verified),
  HC constant = human IGHG1 SECRETED form (UniProt P01857 truncated at SLSLSPGK; the raw P01857 is
  the membrane isoform with a different C-terminus + G1m1 allotype). Ck verified == P01834.
- Bicistronic: HC cap-dependent, LC via EMCV IRES (M81861 nt 260-848; ends in the initiator ATG that
  IS the LC start codon). NOTE the H:L imbalance caveat (LC usually wanted in excess) — see report S6/S7.
- Both chains carry the murine Igk leader (brief named one SP; LC needs its own to secrete).
- Intron + WPRE added for production-grade expression; final vector 6.87 kb. Brief size target REVISED
  2026-06-30 (user) from ~8 kb to ~7 kb, so 6.87 kb now MEETS it -- no size gap. The size-mismatch caveat
  and the F5-stuffer recommendation were dropped from FINAL_REPORT.md/PDF; page-1 notice flipped warn->pass.
- Fusion overhangs chosen from Potapov2018/Pryor2020 BsaI-HFv2 matrix (not the MoClo plant set, which
  is only ~81% fidelity). Final set {AGGA,TAGA,GCGA,TGAA,GTTA} = 100% predicted fidelity.

## 3. Where the knobs live (code-knob map)
- Parts / sources / proteins ............ 01_fetch_sequences.py (SP at ~line 88; HC/LC/Fc assembly ~90-110;
  regulatory slices from pcDNA3.1 SnapGene coords ~35-50). Cached canonical refs in scripts/refs/.
- Host / codon table .................... 02_codon_optimize.py: taxid 10029 via python_codon_tables
  (download_codons_table), cached refs/cho_codon_usage_10029.json. CAI target check ~line 95.
- Codon-opt constraints (GC, sites, homopolymer, objective) ... 02_codon_optimize.py optimize() ~line 70-80.
- SP de-duplication ..................... 02_codon_optimize.py ~line 100-120.
- Type IIS enzymes + domestication ...... 03_screen_sites.py (MOTIFS dict top; domesticate_* fns).
- Fragment partition (which elements per fragment, Kozak, stops, IRES-LC fusion) ... 05_assemble_construct.py
  INNER{} dict ~line 45-52; overhang->junction assignment LEFT/RIGHT ~line 53-56; PAD/spacer ~line 78.
- Fusion-overhang selection + fidelity model ... 04_fusion_sites.py (fidelity() ~line 33; candidate filter
  ~line 60; greedy+local search ~line 70-90). Calibration assert vs plant set ~line 55.
- Primer design params .................. 06_design_primers.py GLOBAL{} (Tm 57-63, size 180-450, GC clamp).
- CHO genome / isPcr / BLAST ............ 07_blast_primers.py: DB_FA/DB_BLAST = ~/genomes/cho_PICRH1.0*;
  isPcr minPerfect=8 maxSize=4000 ~line 38.
- Report text / notice level / refs ..... 10_build_report.py (REFS list ~line 40; notice_box ~line 60).

## 4. What was tried and didn't work
- DrugBank (trastuzumab) and direct "pIRES"/pcDNA3.1 NCBI feature pulls: DrugBank 403; NCBI deposits had
  only coarse features. SOLVED by PDB 1N8Z (V-domains) + UniProt constants + SnapGene fetch.php .dna
  (Biopython reads "snapgene" format) for fully-annotated pcDNA3.1/pCI-neo/pLVX-Puro parts.
- python_codon_tables has no bundled CHO table offline; get_codons_table('c_griseus_10029') FAILS.
  Use download_codons_table(taxid=10029) (web) once, then the cached JSON.
- First primer-specificity pass used loose blastn "covers 3' end" flag -> false REVIEW (every 20-mer has
  chance 18/20 hits in 2.4 Gb). Correct tool = isPcr (pair-level, true 3' anchor): 0 host amplicons.
- Full CMV intron A not in SnapGene mammalian set; used the 133-bp pCI chimeric intron instead.

## 5. Gotchas
- EMCV IRES 3' terminal ATG = the LC start codon; assemble as IRES + LC_cds[3:] and annotate the LC CDS
  feature starting 3 nt INTO the IRES (05_assemble_construct.py ~line 95) or it translates out of frame.
- AmpR/bla must stay E. coli-functional -> domesticate by SYNONYMOUS change only (CDS starts at offset 105
  inside the AmpR part). Non-coding domestication uses the "strictly fewer sites" rule to guarantee halt.
- Fidelity estimator: product over the N junctions (one strand each), off-targets over BOTH strands;
  product over 2N species double-counts (~0.81^2). Calibrated to ~77% on the plant set (Pryor ~81%).
- Element-table ORF spans include the stop codon (CDS+3); Section-3 CDS lengths exclude it.
- isPcr loads the 2.4 Gb CHO FASTA into RAM (~90 s, fine at 11 GB free); put all query pairs in ONE file.

## 6. Re-running for common modifications
- Different antibody: replace VH/VL (and constants if not IgG1/kappa) in 01_fetch_sequences.py, rerun 02-10.
- LC-first (fix H:L balance): swap INNER["F2_heavy"]/INNER["F3_IRES_light"] coding payloads in 05 (keep IRES
  before whichever chain is 2nd) and re-run 05-10; overhangs/primers regenerate automatically.
- Enlarge the vector (size target ~7 kb already met at 6.87 kb; only if a larger backbone is later wanted):
  extend INNER["F5_backbone"] (add a 3'UTR/MAR/stuffer); only F5 + its 2 primers change.
- Different selection marker: swap pac protein in 01 (proteins.pac) — it is CHO-codon-optimised in 02.
