v2.5.0
Highlights
- Surface JSON now carries readable material info. Every surface dict emits informational
(mat2_n)and(mat2_V)keys alongsidemat2, so refractive index and Abbe number are visible without a glass-catalog lookup. Parenthesised keys are ignored on load, matching the existing(c)/(d)convention. - Lighter dependency footprint.
transformers,timm, andwandbare dropped fromrequirements.txt/pyproject.toml/environment.yml(plus orphaned transitives).PSFNetLensnow uses the in-repo cosine LR schedule instead of pulling intransformersfor a single scheduler. - Dead code removed.
GeoLensSurfOpsaspheric auto-management (add_aspheric,increase_aspheric_order+ helpers, ~360 lines) had zero callers and is gone.
Changes
Features
- Add
mat2_n/mat2_Vinfo keys to surface JSON across all 16surf_dict()methods (Aperture/ThinLens unchanged).
Refactors
- Clarify DOE/surface function names surfaced by a naming audit (pure token renames, no external callers affected):
DiffractiveSurface.pmap_fab→export_fab_phase_map(writes a.pthto disk — the old getter-style name hid the side effect)DiffractiveSurface.pmap_quantize→quantize_phase_mapCubic/Spiral_dfdxylocalssx, sy→dfdx, dfdy(align with spheric/aspheric/qtype)
- Drop dead aspheric ops and unused deps; route
PSFNetLensLR schedule togeolens_pkg.optim.get_cosine_schedule_with_warmup.
Verification
- Full test suite (451 tests) passes on GPU.
Full Changelog: v2.4.0...v2.5.0