Package Imaging

Penetration Depth

Description:
For a given input edi file, plot the Penetration Depth vs all the periods (1/freq). Or input a directory of edi multi-files (*.edi), the program will loop to plot the penetration depth profile for each edi.

Author: fei.zhang@ga.gov.au Date: 2017-01-23

mtpy.imaging.penetration_depth1d.plot_edi_dir(edi_path, rholist=['zxy', 'zyx', 'det'], fig_dpi=400, savefile=None)[source]

plot edi files from the input directory edi_path

mtpy.imaging.penetration_depth1d.plot_edi_file(edifile, rholist=['zxy', 'zyx', 'det'], savefile=None, fig_dpi=400)[source]

Plot the input edi_file Args:

edi_file: path2edifile rholist: a list of the rho to be used. savefile: path2savefig, not save if None

Returns:

Description:
With an input edi_file_folder and a list of period index, generate a profile using occam2d module, then plot the Penetration Depth profile at the given periods vs the stations locations.
Usage:
python mtpy/imaging/penetration_depth2d.py /path2/edi_files_dir/ period_index_list python mtpy/imaging/penetration_depth2d.py.py examples/data/edi2/ 0 1 10 20 30 40

Author: fei.zhang@ga.gov.au Date: 2017-01-23

mtpy.imaging.penetration_depth2d.barplot_multi_station_penentration_depth(edifiles_dir, per_index=0, zcomponent='det')[source]

A simple bar chart plot of the penetration depth across multiple edi files (stations), at the given (frequency) per_index. No profile-projection is done in this funciton. :param edifiles_dir: a list of edi files, or a dir of edi :param per_index: an integer smaller than the number of MT frequencies in the edi files. :return:

Description:
Given a set of EDI files plot the Penetration Depth vs the station_location. Note that the values of periods within10% tolerance (ptol=0.1) are considered as equal. Setting a smaller value for ptol(=0.05) may result less MT sites data included.
Usage:
python mtpy/imaging/penetration_depth3d.py /path2/edi_files_dir/ period_index

Author: fei.zhang@ga.gov.au Date: 2017-01-23

mtpy.imaging.penetration_depth3d.create_csv_file(edi_dir, outputcsv=None, zcomponent='det')[source]

Loop over all edi files, and create a csv file with columns: lat, lon, pendepth0, pendepth1, … :param edi_dir: path_to_edifiles_dir :param zcomponent: det | zxy | zyx :param outputcsv: path2output.csv file :return:

mtpy.imaging.penetration_depth3d.create_shapefile(edi_dir, outputfile=None, zcomponent='det')[source]

create a shapefile for station, penetration_depths :param edi_dir: :param outputfile: :param zcomponent: :return:

mtpy.imaging.penetration_depth3d.get_index2(*args, **kwargs)[source]

Mapping of lat lon to a grid :param lat: :param lon: :param ref_lon: :param ref_lat: :param pixelsize: :return:

mtpy.imaging.penetration_depth3d.get_penetration_depths_from_edi_file(edifile, rholist=['det'])[source]

Compute the penetration depths of an edi file :param edifile: input edifile :param rholist: flag the method to compute penetration depth: det zxy zyx :return: a tuple:(station_lat, statoin_lon, periods_list, pendepth_list)

mtpy.imaging.penetration_depth3d.plot_bar3d_depth(edifiles, per_index, whichrho='det')[source]

plot 3D bar of penetration depths For a given freq/period index of a set of edifiles/dir, the station,periods, pendepth,(lat, lon) are extracted the geo-bounding box calculated, and the mapping from stations to grids is constructed and plotted.

Parameters:
  • whichrho – z component either ‘det’, ‘zxy’ or ‘zyx’
  • edifiles – an edi_dir or list of edi_files
  • per_index – period index number 0,1,2
Returns:

mtpy.imaging.penetration_depth3d.plot_latlon_depth_profile(edi_dir, period, zcomponent='det', showfig=True, savefig=True, savepath=None, fig_dpi=400, fontsize=14, file_format='png', ptol=0.1)[source]

MT penetration depth profile in lat-lon coordinates with pixelsize = 0.002 :param savefig: :param showfig: :param edi_dir: :param period: :param zcomponent: :return:

mtpy.imaging.penetration_depth3d.reverse_colourmap(*args, **kwargs)[source]

In: cmap, name Out: my_cmap_r

Explanation: http://stackoverflow.com/questions/3279560/invert-colormap-in-matplotlib

Description:
This file defines imaging functions for penetration. The plotting function are extracted and implemented in plot() of each class from penetration_depth1D.py, penetration_depth2D.py and penetration_depth3D.py
Usage:
see descriptions of each clases

Author: YingzhiGou Date: 20/06/2017

class mtpy.imaging.penetration.Depth1D(edis=None, rholist=set(['det', 'zxy', 'zyx']))[source]

Description: For a given input MT object, plot the Penetration Depth vs all the periods (1/freq).

Attributes:
data

the data (mt objects) that are to be plotted

fig

matplotlib fig object

Methods

close(self) close the figure :return:
show(self[, block]) display the image :return:
export_image  
get_data  
get_figure  
plot  
set_data  
set_rholist  
class mtpy.imaging.penetration.Depth2D(data=None, period_index_list=None, rho='det')[source]

With a list of MT object and a list of period index, generate a profile using occam2d module, then plot the Penetration Depth profile at the given periods vs the stations locations.

Attributes:
data

the data (mt objects) that are to be plotted

