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

[21, 22] Remaned package to robust_fourier; dropped Cython implementation of Hermite functions #23

Merged
merged 8 commits into from
Aug 8, 2024

Conversation

MothNik
Copy link
Owner

@MothNik MothNik commented Aug 8, 2024

This pull request

💥 Breaking Changes

  • renames the package to robust_fourier
  • drops the Cython implementation of the Hermite functions (now hermite_function_basis and HermiteFunctionBasis solely rely on NumPy and Numba (default if available))
  • all files (documentation, core, tests) were refactored accordingly

Implementes the changes in #21 and #22

MAINT:
- dropped Cython implementation of Hermite functions (also `cython-lint` as a check in the CI)
MAINT:
- removed `Cython` and `psutil` from the requirements
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`
@MothNik MothNik added ✍️ documentation Improvements or additions to documentation ⚡ 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 🎁 Repository Changes regarding the repository as a whole labels Aug 8, 2024
@MothNik MothNik added this to the First Beta Release milestone Aug 8, 2024
@MothNik MothNik self-assigned this Aug 8, 2024
- raised coverage to 100% again by conducting type error check for the `jit` property of the Hermite function class interface
- fix `black` check crashing the CI because of missing empty line
MAINT:
- relaxed upper bound on NumPy version (now also v2 will be allowed)
- fixed wrong hashtag in test file
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 ✅

- fixed NumPy v2 deprecated `trapz`
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 changes again ✅

@MothNik MothNik merged commit 8e7e8fc into develop Aug 8, 2024
4 checks passed
MothNik added a commit that referenced this pull request Aug 8, 2024
* BLD:
- first test of a GitHub CI for testing

* FIX:
- fixed wrong pip install and python versions in CI ?

* FIX:
- fixed loading of test files that do not contain test but dependencies that cannot be loaded ?

* BUG:
- 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

* TST:
- test whether Cython build can be removed from GitHub actions for testing ?

* TST:
- reverted removal of Cython for testing

* PKG:
- 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

* BLD:
- changed CI pipeline target branches

* BLD:
- augmented CI checks with format, type, and lint checks

* BUG:
- fixed CI pipeline wrong folder include ?

BLD:
- added isort check

* BUG:
- fixed broken `isort` usage in CI?

* FIX:
- fixed missing `isort` dependency in CI?
- fixed wrong import sort order in Cython Hermite functions

* FIX:
- fixed missing `colorama` dependency for `isort` in CI ?

* FIX:
- type-ignored Cython import that was not properly resolved by `pyright` ?

* FIX:
- fixed missing import of Cython module for `pyright`  in CI ?

* FIX:
- again trying to resolve the wrong import error of Cython module by `pyright` in CI ?

* FIX:
- fixed wrong `pyright` Cython import error of Cython import in CI

* BLD:
- removed pushes to `develop` from the GitHub CI actions

* BLD:
- added missing comma to the name of the GitHub CI action

* [10 develop] Add coverage to CI pipeline (#11)

* 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

* [Pre-16] Add Makefile (#17)

* 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`

* [13-2] Implement class interface to Hermite functions (#18)

* 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`

* [21, 22] Remaned package to `robust_fourier`; dropped Cython implementation 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`

* BUG:
- fixed wrong `README`-file in `pyproject.toml`
MothNik added a commit that referenced this pull request Aug 13, 2024
…26)

* BLD:
- first test of a GitHub CI for testing

* FIX:
- fixed wrong pip install and python versions in CI ?

* FIX:
- fixed loading of test files that do not contain test but dependencies that cannot be loaded ?

* BUG:
- 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

* TST:
- test whether Cython build can be removed from GitHub actions for testing ?

* TST:
- reverted removal of Cython for testing

* PKG:
- 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

* BLD:
- changed CI pipeline target branches

* BLD:
- augmented CI checks with format, type, and lint checks

* BUG:
- fixed CI pipeline wrong folder include ?

BLD:
- added isort check

* BUG:
- fixed broken `isort` usage in CI?

* FIX:
- fixed missing `isort` dependency in CI?
- fixed wrong import sort order in Cython Hermite functions

* FIX:
- fixed missing `colorama` dependency for `isort` in CI ?

* FIX:
- type-ignored Cython import that was not properly resolved by `pyright` ?

* FIX:
- fixed missing import of Cython module for `pyright`  in CI ?

* FIX:
- again trying to resolve the wrong import error of Cython module by `pyright` in CI ?

* FIX:
- fixed wrong `pyright` Cython import error of Cython import in CI

* BLD:
- removed pushes to `develop` from the GitHub CI actions

* BLD:
- added missing comma to the name of the GitHub CI action

