Repository navigation
Reject unknown model_family; name the laser extra when prody is missing (#2484, #2483) - #212
Conversation
…is missing (#2484, #2483)
#2484: an unknown model_family silently fell through to stock ProteinMPNN. One
table in host/family_driver.py (STOCK_MODEL_FAMILIES + DRIVER_BACKED_FAMILY_MODULES)
now defines the valid names; validate_model_family enforces it in RunSpecification
__post_init__, the runner's _family_driver_for, prep, and the CLI --model-family
option (typer BadParameter listing the valid names). The default family is unchanged.
#2483: a lasermpnn request without the laser extra died on a bare
ModuleNotFoundError('prody') inside featurize. _require_family_extra now raises an
ImportError naming the extra (uv sync --extra laser / pip install 'aminx[laser]') at
family resolution, before featurization.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SGHJhq24fYihaMivnXNhro
…h has no wheel -- main fails the same way) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014bjCGQZgFEE6nR8cGTMFt7
…idate_model_family (CI regressions on #2484) The guard rejected families the codebase declares. ModelFamily (family_driver.py) is now the one Literal, adding "membrane" (named by the temperature-default rule and by MODEL_WEIGHTS). STOCK_MODEL_FAMILIES is derived from it minus the driver table, and RunSpecification annotates model_family with it, so the type and the runtime guard cannot drift. tests/host/test_comp536_campaign_manifest.py used "ligandmpnn_v1", which no table declares; it now uses the real family "ligandmpnn". Weight-variant names (soluble, sc, original, ligand) are deliberately not families and stay rejected. browser_validation_paths.json maps family_driver.py::validate_model_family to P26 (the RunSpecification surface), so the parity inventory has no unmapped symbol. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SGHJhq24fYihaMivnXNhro
|
Follow-up 36142c0 after CI caught a real regression: the first version's valid set {proteinmpnn, ligandmpnn, pottsmpnn, lasermpnn} rejected legitimate names. The valid set is now derived from one declared |
…amily tables, add protonpottsmpnn) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SGHJhq24fYihaMivnXNhro
…y_wave: 9/9 would grade, 135/135 PASS) (#2621) Groups 1-4 ran sequentially on titanix at 43a7a3b (main 2acb6e7 with PRs #212-#215, plus the zscale single_mutation fold); every cool-tier record is completed/pass and every control failed. protonpotts_parity is the REVISION 261012 vehicle (99 controls). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YGAcqn2SwMsYoLwzgobthN
Fixes debts #2484 and #2483.
#2484: an unknown
model_familysilently ran stock ProteinMPNN. A typo such as--model-family foompnnfell through_family_driver_for(it returnedNonefor any name outside the driver table), so the run produced ProteinMPNN results under the wrong label. Valid names now live in one table insrc/aminx/host/family_driver.py(STOCK_MODEL_FAMILIES,DRIVER_BACKED_FAMILY_MODULES,MODEL_FAMILIES,validate_model_family). They are enforced at:RunSpecification.__post_init__(src/aminx/run/specs.py)_family_driver_for,src/aminx/host/runner.py)src/aminx/host/prep.py, before theFAMILY_DRIVERSlookup--model-familyoptions, viatyper.BadParameterAn unknown name raises
ValueError, naming it and listing the valid names. The default family is unchanged.#2483: a
lasermpnnrun without thelaserextra failed with a bareModuleNotFoundError('prody'). It now fails at family resolution, before featurisation, with anImportErrornaming the fix:uv sync --extra laserorpip install 'aminx[laser]'.Tests (
tests/host/test_model_family_validation.py): a single source of truth; valid names resolve; an unknown name is rejected through the spec, the runner and CLI parsing and invocation; a missingprodynames the extra and fails at resolution; withprodyimportable, no error. Run on titanix:tests/host -k "family or runner", 26 passed.🤖 Generated with Claude Code
https://claude.ai/code/session_01SGHJhq24fYihaMivnXNhro