Releases: emsig/empymod
Benchmarked with asv
-
Benchmarks:
empymod
has now a benchmark suite, see empymod/asv. -
Fixed a bug in
bipole
for time-domain responses with several receivers or sources with different depths (Simply failed, as wrong dimension was provided totem
). -
Small improvements:
- Various simplifications or cleaning of the code base.
- Small change (for speed) in check if kernels are empty in
transform.dlf
andtransform.qwe
.
Load/save filters in plain text
-
New routines in
empymod.filters.DigitalFilter
: Filters can now be saved to or loaded from pure ascii-files. -
Filters and inversion result from
empymod.scripts.fdesign
are now by default saved in plain text. The filters with their internal routine, the inversion result withnp.savetxt
. Compressed saving can be achieved by giving a name with a '.gz'-ending. -
Change in
empymod.utils
:- Renamed
_min_param
to_min_res
. - Anisotropy
aniso
is no longer directly checked for its minimum value. Instead, res*aniso**2, hence vertical resistivity, is checked with_min_res
, and anisotropy is subsequently re-calculated from it. - The parameters
epermH
,epermV
,mpermH
, andmpermV
can now be set to 0 (or any positive value) and do not depend on_min_param
.
- Renamed
-
printinfo
: Generally improved; prints now MKL-info (if available) independently ofnumexpr
. -
Simplification of
kernel.reflections
through re-arranging. -
Bug fixes
-
Version of re-submission of the DLF article to geophysics.
Move empyscripts into empymod.scripts
Merge empyscripts
into empymod
under empymod.scripts
.
-
Clear separation between mandatory and optional imports:
-
Mandatory:
numpy
scipy
-
Optional:
numexpr
(forempymod.kernel
)matplotlib
(forempymod.scripts.fdesign
)IPython
(forempymod.scripts.printinfo
)
-
-
Broaden namespace of
empymod
. All public functions from the various modules and the modules fromempymod.scripts
are now available underempymod
directly.
Speed improvements for QUAD/QWE
These changes should make calculations using QWE
and QUAD
for the Hankel transform for cases which do not require all kernels faster; sometimes as much as twice as fast. However, it might make calculations which do require all kernels a tad slower, as more checks had to be included. (Related to [empymod#11]; basically including for QWE
and QUAD
what was included for DLF
in version 1.6.0.)
-
transform
:-
dlf
:- Improved by avoiding unnecessary multiplications/summations for empty kernels and applying the angle factor only if it is not 1.
- Empty/unused kernels can now be input as
None
, e.g.signal=(PJ0, None, None)
. factAng
is new optional for the Hankel transform, as isab
.
-
hqwe
: Avoids unnecessary calculations for zero kernels, improving speed for these cases. -
hquad
,quad
: Avoids unnecessary calculations for zero kernels, improving speed for these cases.
-
-
kernel
:- Simplify
wavenumber
- Simplify
angle_factor
- Simplify
Primary/secondary field
-
Add the possibility to calculate secondary fields only (excluding the direct field) by passing the argument
xdirect=None
. The completexdirect
-signature is now (only affects calculation if src and rec are in the same layer):- If True, direct field is calculated analytically in the frequency domain.
- If False, direct field is calculated in the wavenumber domain.
- If None, direct field is excluded from the calculation, and only reflected
fields are returned (secondary field).
-
Bugfix in
model.analytical
forab=[36, 63]
(zeroes) [#16].
More DLF improvements
This release is not completely backwards compatible for the main modelling routines in empymod.model
, but almost. Read below to see which functions are affected.
-
Improved Hankel DLF [empymod#11].
empymod.kernel.wavenumber
always returns three kernels,PJ0
,PJ1
, andPJ0b
. The first one is angle-independent, the latter two depend on the angle. Now, depending of what source-receiver configuration is chosen, some of these might be zero. If-statements were now included to avoid the calculation of the DLF, interpolation, and reshaping for 0-kernels, which improves speed for these cases. -
Unified DLF arguments [empymod#10].
These changes are backwards compatible for all main modelling routines in
empymod.model
. However, they are not backwards compatible for the following routines:empymod.model.fem
(removeduse_spline
),empymod.transform.fht
(removeduse_spline
),empymod.transform.hqwe
(removeduse_spline
),empymod.transform.quad
(removeduse_spline
),empymod.transform.dlf
(lagged
,splined
=>pts_per_dec
),empymod.utils.check_opt
(no longer returnsuse_spline
),empymod.utils.check_hankel
(changes inpts_per_dec
), andempymod.utils.check_time
(changes inpts_per_dec
).
The function
empymod.utils.spline_backwards_hankel
can be used for backwards compatibility.Now the Hankel and Fourier DLF have the same behaviour for
pts_per_dec
:pts_per_dec = 0
: Standard DLF,pts_per_dec < 0
: Lagged Convolution DLF, andpts_per_dec > 0
: Splined DLF.
There is one exception which is not backwards compatible: Before, if
opt=None
andhtarg={pts_per_dec: != 0}
, thepts_per_dec
was not used for the FHT and the QWE. New, this will be used according to the above definitions. -
Bugfix in
model.wavenumber
forab=36
(zeroes).
Improved DLF
-
DLF improvements:
-
Digital linear filter (DLF) method for the Fourier transform can now be carried out without spline, providing 0 for
pts_per_dec
(or any integer smaller than 1). -
Combine kernel from
fht
andffht
intodlf
, hence separate DLF from other calculations, as is done with QWE (qwe
forhqwe
andfqwe
). -
Bug fix regarding
transform.get_spline_values
; a DLF withpts_per_dec
can now be shorter then the corresponding filter.
-
Improved docs
-
Documentation:
-
Simplifications: avoid duplication as much as possible between the website, the manual, and the README.
- Website has now only Features and Installation in full, all other
information comes in the form of links. README
has only information in the form of links.- Manual contains the
README
, and is basically the main document for all
information.
- Website has now only Features and Installation in full, all other
-
Improvements: Change some remaining
md
-syntax torst
-syntax. -
FHT -> DLF: replace FHT as much as possible, without breaking backwards
compatibility.
-
Hankel filter wer_201_2018
-
Minimum parameter values can now be set and verified with
utils.set_minimum
andutils.get_minimum
. -
New Hankel filter
wer_201_2018
. -
opt=parallel
has no effect ifnumexpr
is not built against Intel's VML.
(Useimport numexpr; numexpr.use_vml
to see if yournumexpr
uses VML.) -
Bug fixes
-
Version of manuscript submission to geophysics for the DLF article.
TE/TM split
[This was meant to be 1.4.3, but due to a setup/pypi/anaconda-issue I had to push it to 1.4.4; so there isn't really a version 1.4.3.]
-
Add TE/TM split to diffusive ee-halfspace solution.
-
Improve
kernel.wavenumber
for fullspaces. -
Extended
fQWE
andfftlog
to be able to use the cosine-transform. Now the cosine-transform with the real-part frequency response is used internally if a switch-off response (signal=-1
) is required, rather than calculating the switch-on response (with sine-transform and imaginary-part frequency response) and subtracting it from the DC value. -
Bug fixes