Skip to content

Mytk v1 - #39

Open
liv-soro wants to merge 9 commits into
devfrom
mytk-v1
Open

Mytk v1#39
liv-soro wants to merge 9 commits into
devfrom
mytk-v1

Conversation

@liv-soro

Copy link
Copy Markdown

What this adds

A new benchmark, mytk_ints_promoter, from the MYTK MoClo toolkit
(ACS Synth. Biol. 2024, doi:10.1021/acssynbio.3c00423): predict mScarlet
reporter expression for a [promoter]-mScarlet-tTDH1 payload integrated at
11 genomic sites × 3 promoters (pTDH3 / pRPL18B / pREV1) = 33 constructs.

Full design + rationale: docs/benchmarks/mytk_ints_promoter.md.

Design decisions

  • New protocol PromoterIntegrationExpressionPredictor (distinct from Hong's
    IGRInsertionExpressionPredictor because the promoter — not just the site —
    varies).
  • Primary metric: per-promoter Spearman across the 11 sites (the position
    effect). Secondary: pooled Spearman (promoter-strength-dominated, reported
    for context). Per-site ρ is intentionally not reported (n=3, degenerate).
  • Construct: full payload inserted at the integration midpoint, native flanks
    conserved (point insertion as in Hong et al.); readout over the mScarlet CDS

Contents

  • Protocol + construct record (adapters/protocols.py)
  • MytkBenchmark (benchmarks/mytk.py)
  • Shorkie/Yorzoi adapters + shared scaffold (adapters/{shorkie,yorzoi}_mytk.py,
    _mytk_scaffold.py), registered under the new protocol
  • Data build script (scripts/mytk/build_expression_table.py), manifest entry,
    config (configs/mytk.yaml)
  • Tests: tests/test_mytk.py + tests/test_mytk_scaffold.py (mock-adapter +
    synthetic-genome; no GPU/data needed) — all pass

Validation

Real Shorkie run on Apple MPS: pooled ρ = 0.86 (model captures promoter
strength) but mean per-promoter ρ ≈ −0.25 (no position-effect signal, in agreement with limited variation range observed in the real data)) —

Not included / follow-ups

  • Yorzoi not yet run (needs a CUDA box; flash-attn is NVIDIA-only).
  • Processed data (mytk_ints_promoter.tsv, mytk_payloads.fasta) is declared in
    the manifest but not yet in the checksum lock / on the mirror — runs need
    --no-data-check and the two files copied locally until published.
  • Task kept in a standalone configs/mytk.yaml, out of canonical default.yaml,
    while WIP.

liv-soro and others added 4 commits June 27, 2026 12:30
Protocol (PromoterIntegrationExpressionPredictor + construct record),
MytkBenchmark (per-promoter Spearman primary, pooled secondary),
registry entry, data build script, spec, and mock-adapter tests.
Adapters + sequences deferred (see spec open items).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
_mytk_scaffold loads the 4-record payload FASTA (3 per-promoter payloads
+ mScarlet readout reference, located by substring) and builds the
point-insertion context on the generic _cassette_scaffold. shorkie_mytk
and yorzoi_mytk mirror the Hong adapters (absolute mScarlet-CDS readout,
primary-only) and are registered under PromoterIntegrationExpressionPredictor.
Declares the mytk_ints_promoter data artifact. CPU scaffold tests pass.
Standalone per-task config (Shorkie + Yorzoi) for mytk_ints_promoter,
kept out of the canonical default.yaml while the task is WIP. Validated
by a real Shorkie run on MPS.
dev renamed benchmarks/ → docs/benchmarks/; update the three mytk
docstring references to match.
@tdsone
tdsone self-requested a review June 28, 2026 15:00
@tdsone

tdsone commented Jul 21, 2026

Copy link
Copy Markdown
Member

@liv-soro Could you check if you can benchmark Shorkie and Yorzoi on modal on the mytk task?

tdsone and others added 4 commits July 21, 2026 10:50
Lock the two runtime files (mytk_ints_promoter.tsv + mytk_payloads.fasta) and
upload them to the HF mirror, so a fresh clone can fetch them with
`ybench data get` instead of needing a local copy.

The raw SI xlsx and the two build-input CSVs stay local — the manifest's
`include` allowlist ships only the two files the benchmark reads at run time.

Verified by deleting the local copies and re-fetching from the mirror:
both come back byte-identical.
The authors reorganized seqnn-share: the weights moved from
  seqnn-share/shorkie/f{i}/model_best.h5
to
  seqnn-share/shorkie_models/shorkie/f{i}/model_best.h5

The old path 404s, so `ybench data get` could not fetch Shorkie on any machine
that didn't already have it — fresh clones and the Modal seed alike. Caught by a
Modal run, which was the first one to need those weights.

Bytes are unchanged (locked sha256 still matches), so this is a URL fix only —
no re-lock. Verified by deleting a local checkpoint and re-fetching.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants