Releases: eijex/factorforge-cds
Releases · eijex/factorforge-cds
Release list
v3.2.1 — FactorForge
Added
- Protein risk annotation layer for CDS sequences
- Transmembrane helix prediction (Kyte-Doolittle, window=19, threshold=1.6)
- Signal peptide heuristic (N-terminal 30 aa scan)
- Risk classification: HIGH / MEDIUM / LOW / UNKNOWN
Fixed
- Correct CAI provenance annotation in benchmark output (Job 110)
- Correct Type IIS restriction site warning status (Job 110)
- Pin JSON files to LF line endings for Windows reproducibility
- Add pandas to dev test dependencies
- Manifest SHA-256 reproducibility drift on Windows (JSON/EOL normalization)
- wet-lab result GitHub template: add protein_class options (Reporter / Antigen / Cytokine) and validation consent checkbox
Changed
- Add Google Form as wet-lab submission channel alongside GitHub Issue and email
- Standardize wet-lab submission link labels across README, docs, and web app
Docs
- Add public-safe FactorForge agent guidance
- Expand release checklist with public surface audit steps
Chore
- Bump actions/configure-pages, codecov/codecov-action, actions/deploy-pages, actions/setup-python, softprops/action-gh-release (Dependabot)
v3.2.0 — FactorForge
Added
- MFE metadata fields — Design Package and API response now include
mfe_used(bool),mfe_status(computed/not_computed), andmfe_warning(string when ViennaRNA unavailable).score_componentsadded to expose per-term weights used in composite score calculation. - Design Package schema v1.0.0 — Formal IUPAC/FASTA I/O contracts and MFE null invariant established (090).
- Registry production constants export —
DEFAULT_CAI_TARGET,DEFAULT_GC_LOW,DEFAULT_GC_HIGHimportable as public production constants (091). - Benchmark seed injection —
--seedflag for deterministic reruns;most_frequent_codontie-breaking deduplication (099). - Codon table provenance disclosure —
codon_table_manifest.jsonwith sha256 pin,build_path_status: incomplete, and known limitations fornbenthamiana_codons.json(097).
Fixed
- Domestication Silence Fail —
pipeline.pynow raisesValueErrorwhen restriction-site domestication fails (previously returned the undomesticated sequence silently as success). - Pipeline Output Validator —
validate_cds_output()is now called inpipeline.pybefore final sequence return, catching AA identity violations and internal stops at the pipeline level. - MFE not-computed value —
mfe_kcal_molis nownull(not0.0) when ViennaRNA is unavailable. Composite score is unchanged; this corrects misleading metadata only. - Input validator — IUPAC ambiguous DNA/AA sequence misclassification corrected (098).
Documentation
- Stale constant corrections — 5 doc/comment locations corrected to match live code.
- Claim wording alignment — Public-facing API and CLI output wording unified; no expression-level or yield improvement claims (092).
- Formal benchmark — N. benthamiana SGN CDS (N=49,257, seed=320). All metrics are in-silico; no wet-lab validation claimed.
v3.1.9 — FactorForge
Documentation
- Internal housekeeping — project tracking references updated. No engine changes.
v3.1.8 — FactorForge
Breaking Changes
gc_targetprofile default changed — callinggc_targetwithout an explicittarget_gcnow produces sequences targeting ~60% GC (host midpoint) instead of the previous 42.5%. If you relied on the 42.5% default, passtarget_gc=42.5explicitly to preserve the old behavior.
Changed
gc_targetprofile default — now targets the host-profile GC midpoint (60% for N. benthamiana) whentarget_gcis not supplied, instead of the legacy hardcoded 42.5%. To target a lower GC, passtarget_gcexplicitly. Output sequences fromgc_targetwithout an explicit target will differ.- GC scoring —
calculate_composite_scorenow scores GC using a band function (gc_band_score): full score inside[gc_min, gc_max], linear decay outside overgc_decay_width(default 20 pp). Replaces the previous1 - |GC - GC_opt|/50proximity formula, which under-discriminated GC quality. assembly_friendlyscoring weights — changed from balanced-identical(0.5, 0.3, 0.2)to(0.3, 0.4, 0.3)(lower CAI pressure, higher GC/MFE weight) to align scoring with its Type IIS site-avoidance translation strategy.feasibility.pydefaults —target_cai0.92 → 0.82 (achievable; aligns with industry >0.8 practice);target_gc41–44% → 55–65%; fallback GC ranges realigned to the 55–65% output distribution.
Fixed
- Homopolymer thresholds documented — expression-stability (≥6 nt) and synthesis/manufacturing (≥8 nt) scans now use named constants (
HOMOPOLYMER_EXPRESSION_WARN_NT,HOMOPOLYMER_SYNTHESIS_WARN_NT) and emitcontext/threshold_ntmetadata so the two intentionally different thresholds are no longer mistaken for a bug. - Misleading docs removed —
gc_targetno longer described as "42.5% (N. benthamiana optimal)"; 42.5% was a legacy assumption inconsistent with the 55–65% codon-table output. - CLI docs corrected —
docs/cli.md--gc-min/--gc-maxdefaults fixed from 40/55 to the actual 55/65.
Documentation
docs/profiles.md— added missingassembly_friendlyprofile; correctedgc_targetdescription.docs/tutorials/gfp-nbenthamiana.md— regenerated profile-comparison metrics under the new GC scoring andgc_targetdefault.
v3.1.7 — FactorForge
Added
- Web UI host selector — expression host toggle (N. benthamiana / BY-2 Experimental) in the input panel. BY-2 selection disables Feasibility Best objective and shows experimental warning. Result panel displays active host profile.
- E2E smoke tests — 5 Playwright smoke tests covering UI load, protein input, BY-2 host toggle, Feasibility Best guard, and result rendering. Runs automatically after each deployment via
e2e.yml.
Documentation
- Eijex MCP access — added Eijex MCP as access option in
README.mdanddocs/index.md - API endpoints — added
POST /api/optimize,/compare,/batchendpoints section todocs/cli.md - MCP getting started — added Eijex MCP connection guide to
docs/getting-started.md - ml_enhanced profile —
docs/profiles.md에 ml_enhanced 프로파일 문서화 - AGENTS.md — 새 API 엔드포인트 추가 시 eijex-mcp 동기화 항목 명시
v3.1.6 — FactorForge
Added
- SynCodonLM scoring dimension — optional 5th composite score component (
w_syncodonlm, default0.0). Integrates Boehringer-Ingelheim's BERT-based codon language model (SynCodonLM, NAR 2025; HuggingFace:jheuschkel/SynCodonLM-V2). Graceful fallback (score 0.5, WARNING) whentransformersis not installed. No change to existing scoring behavior. ml_enhancedscoring profile —w_cai=0.35, w_gc=0.25, w_mfe=0.15, w_syncodonlm=0.25. Opt-in; existing four profiles unchanged.[ml]optional dependency group —pip install factorforge-cds[ml]installstransformers>=4.40andtorch>=2.0for SynCodonLM inference.scoring_ml.py—SynCodonLMScorerclass with lazy model loading;calculate_syncodonlm_score(sequence, organism).- Profile comparison mode —
factorforge optimize input.fasta --engine profile --compare-profiles balanced,high_cai,gc_targetoutputs a side-by-side CAI / GC% / score table. First profile result saved to--outputwhen specified.POST /api/optimize/compareendpoint added with same functionality via JSON API. - Tutorial: GFP N. benthamiana — end-to-end worked example at
docs/tutorials/gfp-nbenthamiana.md. Covers CLI, Python API, profile comparison, and MoClo assembly preparation. - Batch optimization API —
POST /api/optimize/batchaccepts up to 20 sequences in a single request. Returns per-sequence CAI, GC%, score, and optimized CDS. Auto-generates IDs (seq_1,seq_2, ...) when omitted. CLI multi-FASTA was already supported. - Tobacco BY-2 host support (experimental) —
--host by2CLI flag and"host": "by2"API field optimize for N. tabacum BY-2 suspension culture cells using a Kazusa-derived codon table (1,534 CDS, species 4097). Default host remainsnbenthamiana. CAI difference between hosts is < 0.05. Experimental: uses N. tabacum codon usage as proxy; not wet-lab validated for BY-2 expression performance. - Structure prediction links — AlphaFold DB and ESM Atlas fold links appear in the result panel after optimization. No API calls — links open external services with the input sequence.
v3.1.5 — FactorForge
Fixed
- Data file packaging —
pyproject.toml에package-data누락으로pip install후nbenthamiana_codons.json경로 오류 발생하던 버그 수정. PyPI wheel에 JSON 데이터 파일이 포함되지 않았던 문제. - Path resolution —
domesticator.py,pipeline.py,analysis/metrics.py의parents[N]하드코딩을get_data_path()사용으로 통일. 설치 환경에서 경로가Lib/data/로 잘못 해석되던 문제 수정. - CI matrix — Python 3.13 + Windows (
windows-latest) 테스트 추가 (3.10/3.11/3.12/3.13 × ubuntu/windows 8개 조합).
v3.1.4 — Release infrastructure & benchmark correction
Added
- CITATION.cff — GitHub "Cite this repository" button
- SECURITY.md — vulnerability reporting policy
- ROADMAP.md — public development direction (v3.2, ML v4, wet-lab scope)
- bump_version.py — automates version string updates across 14 files
- Development history — v1→v2→v3-alpha→v3.x→v4 lineage documented
Changed
- Public engine naming —
factorforge.engines.profile/ CLI--engine profileformalized - Benchmark corrected — CAI 0.76, GC% 59.77%, target 55–65% (N=3,876 SGN CDS, balanced profile)
Fixed
- Stale test version —
test_design_package.pyproduct_version 3.1.1 → 3.1.3
FactorForge v3.1.3
Fixed
- Disabled profile cards — tooltips now accessible on hover; added "Pending wet-lab validation before enabling" notice to 5′ Ramp and Viral Delivery cards
- Viral Delivery tooltip — corrected citation; updated to Peccoud et al. 2024 (PMC11718241)
- Analytics notice — clarified: "Submitted sequences are not logged or stored"
Full changelog: https://github.com/eijex/factorforge-cds/blob/main/CHANGELOG.md
Documentation: https://eijex.github.io/factorforge-cds/
PyPI: pip install factorforge-cds==3.1.3
v3.1.2 — Ramp/Viral Delivery parameter fix
What's Changed
Fixed
- viral_delivery scoring — corrected citation reference; adjusted weights:
w_gc0.25→0.35,w_mfe0.40→0.30 per PMC11718241 (Peccoud et al. 2024) - 5' Ramp deoptimization — N-terminal deoptimization strength reduced from bottom 50% to bottom 25%; aligns with PMC11718241 tAI_ramp 0.8–1.2 optimal range
Changed
- Changelog label: "ML Research Track" → "Research Track"
Full Changelog: v3.1.1...v3.1.2