Software Open Access

Fatiando a Terra v0.4: Modeling and inversion in geophysics

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:

DOI for this release:

Main changes to version 0.4 (see 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
  their code.**
* 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]( for suggesting
  this fix.
* **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]( 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,


Files (682.9 kB)
Name Size
682.9 kB Download
All versions This version
Views 3030
Downloads 33
Data volume 2.0 MB2.0 MB
Unique views 2929
Unique downloads 33


Cite as