fig

matplotlib fig object

Methods

close(self) close the figure :return:
show(self[, block]) display the image :return:
export_image  
get_data  
get_figure  
plot  
set_data  
set_period_index_list  
set_rho  
class mtpy.imaging.penetration.Depth3D(edis=None, period=None, rho='det', ptol=0.1)[source]

For a set of EDI files (input as a list of MT objects), plot the Penetration Depth vs the station_location, for a given period value or index Note that the values of periods within tolerance (ptol=0.1) are considered as equal. Setting a smaller value for ptol may result less MT sites data included.

Attributes:
data

the data (mt objects) that are to be plotted

fig

matplotlib fig object

Methods

close(self) close the figure :return:
show(self[, block]) display the image :return:
export_image  
get_data  
get_figure  
get_period_fmt  
plot  
set_data  
set_period  
set_rho  
exception mtpy.imaging.penetration.ZComponentError(*args, **kwargs)[source]
mtpy.imaging.penetration.check_period_values(period_list, ptol=0.1)[source]

check if all the values are equal in the input list :param period_list: a list of period :param ptol=0.1 # 1% percentage tolerance of period values considered as equal :return: True/False

mtpy.imaging.penetration.get_bounding_box(latlons)[source]

get min max lat lon from the list of lat-lon-pairs points

mtpy.imaging.penetration.get_index(lat, lon, minlat, minlon, pixelsize, offset=0)[source]

compute the grid index from the lat lon float value :param lat: float lat :param lon: float lon :param minlat: min lat at low left corner :param minlon: min long at left :param pixelsize: pixel size in lat long degree :param offset: a shift of grid index. should be =0. :return: a paire of integer

mtpy.imaging.penetration.get_penetration_depth(mt_obj_list, per_index, whichrho='det')[source]

compute the penetration depth of mt_obj at the given period_index, and using whichrho option :param per_index: the index of periods 0, 1, … :param mt_obj_list: list of edi file paths or mt objects :param whichrho: det, zxy, or zyx :return:

mtpy.imaging.penetration.get_penetration_depth_generic(edi_file_list, period_sec, whichrho='det', ptol=0.1)[source]

This is a more generic and useful function to compute the penetration depths of a list of edi files at given period_sec (seconds). No assumption is made about the edi files period list. A tolerance of 10% is used to identify the relevant edi files which contain the period of interest.

Parameters:
  • ptol – freq error/tolerance, need to be consistent with phase_tensor_map.py, default is 0.1
  • edi_file_list – edi file list of mt object list
  • period_sec – the float number value of the period in second: 0.1, …20.0
  • whichrho
Returns:

tuple of (stations, periods, penetrationdepth, lat-lons-pairs)

Description:
Plots resistivity and phase maps for a given frequency

References:

CreationDate: 4/19/18 Developer: rakib.hassan@ga.gov.au

Revision History:
LastUpdate: 4/19/18 RH
class mtpy.imaging.plot_resphase_maps.PlotResPhaseMaps(**kwargs)[source]

Plots apparent resistivity and phase in map view from a list of edi files

Methods

plot(self, freq, type, vmin, vmax[, …])
param freq:plot frequency
plot(self, freq, type, vmin, vmax, extrapolation_buffer_degrees=1, regular_grid_nx=100, regular_grid_ny=100, nn=7, p=4, show_stations=True, show_station_names=False, save_path='/home/docs/checkouts/readthedocs.org/user_builds/mtpy2/checkouts/stable/docs/source', file_ext='png', cmap='rainbow', show=True)[source]
Parameters:
  • freq – plot frequency
  • type – plot type; can be either ‘res’ or ‘phase’
  • vmin – minimum value used in color-mapping
  • vmax – maximum value used in color-mapping
  • extrapolation_buffer_degrees – extrapolation buffer in degrees
  • regular_grid_nx – number of longitudinal grid points to use during interpolation
  • regular_grid_ny – number of latitudinal grid points to use during interpolation
  • nn – number of nearest neighbours to use in inverse distance weighted interpolation
  • p – power parameter in inverse distance weighted interpolation
  • save_path – path where plot is saved
  • file_ext – file extension
  • show – boolean to toggle display of plot
Returns:

fig object

Module Plot Phase Tensor Maps

Plot phase tensor map in Lat-Lon Coordinate System

Revision History:
Created by @author: jpeacock-pr on Thu May 30 18:20:04 2013 Modified by Fei.Zhang@ga.gov.au 2017-03:
class mtpy.imaging.phase_tensor_maps.PlotPhaseTensorMaps(**kwargs)[source]

Plots phase tensor ellipses in map view from a list of edi files

Attributes:
rot_z

rotation angle(s)

Methods

export_params_to_file(self[, save_path]) write text files for all the phase tensor parameters.
plot(self[, fig, save_path, show, raster_dict]) Plots the phase tensor map.
redraw_plot(self) use this function if you updated some attributes and want to re-plot.
save_figure(self, save_fn[, file_format, …]) save_plot will save the figure to save_fn.
update_plot(self) update any parameters that where changed using the built-in draw from canvas.
export_params_to_file(self, save_path=None)[source]

write text files for all the phase tensor parameters. :param save_path: string path to save files into. File naming pattern is like save_path/PhaseTensorTipper_Params_freq.csv/table **Files Content **

