simpeg.maps.Wires#

class simpeg.maps.Wires(*args)[source]#

Bases: object

Mapping class for organizing multiple parameter types into a single model.

Let \(\mathbf{p_1}\) and \(\mathbf{p_2}\) be vectors that contain the parameter values for two different parameter types; for example, electrical conductivity and magnetic permeability. Here, all parameters are organized into a single model \(\mathbf{m}\) of the form:

\[\begin{split}\mathbf{m} = \begin{bmatrix} \mathbf{p_1} \\ \mathbf{p_2} \end{bmatrix}\end{split}\]

The Wires class constructs and applies the basic projection mappings for extracting the values of a particular parameter type from the model. For example:

\[\mathbf{p_1} = \mathbf{P_{\! 1} m}\]

where \(\mathbf{P_1}\) is the projection matrix that extracts parameters \(\mathbf{p_1}\) from the complete set of model parameters \(\mathbf{m}\). Likewise, there is a projection matrix for extracting \(\mathbf{p_2}\). This can be extended to a model that containing more than 2 parameter types.

Parameters:
argstuple

Each input argument is a tuple (str, int) that provides the name and number of parameters for a given parameters type.

Attributes

nP

Number of parameters the mapping acts on.

Examples

Here we construct a wire mapping for a model where there are two parameters types. Note that the number of parameters of each type does not need to be the same.

>>> from simpeg.maps import Wires, ReciprocalMap
>>> import numpy as np
>>> p1 = np.r_[4.5, 2.7, 6.9, 7.1, 1.2]
>>> p2 = np.r_[10., 2., 5.]**-1
>>> nP1 = len(p1)
>>> nP2 = len(p2)
>>> m = np.r_[p1, p2]
>>> m
array([4.5, 2.7, 6.9, 7.1, 1.2, 0.1, 0.5, 0.2])

Here we construct the wire map. The user provides a name and the number of parameters for each type. The name provided becomes the name of the method for constructing the projection mapping.

>>> wire_map = Wires(('name_1', nP1), ('name_2', nP2))

Here, we extract the values for the first parameter type.

>>> wire_map.name_1 * m
array([4.5, 2.7, 6.9, 7.1, 1.2])

And here, we extract the values for the second parameter type then apply a reciprocal mapping.

>>> reciprocal_map = ReciprocalMap()
>>> reciprocal_map * wire_map.name_2 * m
array([10.,  2.,  5.])

Galleries and Tutorials using simpeg.maps.Wires#

Maps: ComboMaps

Maps: ComboMaps

Magnetic inversion on a TreeMesh with remanence

Magnetic inversion on a TreeMesh with remanence

Magnetic inversion on a TreeMesh

Magnetic inversion on a TreeMesh

Petrophysically guided inversion: Joint linear example with nonlinear relationships

Petrophysically guided inversion: Joint linear example with nonlinear relationships

Parametric 1D Inversion of Sounding Data

Parametric 1D Inversion of Sounding Data

Tensor Meshes

Tensor Meshes

Cylindrical Meshes

Cylindrical Meshes

Tree Meshes

Tree Meshes

Joint PGI of Gravity + Magnetic on an Octree mesh using full petrophysical information

Joint PGI of Gravity + Magnetic on an Octree mesh using full petrophysical information

Joint PGI of Gravity + Magnetic on an Octree mesh without petrophysical information

Joint PGI of Gravity + Magnetic on an Octree mesh without petrophysical information

Cross-gradient Joint Inversion of Gravity and Magnetic Anomaly Data

Cross-gradient Joint Inversion of Gravity and Magnetic Anomaly Data