mtpy
provides tools for working with magnetotelluric (MT) data. MTpy-v2 is an updated version of mtpy. Many things have changed under the hood and usage is different from mtpy v1. The main difference is that there is a central data type that can hold transfer functions and then read/write to your modeling program, plot, and analyze your data. No longer will you need a directory of EDI files and then read them in everytime you want to do something. You only need to build a project once and save it to an MTH5 file and you are ready to go. All metadata uses mt-metadata.
> pip install mtpy-v2
> conda install -c conda-forge mtpy-v2
mtpy-v2
now include some tools to model and invert using simpeg
. If you want to use the Pardiso solver you will need to install it separately. See the https://github.com/simpeg/pydiso for more information. Below is a snippet from their recommendations.
The wrapper is written in cython and links to the mkl libraries dynamically. Therefore,
it needs to find the necessary header files associated with the MKL installation to compile.
The meson build backend uses pkg-config to identify the locations of the mkl header files
and library dynamic libraries. Most development installations of MKL should provide the
necessary pkg-config files for this. For example, conda users can be install the necessary
configuration information with mkl-devel
package that is available on the default channel,
conda-forge channel, the intel channel, or others, e.g.
conda install mkl-devel
If you have installed the configuration files to a non-standard location, you will need to set
PKG_CONFIG_PATH
to point to that location.
After the necessary MKL files are accessible, you should be able to install by running
pip install .
in the installation directory.
The main updates in mtpy-v2
are:
MTCollection
and MTData
objects which are the databases to hold a collection of transfer functions and manipulate them
to/from
data file types for modeling, rotations, interpolations, static shifts, etc.Typically MT data are collected as surveys and each station produces a single transfer function. These are provided in various formats like EDI, EMTF XML, etc.
One benefit of mtpy-v2 is reading all these in only needs to be done once and places them in a single MTH5 file.
from pathlib import Path
from mtpy import MTCollection
transfer_function_path = Path("/home/survey_00/transfer_functions")
# write directly to an MTH5 file and close when finished loading TFs
with MTCollection() as mc:
mc.open_collection(transfer_function_path.joinpath("tf_collection.h5"))
mc.add_tf(
mc.make_file_list(
transfer_function_path,
file_types=["edi", "xml", "j", "zmm", "zss", "avg"],
)
)
Now when you want to access your data again, you just need to open a single file.
mc = MTCollection()
mc.open_collection(r"/home/survey_00/transfer_functions/tf_collection.h5")
# plot station locations
station_locations = mc.plot_stations()
If you use this software in a scientific publication, we'd very much appreciate if you could cite the following papers:
Kirkby, A.L., Zhang, F., Peacock, J., Hassan, R., Duan, J., 2019. The MTPy software package for magnetotelluric data analysis and visualisation. Journal of Open Source Software, 4(37), 1358. https://doi.org/10.21105/joss.01358
Krieger, L., and Peacock, J., 2014. MTpy: A Python toolbox for magnetotellurics. Computers and Geosciences, 72, p167-175. https://doi.org/10.1016/j.cageo.2014.07.013
| Jared Peacock | peacock.jared@gmail.com
| Alison Kirkby | alkirkby@gmail.com
MTpy is licensed under the MIT license
The license agreement is contained in the repository and should be kept together with the code.