2.7.7.3. pycsamt.airborne.ztem.base#

ZTEM-specific metadata that reuses the common airborne/EMTF model.

Both classes inherit CoreObject, matching pycsamt.airborne.base and every sibling technology’s metadata (MobileMTSystemSpec, AirMtSystemSpec, …): they are mutable-until-validated descriptive containers, not frozen registry value objects, so PyCSAMTObject alone would be the wrong base (see pycsamt.airborne.registry for where that choice is the right one). Range/positivity/fixed-channel normalization is delegated to pycsamt.airborne.validation rather than reimplemented here field by field.

Classes

ZTEMReferenceStation([station_id, site, ...])

Fixed ground magnetic reference station used by ZTEM processing.

ZTEMSystemSpec([...])

Published/declared ZTEM system characteristics.

class pycsamt.airborne.ztem.base.ZTEMSystemSpec(practical_frequency_range_hz=(22.0, 720.0), common_processed_bands_hz=((30.0, 720.0), (25.0, 600.0)), typical_frequency_count=(5, 6), time_series_sampling_rate_hz=2000.0, nominal_output_rate_hz=2.5, input_channels=('Hx', 'Hy'), output_channels=('Hz', ), attrs=<factory>)[source]

Bases: CoreObject

Published/declared ZTEM system characteristics.

The values are informative defaults. ZTEM frequency selection depends on platform speed, sampling, signal strength, and noise, so processed survey products may legitimately use a different subset or frequency grid; nothing here constrains build_ztem_emtf()’s accepted input.

Parameters:
  • practical_frequency_range_hz ((float, float), optional) – Published practical frequency band in Hz, (low, high) with 0 < low < high. See practical_frequency_mask().

  • common_processed_bands_hz (tuple of (float, float), optional) – Commonly published processed sub-bands in Hz; each validated the same way as practical_frequency_range_hz.

  • typical_frequency_count ((int, int), optional) – Typical minimum/maximum count of processed frequency windows, (low, high) with 0 < low <= high.

  • time_series_sampling_rate_hz (float, optional) – Published raw time-series sampling rate in Hz.

  • nominal_output_rate_hz (float, optional) – Published processed-output rate in Hz.

  • input_channels ((str, str), default ("Hx", "Hy")) – Fixed ground-reference horizontal magnetic input channels; must equal ("Hx", "Hy").

  • output_channels ((str,), default ("Hz",)) – Fixed airborne vertical magnetic output channel; must equal ("Hz",).

  • attrs (dict, optional) – Free-form extension metadata.

Raises:

ValueError – If any frequency range/band/count is not finite and correctly ordered, if any rate is not finite and positive, or if input_channels/output_channels differ from their fixed values.

practical_frequency_range_hz: tuple[float, float] = (22.0, 720.0)
common_processed_bands_hz: tuple[tuple[float, float], ...] = ((30.0, 720.0), (25.0, 600.0))
typical_frequency_count: tuple[int, int] = (5, 6)
time_series_sampling_rate_hz: float = 2000.0
nominal_output_rate_hz: float = 2.5
input_channels: tuple[str, ...] = ('Hx', 'Hy')
output_channels: tuple[str, ...] = ('Hz',)
attrs: dict[str, Any]
validate()[source]

Normalize and range-check every descriptive field in place.

Return type:

None

practical_frequency_mask(frequency)[source]

Return a mask for values inside the published practical band.

Parameters:

frequency (Any)

Return type:

ndarray

to_instrument_meta(*, serial=None, software_version='')[source]

Return reusable instrument metadata without vendor guesses.

Only a magnetic_sensor is populated – electric_sensor stays None because ZTEM’s tipper geometry has no electric channel, unlike MobileMT’s admittance (see to_instrument_meta()).

Parameters:
  • serial (str | None)

  • software_version (str)

Return type:

InstrumentMeta

class pycsamt.airborne.ztem.base.ZTEMReferenceStation(station_id=None, site=None, magnetic_channels=('Hx', 'Hy'), attrs=<factory>)[source]

Bases: CoreObject

Fixed ground magnetic reference station used by ZTEM processing.

Passed to build_ztem_emtf() to populate processing’s remote-reference metadata; see _processing_for_reference().

Parameters:
  • station_id (str, optional) – Explicit reference-station identifier. Falls back to site.preferred_name through preferred_id when omitted; see normalize_optional_identifier().

  • site (SiteMeta, optional) – Reference-station location/identity metadata.

  • magnetic_channels ((str, str), default ("Hx", "Hy")) – Fixed horizontal magnetic channels measured at the reference station; must equal ("Hx", "Hy").

  • attrs (dict, optional) – Free-form extension metadata.

Raises:
station_id: str | None = None
site: SiteMeta | None = None
magnetic_channels: tuple[str, str] = ('Hx', 'Hy')
attrs: dict[str, Any]
validate()[source]

Normalize the identifier/channels and type-check site.

Return type:

None

property preferred_id: str | None[source]

Return explicit station ID, then the SiteMeta preferred name.