Software Open Access
Uieda, Leonardo; Oliveira Jr., Vanderlei C; Ferreira, André; Santos, Henrique Bueno; Caparica Jr., José F; Markall, Graham; Bentley, Martin; Almeida, Victor
Fatiando a Terra (Portuguese for Slicing the Earth) is an open-source Python toolkit for modeling and inversion in geophysics. It provides an easy and flexible way to perform and implement geophysical data analysis.
Official website and documentation: http://www.fatiando.org
DOI for this release: http://dx.doi.org/10.5281/zenodo.49087
Main changes to version 0.4 (see http://www.fatiando.org/changelog.html#version-0-4 for a complete list):
* **New** module to obtain a synthetic convolutional seismogram in
`fatiando.seismic.conv`. It can be given a depth model that will be
converted to a time model before generating the synthetic seismogram.
* **Refactor** `fatiando.inversion`. Completely redesigned classes make
implementing new inversions simpler. Subclassing `Misfit` is simpler, with
fewer parameters necessary. The usage of existing inversions has changed
little. A **new dependency** `future` was added to ease the transition to
support Python 3.
* **BUG FIX**: Tesseroid computations failed (silently) when tesseroids were
smaller than 1e-6 degrees on a side (~ 10 cm). Code now ignores these
tesseroids on input and warns the user about it. If a tesseroid becomes
smaller than this during adaptive discretization, the tesseroid effect will
be computed without division. The user will be warned when this happens.
* **New** reduction to the pole and upward continuation with FFT in
`fatiando.gravmag.transform`. The pole reduction allows both remanent and
induced magnetization. Upward continuation is more stable and faster than the
old space domain approach that was implemented.
* **IMPORTANT BUG FIX**: Fixed wrong ordering of nodes in
`fatiando.mesher.PointGrid`. The order of nodes had the same problem as the
regular grids. This was not caught
before because `PointGrid` didn't use `gridder.regular` to generate its
internal regular grid. This is an example of why reuse is a good thing! Tests
now should catch any future problems.
* **IMPORTANT BUG FIX**: `fatiando.gridder.regular` and many other places in
Fatiando where using the wrong convention for x, y dimensions.
x should point North and y East. Thus, a data matrix (regular grid) should
have x varying in the lines and y varying in the columns. This is **oposite**
what we had. This fix also changes the `shape` argument to be `(nx, ny)`
instead of `(ny, nx)`. **Users should be aware of this and double check
* More stable derivatives in `fatiando.gravamag.transform`. The horizontal
derivatives default to central finite-differences for greater stability. The
FFT based derivatives use a grid padding to avoid edge effects.
Thanks to [Matteo Niccoli](https://mycarta.wordpress.com/) for suggesting
* **Renamed** `fatiando.gravmag.fourier.ansig` to
* **Remove** `fatiando.gravmag.fourier` by moving relevant functions into
* **New** `seismic_wiggle` and `seismic_image` plotting functions for
seismic data in `fatiando.vis.mpl`
* **Remove** OpenMP parallelism from the `fatiando.gravmag` Cython coded
forward modeling. Caused the majority of our install problems and didn't
offer a great speed up anyway (< 2x). Can be replaced by `multiprocessing`
parallelism without the install problems
* Tesseroid forward modeling functions in `fatiando.gravmag.tesseroid` take
an optional `pool` argument. Use it to pass an open
`multiprocessing.Pool` for the function to use. Useful to avoid processes
spawning overhead when calling the forward modeling many times
* **BUG FIX**: Avoid weird numba error when tesseroid has zero volume. Let to
better sanitizing the input model. Tesseroids with dimensions < 1cm are
ignored because they have almost zero gravitational effect
* Ported the tesseroid forward modeling code from Cython to numba. This is
following the discussion on issue
[#169](https://github.com/fatiando/fatiando/issues/169) to make installing
less of burden by removing the compilation step. The numba code runs just as
fast. New functions support multiprocessing parallelism.
Thanks to new contributor Graham Markall for help with numba.
* **BUG FIX**: Replace `matplotlib.mlab.griddata` with
`scipy.interpolate.griddata` in `fatiando.gridder.interp` to avoid
incompatibilities when using `matplotlib > 1.3`
(at least in MacOS). Nearest neighbor interpolation method flagged as `nn`
was removed. Now it becomes only `nearest`. Also replace `matplotlib`
with `scipy` in `fatiando.mesher.PrismMesh.carvetopo`
* **New class** `fatiando.gravmag.basin2d.PolygonalBasinGravity` for 2D
gravity inversion for the relief of a basin.
* **Removed** package `fatiando.gui`. This was an experimental and temporary
package to explore interactivity.
* Moved `Moulder` to the **new module** `fatiando.gravmag.interactive`.
Completely rewrote the application. It now allows editing, moving, and
deleting polygons, persisting the application to a pickle file and reloading,