MASTER_SOP — IVTT + TR-FRET (HTRF) Fast-Lane Binder Validation
Standard operating procedure from the WeaveSeq experiments team, shared across the IVTT pipeline runs.
Standard operating procedure from the WeaveSeq experiments team, shared across the IVTT pipeline runs.
Purpose: One bench protocol taking the top ~96 computationally ranked AffiniBind binder candidates (51-80 AA, mean 66.7, ~6-9 kDa) from amplified template to single-point TR-FRET screen and 12-point Kd titrations for the top 12 hits, executed by one technician. All work is BSL-1.
When to use: A ranking round has produced candidate_table.annotated.parquet (columns candidate_uid and sequence). Screen-only (hit/no-hit) = 2 bench days; screen + Kd = 4 bench days. End-to-end from sequence order ≈ 6-8 calendar days (plan 8-10 with contingencies).
Deep dives: every design rationale lives in the reference files in this folder — SOP 01 decisions + decision criteria · SOP 02 buy lists/storage/reader access · SOP 03 template design · SOP 04 IVTT · SOP 05 plate assay · SOP 06 reader · SOP 07 analysis · SOP 08 · SOP 09 · appendix catalog numbers. Essential numbers are all in this SOP; only consult the references for rationale.
Check off before starting. Steps reference materials by the name in column 1. (verify) = catalog number or price is unverified in the sources — confirm at order time.
| # | Item (name used in steps) | Vendor | Cat# | Qty | Used in steps |
|---|---|---|---|---|---|
| M1 | gBlocks — 96 binder fragments, E. coli MFC codon-optimized | IDT | quote | 96 tubes, 250-1,000 ng each | 2, 7, 8, 9, 10, 11 |
| M2 | Control gBlocks — POS1 FLAG-core-streptavidin (~540 bp), CTRL FLAG-eGFP (~870 bp), spare POS1 | IDT | quote | 3 tubes | 2, 16, 18 |
| M3 | Universal primer pair (F = T7, R = rev-comp terminator), 25 nmole | IDT | quote | 1 pair | 2, 9, 12 |
| M4 | Q5 2× Master Mix | NEB | M0492 (verify) | 1 | 9 |
| M5 | DNA Clean & Concentrator-5 | Zymo | D4013 (verify) | 1 kit | 10 |
| M6 | Qubit dsDNA HS Assay Kit | Thermo | Q32851 (verify) | 1 | 10 |
| M7 | 10 mM Tris pH 8.0 (IDTE) resuspension buffer | IDT | (verify) | 1 | 7 |
| M8 | UltraPure DNase/RNase-free water | Thermo | 10977015 | 500 mL | 7, 9, 10, 15, 21 |
| M9 | Sanger amplicon sequencing | core facility | — | 12-20 rxns | 12 |
| M10 | PURExpress In Vitro Protein Synthesis Kit, 10 rxn × 25 µL | NEB | E6800S | 1 (pilot only) | 3, 14 |
| M11 | PURExpress In Vitro Protein Synthesis Kit, 100 rxn × 25 µL | NEB | E6800L | 1 per campaign | 3, 15, 21 |
| M12 | PUREfrex 2.0 kit (Sol I/II/III + DHFR control) | GeneFrontier/Cosmo Bio | PF201-0.25-EX | 6 kits (backup/lean; price + lead (verify)) | 3, backup |
| M13 | PUREfrex 2.1 (disulfide-forming variant) | GeneFrontier | PF213-0.25-EX | 1 (contingency only) | §8 |
| M14 | PURExpress Disulfide Bond Enhancer | NEB | E6820S | 1 (contingency only) | §8 |
| M15 | 96-well full-skirt PCR plate | Axygen / Eppendorf | PCR-96-FS-C / 0030128648 | 2 | 15, 16, 21 |
| M16 | MicroAmp Clear Adhesive Film | Thermo | 4306311 | 1 pkg | 17, 20, 23 |
| M17 | Aluminum foil seals | VWR | 60941-126 (verify) | 1 pkg | alt. sealing |
| M18 | Mini PCR plate spinner | Labnet | MPS 1001 | 1 (skip if plate-rotor centrifuge exists) | 17, 19 |
| M19 | HTRF anti-FLAG M2-Tb cryptate donor, 20,000 tests | Revvity | 61FG2TLB (renumbering 61FGBTLB — verify) | 1 vial | 4, 20, 23 |
| M20 | HTRF Streptavidin-XL665 acceptor, 20,000 tests | Revvity | 610SAXLB | 1 vial | 4, 20, 23 |
| M21 | HTRF detection buffer (HEPES/EDTA/KF) | Revvity | 62SDBRDF (200 mL); small pack 62SDBRDD (40 mL) | 1 | 4, 19, 20, 22, 23 |
| M22 | 384-well small-volume white flat-bottom plate, case of 40 | Greiner | 784075 | 1 case | 4, 20, 23 |
| M23 | Biotin-FLAG peptide (biotin-DYKDDDDK) | NovoPro | 319196 (confirm pack size) | 1 | 4, 20, 23 |
| M24 | FLAG peptide DYKDDDDK | Sigma | F3290 | 4 mg | 4, 18, 23 |
| M25 | MonoRab anti-DYKDDDDK [HRP] | GenScript | A01869 (verify vs A01428) | 40 µg | 4, 18 |
| M26 | Biotinylated target (sulfo-NHS-LC-biotin, 1-3 biotins/protein) | per antigen-prep SOP | — | pre-existing | 20, 22, 23 |
| M27 | Homebrew-buffer reagents (optional cost lever): HEPES H3375, BSA A-420, Tween-20 P9416, KF (verify), EDTA (verify), Triton X-100 T8787, DTT DTT25 | Sigma / GoldBio | as listed | optional | 20 |
| M28 | PBS tablets | Sigma | P4417 | 100 tabs | 18 |
| M29 | Nitrocellulose + ECL substrate + imager | lab stock | (verify) | — | 18 |
| M30 | DNA LoBind 1.5 mL tubes | Eppendorf | 022431021 | 250 | 10, 22, 23 |
| M31 | Safe-Lock 1.5 mL tubes | Eppendorf | 022363204 | 500 | general |
| M32 | Racked universal 200 µL tips | United Scientific | P10148 | 2 boxes | general |
| M33 | 25 mL V-bottom reagent reservoirs | Axygen | 14222430 | 1 case | 20, 23 |
| M34 | 96-well intermediate dilution plate | — | — | 2 | 19, 20 |
| M35 | HTRF-certified plate reader (facility, pay-per-use) | facility | — | 2 × 2 h blocks | 5, 20, 24 |
| M36 | Mirror-orientation fallback pair: Streptavidin-Tb + anti-FLAG-d2 | Revvity | 610SATLB + 61FG2DLB | optional | §8 |
Step 1 — Select the campaign set. From candidate_table.annotated.parquet, take the top ~96 binders by ranking (candidate_uid + sequence). If this is the first campaign ever, also pick 3-4 of these for the pilot (step 14).
Step 2 — Order template DNA. 96 binder gBlocks (M1) + 3 control gBlocks (M2) + universal primer pair (M3) from IDT, tubes format. Cost $0.07-0.09/bp = $22-29/binder, $2,150-2,765 total for 96 (budget at $0.09/bp). ≤750 bp ships in 2-4 business days; 250-1,000 ng/fragment; median synthesis error 1:5,000 bp → expect ~6/96 fragments with ≥1 error (single-point screen tolerates this; dose-response set must be Sanger-clean, step 12). Fallbacks: Twist flat $35/fragment = $3,360, 2-4 BD; GenScript $0.07/bp min $35 = $3,360, 5-7 BD.
Construct per fragment, 5′→3′: T7 promoter
TAATACGACTCACTATAGGG+GG+ SDAGGAGG+ KozakGCCACC+ATG+ FLAGGACTACAAAGACGATGACGACAAG+ E. coli-MFC CDS + double stopTAATAG+GTCGAC+ T7 terminatorTAGCATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTG. Total 273-360 bp (mean 320). E. coli MFC codon table (zero rare codons): A=GCG, C=TGC, D=GAT, E=GAA, F=TTT, G=GGC, H=CAT, I=ATT, K=AAA, L=CTG, M=ATG, N=AAC, P=CCG, Q=CAG, R=CGT, S=AGC, T=ACC, V=GTG, W=TGG, Y=TAT. Do NOT reuse the yeast oPool — it carries 45 AGA codons across 29 sample binders; AGA/AGG severely depress and frameshift E. coli translation.
Step 3 — Order IVTT kits. PURExpress E6800L (M11, $2,774, 2,500 µL) for the campaign; E6800S (M10, $316) if the pilot (step 14) is still pending. US overnight delivery. In parallel, order PUREfrex 2.0 (M12, $166/250 µL — quote-based since Nov 2024, verify price; Japan lead time ~1 week) as backup and cost lever. Disulfide contingency (M13/M14) only if Cys-paired binders survive the design filters.
Step 4 — Order detection reagents (first campaign = one-time setup ≈ $6,581). anti-FLAG M2-Tb (M19, $2,051) + Streptavidin-XL665 (M20, $1,665) + detection buffer 200 mL (M21, $762) + Greiner 784075 plate case (M22, $417 budgeted; market $348.73-417.33/case) + positive controls $698 (M23 $196 + M24 $297 + M25 $205) + primers (M3) $40 + plate spinner (M18) $723 (skip if a plate-rotor centrifuge exists) + reader training ~$225. This stock enables ~24-32 campaigns (buffer-limited at 10,000 wells).
Step 5 — Book the facility reader. Confirm the unit passes the HTRF optics checklist: excitation 320-340 nm (337 nm), dual emission 620 + 665 nm, time-gated 50-100 µs delay / 400-600 µs integration, top read, white low-volume 384 plates, and exports raw 620/665 RFU per well; confirm the facility's HTRF Reader Control Kit (RCK) DeltaF high/low calibrator check is current (SOP 06 §4). Certified models: Revvity EnVision 2103/2104/2105/Nexus; BMG PHERAstar FSX; VICTOR Nivo 5S/5F ONLY (not 3S/3F); CLARIOstar / CLARIOstar Plus (filter configuration only); Tecan Spark (filter optics); Infinite M1000 PRO; SpectraMax iD5 (Enhanced TRF cartridge); Agilent Synergy Neo2; BioTek Synergy H1 (legacy Victor X4/X5 also runs HTRF — SOP 06 §3). Account + training lead time: 1-2 weeks self-use (unassisted $7-60/hr ≈ $2-6/plate) or 2-4 weeks staffed ($100-250+/hr). Reserve 2 × 2 h blocks on separate days (screen day + Kd day) — place the final booking only after step 18 QC passes; tentatively hold slots now.
Step 6 — Receipt QC. IVTT kit arrives on dry ice → store at −80°C within 1 h; 24-month shelf life from manufacture; ≤5 freeze-thaws (keep a written log of Solutions A/B; record lot in WeaveSeq). Conjugates lyophilized at 2-8°C (bulk 610SAXAC frozen <−60°C); log vial lots + reconstitution dates. Verify the Greiner 784075 case is white, flat-bottom. Re-confirm the reader booking.
Step 7 — Resuspend gBlocks (M1, M2). Centrifuge each tube 10 s to collect the pellet. Resuspend in 10 mM Tris pH 8.0 (M7) to ~10 ng/µL (verify); pipette up/down 10×. If a pellet remains: heat 55°C 5 min, vortex, spin down. Equilibrate 30 min at RT. Store at −20°C in DNA LoBind tubes (M30); ≤3 freeze-thaws. ~40 min per batch. QC: no visible pellet; concentration ~10 ng/µL.
Step 8 — In-silico QC of all 96 fragments (hard gate, before PCR). Verify with the template script: (1) all 96 translate in-frame, ORF = M-DYKDDDDK-⟨binder⟩-STOP, 0/96 frame or premature-stop errors; (2) FLAG present 96/96 immediately after ATG; (3) double stop TAATAG 96/96 before the 3′ spacer; (4) rare-codon scan AGG/AGA/CGG/CGA/ATA/CTA/CCC/GGA/TTA = 0 hits; (5) internal T7 promoter/terminator motifs in CDS = 0 hits; (6) length 273-360 bp. All 6 checks must pass for all 96 before ordering was placed and before PCR proceeds. On receipt, (7) diff the vendor order manifest against the template table — 99/99 sequences match (SOP 03 §8).
Step 9 — Universal PCR. One primer pair (M3) amplifies all 96 fragments + controls. F = T7 promoter TAATACGACTCACTATAGGG; R = reverse-complement T7 terminator CAAAAAACCCCTCAAGACCCGTTTAGAGGCCCCAAGGGGTTATGCTA.
Master mix per 50 µL reaction (96 binders + 2-3 controls + 1 no-template control (NTC) in a 96-well PCR plate, M15):
| Component | Per 50 µL well |
|---|---|
| Q5 2× Master Mix (M4) | 25 µL |
| Universal F primer, 10 µM | 2.5 µL |
| Universal R primer, 10 µM | 2.5 µL |
| gBlock (1-10 ng) | variable |
| Nuclease-free water (M8) | to 50 µL |
Cycling: 98°C 30 s → 12-15 × [98°C 10 s / 60°C 15 s / 72°C 30 s] → 72°C 2 min → hold 4°C. Use the minimum cycle count giving robust yield (extra cycles accumulate polymerase errors). ~1-1.5 h.
Step 10 — Cleanup + quantitation + normalization. Clean with Zymo DCC-5 (M5), elute 20 µL nuclease-free water (M8). Quantitate with Qubit dsDNA HS (M6); A260/A280 = 1.8-2.0. Normalize every amplicon to a 100 ng/µL working stock in DNA LoBind tubes (M30), −20°C, ≤3 freeze-thaws. IVTT dose target: 100 ng per 10 µL reaction (step 15), equivalent to NEB's 250 ng/25 µL standard. Bank master stocks: repeat campaigns then cost ~$100 of PCR instead of ~$2,765 of DNA.
Step 11 — Gel QC. Agarose 1.5-2% (verify): single band at expected size ±10% (~320 bp mean). Multiple bands → raise annealing to 62-65°C (verify), cut to 12 cycles, gel-purify the correct band.
Step 12 — Sanger the dose-response set. Submit the top 12-20 binders (the dose-response cohort + screen outliers) with universal primers (M3), ~$4-8/sample (budget $72-160). Exact-match gate; any mismatch → re-order that fragment from the backup vendor or exclude from titration and flag in WeaveSeq. Results must be in hand before step 21 (Day 3 re-expression) — submit today.
Step 13 — Thaw PURExpress (M10/M11). Solutions A and B from −80°C; thaw on ice 10-15 min (never at 37°C; do not store long-term at −20°C). Flick/pipette to mix. Keep on ice between uses. Record lot + freeze-thaw count in WeaveSeq. (PUREfrex M12, Solutions I/II/III: same handling.)
Step 14 — Pilot gate (first campaign only). Express 3-4 binders + POS1 + CTRL with 1 × E6800S (M10) before the full campaign. PASS = anti-FLAG dot blot positive (step 18 method) AND expression consistent with the 0.5-1 mg/mL expected yield. Do not start the full campaign on a failed pilot.
Step 15 — Prepare IVTT mini-reactions (10 µL/well). Per-well recipe; single master mix (no template) for 110 wells: 440 µL Solution A + 330 µL Solution B (7 µL/well):
| Component | Per 10 µL well |
|---|---|
| Solution A | 4 µL |
| Solution B | 3 µL |
| Template DNA, 100 ng/µL (step 10) | 1 µL (= 100 ng; range 10-400 ng) |
| Nuclease-free water (M8) | 2 µL (NTC wells: 3 µL, no template) |
Dispense 7 µL master mix + 1 µL template + 2 µL water per well in a 96-well PCR plate (M15). If amplification yield was <100 ng/µL, concentrate or increase template volume (compensate water), keeping template ≤4 µL/well. Expected yield 0.5-1 mg/mL = 5-10 µg/10 µL ≈ 60-125 µM crude (3-4 orders above the ~1-10 nM assay need). PUREfrex M12 recipe (SOP 04 §4.2): Solution I 5 µL + Solution II 0.5 µL + Solution III 1 µL + template (~100 ng, verify) + water to 10 µL per well.
Step 16 — Plate layouts.
| Plate 1 (screen IVTT) | Plate 2 (QC/controls IVTT) |
|---|---|
| b01-b96 row-major in ranked order: A1-A12 = b01-b12, B = b13-b24, C = b25-b36, D = b37-b48, E = b49-b60, F = b61-b72, G = b73-b84, H = b85-b96 | A1-A4 = NTC; A5-A6 = POS1; A7-A8 = CTRL; A9-A12 = spare NTC; B-H empty (day 3: 12 × 25 µL re-expressions go here) |
Step 17 — Incubate. Seal (M16, or foil M17), press firmly around every well. Incubate 2 h at 37°C, static (no shaking; up to 4 h max — over-incubation costs yield to RNA decay) in an incubator or thermal cycler with heated lid 37-40°C. Keep the seal on throughout. Then: plate on ice 5 min; spin 1,000 × g 2 min in the plate spinner (M18) to collect condensate/pellet aggregates. Proceed within ~1 h.
Step 18 — Expression QC: anti-FLAG dot blot. Spot 1 µL of each reaction diluted 1:10 in PBS (M28) per binder + all Plate 2 controls + a FLAG-peptide titration (M24, e.g. 50/10/2 ng) as loading standard. Air-dry 10 min. Block 3% BSA in PBS-T (PBS + 0.1% Tween-20, M27) 30-60 min RT. Anti-FLAG-HRP (M25) 1:2,000-1:5,000 in block buffer, 1 h RT. Wash 3 × 5 min PBS-T. Develop with ECL (M29), image. ~3 h total (≈2.5-3 h wall clock: 10 min dry + 30-60 min block + 1 h antibody + 3 × 5 min washes; SOP 04's ~1 h figure is hands-on time only). PASS: clear signal above NTC in ≥80% of binder wells AND POS1/CTRL strong. Flag and exclude failing wells from the screen; record in WeaveSeq. (FLAG is N-terminal — truncated products still light up; if truncation is suspected, Sanger the template.) Book the facility slot (step 5) now that QC passed.
Step 19 — Dilute lysates. Dilute neat IVTT reactions in detection buffer (M21) so the FINAL assay dilution is 1:25-1:50 → binder ≈ 1.2-5 µM in the well (60-125 µM crude ÷ 25-50). The 1-10 nM regime SOP 01 §6.2 targets for titrations needs a ~1:5,000-1:12,000 final dilution — apply that larger dilution for titration plates (step 27). The lysate occupies 5 µL of the 20 µL final volume, so the added pre-dilution must be 4× more concentrated (e.g., 1:20 final = pre-dilute 1:5). Prepare in the intermediate dilution plate (M34) after a plate spin (M18). Dilute ALL lysates identically, including NT, CTR- and POS1 control reactions. Doubles as buffer exchange — no purification (PURE-type lysates are colorless/defined). Diluted lysate is good for same-day screening (hold on ice); overnight 4°C only for confirmation re-reads of already-diluted samples; never freeze-thaw diluted lysate for quantitative Kd data.
Step 20 — Screen plate S1: setup, incubation, read. 384-well Greiner 784075 (M22); 20 µL final; 240 assay wells.
Screen plate S1 map — matches SOP 05/SOP 07 §6 exactly (rows A-H = binders, rep 1 cols 1-12, rep 2 cols 13-24; rows I-J = QC; K-P = buffer moat). Binder order is column-major within 8-binder blocks (b01, b09, b17, … per the SOP 07 plate designer) — NOT the row-major order used on IVTT Plate 1 (step 16):
1 2 3 4 5 6 7 8 9 10 11 12 | 13 14 15 16 17 18 19 20 21 22 23 24
A b01 b09 b17 b25 b33 b41 b49 b57 b65 b73 b81 b89 | b01 b09 b17 b25 b33 b41 b49 b57 b65 b73 b81 b89
B b02 b10 b18 b26 b34 b42 b50 b58 b66 b74 b82 b90 | b02 b10 b18 b26 b34 b42 b50 b58 b66 b74 b82 b90
C b03 b11 b19 b27 b35 b43 b51 b59 b67 b75 b83 b91 | b03 b11 b19 b27 b35 b43 b51 b59 b67 b75 b83 b91
D b04 b12 b20 b28 b36 b44 b52 b60 b68 b76 b84 b92 | b04 b12 b20 b28 b36 b44 b52 b60 b68 b76 b84 b92
E b05 b13 b21 b29 b37 b45 b53 b61 b69 b77 b85 b93 | b05 b13 b21 b29 b37 b45 b53 b61 b69 b77 b85 b93
F b06 b14 b22 b30 b38 b46 b54 b62 b70 b78 b86 b94 | b06 b14 b22 b30 b38 b46 b54 b62 b70 b78 b86 b94
G b07 b15 b23 b31 b39 b47 b55 b63 b71 b79 b87 b95 | b07 b15 b23 b31 b39 b47 b55 b63 b71 b79 b87 b95
H b08 b16 b24 b32 b40 b48 b56 b64 b72 b80 b88 b96 | b08 b16 b24 b32 b40 b48 b56 b64 b72 b80 b88 b96
I POS POS POS POS NEG NEG NEG NEG NT NT CTR CTR | aBk aBk dBk dBk POS POS POS POS NEG NEG NEG NEG
J POS POS POS POS NEG NEG NEG NEG NT NT CTR CTR | aBk aBk dBk dBk POS POS POS POS NEG NEG NEG NEG
K-P BUF BUF BUF BUF BUF BUF BUF BUF BUF BUF BUF BUF | BUF BUF BUF BUF BUF BUF BUF BUF BUF BUF BUF BUF
Control legend (used on S1 and T1): POS = 50 nM biotin-FLAG + both conjugates, no lysate (maximal bridge signal; validates both conjugates + full sandwich). POS1 = IVTT FLAG-core-streptavidin lysate + target + conjugates (end-to-end geometry). NEG = lysate + both conjugates, NO target (baseline for ratio/deltaF). NT = no-DNA IVTT diluted identically + target + conjugates (lysate-only background). CTR- = FLAG-eGFP lysate + target + conjugates (must read ≈ NEG). aBk = POS peptide + donor only (donor bleedthrough). dBk = POS peptide + acceptor only (acceptor cross-excitation). COMP = POS + 100 µg/mL free FLAG peptide (M24) (must drop to ≈ NEG). BUF = buffer only.
Step 21 — Re-express the top 12 screen hits at 25 µL. Fresh day-3 lysate (resets the lysate-age clock) in the empty rows of Plate 2: per well 10 µL Solution A + 7.5 µL Solution B + 250 ng template (step 10 stock) + water to 25 µL. Incubate/QC as steps 17-18 (12 × 25 µL = 300 µL; yields 12-25 µg per binder). Sanger veto (step 12) must be in hand first — exclude any erroneous template from the titration set. 13+ binders → second T1 plate.
Step 22 — Prepare the 2× target master series. Serial 1:1.6 dilutions of biotinylated target (M26) in detection buffer (M21) in LoBind tubes (M30), 13 tubes:
| Tube | P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10 | P11 | P12 | P13 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2× (nM) | 2000 | 1248 | 780 | 486 | 304 | 189.6 | 118.4 | 73.8 | 46.2 | 28.8 | 18.0 | 11.2 | 0 (buffer) |
| Final (nM) | 1000 | 624 | 390 | 243 | 152 | 94.8 | 59.2 | 36.9 | 23.1 | 14.4 | 9.0 | 5.6 | 0 |
Optional 6,000 nM 2× top point (3,000 nM final) for suspected weak binders. Do NOT substitute a 3-fold series — 12 true 3-fold steps from 1,000 nM run off the bottom at 5.6 pM, below assay range. The series brackets the expected 5-300 nM Kd window.
Step 23 — Titration plate T1: setup, incubation. 384-well Greiner 784075 (M22); 12 binders × 13 points × 2 replicates = 312 binder wells + 32 QC + 16 BUF wells (rows N-O) + moat (matches the 584-well cost model, §9).
1 2 | 3 4 | 5 6 | 7 8 | 9 10 | 11 12 | 13 14 | 15 16 | 17 18 | 19 20 | 21 22 | 23 24
A P1 P1 (b1) | P1 P1 (b2) | ... (b12)
B P2 P2 | ...
C P3 ... | (P4..P12 in rows D-L)
M P13 P13 (0 nM blank)
N-O POS POS NEG NEG NT CTR aBk dBk BUF... (32 QC + 16 BUF across both rows)
P buffer moat
Keep critical points off the outer ring; both plates' QC wells sit in rows N-O (already interior).
Step 24 — Read at the facility. Reader settings template: format 384-well white low-volume (M22), top read, 20 µL/well; excitation 337 nm laser or UV flash 320-340 nm; emission 620 nm donor + 665 nm acceptor (simultaneous dual emission if available); delay/integration per model — EnVision 50/400 µs, VICTOR Nivo (5S/5F only) 70/400, CLARIOstar (filter build) 60/400, Tecan Spark (filter) lag 100 µs/integration 400 µs (gain 80-220), Infinite M1000 PRO 60/500, SpectraMax iD5 (Enhanced TRF) 100/600, Synergy Neo2 150/500, PHERAstar FSX as certified; 30-200 flashes/well; endpoint reads only (no kinetics, no injectors). Export raw 620 and 665 RFU per well (plus computed ratio if offered) as CSV. Transport: plates read as-is (no wash, no stop). Covered/foil-wrapped, dark, room temperature, NO ice; leave the seal on until the read head is ready; do not centrifuge the assay plate after the final incubation unless the facility requests it (SOP 05's pre-read spin conflicts with SOP 06 — follow SOP 06). Schedule the read to land 1-3 h after conjugate addition (hard max <6 h). Read time ≤5 min/plate (14 s flying-mode on PHERAstar); ~3 reads total in Scenario B. After the read, export raw data and hand to Day 4 — do not use the reader's on-board curve fitting.
Step 25 — Compute ratios. Archive raw files unmodified at campaign_root/trfret/raw/<plateId>_<reader>_<date>.<ext> (plate IDs IVTT-TRFRET-<campaign-slug>-<plate#>); record plate ID, reader model, delay/integration, reagent lots, incubation time, operator. Then per well:
HTRF ratio R = (665 nm / 620 nm) × 10,000 — never fit raw 665 counts (the ratio compensates pipetting and mild interference). deltaF% = (R − R_NEG) / R_NEG × 100 (R_NEG = plate's own NEG mean). Assay window (titrations) = max ratio / min ratio.
Step 26 — Plate QC gates, then call screen hits. Apply per plate; on fail, see §8.
| Gate | Pass | Fail → |
|---|---|---|
| Z′ (POS vs NEG, ≥4+4 wells; 8+8 recommended) | ≥ 0.5 (0.4-0.6 acceptable with caution — do NOT hard-reject on Z′ alone) | flag, investigate control prep; re-read/repeat |
| Control CV (POS + NEG replicates) | ≤ 10% | fix pipetting, repeat control block |
| POS bridge deltaF% | ≥ 200% | conjugate problem — do not trust the plate |
| 620 nm donor cps (donor-loading QC; not expression) | 20,000-80,000 (accept ≥ 5,000); flag wells outside 0.5-2× donor-control median | donor dilution or reader-gain error |
| Assay window (titration plates) | ≥ 3 (gate ≥ 2) | re-titrate wider range |
| NT & CTR- vs NEG | within ~2× of NEG ratio | lysate background — check dilutions, raise BSA/Tween |
| COMP (first plate of campaign) | drops to ≈ NEG | donor binds non-tagged material |
| Titration top points | P1 ≥ P3 (top points can hook from free-biotin competition for the fixed acceptor; exclude hooking P1/P2 from the fit) | exclude from fit |
Well-level flags: exclude/down-weight a well if 620 cps outside 0.5-2× donor median, duplicate ratio deviation > 30%, or 665 nm above aBk median + 5σ with 620 normal. Screen hit call (mean of n=2): hit = R ≥ μ_NEG + 5σ AND deltaF% ≥ 50%; strong hit = deltaF% ≥ 100%. Rank by deltaF%; promote top 12-20 (plus design-priority binders) to titration.
Step 27 — Fit the quadratic 1:1 model. Geometry: fixed FLAG-binder, titrated biotinylated target; donor on binder, acceptor on target; signal increases with target. Model in total concentrations, binder concentration B free:
AB = [ (B + X + Kd) − sqrt( (B + X + Kd)² − 4·B·X ) ] / 2 ; Y = bg + S·AB
Midpoint = Kd + B/2 in the depletion regime; reduces to Langmuir when B ≪ Kd. Commands (proposed helper affinibind/scripts/trfret/fit_kd.py — scripts do NOT exist yet in the repo; use scipy/lmfit directly):
from scipy.optimize import curve_fit # weights 1/y; 1/y² for the 4PL cross-check
# 8 steps: import CSV → compute R → plate QC → well QC → fit quadratic (ALWAYS primary)
# → cross-check 4PL on log10(target) + Langmuir when fitted B < Kd/3
# → bootstrap 500-1,000 well resamples for 95% CI on Kd → acceptance gates → emit JSON + PNG
Fit acceptance: n ≥ 8 points; ≥ 4 points within 3-fold of fitted Kd; curve span (top/bottom) ≥ 1.5×; 95% CI span < 10-fold; R² > 0.9. Depletion flag: fitted B ≥ Kd/3 → apparent Kd is an UPPER BOUND → re-run the lysate more dilute — the 1:25-1:50 screen dilution leaves ~1.2-5 µM binder, so reach the 1-10 nM regime with a ~1:5,000-1:12,000 final dilution (step 19). Quantitative floor ~2-5 nM; tighter binders are reported as upper bounds. Flat curve (span < 1.5×) → report "Kd > 1 µM". Fitted B < 1 nM (reachable only in the 1-10 nM titration regime) → low-expression flag (retest with 25 µL re-expression or drop). Optional dual-concentration screen (ranking only): R = ratio(500 nM)/ratio(20 nM) (SOP 01 §6.1/SOP 07 §6 text writes the reciprocal ratio(20)/ratio(500) — see footer, verify); apparent Kd ≈ C_hi·C_lo·(R−1)/(C_hi − R·C_lo); valid only when binder ≪ Kd and 1 < R < 25; noise-sensitive — triage, not quantitative.
Step 28 — Hit matrix + final report. Confirmed binder = fitted Kd ≤ 1 µM with all fit-acceptance gates; Strong binder = Kd ≤ 100 nM (priority for soluble-scale validation); Weak = 1-3 µM; Non-binder = "Kd > 1 µM"; flags set for depletion/low-expression. Merge onto the annotated candidate table (join on candidate_uid — NOT uid), adding trfret_kd_nm, trfret_kd_ci_lo_nm, trfret_kd_ci_hi_nm, trfret_binder_total_nm, trfret_depletion_flag, trfret_screen_deltaf_pct; write candidate_table.trfret.parquet + a human-readable CSV sorted by classification then Kd. Report = per-binder PNG of the fitted curve + the QC gate table (step 26) + the hit CSV + plate IDs/lots.
Step 29 — Push to WeaveSeq. One campaign-level screen experiment row (proteinCandidateId: null) + one titration row per candidate. Code changes (do once): add TR_FRET to enum ExperimentType in prisma/schema.prisma + migrate; add \{ value: "TR_FRET", label: "TR-FRET (HTRF)" \} in ExperimentForm.tsx; add results?: unknown to CreateExperimentInput; in db-loader.ts set results: data.results ?? null (currently silently dropped). POST https://<weaveseq>/api/experiments requires a WeaveSeq session cookie/token (mechanism still open — check with the app admin). Results JSON, schemaVersion: "trfret-1.0":
{
"schemaVersion": "trfret-1.0",
"kind": "titration",
"assay": "trfret_htrf_ivtt",
"plateId": "IVTT-TRFRET-SEB-001",
"reader": { "model": "PHERAstar FSX", "excitationNm": 337, "delayUs": 60, "integrationUs": 400 },
"qc": { "zprime": 0.72, "controlCvPct": 6.4, "assayWindow": 14.2, "deltaFposPct": 2400,
"donor620MedianCps": 41200, "negMeanRatio": 118 },
"candidateUid": "cand-0001",
"fit": { "model": "quadratic_1to1", "kdnm": 156, "kdCi95LoNm": 102, "kdCi95HiNm": 240,
"binderTotalNm": 8.2, "htrfRatioMax": 4520, "htrfRatioMin": 210,
"nPoints": 13, "nReplicates": 2, "rSquared": 0.985, "curveSpan": 21.5,
"depletionFlag": false,
"targetNm": [1000, 624, 390, 243, 152, 94.8, 59.2, 36.9, 23.1, 14.4, 9.0, 5.6, 0] }
}
Screen rows use kind: "screen" with targetConcNm: 200 and per-candidate ratioMean, ratioSd, deltaFPct (schema for the per-candidate array is not fully pinned in the sources — verify against SOP 07 §11).
Escalation ladder (in order): re-read the plate → re-pipette affected wells → Sanger the template → re-express at 25 µL → re-order the fragment → drop with a recorded reason (drop only when two independent causes are excluded).
| Scenario | Deliverable | Wells | Campaign cost | Per well | Per binder | First campaign (incl. ~$6,581 setup) |
|---|---|---|---|---|---|---|
| A | Screen only (hit/no-hit) | 240 | $4,700 | $19.6 | $49 | ≈ $11,300 |
| B (recommended) | Screen + 12-pt Kd, top 12 | 584 | $6,418 | $11.0 | $67 | ≈ $13,000 |
| C | Screen + 8-pt Kd, top 48 | 1,232 | $6,874 | $5.6 | $72 | ≈ $13,500 |
| D | Full 12-pt Kd, all 96 | 2,752 | $8,009 | $2.9 | $83 | ≈ $14,600 |
Scenario B line items: IVTT 1× E6800L $2,774 · DNA (96 gBlocks $2,765 + 3 controls $130 + PCR $150 + Sanger top-12 $72) $3,117 · conjugates 584 wells × $0.186 $109 · buffer 11.7 mL $45 · 2× Greiner plates $21 · PCR plates + seals $26 · tips 2 boxes $110 · tubes/reservoirs $28 · water $26 · positive controls $50 · reader 3 reads ~$12 · dry-ice shipping ~$100. One-time setup ≈ $6,581 (conjugates $3,716 + buffer $762 + plate case $417 + controls $698 + primers $40 + spinner $723 + training ~$225) ≈ 24-32 campaigns.
Cost levers (biggest first): PUREfrex 6 kits $996 instead of E6800L $2,774 (−$1,778) · 6× E6800S $1,896 (−$878) · negotiate $0.07/bp gBlocks (−$400-600) · re-amplified fragment stocks make repeat campaigns $100 of PCR ($2,700 saved) · homebrew HEPES/KF/BSA/Tween buffer cuts $0.076 → ~$0.005/well (validate against M21 first; total ~$30-50 over 10,000 wells (verify)).
Every value in this SOP is sourced from the 11 protocol files in this folder; where the sources disagree, the majority-source value is used and flagged (verify). Known conflicts resolved this way: titration cohort fixed at 12 (Scenario B, T1 layout) with Sanger scope 12-20; 13 wells per curve (12 concentrations + 0 nM blank); Greiner 784075 budgeted at $417.33/case; anti-FLAG-HRP = A01869 (verify vs A01428); donor part 61FG2TLB (verify 61FGBTLB renumbering); PUREfrex price/lead (verify, quote-based since Nov 2024); E6800L consumption 1,260 µL (960 + 300); conjugate pre-mixing forbidden; read window 1-3 h target / <6 h max; staffed reader $100-250+/hr; n=2 replicates (n=3 optional for top-5 Kd quality); dual-point R = ratio(500)/ratio(20) (SOP 01 §6.1 and SOP 07 §6 literally write ratio(20)/ratio(500) — contradicted by SOP 07's own worked example Kd = 100 nM → R = 5 and its 1 < R < 25 validity condition — verify); lysate dilution range 1:25-1:50 (SOP 05/08/09 say 1:10-1:50; used the narrower range); S1 plate map = SOP 05/SOP 07 §6 layout (column-major binder order, QC rows I-J).