*station *lon *lat *phi_min *phi_max *skew *ellipticity *azimuth *tipper_mag_real *tipper_ang_real *tipper_mag_imag *tipper_ang_imag
Returns:path2savedfile
plot(self, fig=None, save_path=None, show=True, raster_dict={'cbar_title': 'Arbitrary units', 'lats': [], 'levels': 50, 'cbar_position': None, 'cmap': 'rainbow', 'vals': [], 'lons': []})[source]

Plots the phase tensor map. :param fig: optional figure object :param save_path: path to folder for saving plots :param show: show plots if True :param raster_dict: Plotting of raster data is currently only supported when mapscale=’deg’.

This parameter is a dictionary of parameters for plotting raster data, on top of which phase tensor data are plotted. ‘lons’, ‘lats’ and ‘vals’ are one dimensional lists (or numpy arrays) for longitudes, latitudes and corresponding values, respectively. ‘levels’, ‘cmap’ and ‘cbar_title’ are the number of levels to be used in the colormap, the colormap and its title, respectively.
redraw_plot(self)[source]

use this function if you updated some attributes and want to re-plot.

rot_z

rotation angle(s)

save_figure(self, save_fn, file_format='pdf', orientation='portrait', fig_dpi=None, close_plot='y')[source]

save_plot will save the figure to save_fn.

update_plot(self)[source]

update any parameters that where changed using the built-in draw from canvas.

Use this if you change an of the .fig or axes properties

Module PlotPhaseTensorPseudoSection

Created on Thu May 30 18:10:55 2013

@author: jpeacock-pr

class mtpy.imaging.phase_tensor_pseudosection.PlotPhaseTensorPseudoSection(**kwargs)[source]

PlotPhaseTensorPseudoSection will plot the phase tensor ellipses in a pseudo section format

Attributes:
rot_z

rotation angle(s)

Methods

plot(self[, show]) plots the phase tensor pseudo section.
redraw_plot(self) use this function if you updated some attributes and want to re-plot.
save_figure(self, save_fn[, file_format, …]) save_plot will save the figure to save_fn.
save_figure2(self, save_fn[, file_format, …]) save_plot will save the figure to save_fn.
update_plot(self) update any parameters that where changed using the built-in draw from canvas.
writeTextFiles(self[, save_path, ptol]) This will write text files for all the phase tensor parameters
plot(self, show=True)[source]

plots the phase tensor pseudo section. See class doc string for more details.

redraw_plot(self)[source]

use this function if you updated some attributes and want to re-plot.

Example:
>>> # change ellipse size and color map to be segmented for skew
>>> pt1.ellipse_size = 5
>>> pt1.ellipse_colorby = 'beta_seg'
>>> pt1.ellipse_cmap = 'mt_seg_bl2wh2rd'
>>> pt1.ellipse_range = (-9, 9, 3)
>>> pt1.redraw_plot()
rot_z

rotation angle(s)

save_figure(self, save_fn, file_format='png', orientation='portrait', fig_dpi=None, close_plot='y')[source]

save_plot will save the figure to save_fn.

save_figure2(self, save_fn, file_format='jpg', orientation='portrait', fig_dpi=None, close_plot='y')[source]

save_plot will save the figure to save_fn.

update_plot(self)[source]

update any parameters that where changed using the built-in draw from canvas.

Use this if you change an of the .fig or axes properties

Example:
>>> # to change the grid lines to be on the major ticks and gray
>>> pt1.ax.grid(True, which='major', color=(.5,.5,.5))
>>> pt1.update_plot()
writeTextFiles(self, save_path=None, ptol=0.1)[source]

This will write text files for all the phase tensor parameters

Module MTPlot

Provides

  1. Different plotting options to represent the MT response.
  2. Ability to create text files of the plots for further analysis
  3. Class object that contains all the important information for an MT station.
Functions Description
plot_mt_response plots resistivity and phase for a single station Options include tipper, strike and skew.
plot_multiple_mt_responses plots multiple stations at once with options of plotting in single figure, all in one figure as subplots or all in one plot for direct comparison.
plot_pt plots the phase tensor ellipses and parameters in one plot including strike angle, minimum and maximum phase, skew angle and ellipticity
plot_pt_pseudosection plots a pseudo section of phase tensor ellipses assuming the stations are along a profile line. Options to plot induction arrows.
plot_mt_map plots phase tensor ellipses in map view for a single frequency. Options to plot induction arrows.
plot_strike plots strike angle estimated from the invariants of the impedance tensor defined by Weaver et al. [2000,2003], strike angle from the phase tensor and option to plot strike estimated from the induction arrows.
plot_residual_pt_maps plots the residual phase tensor between two surveys in map view.
plot_residual_pt_ps plots the residual phase tensor between two surveys as a pseudo section.

All plot function return plot classes where the important properties are made attributes which can be manipulated by the user. All classes have been written with the basic input being edi files. This was assumed to be the standard MT response file, but turns out to be not as widely used as thought. So the inputs can be other arrays and class objects (see MTplot doc string for details). If you have a data file format you can create a class using the objects in mtpy.core to create an input, otherwise contact us and we can try to build something.

A typical use might be loading in all the .edi files in and plotting them in different modes, like apparent resistivity and phase, phase tensor pseudo section and strike angle.

