Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[13-2, 16, 19, 21, 22] Bring main up to date with develop #24

Merged
merged 28 commits into from
Aug 8, 2024
Merged

Conversation

MothNik
Copy link
Owner

@MothNik MothNik commented Aug 8, 2024

This pull request reflects the changes made in

#17, #18, and #23

Closes #16
Closes #21
Closes #22

MothNik added 27 commits July 20, 2024 19:25
- first test of a GitHub CI for testing
- fixed wrong pip install and python versions in CI ?
- fixed loading of test files that do not contain test but dependencies that cannot be loaded ?
- escaped imports of unaccessible dependencies for test-file generation in GitHub CI tests by making the `if __name__ == "__main__"` include these imports and function definitions
- test whether Cython build can be removed from GitHub actions for testing ?
- reverted removal of Cython for testing
- moved the full package back into an `src`-folder

BLD:
- updated `pyproject.toml` and `setup.py` to account for the movement to the `src`-folder
- removed dedicated Cython build from CI test pipeline
- changed CI pipeline target branches
- augmented CI checks with format, type, and lint checks
- fixed CI pipeline wrong folder include ?

BLD:
- added isort check
- fixed broken `isort` usage in CI?
- fixed missing `isort` dependency in CI?
- fixed wrong import sort order in Cython Hermite functions
- fixed missing `colorama` dependency for `isort` in CI ?
- type-ignored Cython import that was not properly resolved by `pyright` ?
- fixed missing import of Cython module for `pyright`  in CI ?
- again trying to resolve the wrong import error of Cython module by `pyright` in CI ?
- fixed wrong `pyright` Cython import error of Cython import in CI
- removed pushes to `develop` from the GitHub CI actions
- added missing comma to the name of the GitHub CI action
* DOC:
- added Python versions and `black` code style to `README`

* DOC:
- added `isort` badge to `README`

* TST:
- added `--no-jit`-flag to `pytest` to enable proper coverage of Numba functions

* tmp:
- first test of CI with coverage report ?

* BUG:
- fixed failure of `pytest-xdist` and `pytest-cov` in GitHub CI (works locally) ?

