2.7.8.1. pycsamt.airborne.mobilemt#

MobileMT scientific adapter contract.

The module represents the published MobileMT 3x2 admittance relationship and maps decoded arrays into the format-neutral pycsamt.emtf and airborne containers. It intentionally does not guess a proprietary native file schema.

class pycsamt.airborne.mobilemt.MobileMTSystemSpec(nominal_frequency_range_hz=(19.0, 26000.0), nominal_max_frequency_windows=30, nominal_sampling_rate_hz=73728.0, input_channels=('Ex', 'Ey'), output_channels=('Hx', 'Hy', 'Hz'), attrs=<factory>)

Bases: CoreObject

Published/declared MobileMT system characteristics.

These values are descriptive metadata, not hard validation limits. A processed product may legitimately contain fewer windows or a subset of the nominal frequency range.

Parameters:
nominal_frequency_range_hz: tuple[float, float] = (19.0, 26000.0)
nominal_max_frequency_windows: int = 30
nominal_sampling_rate_hz: float = 73728.0
input_channels: tuple[str, ...] = ('Ex', 'Ey')
output_channels: tuple[str, ...] = ('Hx', 'Hy', 'Hz')
attrs: dict[str, Any]
validate()

Validate object state.

Subclasses can override this hook. The base implementation intentionally accepts all states.

Return type:

None

nominal_frequency_mask(frequency)

Return a mask for values inside the published nominal range.

Parameters:

frequency (Any)

Return type:

ndarray

to_instrument_meta(*, serial=None, software_version='')

Return a reusable InstrumentMeta description.

The sensor descriptions reflect only the published system-level geometry. Manufacturer model numbers and calibration details are not invented.

Parameters:
  • serial (str | None)

  • software_version (str)

Return type:

InstrumentMeta

class pycsamt.airborne.mobilemt.MobileMTReferenceStation(station_id=None, site=None, electric_channels=('Ex', 'Ey'), attrs=<factory>)

Bases: CoreObject

Ground electric reference-station metadata for MobileMT processing.

This object intentionally describes only the processed reference station. It does not invent a raw electrode-file schema or model the additional internal reference electrode pairs used by proprietary processing.

Parameters:
station_id: str | None = None
site: SiteMeta | None = None
electric_channels: tuple[str, str] = ('Ex', 'Ey')
attrs: dict[str, Any]
validate()

Validate object state.

Subclasses can override this hook. The base implementation intentionally accepts all states.

Return type:

None

property preferred_id: str | None

Return explicit station ID, then SiteMeta preferred name.

exception pycsamt.airborne.mobilemt.MobileMTValidationError

Bases: ValueError

Raised when decoded MobileMT scientific arrays are inconsistent.

pycsamt.airborne.mobilemt.register_mobilemt_datatypes()

Register and return the MobileMT admittance definition.

Registration is idempotent when the existing definition has the same semantic tag. A conflicting global Y/tag registration is surfaced rather than silently overwritten.

Return type:

DataTypeDefinition

pycsamt.airborne.mobilemt.validate_mobilemt_transfer_function(tf)

Validate and return a MobileMT 3x2 admittance transfer function.

Parameters:

tf (TransferFunction)

Return type:

TransferFunction

pycsamt.airborne.mobilemt.build_mobilemt_emtf(admittance, *, frequency=None, periods=None, units=None, variance=None, inverse_signal_covariance=None, residual_covariance=None, product_id=None, description=None, reference_station=None, system_spec=None, attrs=None)

Build one sample-level EMTF MobileMT response.

Parameters:
  • admittance (array-like) – Complex admittance with shape (nf, 3, 2) or one (3, 2) matrix. Rows are Hx, Hy, Hz and columns are Ex, Ey.

  • frequency (array-like, optional) – Exactly one frequency or period grid must be supplied.

  • periods (array-like, optional) – Exactly one frequency or period grid must be supplied.

  • units (str, optional) – Units of the supplied admittance. No raw-unit convention is invented by this adapter because processed deliveries may differ.

  • variance (array-like, optional) – Component variance, shape (nf, 3, 2).

  • inverse_signal_covariance (array-like, optional) – Input covariance factor S, shape (nf, 2, 2).

  • residual_covariance (array-like, optional) – Output residual covariance N, shape (nf, 3, 3).

  • reference_station (MobileMTReferenceStation, optional) – Ground electric reference metadata retained as MobileMT metadata.

  • system_spec (MobileMTSystemSpec, optional) – System-description metadata; defaults to published nominal values.

  • product_id (str | None)

  • description (str | None)

  • attrs (Mapping[str, Any] | None)

Return type:

EMTF

Notes

Apparent conductivity is intentionally not computed here. The published system exposes it as a processed output, but a verified delivery schema is required before pyCSAMT should codify its exact exported representation.

pycsamt.airborne.mobilemt.build_mobilemt_record(sample_id, admittance, *, frequency=None, periods=None, apparent_conductivity=None, apparent_conductivity_units='mS/m', quality=None, record_attrs=None, **emtf_kwargs)

Build one airborne record from decoded MobileMT arrays.

Parameters:
  • sample_id (str)

  • admittance (Any)

  • frequency (Any | None)

  • periods (Any | None)

  • apparent_conductivity (Any | None)

  • apparent_conductivity_units (str)

  • quality (Mapping[str, Any] | None)

  • record_attrs (Mapping[str, Any] | None)

  • emtf_kwargs (Any)

Return type:

AirborneEMRecord

pycsamt.airborne.mobilemt.build_mobilemt_line(line_id, navigation, admittance, *, frequency, record_mask=None, apparent_conductivity=None, variance=None, inverse_signal_covariance=None, residual_covariance=None, units=None, reference_station=None, system_spec=None, attrs=None)

Build one MobileMT flight line from decoded sample-aligned arrays.

frequency may be a common (nf,) vector or a sample-specific (n_samples, nf) matrix. record_mask controls sparse EM coverage; navigation points are never deleted when their EM record is absent.

Parameters:
  • line_id (str)

  • navigation (NavigationTrack)

  • admittance (Any)

  • frequency (Any)

  • record_mask (Any | None)

  • apparent_conductivity (Any | None)

  • variance (Any | None)

  • inverse_signal_covariance (Any | None)

  • residual_covariance (Any | None)

  • units (str | None)

  • reference_station (MobileMTReferenceStation | None)

  • system_spec (MobileMTSystemSpec | None)

  • attrs (Mapping[str, Any] | None)

Return type:

AirborneEMLine

pycsamt.airborne.mobilemt.build_mobilemt_dataset(name, lines, *, survey=None, system_spec=None, instrument_serial=None, software_version='', attrs=None)

Build a common airborne dataset from already constructed MobileMT lines.

This helper does not parse files. It only supplies technology metadata and reuses AirborneEMDataset as the survey-level container.

Parameters:
  • name (str)

  • lines (Any)

  • survey (SurveyMeta | None)

  • system_spec (MobileMTSystemSpec | None)

  • instrument_serial (str | None)

  • software_version (str)

  • attrs (Mapping[str, Any] | None)

Return type:

AirborneEMDataset