Roadmap¶
A collection of ideas of what could be added or improved in empymod. Please get in touch if you would like to tackle one of these problems!
- Additional modelling routines
tdem
(TEM) [empymod#8]: Issues that have to be addressed: ramp waveform, windowing, loop integration, zero-offset (coincident loop).- in-loop
- coincident loop
- …
- Ramp waveform [empymod#7]
- Arbitrary waveform [empymod#7]
- Improve the GPR-routine [empymod#9]
- Load and save functions to easily store and load model information
(resistivity model, acquisition parameters, and modelling parameters)
together with the modelling data (using
pickle
orshelve
).
- Inversion [empyscripts#1]: Inversion routines, preferably a selection of different ones.
- Additional (semi-)analytical functions (where possible)
- Complete full-space (electric and magnetic source and receiver); space-time domain
- Extend diffusive half-space solution to magnetic sources and receivers; space-frequency and space-time domains
- Complete half-space
- Fourier transform
- Include the method outlined by Mulder et al., 2008, Geophysics (piecewise-cubic Hermite interpolation with a FFT).
- Change
fft
to use discrete sine/cosine transforms instead, as all other Fourier transforms - If previous step is successful, clean up the internal decisions
(
utils.check_time
) when to use sine/cosine transform (not consistent at the moment, some choice only exists withffht
impulse responses,fqwe
andfftlog
use sine for impulse, and all three use sine for step-on responses and cosine for step-off responses)
- Hankel transform
- Add the
fht
-module from FFTLog for the Hankel transform.
- Add the
- Extend examples (example-notebooks)
- Add different methods (e.g. DC)
- Reproduce published results
- A
cython
,numba
, or pure C/C++ implementation of thekernel
and thetransform
modules. Maybe not worth it, as it may improve speed, but decrease accessibility. Both at the same time would be nice. A fast C/C++-version for calculations (inversions), and a Python-version to tinker with for interested folks. (Probably combined with default parallelisation, removing thenumexpr
variant.) - Abstraction of the code.
- GUI.
- Add a benchmark suite, e.g. http://asv.readthedocs.io, in addition to the testing suite.
- Add some clever checks, e.g. as in Key (2012): abort loops if the field is strongly attenuated (more relevant if once an inversion is implemented).
- Move empymod from channel ‘prisae’ to ‘conda-forge’ (pros/cons?).