* BUG:
- fixed accidentally placed `\` for `./tests` in coverage CI action ?

* BUG:
- added codecov to CI pipeline ?

* TST:
- tried to readd `pytest-xdist` for coverage reports ?

* wip:
- reset example Jupyter notebook number 3

* MAINT:
- made `_get_num_workers` a function of the `_utils`-model

TST:
- increased coverage to 100% by testing `np.float32` x-values for the Hermite functions was well as super negative numbers of requested workers

* DOC:
- added setup, installation, and development instructions to `README`

* DOC:
- switched back from `README.rst` to `README.md`

BLD:
- made CI pipeline push actions apply to the main branch only
* BLD:
- added initial version of Makefile and based GitHub CI on it ?

* BUG:
- fixed type in `pip install` in `Makefile` for GitHub CI

* BLD:
- added plain install to Makefile
- removed current branch from GitHub CI trigger on push

DOC:
- added Makefile instructions to `README`
* BLD:
- added `mypy` to CI pipeline

BUG:
- fixed type error that `mypy` uncovered for the `filename_parameters_mapping` for the Hermite function reference generation

* wip:
- test if CI can still pass ?

* wip:
- CI apparently still runs; removed check

* BLD:
- added `pycodestyle` as a part of the CI checks

BUG:
- fixed a line too long error revealed by `pycodestyle`

* DOC:
- added CI test status to `README` ?

* ENH:
- added functions that help for computing discrete/continuous Fourier transforms (`fourier_transform._fft_utils`)

TST:
- implemented a test suite for `fourier_transform._fft_utils`

* Issue 14 #14
DOC:
- updated equations with new definitions of $\alpha$
- updated `README` with new equations and added respective reference that these definitions are based on

* Issue 14 #14
MAINT:
- removed redundant Numba version of the legacy Hermite functions and `jit`-compiled the NumPy-version instead
- fixed minor documentation issues

* Issue 14 #14
MAINT:
- adapted interface to Hermite functions to the new definition of $\alpha$ in terms of both implementation and docs

* Issue 14 #14
DOC:
- updated example scripts and resulting plots with new definition of $\alpha$

* Issue 14 #14
TST:
- generated new references files for testing the new definition of $\alpha$ for the Hermite functions
- adapted Hermite function tests to properly run for the new definition of $\alpha$
- configured Hermite function tests via global constants and kept comments in them more vague
- made test for Cramér's inequality of the Hermite functions ensure that the boundary value is not only an upper bound but actually reached
- changed `requirements` for GitHub CI because with a re-arrangement of the `if __name__ == "__main__"` in the Hermite function reference generation file, `sympy` and `tqdm` became CI requirements as well

* BUG:
- fixed failing `ruff` for too long line in docstring of new `_fft_utils`

BLD:
- temporarily enabled CI on push to current branch to check if it still passes after an adaption in `pyright`

* Issue 14 #14
BLD:
- disabled GitHub CI on push to the current branch again after verifying that it still runs

* Issue 13 #13 (3)
ENH:
- added `x_center` to the Hermite function basis for shifting the Hermite functions in x-direction
- added input validation for `x_center`

MAINT:
- renamed `hermite_functions._interface` to `hermite_functions._func_interface` to prepare for the class interface
- made type handling of Hermite function input validation smarter and safer by first converting to the target type and then testing only for this one
- made argument types for `x` of the Hermite functions broader by also including lists and tuples

TST:
- made input validation tests for Hermite functions be executed before the Hermite function reference tests
- made input validation tests for Hermite functions not only check failure but also success cases
- added tests for the new `x_center` and ensured that it does not modify the original `x`-values for the Hermite functions (after this causes some problems)

DOC:
- updated all equations and the `README` to clarify the new `x_center` for the Hermite functions
- updated installation commands (also mentioned venv activation) and test/check commands in `README`

* DOC:
- added y-axis to Hermite-function-scale-effect-plot
- fixed first vertical x-axis for order `n=0` not showing in the plot at all

* Issue #13 (3)
MAINT:
- moved Hermite function input validation to dedicated file

ENH:
- pushed forgotten files that add `x_center` to Hermite functions

TST:
- pushed forgotten files that test the new `x_center` of the Hermite functions and improved the testing of the Hermite function input validation

* TST:
- split up tests for Hermite functions into dedicated test files to be more flexible

* Issue #13 (3)
DOC:
- added common matplotlib style to unify all plots
- updated example scripts with new matplotlib style
- added shifted center to Hermite function example 01

* DOC:
- made example plots 01 and 02 for Hermite functions more visually appealing/less overwhelming

* Issue #13 (6.1)
ENH:
- added auxiliary script that auto-generates a Python file with spline coefficients for almost exactly evaluating the largest zero (= outermost roots) of the Hermite functions up to order ~100_000

* Issue #13 (6.1)
MAINT:
- refactored the reference creation for the largest roots of the Hermite functions to not minimize the relative but the absolute error
- relaxed permitted absolute error in reference creation for the largest roots of the Hermite functions because the SciPy-reference is not that accurate

DOC:
- mentioned that the SciPy-reference for the largest roots of the Hermite functions is not perfectly accurate

* Issue #13 (6)
ENH:
- added script to create reference data for the largest extrema of the Hermite functions
- added new `_approximations`-module for Hermite functions that offers approximations for their largest roots, largest extrema, and fadeout points

TST:
- added tests for the new `_approximations`-module

DOC:
- added legend to first plot in script that creates reference data for the largest roots of the Hermite functions

* MAINT:
- refactored the reference data generation for the largest roots and extrema of the Hermite functions to fit the splines based on relative errors
- updated reference data and plots created by these scripts
- made this reference data generation a developer-only script

TST:
- made test for largest root of Hermite functions more meaningful by adapting the tolerance for checking to the actual magnitude of the root position
- made test for largest extremum of Hermite functions more meaningful by checking the y-values (and not the x-values) of the extremum against a numerical optimisation (also with magnitude-adaptive tolerances)

* DOC:
- made all plot saves in examples available for developers only
- aligned plots in terms of visuals (especially titles and sizes)
- updated `README` with new plots and developer-only environment variable

* BLD:
- added additional scripts checks to GitHub CI
- made all tools cause actual failures rather than just printing test output ?
- broke CI on purpose, by badly formatting `auxiliary_scripts\02_hermite_functions_largest_extremum.py` and `src\robust_hermite_ft\hermite_functions\_c_hermite.pyx`

* BLD:
- CI tests fixed `black` formatting after confirming that it works
- `isort` is the next to check

* BLD:
- fixed `isort` CI failure after confirming that it works
- `pyright` is the next to check

* BLD:
- temporarily broke `isort` CI check again to check its output

* BLD:
- fixed `isort` problem again
- checking for reasons why `pyright`-check fails by running it separately without output ?

* BLD:
- fixed `pyright` error handling in CI
- `mypy` is the next one to check, but for now it's checked whether it just runs through even though there is an error

* BLD:
- pushing updated CI workflow file for properly testing that `mypy` just runs through
- added `matplotlib` to CI requirements to avoid `pyright` from throwing an error ?

* BLD:
- going back to the start for tests after `mypy` also stopped CI correctly
- starting with `black` test

* BLD:
- `black` successfully stopped the CI without customised handling
- `isort` is the next to check without customised handling

* BLD:
- also `isort` stops the CI on failure
- next to check is `pyright`

* BLD:
- reverted GitHub CI to its original working state

* DOC:
- updated `README` with new CI commands

* ENH:
- Hermite functions now support all kinds of real numeric scalars/Arrays as `x`-values, integer scalars as `n`-values, and real numeric scalars for `alpha` and `x_center` after making the input validation way more relaxed and smarter

TST:
- test for Hermite function input validation now covers Python and Numpy scalars individually and on top of that also includes Pandas series and Python Arrays
- test for data link to original `x` in Hermite functions now evaluates dynamically whether memory is shared by checking if changes in the copy/view are reflected in the original
- added a completely new test set whether the Hermite functions yield the same results for all different kinds of `x`-values, `n`-values, `alpha`- and `x-center` values

* BUG:
- fixed missing `pandas` dependency for GitHub CI

* BUG:
- fixed type incompatibility that caused `mypy` to crash the GitHub CI

* TST:
- fixed missing coverage for default and error handling of FFT utility functions

* DOC:
- arranged legend of plot for special points of Hermite functions in a better position

* TST:
- removed unnecessary list parametrization for orthonormality test of Hermite functions

* DEV:
- fixed wrong wording of static type check in Makefile
- added combined check for all checks to Makefile

* ENH:
- improved typing to given `dtype` type hint for Arrays in Hermite functions

* ENH:
- added check that the `x` for Hermite function computations holds at least 1 entry

TST:
- extended input validation test for Hermite functions to cover the "at least 1 element in x" failure case

* ENH:
- made integer type hinting of Hermite functions more consistent
- added option to disable input validation of Hermite functions

* DOC:
- added complete check make command to `README`

* Issue #13 (7, 8)
ENH:
- made `x_center` a float-only in the internals of the Hermite functions

TST:
- moved tests for function interface of the Hermite functions to a dedicated test file that can be distinguished from the tests for the class interface

DEV:
- added make command for running a single test

* DEV:
- made names of test commands in Makefile more descriptive in terms of coverage
- updated GitHub CI and `README` accordingly

* ENH:
- finalised proper type handling of the parameters of the Hermite functions in `_func_interface` and `_approximations`
- removed checks for `x_center is None`  for the Hermite function that are now obsolete given that it's always a float

* Issue #13 (7, 9)
ENH:
- implemented a class interface to the Hermite functions that can compute them in the time/space and frequency domain with in principle arbitrary parameters

Issue #13 (8)
TST:
- added extensive tests for the new class interface to the Hermite functions

* Issue #13 (7, 9)
ENH:
- added static method `eval` to `HermiteFunctionBasis` and made this the central computation method where `HermiteFunctionsBasis` (especially `__call__`) wraps around

Issue #13 (8)
TST:
- made tests for `HermiteFunctionBasis` properly cover both the static method `eval` and the magic method `__call__` via the parametrised tests

* [19] Rechange definition of `alpha` in Hermite functions back to a denominator; made Hermite function definition only real for the time/space domain (#20)

* # Issue 19
MAINT:
- refactored all Hermite functions computations (except for the class interface) to handle the new old definition of the scaling parameter alpha for `x / alpha` rather than the former `alpha * x`

TST:
- regenerated symbolic reference files for Hermite functions to reflect the new definition of alpha
- reflected new definition of alpha in all Hermite function tests
- improved test variable naming of global constants
- made x-value computation of the orthonormality test of the Hermite functions based on an approximation of the fadeout points and the order to lower the computational load while ensuring that the x-values are always properly created in a dynamic fashion
- made Cramér's inequality check for Hermite functions checked with relative rather than absolute tolerance

* Issue #19
DEV:
- added auxiliary script that creates images of the equations used for documenting the package
- added a make command to update all the equation images via this script

DOC:
- incorporated the new definition of the scaling factor alpha of the Hermite functions (not `alpha * x` but now `alpha / x` again) in the documentation
- cleaned up documentation equation images and plots
- linked all new equations and plots properly in the `README` and docstrings

* BUG:
- updated fontsize of equations to ensure they are properly rendered in `README` (not pixely) ?

* BUG:
- made equation images in `README` not pixely ?

* BUG:
- made equation images in `README` not pixely (new resolution) ?

* BUG:
- made equation images in `README` not pixely pt.3 ?

* BUG:
- made equation images in `README` not pixely pt.4 ?

* BUG:
- made equation images in `README` not pixely pt.5 (transition to SVG) ?

* BUG:
- made equation images in `README` not pixely pt.5 (SVG with reduced fontsize) ?

* BUG:
- made equation images in `README` not pixely pt.6 (SVG with even more fontsize reduction) ?

* BUG:
- made equation images in `README` not pixely pt.7 (SVG with even more fontsize reduction) ?

* DOC:
- fully transitioned to `.svg` instead of `.png` based documentation
- added plain definition of Hermite functions and polynomials to script that creates/updates equation images

* BUG:
- fixed too small equations in `README` ?

* BUG:
- fixed too small font of equation images in `README`

* Issue #19
MAINT:
- adapted definition of the Hermite function class interface to make the time/space domain real-valued only

TST:
- adapted output dtypes of the Hermite class interface to the new definition that the time/space domain has to be real-valued only

DOC:
- added LaTeX equation images for the Hermite functions and their Fourier transforms

* Issue #19
DOC:
- added example for the Fourier transforms of the Hermite functions with the new definition of `alpha`
- made the Fourier transform of the Hermite functions part of the `README`
- updated all plots because an axis label size changed

* BUG:
- fixed typo in `README`

* ENH:
- made validation functions for Hermite function input public
- made validation input for `x_center` for Hermite functions more generic

* ENH:
- made typing of input validation of Hermite functions indicate `Any` instead of any specified types

* DOC:
- changed colors of example 4 plots

* DOC:
- removed Fourier transform of Hermite functions from examples and `README`

* ENH:
- made input validation of Hermite functions more flexible for the `x_center` by just handling it as an offset of a certain axis

* Issue #13 (7 - 9)
ENH:
- actually a downwards enhancement
- removed the direct Fourier transform of the Hermite function class interface
- adapted all implementations, documentations, and tests to this new stripped down version of the class interface
- included class interface into function interface test for the Hermite functions and therefore renamed the test file from `function_interface` to `implementations`
…tation of Hermite functions (#23)

* Issue #22
MAINT:
- dropped Cython implementation of Hermite functions (also `cython-lint` as a check in the CI)

* Issue #22
MAINT:
- removed `Cython` and `psutil` from the requirements

* Issue #22
MAINT:
- completely dropped Cython implementation of all Hermite functions in the whole package

Issue #23
MAINT:
- renamed package from `robust_hermite_ft` to `robust_fourier`

* BUG:
- raised coverage to 100% again by conducting type error check for the `jit` property of the Hermite function class interface

* BUG:
- fix `black` check crashing the CI because of missing empty line

* Issue #22
MAINT:
- relaxed upper bound on NumPy version (now also v2 will be allowed)

* BUG:
- fixed wrong hashtag in test file

* BUG:
- fixed NumPy v2 deprecated `trapz`
@MothNik MothNik added ✍️ documentation Improvements or additions to documentation 💪 enhancement New feature or request 📦 packaging Issues, additions, improvements related to packaging and building the package labels Aug 8, 2024
@MothNik MothNik added ✅❌ tests Everything related to maintaining or improving tests and coverage ⚡ Numba Issues, additions, improvements involving Numba 🏃 Speed Enhancements to improve the speed of computations/development 🦾 GitHub Action Everything related to GitHub actions 💥 breaks old funcionality Changes that break old functionality 🧰 Utilities Utilities for working on the package 🎁 Repository Changes regarding the repository as a whole labels Aug 8, 2024
@MothNik MothNik self-assigned this Aug 8, 2024
- fixed wrong `README`-file in `pyproject.toml`
Copy link
Owner Author

@MothNik MothNik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed on top of CI ✅

@MothNik MothNik merged commit f4ba9dd into main Aug 8, 2024
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
💥 breaks old funcionality Changes that break old functionality ✍️ documentation Improvements or additions to documentation 💪 enhancement New feature or request 🦾 GitHub Action Everything related to GitHub actions ⚡ Numba Issues, additions, improvements involving Numba 📦 packaging Issues, additions, improvements related to packaging and building the package 🎁 Repository Changes regarding the repository as a whole 🏃 Speed Enhancements to improve the speed of computations/development ✅❌ tests Everything related to maintaining or improving tests and coverage 🧰 Utilities Utilities for working on the package
Projects
None yet
1 participant