All notable changes to WaveDiff are documented in this file.
- Changes in progress for the next release.
- Added PSF inference capabilities for generating broadband (polychromatic) PSFs from trained models given star positions and SEDs
- Added
run_typeattribute toDataHandlersupporting training, simulation, metrics, and inference modes - Implemented
ZernikeInputsFactoryclass for buildingZernikeInputsinstances based on run type - Added
psf_model_loader.pymodule for centralized model weights loading - Added configurable optimizer selection system via new
optimizer.pymodule withget_optimizerfunction - Added support for hyperparameter overrides (learning rate, beta1/beta2, epsilon, amsgrad) via YAML or programmatic configuration
RectifiedAdamoptimizer now dynamically imports TensorFlow Addons only when explicitly specified in configuration
- Fix logger formatting for relative RMSE metrics in
metrics.py(values were not being displayed)
- Added pre-commit hooks for code quality, formatting, and changelog enforcement
- Refactored
TFPhysicalPolychromaticand related modules to separate training vs. inference behavior - Enhanced
ZernikeInputsdata class with intelligent assembly based on run type and available data - Implemented hybrid loading pattern with eager loading in constructors and lazy-loading via property decorators
- Centralized PSF data extraction in
data_handlermodule - Improved code organization with new
tf_utils.pymodule inpsf_modelssub-package - Updated configuration handling to support inference workflows via
inference_config.yaml - Fixed incorrect argument name in
DataHandlerthat prevented proper TensorFlow data type conversion - Removed deprecated
get_obs_positionsmethod - Updated documentation to include inference package
- Refactored
build_PSF_modelto accept either Keras optimizer instances or configuration passed throughget_optimizer - Added
interpolation.pyandtypes.pymodules with vendored code from TensorFlow Addons repository - Replaced
tfa.image.interpolate_splinewith localtfa_interpolate_spline_rbfimplementation - Added comprehensive unit tests in
test_optimizer.pyandtest_interpolation.py - Updated README and added THIRD_PARTY_LICENSE directory with TensorFlow Addons license
- Training now runs on TensorFlow 2.11 without requiring TensorFlow Addons installation
- Removed TensorFlow Addons as a required dependency; RectifiedAdam optimizer now requires explicit TFA installation if needed
- Remove deprecated/optional import tensorflow-addons statement from
tf_layers.py - Fixed Sphinx autosummary import errors by removing core dependencies (tensorflow) from
autodoc_mock_importsinconf.py. - Updated
pyproject.tomlto include allwf_psfpackages undersrc/when executing CD - Updated example configuration files with clearer inline comments.
- Generated API documentation for new
inferencepackage inapi.rst - Generated API documentation for new
instrumentpackage inapi.rst - Inference Configuration section in
configuration.mddocumentinginference_config.yaml - Restructured Configuration documentation:
- Split workflows into "CLI Tasks" and "Additional Components" sections
- Added configuration file dependency table showing required vs optional files per task
- Clarified configuration filename flexibility (filenames customizable, internal structure fixed)
- Standardized section titles (Training Configuration, Metrics Configuration, etc.)
- Improved markdown formatting and fixed broken anchor links
- Updated
dependencies.mdto documenttensorflow-addonsas optional dependency with manual installation instructions tensorflow-addonsfrom core dependencies documentation (now documented as optional)
Major update with PSF model refactoring, masked training, and CI/doc improvements.
- Removed the
--repodirargument in CLI; scripts using it will now fail.
- Added physical layer model with improved modularity (
TFPhysicalPolychromaticrefactor) and configurable parameters. - Introduced rotation of obscuration mask with configurable parameter.
- Updated
CentroidEstimatorto support mask-based estimation. - Added options for user-configurable flags:
use_priorfor Zernike priorcorrect_centroidsandsigma_centroid_windowfor centroid error correctionadd_ccd_misalignmentsandccd_misalignments_input_pathfor CCD misalignment correction
- Added option to randomize the data-driven part seed for reproducibility.
- Added phase retrieval projection algorithm considering obscurations.
- Masked training and evaluation: added
masked_mseloss andMaskedMeanSquaredErrorMetricclasses. - Added configurable parameter for computing shape metrics for test datasets as optional.
- Added new sigmoid parameters to apply to the sample weights.
- Added masked datasets and corresponding generation notebooks.
- Fixed missing e₂ and R₂ shape metric plots
- Fixed broken contribution link in documentation
- Corrected bug in
MonochromaticMetricsPlotHandlerclass regardingeval_mono_metricconfiguration.
- Improved numerical stability and reproducibility in training routines
- Replaced Black with Ruff for linting and formatting.
- Updated TensorFlow to 2.11 (compatibility fixes for NumPy ≥ 1.26.4 and Astropy).
- Reorganized modules for clarity (e.g.,
SimPSFToolkit.pyrenamed). - Improved PEP8 compliance across the codebase.
- Introduced Scriv-based changelog infrastructure.
- Configured
sphinx.ext.autosummaryto auto-generate stubs in_autosummary/. - Added new documentation and templates:
CODE_OF_CONDUCT.md,CONTRIBUTING.md,DEV_WORKFLOW.md.