Repository navigation
1.0.0: release review fixes (rollout leakage, convex CMNN, corrected paired t-test, merge of main) - #88
Merged
Conversation
…ries - requirements.txt: first patched releases for all 76 open Dependabot alerts (GitPython 3.2.1, keras 3.15.0, urllib3 2.8.0, protobuf 5.29.6, requests 2.33.0, certifi 2026.10.18, idna 3.15, Markdown 3.8.1, Pygments 2.20.0, Werkzeug 3.1.9, setuptools 84.1.0, wheel 0.46.2). keras 3.15 needs Python >= 3.11. - pyproject.toml: GitPython >= 3.2.1; keras >= 3.15.0 on Python >= 3.11 (older keras versions are vulnerable when loading models), unchanged below. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Python 3.9 (EOL 2025-10, no longer available on the GitHub runners) and 3.10 (EOL 2026-10) are dropped, 3.13 is added (CI matrices, classifiers). - keras >= 3.15.0 for all supported versions (no Python markers needed anymore). - requirements.txt regenerated from a fresh install (tensorflow 2.21, which supports 3.13); numpy and scipy are pinned per Python version, since numpy 2.5 and scipy 1.18 need Python 3.12. All versions are at or above the security fixes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
physXAI 0.3.0: Python 3.11 - 3.13, dependency versions fixing the security advisories
Conflicts resolved in favour of 1.0.0: the old CI workflows, requirements.txt and the copilot instructions were removed on purpose (CI template, constraints.txt), pyproject.toml keeps the static version 1.0.0 and the bounded dependencies, which are at or above the security fixes of 0.3.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ed paired t-test - Rollout: lags (Q_lag1) and changes (Change(Q)) of derived columns depending on the recursive feature are recomputed from the predicted trajectory instead of being taken from the data (leakage in the horizon metrics, the recursive training and the feature selection). Lagged raw columns of their history are the data shifted by the lag. - shift=0: inputs holding the target through a change of a derived column or nested derived columns are rejected (holds_current_value). - CMNNModel / PINNModel: activation_split defaults to [1, 1, 1]; without monotonicities only convex neurons made the prediction convex in all inputs. - Settings of the split next to a BlockSplit raise a ValueError instead of being ignored. - Output rescaling keeps the scale 1 for a constant target. - Multi step embargo without the warmup (it lies inside the split of its sequence). - ModelComparison.paired: confidence interval and p-value of the corrected resampled t-test (Nadeau & Bengio 2003) instead of the plain t interval and Wilcoxon test; no correction if all runs share one split; note on multiple testing. - Feature selection: the score of the selected set is optimistic (validation data). - Docs: CHANGELOG (unreleased, 0.3.0 entry, requirements.txt wording), README wording of the constrained regression, no runtime claims, deleted branches removed from the branch review, release checklist: merge main first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
Open
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.
Final review of 1.0.0 before the merge into
main.Merge of
main(0.3.0, #86)mainis merged into this branch, so the PRrefactoring_v1.0.0→mainhas no conflicts. All conflicts are resolved in favour of 1.0: the old workflows,requirements.txtand.github/copilot-instructions.mdstay removed, andpyproject.tomlkeeps the static version and the bounded dependencies. These are at or above the security fixes of 0.3.0 (constraints.txtchecked against the pins ofmain). The tree after the merge is identical torefactoring_v1.0.0.Fixes
Q_lag1) and changes (Change(Q)) of derived columns that depend on the recursive feature were taken from the data, so the model saw the measuredTover the horizon. This affected the horizon metrics,RecursiveTrainingand the feature selection criterion. They are now written in the predicted history (Q_lag1→ expression ofQone step back); lagged raw columns are the data shifted by their lag.shift=0:Change(Q)withQderived from the output, and nested derived columns, are rejected (holds_current_value).activation_splitwas[1, 0, 0]. Only convex neurons plus the non-negative weights of the following layers made the prediction convex in all inputs (affectedPINNModelby default, e.g. example 08). The default is now[1, 1, 1].test_size,val_size,block_length,gap_steps) passed next to aBlockSplitraise aValueErrorinstead of being ignored.Methodology
ModelComparison.paired: the confidence interval and the p-value now come from the corrected resampled t-test (Nadeau & Bengio 2003):var(d) · (1/n + n_test/n_train), with the ratio taken from the split summary of the runs (new columnresampling). There is no correction if all runs share one split (vary=('init',)). This replaces the plain t interval and the Wilcoxon test, which assume independent runs. A note on multiple testing is added to the docs.Documentation
unreleased(the checklist says to set the date before tagging), new entry for 0.3.0, wording ofrequirements.txt, entries for the fixes above.bounds, with a certificate per constraint (not "certified on the whole operating range").branch_review.md: branches already deleted are no longer listed.mainfirst.Checks
pytest: 266 passed, 1 skipped;ruff: clean; smoke run of all 13 examples: OK;sphinx-build -W: clean.Q_lag1/Change(Q)against a recursion by hand,shift=0cases, split settings next to aBlockSplit, CMNN neurons, output scale, multi step embargo, corrected t-test.🤖 Generated with Claude Code