Example:
>>> import mtpy.imaging.mtplot as mtplot
>>> import os
>>> import matplotlib.pyplot as plt
>>> edipath = r"/home/MT/EDIfiles"
>>> #--> create a list of full paths to the edi files
>>> edilst = [os.path.join(edipath,edi) for edi in os.listdir(edipath)
>>> ...        if edi.find('.edi')>0]
>>> #--> plot apparent resisitivity, phase and induction arrows
>>> rpm = mtplot.plot_multiple_mt_responses(fn_lst=edilst, plot_style='1',
>>> ...                                     plot_tipper='yr')
>>> #--> close all the plots after done looking at them
>>> plt.close('all')
>>> #--> plot phase tensor pseudo section with induction arrows
>>> pts = mtplot.plot_pt_pseudosection(fn_lst=edilst,
>>> ...                                plot_tipper='yr')
>>> #--> write out the phase tensor parameter values to files
>>> pts.export_pt_params_to_file()
>>> #--> change coloring scheme to color by skew and a segmented colormap
>>> pts.ellipse_colorby = 'skew_seg'
>>> pts.ellipse_cmap = 'mt_seg_bl2wh2rd'
>>> pts.ellipse_range = (-9, 9, 3)
>>> pts.redraw_plot()
Authors:

Lars Krieger, Jared Peacock, and Kent Invariarty

Version:

0.0.1 of 2013

mtpy.imaging.mtplot.plot_mt_response(**kwargs)[source]

Plots Resistivity and phase for the different modes of the MT response. At the moment is supports the input of an .edi file. Other formats that will be supported are the impedance tensor and errors with an array of periods and .j format.

The normal use is to input an .edi file, however it would seem that not everyone uses this format, so you can input the data and put it into arrays or objects like class mtpy.core.z.Z. Or if the data is in resistivity and phase format they can be input as arrays or a class mtpy.imaging.mtplot.ResPhase. Or you can put it into a class mtpy.imaging.mtplot.MTplot.

The plot places the apparent resistivity in log scale in the top panel(s), depending on the plot_num. The phase is below this, note that 180 degrees has been added to the yx phase so the xy and yx phases plot in the same quadrant. Both the resistivity and phase share the same x-axis which is in log period, short periods on the left to long periods on the right. So if you zoom in on the plot both plots will zoom in to the same x-coordinates. If there is tipper information, you can plot the tipper as a third panel at the bottom, and also shares the x-axis. The arrows are in the convention of pointing towards a conductor. The xx and yy components can be plotted as well, this adds two panels on the right. Here the phase is left unwrapped. Other parameters can be added as subplots such as strike, skew and phase tensor ellipses.

To manipulate the plot you can change any of the attributes listed below and call redraw_plot(). If you know more aout matplotlib and want to change axes parameters, that can be done by changing the parameters in the axes attributes and then call update_plot(), note the plot must be open.

mtpy.imaging.mtplot.plot_multiple_mt_responses(**kwargs)[source]

plots multiple MT responses simultaneously either in single plots or in one plot of sub-figures or in a single plot with subfigures for each component.

expecting only one type of input –> can be:

fn_list : list of filenames to plot

z_object_list : list of mtpy.core.z.Z objects

res_object_list : list of mtpy.imaging.mtplot.ResPhase objects

tipper_object_list : list of mtpy.imaging.mtplot.Tipper objects

mt_object_list : list of mtpy.imaging.mtplot.MTplot objects

mtpy.imaging.mtplot.plot_pt(**kwargs)[source]

Will plot phase tensor, strike angle, min and max phase angle, azimuth, skew, and ellipticity as subplots on one plot. It can plot the resistivity tensor along side the phase tensor for comparison.

mtpy.imaging.mtplot.plot_pt_map(**kwargs)[source]

Plots phase tensor ellipses in map view from a list of edi files

mtpy.imaging.mtplot.plot_pt_pseudosection(**kwargs)[source]

PlotPhaseTensorPseudoSection will plot the phase tensor ellipses in a pseudo section format

mtpy.imaging.mtplot.plot_residual_pt_maps(fn_list1, fn_list2, **kwargs)[source]

This will plot residual phase tensors in a map for a single frequency. The data is read in and stored in 2 ways, one as a list ResidualPhaseTensor object for each matching station and the other in a structured array with all the important information. The structured array is the one that is used for plotting. It is computed each time plot() is called so if it is manipulated it is reset. The array is sorted by relative offset, so no special order of input is needed for the file names. However, the station names should be verbatim between surveys, otherwise it will not work.

The residual phase tensor is calculated as I-(Phi_2)^-1 (Phi_1)

The default coloring is by the geometric mean as sqrt(Phi_min*Phi_max), which defines the percent change between measurements.

There are a lot of parameters to change how the plot looks, have a look below if you figure looks a little funny. The most useful will be ellipse_size

The ellipses are normalized by the largest Phi_max of the survey.

mtpy.imaging.mtplot.plot_residual_pt_ps(fn_list1, fn_list2, **kwargs)[source]

This will plot residual phase tensors in a pseudo section. The data is read in and stored in 2 ways, one as a list ResidualPhaseTensor object for each matching station and the other in a structured array with all the important information. The structured array is the one that is used for plotting. It is computed each time plot() is called so if it is manipulated it is reset. The array is sorted by relative offset, so no special order of input is needed for the file names. However, the station names should be verbatim between surveys, otherwise it will not work.

The residual phase tensor is calculated as I-(Phi_2)^-1 (Phi_1)

The default coloring is by the geometric mean as sqrt(Phi_min*Phi_max), which defines the percent change between measurements.

There are a lot of parameters to change how the plot looks, have a look below if you figure looks a little funny. The most useful will be xstretch, ystretch and ellipse_size

