Boost pyoptex optimal-design test coverage + reliance assessment#415
Open
kgdunn wants to merge 5 commits into
Open
Boost pyoptex optimal-design test coverage + reliance assessment#415kgdunn wants to merge 5 commits into
kgdunn wants to merge 5 commits into
Conversation
…, n_points floor, budget cap)
…pe, D/I/A criteria)
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What and why
The optimal-design code (
experiments/designs_optimal.py) integrates the optional pyoptex library for D/I/A-optimal and split-plot designs. Two gaps:pyproject.toml, so CI'suv sync --all-extrasnever installs it. Every@_skip_no_pyoptextest is skipped on every run.This PR boosts coverage.
Key finding (shapes the approach)
The trigger for this work, upstream PR mborn1/pyoptex#49 (loosen
plotly/pandas/scikit-learnpins), is merged but not released to PyPI. The latest releasepyoptex==1.2.1still pinsplotly~=5.24(<6), which conflicts with this repo'splotly>=6.5.2(verified:pipresolution fails). So pyoptex cannot be added to the--all-extrasresolution from PyPI today without breaking CI.We therefore keep pyoptex optional (the architecture already degrades cleanly: D-optimal has a point-exchange fallback; I/A-optimal raise a clear
ImportError) and get real test signal from an isolated, non-blocking CI job that installs pyoptex from gitmain.Changes
test-with-pyoptexjob that installs pyoptex from git main and runs the optimal-design tests, so the gated paths get exercised without coupling core resolution to an unreleased upstream.n_points >= k+1floor, budget capping, model-type passthrough._convert_factors_to_pyoptex, and D/I/A criterion differentiation.docs/doe/coverage.md- optional by design, BSD-3 (vendoring possible but a poor trade given the Cython engine), infrequent releases, exit criterion for promoting it to a declared dependency.https://claude.ai/code/session_01RmvzhdRZ7K2WDDxtu5ej81
Generated by Claude Code