-
Notifications
You must be signed in to change notification settings - Fork 22
lib-dlf #106
Description
Create a repo lib-dlf
Description
Create a library that stores digital linear filters (DLF). The filters should follow some clear rules (standardized), so it is easy to write functions that can load any of the filters.
Motivation
Since the creation of fdesign and accompanying paper there is an increasing number of filters (in the end, there are infinite possible filters even just for one particular application, and there is a huge number of applications). Examples are the 2001 pt filter for GPR data of the fdesign paper, recent short filters for TEM with very resistive materials, filters for Laplace transforms, filters for the Q-kernel, filters for Laplace-to-frequency domain, etc etc. Including them all in empymod does not make sense. The package could grow huge, filled with numbers that are not used by 99.9% of the users. Already now 4515 lines of code out of 7910 lines of code of empymod are from the filter module. Including, e.g., the 2001 pt GPR filter would add another 6003 lines. And as mentioned before, there is an infinite number of filters. A dedicated filter library seems to make more sense.
TODO
- Create the repo, add all existing filters.
- Write a detailed explanation how anyone can contribute filters to the library.
- Create functions in
empymodso any filter inlib-dlfwould automatically be fetched from GitHub and stored locally (potentially with pooch). - Create detailed instructions how any other package than
empymodcould do the same.
Repo specs
- Sorted by categories (Hankel, Fourier, Laplace, ...).
- Each filter is a folder in one of these categories.
Filter specs
- Filter name should be short but descriptive: First author, nr of points, year, at least (e.g.
key_201_2009) - New folder within category with filter name
- Each file just contains one column of values, nr of points in total
- Each filename should be identical to the filter name, ending with its type (e.g.,
_sinor_j0) followed by.txt. - Each filter needs a README
- Each filter needs a LICENSE
README specs
- Short description (what was it designed for, what was it used for, hence where can we expect it to work)
- A DOI (e.g. Zenodo) or a reference, something that can be cited.
- If possible the instructions how the filter was reproduced; could also be provided as additional file (
filtername_create.{py;ipynb;m;f90;c;...})