The ellipses are normalized by the largest Phi_max of the survey.

mtpy.imaging.mtplot.plot_resphase_pseudosection(**kwargs)[source]

plot a resistivity and phase pseudo section for different components

Need to input one of the following lists:

mtpy.imaging.mtplot.plot_station_locations(**kwargs)[source]

plot station locations in map view.

Need to input one of the following lists:

mtpy.imaging.mtplot.plot_strike(**kwargs)[source]

PlotStrike will plot the strike estimated from the invariants, phase tensor and the tipper in either a rose diagram of xy plot

plots the strike angle as determined by phase tensor azimuth (Caldwell et al. [2004]) and invariants of the impedance tensor (Weaver et al. [2003]).

The data is split into decades where the histogram for each is plotted in the form of a rose diagram with a range of 0 to 180 degrees. Where 0 is North and 90 is East. The median angle of the period band is set in polar diagram. The top row is the strike estimated from the invariants of the impedance tensor. The bottom row is the azimuth estimated from the phase tensor. If tipper is ‘y’ then the 3rd row is the strike determined from the tipper, which is orthogonal to the induction arrow direction.

Attributes:
-axhinv matplotlib.axes instance for invariant strike
-axhpt

matplotlib.axes instance for phase tensor strike

-axhtip

matplotlib.axes instance for tipper strike

-barinv

matplotlib.axes.bar instance for invariant strike

-barpt

matplotlib.axes.bar instance for pt strike

-bartr

matplotlib.axes.bar instance for tipper strike

-bin_width

width of histogram bins in degrees

-fig

matplotlib.figure instance of plot

-fig_dpi

dots-per-inch resolution of figure

-fig_num

number of figure being plotted

-fig_size

size of figure in inches

-fold

boolean to fold angles to range from [0,180] or [0,360]

-font_size

font size of axes tick labels

-mt_list

list of mtplot.MTplot instances containing all the important information for each station

-period_tolerance
 

tolerance to look for periods being plotted

-plot_range

range of periods to plot

-plot_tipper

string to tell program to plot induction arrows

-plot_type

string to tell program how to plot strike angles

-plot_yn

plot strike on instance creation

-pt_error_floor
 

error floor to plot phase tensor strike, anything above this error will not be plotted

-text_pad

padding between text and rose diagram

-text_size

font size of text labeling the mode of the histogram

-title_dict

title dictionary

Methods

-plot plots the pseudo section
-redraw_plot on call redraws the plot from scratch -save_figure saves figure to a file of given format -update_plot updates the plot while still active -export_pt_params_to_file writes parameters of the phase tensor and tipper to text files.

Plots the resistivity and phase for different modes and components

Created on Thu May 30 16:54:08 2013

@author: jpeacock-pr

class mtpy.imaging.plotresponse.PlotResponse(**kwargs)[source]

Plots Resistivity and phase for the different modes of the MT response. At the moment is supports the input of an .edi file. Other formats that will be supported are the impedance tensor and errors with an array of periods and .j format.

The normal use is to input an .edi file, however it would seem that not everyone uses this format, so you can input the data and put it into arrays or objects like class mtpy.core.z.Z. Or if the data is in resistivity and phase format they can be input as arrays or a class mtpy.imaging.mtplot.ResPhase. Or you can put it into a class mtpy.imaging.mtplot.MTplot.

The plot places the apparent resistivity in log scale in the top panel(s), depending on the plot_num. The phase is below this, note that 180 degrees has been added to the yx phase so the xy and yx phases plot in the same quadrant. Both the resistivity and phase share the same x-axis which is in log period, short periods on the left to long periods on the right. So if you zoom in on the plot both plots will zoom in to the same x-coordinates. If there is tipper information, you can plot the tipper as a third panel at the bottom, and also shares the x-axis. The arrows are in the convention of pointing towards a conductor. The xx and yy components can be plotted as well, this adds two panels on the right. Here the phase is left unwrapped. Other parameters can be added as subplots such as strike, skew and phase tensor ellipses.

To manipulate the plot you can change any of the attributes listed below and call redraw_plot(). If you know more aout matplotlib and want to change axes parameters, that can be done by changing the parameters in the axes attributes and then call update_plot(), note the plot must be open.

Attributes:
plot_pt

string to plot phase tensor ellipses

plot_skew

string to plot skew

plot_strike

string to plot strike

plot_tipper

string to plot tipper

Methods

plot(self) plotResPhase(filename,fig_num) will plot the apparent resistivity and phase for a single station.
redraw_plot(self) use this function if you updated some attributes and want to re-plot.
save_plot(self, save_fn[, file_format, …]) save_plot will save the figure to save_fn.
update_plot(self) update any parameters that where changed using the built-in draw from canvas.
plot(self)[source]

plotResPhase(filename,fig_num) will plot the apparent resistivity and phase for a single station.

plot_pt

string to plot phase tensor ellipses

plot_skew

string to plot skew

plot_strike

string to plot strike

plot_tipper

string to plot tipper

redraw_plot(self)[source]

use this function if you updated some attributes and want to re-plot.

Example:
>>> # change the color and marker of the xy components
>>> import mtpy.imaging.mtplottools as mtplot
>>> p1 = mtplot.PlotResPhase(r'/home/MT/mt01.edi')
>>> p1.xy_color = (.5,.5,.9)
>>> p1.xy_marker = '*'
>>> p1.redraw_plot()
save_plot(self, save_fn, file_format='pdf', orientation='portrait', fig_dpi=None, close_plot='y')[source]

