Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit

When using the "file" field type, PyPI putting the entire contents of
the file into the license field and mislabeling it as MIT. Replace it
with just the string for the license name and not the contents of the

Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Processing and modelling gravity and magnetic data

Documentation (latest) β€’ Documentation (main branch) β€’ Contributing β€’ Contact

Part of the Fatiando a Terra project

Latest version on PyPI Latest version on conda-forge Test coverage status Compatible Python versions. Digital Object Identifier for the Zenodo archive


Harmonica is a Python library for processing and modeling gravity and magnetic data. It includes common processing steps, like calculation of Bouguer and terrain corrections, reduction to the pole, upward continuation, equivalent sources, and more. There are forward modeling functions for basic geometric shapes, like point sources, prisms and tesseroids. The inversion methods are implemented as classes with an interface inspired by scikit-learn (like Verde).

Project goals

These are the long-term goals for Harmonica:

  • Efficient, well designed, and fully tested code for gravity and magnetic data.
  • Cover the entire data life-cycle: from raw data to 3D Earth model.
  • Focus on best-practices to discourage misuse of methods, particularly inversion.
  • Easily extended code to enable research on the development of new methods.

See the GitHub milestones for short-term goals.

Things that will not be covered in Harmonica:

  • Multi-physics partial differential equation solvers. Use SimPEG or PyGIMLi instead.
  • Generic grid processing methods (like horizontal derivatives and FFT). We'll rely on Verde, xrft and xarray for those.
  • Data visualization.
  • GUI applications.

Project status

🚨 Harmonica is in early stages of design and implementation. 🚨

We welcome any feedback and ideas! Let us know by submitting issues on GitHub or joining our community.

Getting involved

πŸ—¨οΈ Contact us: Find out more about how to reach us at

πŸ‘©πŸΎβ€πŸ’» Contributing to project development: Please read our Contributing Guide to see how you can help and give feedback.

πŸ§‘πŸΎβ€πŸ€β€πŸ§‘πŸΌ Code of conduct: This project is released with a Code of Conduct. By participating in this project 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, that you aren't skilled enough to contribute. We assure you that the little voice in your head is wrong. Most importantly, there are many valuable ways to contribute besides writing code.

This disclaimer was adapted from the MetPy project.


This is free software: you can redistribute it and/or modify it under the terms of the BSD 3-clause License. A copy of this license is provided in LICENSE.txt.