* [10 develop] Add coverage to CI pipeline (#11)

* 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

* [Pre-16] Add Makefile (#17)

* 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`

* [13-2] Implement class interface to Hermite functions (#18)

* 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`

* [21, 22] Remaned package to `robust_fourier`; dropped Cython implementation 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`

* BUG:
- fixed wrong `README`-file in `pyproject.toml`
MothNik added a commit that referenced this pull request Sep 4, 2024
* BLD:
- first test of a GitHub CI for testing

* FIX:
- fixed wrong pip install and python versions in CI ?

* FIX:
- fixed loading of test files that do not contain test but dependencies that cannot be loaded ?

* BUG:
- 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

* TST:
- test whether Cython build can be removed from GitHub actions for testing ?

* TST:
- reverted removal of Cython for testing

* PKG:
- 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

* BLD:
- changed CI pipeline target branches

* BLD:
- augmented CI checks with format, type, and lint checks

* BUG:
- fixed CI pipeline wrong folder include ?

BLD:
- added isort check

* BUG:
- fixed broken `isort` usage in CI?

* FIX:
- fixed missing `isort` dependency in CI?
- fixed wrong import sort order in Cython Hermite functions

* FIX:
- fixed missing `colorama` dependency for `isort` in CI ?

* FIX:
- type-ignored Cython import that was not properly resolved by `pyright` ?

* FIX:
- fixed missing import of Cython module for `pyright`  in CI ?

* FIX:
- again trying to resolve the wrong import error of Cython module by `pyright` in CI ?

* FIX:
- fixed wrong `pyright` Cython import error of Cython import in CI

* BLD:
- removed pushes to `develop` from the GitHub CI actions

* BLD:
- added missing comma to the name of the GitHub CI action

* [10 develop] Add coverage to CI pipeline (#11)

* 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

* [Pre-16] Add Makefile (#17)

* 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`

* [13-2] Implement class interface to Hermite functions (#18)

* 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`

* [21, 22] Remaned package to `robust_fourier`; dropped Cython implementation 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`

* BUG:
- fixed wrong `README`-file in `pyproject.toml`

* [25] Add Chebyshev basis (#27)

* Issue #25
MAINT:
- made `_validate` that was part of the Hermite functions a part of the general `_utils` to enable easy generalization

* Issue #25
MAINT:
- refactored the normalisation of the x-values of the Hermite functions to be part of the general `_utils._x_preprocessing` to make them generally available

TST:
- made tests for `_utils._validate` and `_utils._x_preprocessing` standalone tests

DOC:
- improved docstrings of the Hermite functions

* DEV:
- added make command for selected parallelized tests to `Makefile`

Issue #25
TST:
- renamed test files for Hermite functions to be less repetitive in terms of their naming to enable similar structures in the future

* Issue 25
ENH:
- added Chebyshev polynomial implementations in NumPy and Numba

TST:
- added working version of tests for the Chebyshev polynomials

* Issue #25
TST:
- added tests for correct handling of different inputs of the Chebyshev polynomials

* Issue #25
ENH:
- implemented class interface to Chebyshev polynomials

TST:
- added tests for class interface to Chebyshev polynomials

DEV:
- fixed `pycodestyle` not handling `overload`s properly

* Issue #25
DOC:
- added tiny examples and equations for the Chebyshev polynomials and updated the `README`

* MAINT:
- made `numba_helpers` private
- fixed wrong import of the package itself in `numba_funcs` of the Chebyshev polynomials
- `type: ignore`d kind assignments in Chebyshev polynomial class tests
- fixed missing comma in `Makefile` print statement

* Issue #25
BUG:
- fixed wrong type hint in `kind` property of Chebyshev polynomial class

* [28] Row-wise basis evaluation (#29)

* Issue #28
ENH:
- switched from column-wise to row-wise computation of the Hermite function and Chebyshev polynomial basis to enhance the computation speed

* Issue #28
DOC:
- added performance test for Chebyshev polynomials
- updated performance test for Hermite functions

* [30] Rename basis function function interface to `vander` (#32)

* Issue #30
ENH:
- renamed Hermite function basis to `vander` to be more consistent with NumPy

* Issue #30
ENH:
- renamed Chebyshev basis to `vander` to be more consistent with NumPy

* [33] Find Hermite Tail Approximations (#34)

* DEV:
- made LaTeX equation writer the first script in the auxiliary scripts to keep a logical order

* ENH:
- made `dtype`-conversion for the x-value checking of the Hermite functions and the Chebyshev polynomials more generic
- renamed x-value checking to grid point checking and made names more generic to handle cases when other values that are not x need to be checked

* Issue #33
MAINT:
- restructured the use of the approximation functions for the Hermite functions
- it is now recommended to use the `hermite_approx` module that was exposed
- the approximation functions within there now have way more descriptive names that avoid confusion (between x and y which is no longer written in the back of the name)
- cleaned up auxiliary script for largest root pre-computation for the Hermite functions

ENH:
- added y-position of largest extremum of Hermite functions to the auxiliary script that already pre-computes the respective x-position
- added an approximation function for the y- and the combined x-and y-position of the largest extremum of the Hermite functions
- added an auxiliary script that pre-computes a CRUDE Gaussian peak fit for the outermost oscillations of the Hermite functions
- implemented a class-based function to approximate the outermost Hermite function oscillations with 2 Gaussian peaks

DOC:
- updated `README` with new approximations

* Issue #33
ENH:
- added a convenience function to get the x-solution of the Gaussian tail approximation
- updated example 04 and `README` with this new function

* DOC:
- slightly shortened Hermite function approximation example in the `README`

* DEV:
- removed `TODO`s

* Issue #33
TST:
- added parametrized test for the Gaussian approximation of the outermost oscillations of the Hermite functions

* BUG:
- check why `pyright` fails in CI for unrelated file ?
- hoping that `mypy` will give a better error message

* BUG:
- check if changing overload order of Chebyshev polynomial function interface fixed `pyright problem` ?

* BUG:
- fixed overload of Chebyshev polynomial Vandermonde function interface to avoid `pyright` from failing in the CI (`kind` is now a keyword-only argument)

* DEV:
- made auxiliary scripts parse their own script name automatically to the created files
- fixed minor errors in their descriptions

* DOC:
- fixed typo in comment
@MothNik MothNik deleted the 21-and-22-rename-package-remove-cython branch September 4, 2024 22:13
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 🦾 GitHub Action Everything related to GitHub actions ⚡ Numba Issues, additions, improvements involving Numba 🎁 Repository Changes regarding the repository as a whole 🏃 Speed Enhancements to improve the speed of computations/development
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant