diff --git a/CONTEXT.md b/CONTEXT.md index 1951e2f0..051da213 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -147,7 +147,7 @@ Simulation-ready binding and solvation XML files (and metadata) produced by syst _Avoid_: "system" alone when meaning the prepared molecular system artifact **Protein Prep**: -Platform tool `deeporigin.protein-prep` (v10) that inventories a caller-supplied +Platform tool `deeporigin.protein-prep` (v11) that inventories a caller-supplied protein, records editable keep/review/skip Decisions, then applies resolved keep/skip Decisions and protonation (including loop modelling on the served path). CLI class `ProteinPrep` is the sole public preparation session: all diff --git a/docs/dd/ref/protein_prep.md b/docs/dd/ref/protein_prep.md index 27c459f7..eb83ff89 100644 --- a/docs/dd/ref/protein_prep.md +++ b/docs/dd/ref/protein_prep.md @@ -1,6 +1,6 @@ # `deeporigin.drug_discovery.protein_prep` -`ProteinPrep` drives `deeporigin.protein-prep` v10. Recommend inventories +`ProteinPrep` drives `deeporigin.protein-prep` v11. Recommend inventories components, returns a component table (`pandas.DataFrame`), and updates the same object with an editable Selection. Prepare applies resolved keep/skip decisions and cleans the structure. ``run()`` blocks on served prepare (including loop diff --git a/docs/dd/tools/proteinprep.md b/docs/dd/tools/proteinprep.md index cf4a2353..87ecec3b 100644 --- a/docs/dd/tools/proteinprep.md +++ b/docs/dd/tools/proteinprep.md @@ -9,7 +9,7 @@ structure via `find_pockets` (`"no"`, `"novel"`, or `"from-crystal-ligand"`). Selection-defined pockets require the standalone Pocket Finder tool. Use standalone [`StructureReport`](structure-report.md) for structure assessment -(source or prepared). Protein Prep v10 does not bundle Structure Reports in tool +(source or prepared). Protein Prep v11 does not bundle Structure Reports in tool outputs. ## Recommend and review @@ -88,7 +88,7 @@ prepared = prep.get_results() ## Prepare with loop modelling or pockets Loop modelling is enabled by default. All prepare paths use -`deeporigin.protein-prep` v10. Blocking `run()` supports served prepare +`deeporigin.protein-prep` v11. Blocking `run()` supports served prepare (including loops on). `find_pockets="novel"` uses the platform workflow path — use `start()` (not `run()`): diff --git a/docs/notebooks/clean/protein-prep.ipynb b/docs/notebooks/clean/protein-prep.ipynb index 6fbc9bc5..241b5247 100644 --- a/docs/notebooks/clean/protein-prep.ipynb +++ b/docs/notebooks/clean/protein-prep.ipynb @@ -74,7 +74,7 @@ "source": [ "## Structure Report \n", "\n", - "Protein Prep v10 does **not** emit `structure_reports[]`. Run `StructureReport` on the source structure when you need an assessment report before or after prepare.\n" + "Protein Prep v11 does **not** emit `structure_reports[]`. Run `StructureReport` on the source structure when you need an assessment report before or after prepare.\n" ] }, { diff --git a/src/drug_discovery/protein_prep.py b/src/drug_discovery/protein_prep.py index e7522bf1..ea023f54 100644 --- a/src/drug_discovery/protein_prep.py +++ b/src/drug_discovery/protein_prep.py @@ -1,7 +1,7 @@ """Recommend settings and prepare a protein with one mutable configuration. ``ProteinPrep`` is the sole public preparation session. It uses -``deeporigin.protein-prep`` v10 for :meth:`recommend` and all :meth:`run` / +``deeporigin.protein-prep`` v11 for :meth:`recommend` and all :meth:`run` / :meth:`start` prepare paths. Extracting a ligand also requests one crystal-ligand Pocket per extract (``find_pockets=from-crystal-ligand``). Novel pockets use the platform workflow path; use :meth:`start` (not blocking :meth:`run`) for those. @@ -1042,7 +1042,7 @@ class ProteinPrep( ): """Recommend settings and prepare a protein. - All operations use ``deeporigin.protein-prep`` (v10). Blocking :meth:`run` + All operations use ``deeporigin.protein-prep`` (v11). Blocking :meth:`run` supports served prepare including loop modelling. Novel pocket finding uses the platform workflow path — use :meth:`start` (with ``quote`` / ``approve_amount`` when pockets are billable). Structure reports are not diff --git a/src/platform/constants.py b/src/platform/constants.py index f6777c0e..49522de1 100644 --- a/src/platform/constants.py +++ b/src/platform/constants.py @@ -149,7 +149,7 @@ def display_platform_status(status: str | None) -> str: }, "protein_prep": { "tool_key": "deeporigin.protein-prep", - "tool_version": "10", + "tool_version": "11", }, "patent": { "tool_key": "deeporigin.draco", diff --git a/src/utils/constants.py b/src/utils/constants.py index 87ac6e10..9ff4f456 100644 --- a/src/utils/constants.py +++ b/src/utils/constants.py @@ -170,7 +170,7 @@ "Prepare requires a registered protein. Call Protein.sync() or assign " "protein.id before run() or start()." ) -"""Used when prepare is submitted without ``protein.id`` (protein-prep v10).""" +"""Used when prepare is submitted without ``protein.id`` (protein-prep v11).""" PROTEIN_PREP_POCKETS_EXCLUDED_MSG = ( "This ProteinPrep execution did not request pockets. Configure " diff --git a/tests/test_protein_prep.py b/tests/test_protein_prep.py index 4f3f0b14..616aa4b7 100644 --- a/tests/test_protein_prep.py +++ b/tests/test_protein_prep.py @@ -653,7 +653,7 @@ def test_run_allows_loops_on( client: DeepOriginClient, registered_protein: Protein, ) -> None: - """Blocking prepare supports served loop modelling on protein-prep v10.""" + """Blocking prepare supports served loop modelling on protein-prep v11.""" prep = ProteinPrep( protein=registered_protein, selection=_SAMPLE_SELECTION, @@ -683,7 +683,7 @@ def test_run_rejects_novel_pockets() -> None: def test_prepare_requires_registered_protein_id() -> None: - """Prepare rejects unregistered proteins (protein-prep v10 contract).""" + """Prepare rejects unregistered proteins (protein-prep v11 contract).""" prep = ProteinPrep( protein=_protein_with_remote(), selection=_SAMPLE_SELECTION, @@ -1153,7 +1153,7 @@ def test_loops_off_keep_ligand_sets_find_pockets_no() -> None: def test_loops_on_prepare_uses_protein_prep_payload() -> None: - """Loops-on prepare stays on protein-prep with explicit v10 fields.""" + """Loops-on prepare stays on protein-prep with explicit v11 fields.""" selection = { "analyzer_version": "1.0.0", "decisions": {"chain:A": "keep"}, @@ -1239,7 +1239,7 @@ def test_loops_on_start_uses_protein_prep_tool_key( client: DeepOriginClient, registered_protein: Protein, ) -> None: - """Loops-on start binds to protein-prep v10.""" + """Loops-on start binds to protein-prep v11.""" selection = { "analyzer_version": "1.0.0", "decisions": {"chain:A": "keep"}, @@ -1259,7 +1259,7 @@ def test_loops_on_start_uses_protein_prep_tool_key( assert prep.id is not None assert prep.name == "Preparing and loop modelling 1EBY" assert prep.tool_key == TOOL_KEYS_AND_VERSIONS["protein_prep"]["tool_key"] - assert prep.tool_version == "10" + assert prep.tool_version == "11" prepared = prep.get_results() assert isinstance(prepared, Protein) with pytest.raises(ValueError, match="did not request pockets"):