Python solutions for geophysical problems

Python packages for Geophysics data processing, modeling, and more.

Carefully designed and trustworthy
software that strictly follow software development best practices.

Extensively tested
automatically every time a change is made to the code base.

Comprehensive documentation
including tutorials, examples, theory, and real data applications.

Open development
through Github allows anyone to participate and contribute.

The Libraries

We maintain several Python libraries which are in various stages of development: from early design to polished and published products. We’ll also be adding new projects to our toolkit in the future (see how you can get involved).

Spatial data processing and interpolation (gridding) using Green's functions (or radial basis functions) with a machine learning inspired interface.

Processing and modeling gravity and magnetic data, like terrain correction, upward continuation, equivalent layers, 3D inversion, and more.

Manages the download of sample data files over HTTP from a server and storing them in a local directory. Used by our other libraries.

Download geophysical models and datasets (PREM, CRUST1.0, ETOPO1) and load them into Python. Relies on Pooch to manage the downloads.

Support Fatiando

All Fatiando projects are made by scientists and volunteers who generously donate their time and attention. Here are some of the ways in which you can help support the project and give back to the community:

Join the community
Get involved in our projects and help shape their future. See below how you can participate in the conversation and make contributions.

Spread the word
Share links in social media, publish your analysis code that uses Fatiando, include our logo in talks and posters (sources in fatiando/logo), etc.

Cite the projects
Citations help us justify the effort that goes into building and maintaining this project. There are CITATION.rst files in each project explaining how to cite it (and also a page in the documentation).

Contacting Us

Most discussions happen on Github. Open an issue to report bugs and request features. Leave a comment on any open issue or pull request to join the conversation.

Hop on to our chat room on Gitter where you can ask questions, leave comments, and reach out to users and developers.

Join our Google Groups mailing list to ask questions and get announcements about the project. When you sign up, please remember to choose an email delivery option (the default is "no emails").

Follow us on Twitter @fatiandoaterra where we post occasional updates about the project.

Getting Involved

Fatiando is a community-developed project, so it’s people like you that make it useful and successful. There are many ways to contribute:

Have a look at our Contributing Guide to see how you can get involved. This and other guides (for project maintenance, etc.) can be found in the fatiando/contributing repository.

Code of Conduct

All Fatiando projects are released with a Contributor Code of Conduct. By participating in any of these projects you agree to abide by its terms.

Imposter Syndrome Disclaimer

We want your help. No, really.

There may be a little voice inside your head that is telling you that you’re not ready to be an open source contributor; that your skills aren’t nearly good enough to contribute. What could you possibly offer?

We assure you that the little voice in your head is wrong.

Being a contributor doesn’t just mean writing code. Equality important contributions include: writing or proof-reading documentation, suggesting or implementing tests, or even giving feedback about the project (including giving feedback about the contribution process). If you’re coming to the project with fresh eyes, you might see the errors and assumptions that seasoned contributors have glossed over. If you can write any code at all, you can contribute code to open source. We are constantly trying out new skills, making mistakes, and learning from those mistakes. That’s how we all improve and we are happy to help others learn.

Adapted from the MetPy project.

Looking for the fatiando package?

It still exists! While development of the fatiando library has stopped (in favor of our new libraries), you can still view the documentation for the last release (v0.5) and the source code archive on Github. The library will remain archived and usable for the foreseeable future.

To get a sense for the reasoning behind the choice to abandon fatiando, please read this blog post. Quoting from a section from the post:

Back [when we started Fatiando], there were very few Python geophysical modeling libraries. A decade later, the ecosystem has expanded. The five currently on going projects of which I’m aware are:

  • PyGMI: GUI + library for 3D modeling of gravity and magnetic data.

  • SimPEG: Forward modeling and inversion library based on the finite volume method.

  • pyGIMLi: Forward modeling and inversion library based on the finite element and finite volume methods.

  • Bruges: Modeling and processing for seismic and petrophysics.

  • Pyrocko: A collection of tools and libraries, mostly for seismology.

The two projects that are most similar to us (SimPEG and pyGIMLi) implement flexible partial differential equation solvers that they use to run all forward modeling calculations. This makes a lot of sense because it gives them a unified framework to model most geophysical methods. It is the most sensible approach to build joint inversions of multiple geophysical datasets. However, there are some inverse problems that don’t fit this paradigm, like inverting Moho relief from gravity data and some non-conventional inversion algorithms […]


The niche I see for Fatiando is in gravity and magnetic methods, particularly using [analytical solutions for forward modeling and non-PDE based inversions]. The processing functions are an important feature because there are hardly any open-source alternatives out there to commercial software like Oasis Montaj and Intrepid.


The best way forward for Fatiando that I can see, is to become an ecosystem of specialized tools and libraries, rather than a single Python package. Having things in separate libraries allows us to better indicate what is robust and professional and what is experimental or meant as a teaching tool.