save_plot will save the figure to save_fn.

update_plot(self)[source]

update any parameters that where changed using the built-in draw from canvas.

Use this if you change an of the .fig or axes properties

Example:
>>> # to change the grid lines to only be on the major ticks
>>> import mtpy.imaging.mtplottools as mtplot
>>> p1 = mtplot.PlotResPhase(r'/home/MT/mt01.edi')
>>> [ax.grid(True, which='major') for ax in [p1.axr,p1.axp]]
>>> p1.update_plot()

plots multiple MT responses simultaneously

Created on Thu May 30 17:02:39 2013 @author: jpeacock-pr

YG: the code there is massey, todo may need to rewrite it sometime

class mtpy.imaging.plotnresponses.PlotMultipleResponses(**kwargs)[source]

plots multiple MT responses simultaneously either in single plots or in one plot of sub-figures or in a single plot with subfigures for each component.

expecting only one type of input –> can be:

fn_list : list of filenames to plot

z_object_list : list of mtpy.core.z.Z objects

res_object_list : list of mtpy.imaging.mtplot.ResPhase objects

tipper_object_list : list of mtpy.imaging.mtplot.Tipper objects

mt_object_list : list of mtpy.imaging.mtplot.MTplot objects

Attributes:
plot_pt

string to plot phase tensor ellipses

plot_skew

string to plot skew

plot_strike

string to plot strike

plot_tipper

string to plot tipper

rot_z

rotation angle(s)

Methods

plot(self[, show]) plot the apparent resistivity and phase
redraw_plot(self) use this function if you updated some attributes and want to re-plot.
update_plot(self) update any parameters that where changed using the built-in draw from canvas.
plot(self, show=True)[source]

plot the apparent resistivity and phase

plot_pt

string to plot phase tensor ellipses

plot_skew

string to plot skew

plot_strike

string to plot strike

plot_tipper

string to plot tipper

redraw_plot(self)[source]

use this function if you updated some attributes and want to re-plot.

Example:
>>> # change the color and marker of the xy components
>>> import mtpy.imaging.mtplottools as mtplot
>>> p1 = mtplot.PlotResPhase(r'/home/MT/mt01.edi')
>>> p1.xy_color = (.5,.5,.9)
>>> p1.xy_marker = '*'
>>> p1.redraw_plot()
rot_z

rotation angle(s)

update_plot(self)[source]

update any parameters that where changed using the built-in draw from canvas.

Use this if you change an of the .fig or axes properties

Example:
>>> # to change the grid lines to only be on the major ticks
>>> import mtpy.imaging.mtplottools as mtplot
>>> p1 = mtplot.PlotResPhase(r'/home/MT/mt01.edi')
>>> [ax.grid(True, which='major') for ax in [p1.axr,p1.axp]]
>>> p1.update_plot()

Created on Thu May 30 18:28:24 2013

@author: jpeacock-pr

class mtpy.imaging.plotstrike.PlotStrike(**kwargs)[source]

PlotStrike will plot the strike estimated from the invariants, phase tensor and the tipper in either a rose diagram of xy plot

plots the strike angle as determined by phase tensor azimuth (Caldwell et al. [2004]) and invariants of the impedance tensor (Weaver et al. [2003]).

The data is split into decades where the histogram for each is plotted in the form of a rose diagram with a range of 0 to 180 degrees. Where 0 is North and 90 is East. The median angle of the period band is set in polar diagram. The top row is the strike estimated from the invariants of the impedance tensor. The bottom row is the azimuth estimated from the phase tensor. If tipper is ‘y’ then the 3rd row is the strike determined from the tipper, which is orthogonal to the induction arrow direction.

Attributes:
-axhinv matplotlib.axes instance for invariant strike
-axhpt

matplotlib.axes instance for phase tensor strike

-axhtip

matplotlib.axes instance for tipper strike

-barinv

matplotlib.axes.bar instance for invariant strike

-barpt

matplotlib.axes.bar instance for pt strike

-bartr

matplotlib.axes.bar instance for tipper strike

-bin_width

width of histogram bins in degrees

-fig

matplotlib.figure instance of plot

-fig_dpi

dots-per-inch resolution of figure

-fig_num

number of figure being plotted

-fig_size

size of figure in inches

-fold

boolean to fold angles to range from [0,180] or [0,360]

-font_size

font size of axes tick labels

-mt_list

list of mtplot.MTplot instances containing all the important information for each station

-period_tolerance
 

tolerance to look for periods being plotted

-plot_range

range of periods to plot

-plot_tipper

string to tell program to plot induction arrows

-plot_type

string to tell program how to plot strike angles

-plot_yn

plot strike on instance creation

-pt_error_floor
 

error floor to plot phase tensor strike, anything above this error will not be plotted

-text_pad

padding between text and rose diagram

-text_size

font size of text labeling the mode of the histogram

-title_dict

title dictionary

Methods

-plot plots the pseudo section
-redraw_plot on call redraws the plot from scratch -save_figure saves figure to a file of given format -update_plot updates the plot while still active -export_pt_params_to_file writes parameters of the phase tensor and tipper to text files.
redraw_plot(self)[source]

use this function if you updated some attributes and want to re-plot.

Example:
>>> # change the color and marker of the xy components
>>> import mtpy.imaging.mtplottools as mtplot
>>> p1 = mtplot.PlotResPhase(r'/home/MT/mt01.edi')
>>> p1.xy_color = (.5,.5,.9)
>>> p1.xy_marker = '*'
>>> p1.redraw_plot()
rot_z

