My main topic of research is the development of methods to solve inverse problems in geophysics. For example, estimating density anomalies in the subsurface from measured disturbances in gravity or the direction of magnetization of a buried structure from the anomalies that it produces in the Earth's magnetic field. Most methods that I develop are related to gravity and magnetics but I'm also interested in seismology and geodesy. Central to all of my projects is the open-source software upon which I implement the new methods.
I have an open by default policy for my research and teaching output. Pretty much everything I do is freely available online, usually on Github.
These are funded research projects in which I participate as PI or co-PI:
As a geophysicist, my ultimate goal is to infer the physical properties of the inner Earth and its processes from surface observations. This is an ill-posed inverse problem, to which a solution might not exist or be non-unique and unstable. I develop methods for solving different kinds of inverse problems using several sets of constraints to overcome the instability of the solution.
A key component for solving an inverse problem is first solve the "forward problem". This is jargon for predicting data given a set of model parameters. One of the first research problems on which I worked was developing a method for forward modeling gravitational fields caused by a tesseroid (a spherical prism). I'm still doing work related to this theme.
There is no turning back from the machine learning frenzy that has taken over the world. Geoscientists have been doing similar things for decades but with different names and objectives. One of these things is called the "equivalent layer technique" in gravity and magnetics. Similar methods in different fields have many different names, for example radial basis functions or Green's functions interpolation. All of these methods are linear regressions in which we fit a linear model to some data and then use the model to predict new data. The difference with standard machine learning is that the linear model we use has physical meaning. For gravity data, the model is the gravitational attraction of point sources, whereas for GPS data, the model is the elastic deformation of medium. Given the many similarities, I have been very interested in applying other machine learning techniques, like model selection, to these geophysical problems.
Programming is a requirement for method development. By definition, there is no existing software that implements your new method. I program mostly in Python but I'm also proficient in C. All of my software contributions are open-source and hosted on Github.
I'm the creator and/or maintainer of the following projects:
Fatiando is a Python library for modeling and inversion in geophysics. The name is Portuguese for "slicing the Earth" (like a loaf of bread). I started development of Fatiando in 2010 while working on my Masters degree. I now use it regularly for my research and also for much of my teaching material. My Geophysics classes at UERJ used Fatiando and Jupyter notebooks to provide students with interactive examples and synthetic data. Most recent papers published by the PINGA lab use it in some way. Fatiando was featured in the 89th Boletim SBGf (PDF in Portuguese).
Recently, I started work to convert Fatiando into several independent packages:
Command-line programs for gravity forward modeling. This was my first software project. I started working on Tesseroids in 2008 for my Bachelor's thesis project and continued in collaboration with Professor Carla Braitenberg from the University of Trieste. The paper "Tesseroids: forward modeling gravitational fields in spherical coordinates" describes the algorithms behind version 1.2.0 of the software, which ended up becoming a chapter of my PhD thesis.
A modern Python interface for the Generic Mapping Tools. I started building PyGMT (formerly GMT/Python) in 2017 as part of my postdoc at the University of Hawaii with Paul Wessel (the co-creator and main developer of GMT). Work is still in early stages but there is a minimum working example on the website. PyGMT was used to generate the bathymetry and topography banner images for this website.