Add PIR (Physics Intermediate Representation) symbolic regression method - #210
Add PIR (Physics Intermediate Representation) symbolic regression method#210Qazi-pk wants to merge 18 commits into
Conversation
Added metadata for the Physics Intermediate Representation (PIR) project, including authors, paper title, and description.
Implement PIRClassicRegressor and model function for SRBench.
Added metadata for the Physics Intermediate Representation (PIR) including authors, paper title, and description.
This file implements a classical PIR regressor for SRBench, including configuration and model handling.
|
12/44 EXACT blind (zero seed wobble), v3.4 |
|
Update: The install failure is resolved. The physics-engine package had a packaging issue (subpackages weren't being discovered by setuptools) plus some eager top-level imports pulling in optional modules that aren't needed for the regressor. I've fixed the packaging config and made the top-level imports lazy, tagged v3.4.1, and updated install.sh to point at it. A clean-room install (pip install "git+https://github.com/Qazi-pk/physics-engine.git@v3.4.1" in a fresh venv) now imports PIRRegressor successfully. The remaining ModuleNotFoundError: No module named 'methods.pir' looks like the shared algorithms/ → methods/ harness mapping that's also failing other methods in this run (brush, eql, bsr, e2et). Happy to adjust the layout if there's a preferred structure — otherwise it appears to be on the infrastructure side. Thanks for taking the time to review. |
… ModuleNotFoundError: methods.pir)
|
Update: the Cause: my submission only had the regressor under Fix:
Thanks for your patience with the back and forth. |
|
thanks for your patience. we finally fixed the other methods that were failing in docker on main. once the tests pass we'll perform our review and update you. |
|
Thanks for the update, and for fixing the Docker failures on main. While benchmarking PIR locally through the ground-truth harness, I found and reported a separate bug — #216: -target_noise and -feature_noise are parsed but never passed to evaluate_model(), so target noise is silently ignored on --local runs (the cluster path is unaffected). It includes a two-line fix that worked for me. Happy to open a PR for it if useful — flagging here since it affects local noise-robustness runs. Looking forward to the review. |
PIR — Physics Intermediate Representation
Classical symbolic regression engine for automated physical law discovery from data.
Method
Blind Feynman Tier A results
12/44 EXACT blind (zero seed wobble), v3.4
Secondary: +12/44 FORM_NUMERIC (correct functional form, transcendental constant as decimal — reported separately, never summed)
Previous baseline: 7/44 (v3.3)
Files
algorithms/PIR/regressor.py— sklearn-compatible wrapperalgorithms/PIR/install.sh— installs from public repo (MIT license)algorithms/PIR/metadata.yml— method metadataalgorithms/PIR/requirements.txt— POT (Python Optimal Transport)Links
Targeting master per @gAldeia's guidance in #203.