Promoter design
Legible, deterministic QC/qualification for bio-AI tool outputs — named-reason contracts + agent skills that compose with NVIDIA BioNeMo.
npx -y skills add Curtisflo/karyon --skill promoter-designAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Functional + synthesizability design-rule check over σ70 bacterial promoter sequences with karyon — qualify whether a designed or generated promoter carries a real −35/−10 architecture before ordering, each rejection named. Use for promoter design rules, −35/−10 box check, inter-box spacer, promoter GC band, regulatory-element QC, or qualifying the output of a DNA/regulatory sequence generator (e.g. Evo2) before synthesis.
The file declares its own license as Apache-2.0 AND CC-BY-4.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
3.8 KB, as published. Nobody here has run it
Promoter Design DRC
A deterministic design-rule check over a σ70 promoter sequence. A model (or a human) proposes a promoter; this gate qualifies whether it carries the architecture that actually drives transcription — and names every defect — before anything is ordered. Pure stdlib, no model, no network.
Two tiers of contract (each returns a human-readable reason):
- C1–C4 — hard, mechanism-grounded. A
−35box (TTGACA) and−10box (TATAAT) located by minimum Hamming over the spacer window, the inter-box spacer (15–19 nt, 17 optimal), and a GC band. These are measured-validated: promoters that flag as weak-box express significantly lower on the real Urtecho set (AUROC 0.66, box-OK vs weak), so a flag predicts lower function — not just "looks wrong." - C5–C6 — calibrated, dormant-by-correctness. Homopolymer-run and rare-forbidden-motif limits read from a reference pool of buildable promoters, so natural tracts / scaffold sites stay silent and only an out-of-distribution run or a genuinely-introduced rare site fires.
Install
pip install karyon # no extras needed
Usage
--modality promoter is required (a .fasta/sequence could equally be generic synthesizable DNA — see
gen-dna-qc):
karyon qualify GCATCG...TTGACA...TATAAT... --modality promoter # one promoter (inline)
karyon qualify designed_promoters.fasta --modality promoter --json # a batch
A promoter passes iff score == 0; --json emits the stable spine schema
({modality, ok, items:[{name, ok, score, reasons:[{contract, message, weight}]}], batch}).
From Python — the uncalibrated path (C1–C4 hard rules; C5–C6 fall back to safe defaults):
from karyon import qualify
r = qualify("ATGC...", modality="promoter")
v = r.items[0][1]
if v.score > 0:
print(v.fired, v.messages)
# e.g. (['C1 −35 box'], ["weak −35 box: best 'TTGCCA' is 2/6 mismatches from TTGACA"])
Calibrated to a pool of known-buildable promoters (C5/C6 become substrate-relative):
from karyon import promoter_contracts as pc
ctx = pc.calibrate_design(reference_promoters) # list[str] of deposited, buildable sequences
for seq in generated_promoters: # e.g. Evo2 output
v = pc.validate(seq, ctx) # == pc.DESIGN.evaluate(seq, ctx)
if not v.ok:
print(f"REJECT — {v.fired}: {v.messages}")
Composition with NVIDIA BioNeMo
Install alongside evo2-nim (genomic / regulatory sequence generation): Evo2 proposes promoters, this
skill qualifies which ones carry a real −35/−10 architecture and a buildable sequence before synthesis — the
"unroutable net" report for a generated regulatory element. For non-promoter synthesizability (sgRNA GC /
homopolymer / Pol-III terminator), pair with the sequence-dfm skill.
Scope (honest)
The box model is a legible best-arrangement scan (no PWM training), so the operating regime is the real σ70 pool and mutated-from-real designs, where the boxes are genuine; on fully-random sequences, chance boxes limit discrimination. This is a design-rule gate (does the regulatory architecture exist, is it buildable), not an expression-strength predictor — pair it with the karyon expression predictors for the quantitative axis.