rotation angle(s)

save_plot(self, save_fn, file_format='pdf', orientation='portrait', fig_dpi=None, close_plot='y')[source]

save_plot will save the figure to save_fn.

Examples

Example:
>>> # to save plot as jpg
>>> import mtpy.imaging.mtplottools as mtplot
>>> p1 = mtplot.PlotPhaseTensorMaps(edilist,freqspot=10)
>>> p1.save_plot(r'/home/MT', file_format='jpg')

‘Figure saved to /home/MT/PTMaps/PTmap_phimin_10Hz.jpg’

update_plot(self)[source]

update any parameters that where changed using the built-in draw from canvas.

Use this if you change an of the .fig or axes properties

Example:
>>> # to change the grid lines to only be on the major ticks
>>> import mtpy.imaging.mtplottools as mtplot
>>> p1 = mtplot.PlotResPhase(r'/home/MT/mt01.edi')
>>> [ax.grid(True, which='major') for ax in [p1.axr,p1.axp]]
>>> p1.update_plot()
writeTextFiles(self, save_path=None)[source]

Saves the strike information as a text file.

Created on Thu May 30 18:28:24 2013

@author: jpeacock-pr

class mtpy.imaging.plotstrike2d.PlotStrike2D(**kwargs)[source]

PlotStrike will plot the strike estimated from the invariants, phase tensor and the tipper in either a rose diagram of xy plot

plots the strike angle as determined by phase tensor azimuth (Caldwell et al. [2004]) and invariants of the impedance tensor (Weaver et al. [2003]).

The data is split into decades where the histogram for each is plotted in the form of a rose diagram with a range of 0 to 180 degrees. Where 0 is North and 90 is East. The median angle of the period band is set in polar diagram. The top row is the strike estimated from the invariants of the impedance tensor. The bottom row is the azimuth estimated from the phase tensor. If tipper is ‘y’ then the 3rd row is the strike determined from the tipper, which is orthogonal to the induction arrow direction.

Attributes:
rot_z

rotation angle(s)

Methods

redraw_plot(self) use this function if you updated some attributes and want to re-plot.
save_plot(self, save_fn[, file_format, …]) save_plot will save the figure to save_fn.
update_plot(self) update any parameters that where changed using the built-in draw from canvas.
writeTextFiles(self[, save_path]) Saves the strike information as a text file.
plot  
redraw_plot(self)[source]

use this function if you updated some attributes and want to re-plot.

Example:
>>> # change the color and marker of the xy components
>>> import mtpy.imaging.mtplottools as mtplot
>>> p1 = mtplot.PlotResPhase(r'/home/MT/mt01.edi')
>>> p1.xy_color = (.5,.5,.9)
>>> p1.xy_marker = '*'
>>> p1.redraw_plot()
rot_z

rotation angle(s)

save_plot(self, save_fn, file_format='pdf', orientation='portrait', fig_dpi=None, close_plot='y')[source]

save_plot will save the figure to save_fn.

update_plot(self)[source]

update any parameters that where changed using the built-in draw from canvas.

Use this if you change an of the .fig or axes properties

Example:
>>> # to change the grid lines to only be on the major ticks
>>> import mtpy.imaging.mtplottools as mtplot
>>> p1 = mtplot.PlotResPhase(r'/home/MT/mt01.edi')
>>> [ax.grid(True, which='major') for ax in [p1.axr,p1.axp]]
>>> p1.update_plot()
writeTextFiles(self, save_path=None)[source]

Saves the strike information as a text file.

Plot MT Response

plot_mt_response

Plots the resistivity and phase for different modes and components

Created 2017

@author: jpeacock

class mtpy.imaging.plot_mt_response.PlotMTResponse(z_object=None, t_object=None, pt_obj=None, station='MT Response', **kwargs)[source]

Plots Resistivity and phase for the different modes of the MT response. At the moment is supports the input of an .edi file. Other formats that will be supported are the impedance tensor and errors with an array of periods and .j format.

The normal use is to input an .edi file, however it would seem that not everyone uses this format, so you can input the data and put it into arrays or objects like class mtpy.core.z.Z. Or if the data is in resistivity and phase format they can be input as arrays or a class mtpy.imaging.mtplot.ResPhase. Or you can put it into a class mtpy.imaging.mtplot.MTplot.

The plot places the apparent resistivity in log scale in the top panel(s), depending on the plot_num. The phase is below this, note that 180 degrees has been added to the yx phase so the xy and yx phases plot in the same quadrant. Both the resistivity and phase share the same x-axis which is in log period, short periods on the left to long periods on the right. So if you zoom in on the plot both plots will zoom in to the same x-coordinates. If there is tipper information, you can plot the tipper as a third panel at the bottom, and also shares the x-axis. The arrows are in the convention of pointing towards a conductor. The xx and yy components can be plotted as well, this adds two panels on the right. Here the phase is left unwrapped. Other parameters can be added as subplots such as strike, skew and phase tensor ellipses.

To manipulate the plot you can change any of the attributes listed below and call redraw_plot(). If you know more aout matplotlib and want to change axes parameters, that can be done by changing the parameters in the axes attributes and then call update_plot(), note the plot must be open.

Attributes:
period

plot period

Methods

