2.7.6.3. pycsamt.airborne.afmag.base#
AFMAG-family metadata built on the common airborne model.
Both generations’ SystemSpec/ReferenceStation classes inherit
CoreObject, matching every sibling
technology’s metadata
(ZTEMSystemSpec,
MobileMTSystemSpec, …): 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
|
Fixed magnetic reference station for tensor AFMAG/AirMt processing. |
|
Published characteristics of the tensor AFMAG/AirMt generation. |
|
Descriptive characteristics of the historical comparator AFMAG. |
- class pycsamt.airborne.afmag.base.OriginalAFMAGSystemSpec(historical_frequency_band_hz=(1.0, 20000.0), typical_frequencies_hz=(150.0, 510.0), coil_count=2, coil_tilt_deg=45.0, coil_separation_deg=45.0, digital_recording=False, attrs=<factory>)[source]
Bases:
CoreObjectDescriptive characteristics of the historical comparator AFMAG.
These values describe the original airborne implementation and are not parser constraints. Historical systems reported a comparator deflection proportional to the polarization-plane tilt rather than a digital tensor; see
AFMAGValidationErrorandbuild_original_afmag_emtf()for how that scalar response is built.- Parameters:
historical_frequency_band_hz ((float, float), optional) – Published historical operating band in Hz,
(low, high)with0 < low < high.typical_frequencies_hz (tuple of float, optional) – Typical discrete operating frequencies in Hz historically used by comparator instruments (non-empty, finite, positive).
coil_count (int, default 2) – Fixed at 2: the original comparator design used two crossed coils.
coil_tilt_deg (float, optional) – Published nominal coil tilt angle in degrees.
coil_separation_deg (float, optional) – Published nominal angular separation between the two coils in degrees.
digital_recording (bool, default False) – Whether the archival record was digitized (
True) or is a purely analogue comparator deflection (False).attrs (dict, optional) – Free-form extension metadata.
- Raises:
ValueError – If historical_frequency_band_hz is not finite and correctly ordered, if typical_frequencies_hz is empty or not all finite/positive, if coil_count is not
2, or if coil_tilt_deg/coil_separation_deg is not finite/positive.
- coil_count: int = 2
- coil_tilt_deg: float = 45.0
- coil_separation_deg: float = 45.0
- digital_recording: bool = False
- validate()[source]
Normalize and range-check every descriptive field in place.
- Return type:
None
- to_instrument_meta(*, serial=None, software_version='')[source]
Return reusable instrument metadata for historical AFMAG.
Only a
magnetic_sensoris populated –electric_sensorstaysNone, since original comparator AFMAG has no electric channel.- Parameters:
- Return type:
- class pycsamt.airborne.afmag.base.AirMtSystemSpec(practical_frequency_range_hz=(20.0, 800.0), typical_frequency_count=(5, 6), time_series_sampling_rate_hz=2000.0, input_channels=('Hx', 'Hy'), output_channels=('Hx', 'Hy', 'Hz'), reference_channels=('Hx', 'Hy', 'Hz'), attrs=<factory>)[source]
Bases:
CoreObjectPublished characteristics of the tensor AFMAG/AirMt generation.
- Parameters:
practical_frequency_range_hz ((float, float), optional) – Published practical frequency band in Hz,
(low, high)with0 < low < high. Seepractical_frequency_mask().typical_frequency_count ((int, int), optional) – Typical minimum/maximum count of processed frequency windows,
(low, high)with0 < low <= high.time_series_sampling_rate_hz (float, optional) – Published raw time-series sampling rate in Hz.
input_channels ((str, str), default ("Hx", "Hy")) – Fixed transfer-function input channels; must equal
("Hx", "Hy").output_channels ((str, str, str), default ("Hx", "Hy", "Hz")) – Fixed airborne transfer-function output channels; must equal
("Hx", "Hy", "Hz").reference_channels ((str, str, str), default ("Hx", "Hy", "Hz")) – Fixed channels measured at the fixed ground reference station; must equal
("Hx", "Hy", "Hz").attrs (dict, optional) – Free-form extension metadata.
- Raises:
ValueError – If practical_frequency_range_hz is not finite and correctly ordered, if typical_frequency_count is not a valid
0 < low <= highpair, if time_series_sampling_rate_hz is not finite/positive, or if input_channels/output_channels/ reference_channels differs from its fixed value.
- time_series_sampling_rate_hz: float = 2000.0
- validate()[source]
Normalize and range-check every descriptive field in place.
- Return type:
None
- practical_frequency_mask(frequency)[source]
Return a diagnostic mask for the descriptive frequency band.
- to_instrument_meta(*, serial=None, software_version='')[source]
Return reusable instrument metadata for tensor AFMAG/AirMt.
Only a
magnetic_sensoris populated –electric_sensorstaysNone, since AirMt’s interstation transfer function has no electric channel.- Parameters:
- Return type:
- class pycsamt.airborne.afmag.base.AFMAGReferenceStation(station_id=None, site=None, measured_channels=('Hx', 'Hy', 'Hz'), transfer_input_channels=('Hx', 'Hy'), attrs=<factory>)[source]
Bases:
CoreObjectFixed magnetic reference station for tensor AFMAG/AirMt processing.
Passed to
build_airmt_emtf()to populateprocessing’s remote-reference metadata; see_processing_for_reference().- Parameters:
station_id (str, optional) – Explicit reference-station identifier. Falls back to
site.preferred_namethroughpreferred_idwhen omitted; seenormalize_optional_identifier().site (SiteMeta, optional) – Reference-station location/identity metadata.
measured_channels ((str, str, str), default ("Hx", "Hy", "Hz")) – Fixed channels physically measured at the reference station; must equal
("Hx", "Hy", "Hz").transfer_input_channels ((str, str), default ("Hx", "Hy")) – Fixed subset of measured_channels used as the AirMt transfer function’s input; must equal
("Hx", "Hy").attrs (dict, optional) – Free-form extension metadata.
- Raises:
ValueError – If measured_channels differs from
("Hx", "Hy", "Hz")or transfer_input_channels differs from("Hx", "Hy").
- validate()[source]
Normalize the identifier/channels and type-check
site.- Return type:
None