proteomics-lab 0.3.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,62 @@
1
+ # Bijux shared
2
+ .DS_Store
3
+ .idea/
4
+ .vscode/
5
+ .tox/
6
+ .tox
7
+ .venv/
8
+ .venv
9
+ .venv-esm/
10
+ .coverage
11
+ .coverage.*
12
+ **/.coverage
13
+ **/.coverage.*
14
+ .python-version
15
+ .mypy_cache/
16
+ .pytest_cache/
17
+ .ruff_cache/
18
+ .hypothesis/
19
+ .hypothesis
20
+ .benchmarks
21
+ .nox/
22
+ .cache/
23
+ .tmp/
24
+ .github/tmp/
25
+ site/
26
+ build/
27
+ dist/
28
+ htmlcov/
29
+ **/coverage.xml
30
+ node_modules/
31
+ *.egg-info/
32
+ pip-wheel-metadata/
33
+
34
+ artifacts/
35
+ artifacts
36
+ packages/*/artifacts/
37
+ packages/*/artifacts
38
+
39
+ **/__pycache__/
40
+ **/.pytest_cache/
41
+ **/.ruff_cache/
42
+ **/.mypy_cache/
43
+ **/.pytype/
44
+ **/.hypothesis/
45
+ **/.hypothesis
46
+ **/.benchmarks/
47
+ **/.benchmarks
48
+ **/.tox/
49
+ **/.tox
50
+ **/.venv/
51
+ **/.venv
52
+ **/.nox/
53
+ **/.cache/
54
+ **/site/
55
+ **/build/
56
+ **/dist/
57
+ **/htmlcov/
58
+ **/*.egg-info/
59
+ **/*.pyc
60
+ **/*.pyo
61
+ *.swp
62
+ *.swo
@@ -0,0 +1,22 @@
1
+ # Changelog
2
+
3
+ All notable changes for `proteomics-lab` are recorded here.
4
+
5
+ ## Unreleased
6
+
7
+ ## 0.3.8 - 2026-07-01
8
+
9
+ ### Added
10
+
11
+ - Added the `proteomics-lab` distribution as the short install and import alias
12
+ for `bijux-proteomics-lab`.
13
+ - Added alias-package contract and README guidance that points readers to the
14
+ canonical assay-planning and outcome-learning owner.
15
+
16
+ ### Changed
17
+
18
+ - Aligned the fallback version and canonical dependency floors with the
19
+ `0.3.8` release line.
20
+ - Routed the alias through governed compatibility helpers and clean-checkout
21
+ verification so the short distribution stays a forwarding layer over the
22
+ lab package.
@@ -0,0 +1 @@
1
+ ../../LICENSE
@@ -0,0 +1 @@
1
+ ../../NOTICE
@@ -0,0 +1,227 @@
1
+ Metadata-Version: 2.4
2
+ Name: proteomics-lab
3
+ Version: 0.3.8
4
+ Summary: Install and import alias package for bijux-proteomics-lab.
5
+ Project-URL: Homepage, https://bijux.io/bijux-proteomics/
6
+ Project-URL: Documentation, https://bijux.io/bijux-proteomics/07-bijux-proteomics-lab/
7
+ Project-URL: Repository, https://github.com/bijux/bijux-proteomics
8
+ Project-URL: Issues, https://github.com/bijux/bijux-proteomics/issues
9
+ Project-URL: Changelog, https://github.com/bijux/bijux-proteomics/blob/main/packages/proteomics-lab/CHANGELOG.md
10
+ Project-URL: Security, https://github.com/bijux/bijux-proteomics/blob/main/SECURITY.md
11
+ Author-email: Bijan Mousavi <bijan@bijux.io>
12
+ Maintainer-email: Bijan Mousavi <bijan@bijux.io>
13
+ License: Apache-2.0
14
+ License-File: LICENSE
15
+ License-File: NOTICE
16
+ Keywords: compatibility,lab,packaging,proteomics
17
+ Classifier: Development Status :: 3 - Alpha
18
+ Classifier: Intended Audience :: Developers
19
+ Classifier: Intended Audience :: Science/Research
20
+ Classifier: License :: OSI Approved :: Apache Software License
21
+ Classifier: Operating System :: OS Independent
22
+ Classifier: Programming Language :: Python :: 3
23
+ Classifier: Programming Language :: Python :: 3 :: Only
24
+ Classifier: Programming Language :: Python :: 3.11
25
+ Classifier: Programming Language :: Python :: 3.12
26
+ Classifier: Programming Language :: Python :: 3.13
27
+ Classifier: Programming Language :: Python :: 3.14
28
+ Classifier: Typing :: Typed
29
+ Requires-Python: <4,>=3.11
30
+ Requires-Dist: bijux-proteomics-foundation<0.4.0,>=0.3.8
31
+ Requires-Dist: bijux-proteomics-lab<0.4.0,>=0.3.8
32
+ Description-Content-Type: text/markdown
33
+
34
+ # proteomics-lab
35
+
36
+ <!-- bijux-proteomics-badges:generated:start -->
37
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-3776AB?logo=python&logoColor=white)](https://pypi.org/project/proteomics-lab/)
38
+ [![Typing: typed](https://img.shields.io/badge/typing-typed%20(PEP%20561)-0A7BBB)](https://pypi.org/project/proteomics-lab/)
39
+ [![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-0F766E)](https://github.com/bijux/bijux-proteomics/blob/main/LICENSE)
40
+ [![CI Status](https://github.com/bijux/bijux-proteomics/actions/workflows/verify.yml/badge.svg?branch=main)](https://github.com/bijux/bijux-proteomics/actions/workflows/verify.yml?query=branch%3Amain)
41
+ [![GitHub Repository](https://img.shields.io/badge/github-bijux%2Fbijux--proteomics-181717?logo=github)](https://github.com/bijux/bijux-proteomics)
42
+
43
+ [![proteomics-lab](https://img.shields.io/pypi/v/proteomics-lab?label=proteomics--lab&logo=pypi)](https://pypi.org/project/proteomics-lab/)
44
+ [![agentic-proteins](https://img.shields.io/pypi/v/agentic-proteins?label=agentic--proteins&logo=pypi)](https://pypi.org/project/agentic-proteins/)
45
+ [![bijux-proteomics-foundation](https://img.shields.io/pypi/v/bijux-proteomics-foundation?label=foundation&logo=pypi)](https://pypi.org/project/bijux-proteomics-foundation/)
46
+ [![bijux-proteomics-core](https://img.shields.io/pypi/v/bijux-proteomics-core?label=core&logo=pypi)](https://pypi.org/project/bijux-proteomics-core/)
47
+ [![bijux-proteomics-runtime](https://img.shields.io/pypi/v/bijux-proteomics-runtime?label=runtime&logo=pypi)](https://pypi.org/project/bijux-proteomics-runtime/)
48
+ [![bijux-proteomics-intelligence](https://img.shields.io/pypi/v/bijux-proteomics-intelligence?label=intelligence&logo=pypi)](https://pypi.org/project/bijux-proteomics-intelligence/)
49
+ [![bijux-proteomics-knowledge](https://img.shields.io/pypi/v/bijux-proteomics-knowledge?label=knowledge&logo=pypi)](https://pypi.org/project/bijux-proteomics-knowledge/)
50
+ [![bijux-proteomics-lab](https://img.shields.io/pypi/v/bijux-proteomics-lab?label=lab&logo=pypi)](https://pypi.org/project/bijux-proteomics-lab/)
51
+
52
+ [![agentic-proteins](https://img.shields.io/badge/agentic--proteins-ghcr-181717?logo=github)](https://github.com/bijux/bijux-proteomics/pkgs/container/bijux-proteomics%2Fagentic-proteins)
53
+ [![bijux-proteomics-foundation](https://img.shields.io/badge/foundation-ghcr-181717?logo=github)](https://github.com/bijux/bijux-proteomics/pkgs/container/bijux-proteomics%2Fbijux-proteomics-foundation)
54
+ [![bijux-proteomics-core](https://img.shields.io/badge/core-ghcr-181717?logo=github)](https://github.com/bijux/bijux-proteomics/pkgs/container/bijux-proteomics%2Fbijux-proteomics-core)
55
+ [![bijux-proteomics-intelligence](https://img.shields.io/badge/intelligence-ghcr-181717?logo=github)](https://github.com/bijux/bijux-proteomics/pkgs/container/bijux-proteomics%2Fbijux-proteomics-intelligence)
56
+ [![bijux-proteomics-knowledge](https://img.shields.io/badge/knowledge-ghcr-181717?logo=github)](https://github.com/bijux/bijux-proteomics/pkgs/container/bijux-proteomics%2Fbijux-proteomics-knowledge)
57
+ [![bijux-proteomics-lab](https://img.shields.io/badge/lab-ghcr-181717?logo=github)](https://github.com/bijux/bijux-proteomics/pkgs/container/bijux-proteomics%2Fbijux-proteomics-lab)
58
+
59
+ [![proteomics-lab docs](https://img.shields.io/badge/docs-proteomics--lab-2563EB?logo=materialformkdocs&logoColor=white)](https://bijux.io/bijux-proteomics/07-bijux-proteomics-lab/)
60
+ [![agentic-proteins docs](https://img.shields.io/badge/docs-agentic--proteins-2563EB?logo=materialformkdocs&logoColor=white)](https://bijux.io/bijux-proteomics/02-agentic-proteins/)
61
+ [![bijux-proteomics-foundation docs](https://img.shields.io/badge/docs-foundation-2563EB?logo=materialformkdocs&logoColor=white)](https://bijux.io/bijux-proteomics/03-bijux-proteomics-foundation/)
62
+ [![bijux-proteomics-core docs](https://img.shields.io/badge/docs-core-2563EB?logo=materialformkdocs&logoColor=white)](https://bijux.io/bijux-proteomics/04-bijux-proteomics-core/)
63
+ [![bijux-proteomics-runtime docs](https://img.shields.io/badge/docs-runtime-2563EB?logo=materialformkdocs&logoColor=white)](https://bijux.io/bijux-proteomics/09-bijux-proteomics-runtime/)
64
+ [![bijux-proteomics-intelligence docs](https://img.shields.io/badge/docs-intelligence-2563EB?logo=materialformkdocs&logoColor=white)](https://bijux.io/bijux-proteomics/05-bijux-proteomics-intelligence/)
65
+ [![bijux-proteomics-knowledge docs](https://img.shields.io/badge/docs-knowledge-2563EB?logo=materialformkdocs&logoColor=white)](https://bijux.io/bijux-proteomics/06-bijux-proteomics-knowledge/)
66
+ [![bijux-proteomics-lab docs](https://img.shields.io/badge/docs-lab-2563EB?logo=materialformkdocs&logoColor=white)](https://bijux.io/bijux-proteomics/07-bijux-proteomics-lab/)
67
+ <!-- bijux-proteomics-badges:generated:end -->
68
+
69
+ `proteomics-lab` is the compatibility alias for the canonical lab owner
70
+ `bijux-proteomics-lab`.
71
+ It is the install and import alias for bijux-proteomics-lab.
72
+
73
+ Use this package when you want a shorter distribution and import name for assay
74
+ planning and handoff behavior without creating a second owner.
75
+
76
+ ## Alias at a glance
77
+
78
+ - Use `proteomics-lab` when you want a shorter package name for assay
79
+ planning, readiness, and handoff entrypoints.
80
+ - Start with the
81
+ [canonical lab package docs](https://bijux.io/bijux-proteomics/07-bijux-proteomics-lab/)
82
+ because this package only forwards into that owner surface.
83
+ - Route lab behavior to `bijux-proteomics-lab`; keep this package focused on
84
+ compatibility naming and import forwarding.
85
+
86
+ ## 0.3.8 Release Highlights
87
+
88
+ - The alias now sends readers to the current lab handbook instead of sounding
89
+ like a second operational owner.
90
+ - Release guidance and compatibility wording now make the forwarding contract
91
+ explicit before a reader reaches the deeper sections.
92
+
93
+ ## Installation
94
+
95
+ ```bash
96
+ pip install proteomics-lab
97
+ ```
98
+
99
+ ## Public APIs
100
+
101
+ The alias forwards the canonical lab planning surface through `proteomics_lab`:
102
+
103
+ ```python
104
+ from bijux_proteomics.domain.assays import AssayRequirement
105
+ from bijux_proteomics.domain.program_spec import create_program_spec
106
+ from bijux_proteomics.domain.reviews import ReviewGate
107
+ from proteomics_lab import build_advisory_assay_plan
108
+
109
+ program = create_program_spec(
110
+ program_id="prog-readme",
111
+ name="binder rescue",
112
+ objective="recover binding while preserving folding",
113
+ target_id="protein:p11111",
114
+ target_name="PTM1",
115
+ sequence="MPEPTIDEK",
116
+ organism="human",
117
+ mechanism="stabilize productive packing",
118
+ ).model_copy(
119
+ update={
120
+ "assay_panel": [
121
+ AssayRequirement(
122
+ assay_id="primary-binding",
123
+ purpose="confirm target engagement",
124
+ readout="binding_score",
125
+ sample_kind="biophysical",
126
+ blocking=True,
127
+ )
128
+ ],
129
+ "review_gates": [
130
+ ReviewGate(
131
+ gate_id="pre-synthesis",
132
+ name="Pre-synthesis review",
133
+ required_roles=["scientist"],
134
+ decision_inputs=["evidence_bundle"],
135
+ )
136
+ ],
137
+ }
138
+ )
139
+ plan = build_advisory_assay_plan(program)
140
+
141
+ assert plan.program_id == "prog-readme"
142
+ assert plan.recommendations[0].assay_id == "primary-binding"
143
+ ```
144
+
145
+ ## Package identity
146
+
147
+ - Distribution name: `proteomics-lab`
148
+ - Import root: `proteomics_lab`
149
+ - Canonical owner package: `bijux-proteomics-lab`
150
+ - Canonical owner import root: `bijux_proteomics_lab`
151
+
152
+ ## Package boundaries
153
+
154
+ - this package owns compatibility naming for the lab surface
155
+ - assay planning, handoffs, and execution-adjacent lab policy remain owned by
156
+ `bijux-proteomics-lab`
157
+ - new lab behavior must land in the canonical owner before alias exports change
158
+
159
+ ## What this package must not do
160
+
161
+ - define a second assay-planning or handoff owner
162
+ - drift away from canonical lab behavior
163
+ - become an independent release surface for lab semantics
164
+
165
+ ## Contract checkpoints
166
+
167
+ - alias exports must keep forwarding to canonical lab behavior
168
+ - docs must keep the canonical lab owner explicit
169
+ - compatibility changes must stay covered by alias-package tests
170
+
171
+ ## Choose this package when
172
+
173
+ - you need a shorter import and distribution name for lab entrypoints
174
+ - migration constraints prefer `proteomics_lab`
175
+ - packaging or compatibility work needs a named alias for the lab owner
176
+
177
+ ## Route elsewhere when
178
+
179
+ - the change alters assay-planning, handoff, or lab-policy semantics
180
+ - the work adds behavior not already owned by the canonical package
181
+ - the alias would stop being forwarding-only
182
+
183
+ ## Verification route
184
+
185
+ - run alias compatibility tests before changing lab imports or metadata
186
+ - review `docs/ARCHITECTURE.md`, `docs/BOUNDARIES.md`, and `docs/CONTRACTS.md`
187
+ when alias claims or routing language change
188
+ - validate the canonical lab README and tests when behavior changes are
189
+ proposed
190
+
191
+ ## Review questions
192
+
193
+ - does the change preserve this package as an alias only
194
+ - is the canonical lab owner still explicit in docs and behavior
195
+ - would the same outcome remain correct if consumers imported the canonical
196
+ package directly
197
+
198
+ ## Escalation route
199
+
200
+ - route lab behavior changes to `bijux-proteomics-lab`
201
+ - stop and review boundaries when package-local assay semantics start appearing
202
+ - escalate before release when routing or metadata drift could confuse the lab
203
+ owner
204
+
205
+ ## Consumer impact signals
206
+
207
+ - import-path or package-name changes are high-impact because downstream
208
+ operational tooling may depend on them directly
209
+ - alias documentation changes should still be reviewed against the canonical
210
+ lab owner
211
+ - wording-only clarifications carry lower release risk than routing or behavior
212
+ changes
213
+
214
+ ## Explicit non-goals
215
+
216
+ - this package does not own core scientific semantics
217
+ - this package does not create a second assay-planning or handoff owner
218
+ - this package does not replace the canonical lab release surface
219
+
220
+ ## Documentation
221
+
222
+ - Release guidance lives in this `README.md`, this package `CHANGELOG.md`, and
223
+ package `docs/*.md` under the canonical lab owner surface.
224
+ - [Product architecture](https://bijux.io/bijux-proteomics/01-bijux-proteomics/foundation/product-architecture/)
225
+ - [Cross-package ownership](https://bijux.io/bijux-proteomics/01-bijux-proteomics/foundation/cross-package-ownership/)
226
+ - [Canonical lab package docs](https://bijux.io/bijux-proteomics/07-bijux-proteomics-lab/)
227
+ - [Changelog](CHANGELOG.md)
@@ -0,0 +1,194 @@
1
+ # proteomics-lab
2
+
3
+ <!-- bijux-proteomics-badges:generated:start -->
4
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-3776AB?logo=python&logoColor=white)](https://pypi.org/project/proteomics-lab/)
5
+ [![Typing: typed](https://img.shields.io/badge/typing-typed%20(PEP%20561)-0A7BBB)](https://pypi.org/project/proteomics-lab/)
6
+ [![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-0F766E)](https://github.com/bijux/bijux-proteomics/blob/main/LICENSE)
7
+ [![CI Status](https://github.com/bijux/bijux-proteomics/actions/workflows/verify.yml/badge.svg?branch=main)](https://github.com/bijux/bijux-proteomics/actions/workflows/verify.yml?query=branch%3Amain)
8
+ [![GitHub Repository](https://img.shields.io/badge/github-bijux%2Fbijux--proteomics-181717?logo=github)](https://github.com/bijux/bijux-proteomics)
9
+
10
+ [![proteomics-lab](https://img.shields.io/pypi/v/proteomics-lab?label=proteomics--lab&logo=pypi)](https://pypi.org/project/proteomics-lab/)
11
+ [![agentic-proteins](https://img.shields.io/pypi/v/agentic-proteins?label=agentic--proteins&logo=pypi)](https://pypi.org/project/agentic-proteins/)
12
+ [![bijux-proteomics-foundation](https://img.shields.io/pypi/v/bijux-proteomics-foundation?label=foundation&logo=pypi)](https://pypi.org/project/bijux-proteomics-foundation/)
13
+ [![bijux-proteomics-core](https://img.shields.io/pypi/v/bijux-proteomics-core?label=core&logo=pypi)](https://pypi.org/project/bijux-proteomics-core/)
14
+ [![bijux-proteomics-runtime](https://img.shields.io/pypi/v/bijux-proteomics-runtime?label=runtime&logo=pypi)](https://pypi.org/project/bijux-proteomics-runtime/)
15
+ [![bijux-proteomics-intelligence](https://img.shields.io/pypi/v/bijux-proteomics-intelligence?label=intelligence&logo=pypi)](https://pypi.org/project/bijux-proteomics-intelligence/)
16
+ [![bijux-proteomics-knowledge](https://img.shields.io/pypi/v/bijux-proteomics-knowledge?label=knowledge&logo=pypi)](https://pypi.org/project/bijux-proteomics-knowledge/)
17
+ [![bijux-proteomics-lab](https://img.shields.io/pypi/v/bijux-proteomics-lab?label=lab&logo=pypi)](https://pypi.org/project/bijux-proteomics-lab/)
18
+
19
+ [![agentic-proteins](https://img.shields.io/badge/agentic--proteins-ghcr-181717?logo=github)](https://github.com/bijux/bijux-proteomics/pkgs/container/bijux-proteomics%2Fagentic-proteins)
20
+ [![bijux-proteomics-foundation](https://img.shields.io/badge/foundation-ghcr-181717?logo=github)](https://github.com/bijux/bijux-proteomics/pkgs/container/bijux-proteomics%2Fbijux-proteomics-foundation)
21
+ [![bijux-proteomics-core](https://img.shields.io/badge/core-ghcr-181717?logo=github)](https://github.com/bijux/bijux-proteomics/pkgs/container/bijux-proteomics%2Fbijux-proteomics-core)
22
+ [![bijux-proteomics-intelligence](https://img.shields.io/badge/intelligence-ghcr-181717?logo=github)](https://github.com/bijux/bijux-proteomics/pkgs/container/bijux-proteomics%2Fbijux-proteomics-intelligence)
23
+ [![bijux-proteomics-knowledge](https://img.shields.io/badge/knowledge-ghcr-181717?logo=github)](https://github.com/bijux/bijux-proteomics/pkgs/container/bijux-proteomics%2Fbijux-proteomics-knowledge)
24
+ [![bijux-proteomics-lab](https://img.shields.io/badge/lab-ghcr-181717?logo=github)](https://github.com/bijux/bijux-proteomics/pkgs/container/bijux-proteomics%2Fbijux-proteomics-lab)
25
+
26
+ [![proteomics-lab docs](https://img.shields.io/badge/docs-proteomics--lab-2563EB?logo=materialformkdocs&logoColor=white)](https://bijux.io/bijux-proteomics/07-bijux-proteomics-lab/)
27
+ [![agentic-proteins docs](https://img.shields.io/badge/docs-agentic--proteins-2563EB?logo=materialformkdocs&logoColor=white)](https://bijux.io/bijux-proteomics/02-agentic-proteins/)
28
+ [![bijux-proteomics-foundation docs](https://img.shields.io/badge/docs-foundation-2563EB?logo=materialformkdocs&logoColor=white)](https://bijux.io/bijux-proteomics/03-bijux-proteomics-foundation/)
29
+ [![bijux-proteomics-core docs](https://img.shields.io/badge/docs-core-2563EB?logo=materialformkdocs&logoColor=white)](https://bijux.io/bijux-proteomics/04-bijux-proteomics-core/)
30
+ [![bijux-proteomics-runtime docs](https://img.shields.io/badge/docs-runtime-2563EB?logo=materialformkdocs&logoColor=white)](https://bijux.io/bijux-proteomics/09-bijux-proteomics-runtime/)
31
+ [![bijux-proteomics-intelligence docs](https://img.shields.io/badge/docs-intelligence-2563EB?logo=materialformkdocs&logoColor=white)](https://bijux.io/bijux-proteomics/05-bijux-proteomics-intelligence/)
32
+ [![bijux-proteomics-knowledge docs](https://img.shields.io/badge/docs-knowledge-2563EB?logo=materialformkdocs&logoColor=white)](https://bijux.io/bijux-proteomics/06-bijux-proteomics-knowledge/)
33
+ [![bijux-proteomics-lab docs](https://img.shields.io/badge/docs-lab-2563EB?logo=materialformkdocs&logoColor=white)](https://bijux.io/bijux-proteomics/07-bijux-proteomics-lab/)
34
+ <!-- bijux-proteomics-badges:generated:end -->
35
+
36
+ `proteomics-lab` is the compatibility alias for the canonical lab owner
37
+ `bijux-proteomics-lab`.
38
+ It is the install and import alias for bijux-proteomics-lab.
39
+
40
+ Use this package when you want a shorter distribution and import name for assay
41
+ planning and handoff behavior without creating a second owner.
42
+
43
+ ## Alias at a glance
44
+
45
+ - Use `proteomics-lab` when you want a shorter package name for assay
46
+ planning, readiness, and handoff entrypoints.
47
+ - Start with the
48
+ [canonical lab package docs](https://bijux.io/bijux-proteomics/07-bijux-proteomics-lab/)
49
+ because this package only forwards into that owner surface.
50
+ - Route lab behavior to `bijux-proteomics-lab`; keep this package focused on
51
+ compatibility naming and import forwarding.
52
+
53
+ ## 0.3.8 Release Highlights
54
+
55
+ - The alias now sends readers to the current lab handbook instead of sounding
56
+ like a second operational owner.
57
+ - Release guidance and compatibility wording now make the forwarding contract
58
+ explicit before a reader reaches the deeper sections.
59
+
60
+ ## Installation
61
+
62
+ ```bash
63
+ pip install proteomics-lab
64
+ ```
65
+
66
+ ## Public APIs
67
+
68
+ The alias forwards the canonical lab planning surface through `proteomics_lab`:
69
+
70
+ ```python
71
+ from bijux_proteomics.domain.assays import AssayRequirement
72
+ from bijux_proteomics.domain.program_spec import create_program_spec
73
+ from bijux_proteomics.domain.reviews import ReviewGate
74
+ from proteomics_lab import build_advisory_assay_plan
75
+
76
+ program = create_program_spec(
77
+ program_id="prog-readme",
78
+ name="binder rescue",
79
+ objective="recover binding while preserving folding",
80
+ target_id="protein:p11111",
81
+ target_name="PTM1",
82
+ sequence="MPEPTIDEK",
83
+ organism="human",
84
+ mechanism="stabilize productive packing",
85
+ ).model_copy(
86
+ update={
87
+ "assay_panel": [
88
+ AssayRequirement(
89
+ assay_id="primary-binding",
90
+ purpose="confirm target engagement",
91
+ readout="binding_score",
92
+ sample_kind="biophysical",
93
+ blocking=True,
94
+ )
95
+ ],
96
+ "review_gates": [
97
+ ReviewGate(
98
+ gate_id="pre-synthesis",
99
+ name="Pre-synthesis review",
100
+ required_roles=["scientist"],
101
+ decision_inputs=["evidence_bundle"],
102
+ )
103
+ ],
104
+ }
105
+ )
106
+ plan = build_advisory_assay_plan(program)
107
+
108
+ assert plan.program_id == "prog-readme"
109
+ assert plan.recommendations[0].assay_id == "primary-binding"
110
+ ```
111
+
112
+ ## Package identity
113
+
114
+ - Distribution name: `proteomics-lab`
115
+ - Import root: `proteomics_lab`
116
+ - Canonical owner package: `bijux-proteomics-lab`
117
+ - Canonical owner import root: `bijux_proteomics_lab`
118
+
119
+ ## Package boundaries
120
+
121
+ - this package owns compatibility naming for the lab surface
122
+ - assay planning, handoffs, and execution-adjacent lab policy remain owned by
123
+ `bijux-proteomics-lab`
124
+ - new lab behavior must land in the canonical owner before alias exports change
125
+
126
+ ## What this package must not do
127
+
128
+ - define a second assay-planning or handoff owner
129
+ - drift away from canonical lab behavior
130
+ - become an independent release surface for lab semantics
131
+
132
+ ## Contract checkpoints
133
+
134
+ - alias exports must keep forwarding to canonical lab behavior
135
+ - docs must keep the canonical lab owner explicit
136
+ - compatibility changes must stay covered by alias-package tests
137
+
138
+ ## Choose this package when
139
+
140
+ - you need a shorter import and distribution name for lab entrypoints
141
+ - migration constraints prefer `proteomics_lab`
142
+ - packaging or compatibility work needs a named alias for the lab owner
143
+
144
+ ## Route elsewhere when
145
+
146
+ - the change alters assay-planning, handoff, or lab-policy semantics
147
+ - the work adds behavior not already owned by the canonical package
148
+ - the alias would stop being forwarding-only
149
+
150
+ ## Verification route
151
+
152
+ - run alias compatibility tests before changing lab imports or metadata
153
+ - review `docs/ARCHITECTURE.md`, `docs/BOUNDARIES.md`, and `docs/CONTRACTS.md`
154
+ when alias claims or routing language change
155
+ - validate the canonical lab README and tests when behavior changes are
156
+ proposed
157
+
158
+ ## Review questions
159
+
160
+ - does the change preserve this package as an alias only
161
+ - is the canonical lab owner still explicit in docs and behavior
162
+ - would the same outcome remain correct if consumers imported the canonical
163
+ package directly
164
+
165
+ ## Escalation route
166
+
167
+ - route lab behavior changes to `bijux-proteomics-lab`
168
+ - stop and review boundaries when package-local assay semantics start appearing
169
+ - escalate before release when routing or metadata drift could confuse the lab
170
+ owner
171
+
172
+ ## Consumer impact signals
173
+
174
+ - import-path or package-name changes are high-impact because downstream
175
+ operational tooling may depend on them directly
176
+ - alias documentation changes should still be reviewed against the canonical
177
+ lab owner
178
+ - wording-only clarifications carry lower release risk than routing or behavior
179
+ changes
180
+
181
+ ## Explicit non-goals
182
+
183
+ - this package does not own core scientific semantics
184
+ - this package does not create a second assay-planning or handoff owner
185
+ - this package does not replace the canonical lab release surface
186
+
187
+ ## Documentation
188
+
189
+ - Release guidance lives in this `README.md`, this package `CHANGELOG.md`, and
190
+ package `docs/*.md` under the canonical lab owner surface.
191
+ - [Product architecture](https://bijux.io/bijux-proteomics/01-bijux-proteomics/foundation/product-architecture/)
192
+ - [Cross-package ownership](https://bijux.io/bijux-proteomics/01-bijux-proteomics/foundation/cross-package-ownership/)
193
+ - [Canonical lab package docs](https://bijux.io/bijux-proteomics/07-bijux-proteomics-lab/)
194
+ - [Changelog](CHANGELOG.md)
@@ -0,0 +1,60 @@
1
+ [build-system]
2
+ requires = ["hatchling>=1.27.0,<1.31", "hatch-vcs>=0.4.0,<1.0"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "proteomics-lab"
7
+ dynamic = ["version"]
8
+ description = "Install and import alias package for bijux-proteomics-lab."
9
+ readme = "README.md"
10
+ license = { text = "Apache-2.0" }
11
+ requires-python = ">=3.11,<4"
12
+ authors = [{ name = "Bijan Mousavi", email = "bijan@bijux.io" }]
13
+ maintainers = [{ name = "Bijan Mousavi", email = "bijan@bijux.io" }]
14
+ keywords = ["proteomics", "lab", "compatibility", "packaging"]
15
+ classifiers = [
16
+ "Development Status :: 3 - Alpha",
17
+ "Intended Audience :: Science/Research",
18
+ "Intended Audience :: Developers",
19
+ "License :: OSI Approved :: Apache Software License",
20
+ "Operating System :: OS Independent",
21
+ "Programming Language :: Python :: 3",
22
+ "Programming Language :: Python :: 3 :: Only",
23
+ "Programming Language :: Python :: 3.11",
24
+ "Programming Language :: Python :: 3.12",
25
+ "Programming Language :: Python :: 3.13",
26
+ "Programming Language :: Python :: 3.14",
27
+ "Typing :: Typed",
28
+ ]
29
+ dependencies = [
30
+ "bijux-proteomics-foundation>=0.3.8,<0.4.0",
31
+ "bijux-proteomics-lab>=0.3.8,<0.4.0",
32
+ ]
33
+
34
+ [project.urls]
35
+ Homepage = "https://bijux.io/bijux-proteomics/"
36
+ Documentation = "https://bijux.io/bijux-proteomics/07-bijux-proteomics-lab/"
37
+ Repository = "https://github.com/bijux/bijux-proteomics"
38
+ Issues = "https://github.com/bijux/bijux-proteomics/issues"
39
+ Changelog = "https://github.com/bijux/bijux-proteomics/blob/main/packages/proteomics-lab/CHANGELOG.md"
40
+ Security = "https://github.com/bijux/bijux-proteomics/blob/main/SECURITY.md"
41
+
42
+ [tool.hatch.version]
43
+ source = "vcs"
44
+ tag-pattern = "^v(?P<version>.*)$"
45
+ fallback-version = "0.3.8"
46
+ raw-options = { git_describe_command = "git describe --dirty --tags --long --match 'v*'", local_scheme = "dirty-tag", version_scheme = "guess-next-dev", root = "../..", search_parent_directories = true }
47
+
48
+ [tool.hatch.build]
49
+ include = [
50
+ "README.md",
51
+ "CHANGELOG.md",
52
+ "src/proteomics_lab/py.typed",
53
+ ]
54
+ force-include = { "LICENSE" = "LICENSE", "NOTICE" = "NOTICE" }
55
+
56
+ [tool.hatch.build.targets.wheel]
57
+ packages = ["src/proteomics_lab"]
58
+
59
+ [tool.hatch.build.targets.wheel.package-data]
60
+ "proteomics_lab" = ["py.typed"]