plot(self[, show]) plotResPhase(filename,fig_num) will plot the apparent resistivity and phase for a single station.
redraw_plot(self) use this function if you updated some attributes and want to re-plot.
save_plot(self, save_fn[, file_format, …]) save_plot will save the figure to save_fn.
update_plot(self) update any parameters that where changed using the built-in draw from canvas.
period

plot period

plot(self, show=True)[source]

plotResPhase(filename,fig_num) will plot the apparent resistivity and phase for a single station.

redraw_plot(self)[source]

use this function if you updated some attributes and want to re-plot.

Example:
>>> # change the color and marker of the xy components
>>> import mtpy.imaging.mtplottools as mtplot
>>> p1 = mtplot.PlotResPhase(r'/home/MT/mt01.edi')
>>> p1.xy_color = (.5,.5,.9)
>>> p1.xy_marker = '*'
>>> p1.redraw_plot()
save_plot(self, save_fn, file_format='pdf', orientation='portrait', fig_dpi=None, close_plot='y')[source]

save_plot will save the figure to save_fn.

update_plot(self)[source]

update any parameters that where changed using the built-in draw from canvas.

Use this if you change an of the .fig or axes properties

Example:
>>> # to change the grid lines to only be on the major ticks
>>> import mtpy.imaging.mtplottools as mtplot
>>> p1 = mtplot.PlotResPhase(r'/home/MT/mt01.edi')
>>> [ax.grid(True, which='major') for ax in [p1.axr,p1.axp]]
>>> p1.update_plot()

Visualization of Models

class mtpy.imaging.plot_depth_slice.PlotDepthSlice(model_fn=None, data_fn=None, **kwargs)[source]

Plots depth slices of resistivity model (file.rho)

Example:
>>> import mtpy.modeling.ws3dinv as ws
>>> mfn = r"/home/MT/ws3dinv/Inv1/Test_model.00"
>>> sfn = r"/home/MT/ws3dinv/Inv1/WSStationLocations.txt"
>>> # plot just first layer to check the formatting
>>> pds = ws.PlotDepthSlice(model_fn=mfn, station_fn=sfn,
>>> ...                     depth_index=0, save_plots='n')
>>> #move color bar up
>>> pds.cb_location
>>> (0.64500000000000002, 0.14999999999999997, 0.3, 0.025)
>>> pds.cb_location = (.645, .175, .3, .025)
>>> pds.redraw_plot()
>>> #looks good now plot all depth slices and save them to a folder
>>> pds.save_path = r"/home/MT/ws3dinv/Inv1/DepthSlices"
>>> pds.depth_index = None
>>> pds.save_plots = 'y'
>>> pds.redraw_plot()
Attributes Description
cb_location location of color bar (x, y, width, height) default is None, automatically locates
cb_orientation [ ‘vertical’ | ‘horizontal’ ] default is horizontal
cb_pad padding between axes and colorbar default is None
cb_shrink percentage to shrink colorbar by default is None
climits (min, max) of resistivity color on log scale default is (0, 4)
cmap name of color map default is ‘jet_r’
data_fn full path to data file
depth_index integer value of depth slice index, shallowest layer is 0
dscale scaling parameter depending on map_scale
ew_limits (min, max) plot limits in e-w direction in map_scale units. default is None, sets viewing area to the station area
fig_aspect aspect ratio of plot. default is 1
fig_dpi resolution of figure in dots-per-inch. default is 300
fig_list list of matplotlib.figure instances for each depth slice
fig_size [width, height] in inches of figure size default is [6, 6]
font_size size of ticklabel font in points, labels are font_size+2. default is 7
grid_east relative location of grid nodes in e-w direction in map_scale units
grid_north relative location of grid nodes in n-s direction in map_scale units
grid_z relative location of grid nodes in z direction in map_scale units
initial_fn full path to initial file
map_scale [ ‘km’ | ‘m’ ] distance units of map. default is km
mesh_east np.meshgrid(grid_east, grid_north, indexing=’ij’)
mesh_north np.meshgrid(grid_east, grid_north, indexing=’ij’)
model_fn full path to model file
nodes_east relative distance betwen nodes in e-w direction in map_scale units
nodes_north relative distance betwen nodes in n-s direction in map_scale units
nodes_z relative distance betwen nodes in z direction in map_scale units
ns_limits (min, max) plot limits in n-s direction in map_scale units. default is None, sets viewing area to the station area
plot_grid [ ‘y’ | ‘n’ ] ‘y’ to plot mesh grid lines. default is ‘n’
plot_yn [ ‘y’ | ‘n’ ] ‘y’ to plot on instantiation
res_model np.ndarray(n_north, n_east, n_vertical) of model resistivity values in linear scale
save_path path to save figures to
save_plots [ ‘y’ | ‘n’ ] ‘y’ to save depth slices to save_path
station_east location of stations in east direction in map_scale units
station_fn full path to station locations file
station_names station names
station_north location of station in north direction in map_scale units
subplot_bottom distance between axes and bottom of figure window
subplot_left distance between axes and left of figure window
subplot_right distance between axes and right of figure window
subplot_top distance between axes and top of figure window
title titiel of plot default is depth of slice
xminorticks location of xminorticks
yminorticks location of yminorticks

Methods

plot(self[, ind]) plot the depth slice ind-th
redraw_plot(self) redraw plot if parameters were changed use this function if you updated some attributes and want to re-plot.
plot(self, ind=1)[source]

plot the depth slice ind-th

redraw_plot(self)[source]

redraw plot if parameters were changed use this function if you updated some attributes and want to re-plot.