MT Explore is a cartopy and mtpy based utility for viewing and cleaning Magnetotelluric data

k-a-mendoza, updated 🕥 2023-03-05 21:35:31

License: GPL v3 PyPI - Downloads



MT-Explore is a GUI meant to assist in the compilation of magnetotelluric datasets for inversion purposes.


MT-Explore would not be possible without the hard and extensive work by the Cartopy and MtPy team. If you deal with location plotting or Magnetotelluric data, I suggest you check out their packages:



MT-Explore also leverages numpy, pandas, matplotlib, and tk.


Because of the way things are, for version 0.0.4, you'll have to do a 2 part install, one with anaconda and one with pip. First, install cartopy using anaconda: bash conda install cartopy

Then use the package manager pip to install MT-Explore.

bash pip install mtexplore


First, create a database object. Your database object must implement a get_df() and a get_record() method with the following specifications ```python def get_record(self,project : str,station : str,type : str = 'mtpy'): """ returns an mtpy object given a project and station string code


project : str

    the desired project code of the queried station

station : str
    the desired station string

type : str
    the type of object to yield. mt-explore will assign this variable 'mtpy', 
    so make sure any interface that depends on the ExampleDatabaseInterface
    can take these arguments

mtpy_obj : MT
    an mtpy.core.MT object representing the project and station desired


def get_df(self): """ returns a pandas dataframe representation of the databases's station data

dataframe : pd.DataFrame
    a pandas dataframe with columns:
        station, project, latitude, longitude
    must also have a sensible .index



Then, after creating your object, import an Mt_Ex_Main() object and feed it your database object.

```python from mtexplore import Mt_Ex_Main

database = MyDatabaseObject('TA Stations/ks_ta_stations_cleaned.csv') main_app = Mt_Ex_Main() main_app.connect_database(database)


Thats it!

You should see a window pop up with a map view and associated phase/apparent resistivity plot. It is possible to interact with the data using the mouse or specific keys. For a full list of commands press 'h'

Mt Explore is meant to help identify stations with strategic location and data quality importance to your study area. Ultimately, stations are either included, or excluded from the dataset. To include stations, press 'i'. Similarly stations are excluded by pressing 'o'.

The include/exclude metadata is exported as a pandas dataframe via the load-save commands in .csv format for later data manipulation. This exported dataframe does not contain the transfer function information from the .edi files, but only the location on disk for each station.

Known Issues

There are a few cosmetic issues that I probably wont fix as they dont impact the usability of MT-Explore. However, if you know how to fix them feel free to submit a pull request.

By overriding some of the key bindings of Matplotlib, a few unexpected plot and map behaviors were introduced. If things mess up just kill the plot window and instantiate the Main object again.

tick locators are temporarily broken. this shouldn't impact usability however.


Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.




If you use this package, please cite mtpy and cartopy. Much of the functionality of this package comes from their work.

At this time I dont ask that you use an official citation of MT-Explore, but if it is helpful in class projects, publications, training, surveys, or any other endeavor, I would appreciate an acknowledgement. Something like Mendoza, K; Mt-Explore 2019 could be appropriate.


fix resizing of map. current bounds are limited by data availability and result in resizing issues

opened on 2020-07-31 15:10:23 by k-a-mendoza None

add a plot strike capability

opened on 2020-07-31 15:09:44 by k-a-mendoza None
Kevin Mendoza

Hi. I'm a PhD Geophysics candidate at the University of Utah.

GitHub Repository