pycsamt.iot.edge_csem#
CSEM controlled-source electromagnetic edge quality control.
CSEM shares the controlled-source primitives in
edge_csamt (skin-depth field zones, transmitter
frequency comb, source stability), but its defining measurement is
different: a dipole source is recorded by a receiver array and the
signature data product is the response as a function of source-receiver
offset at each frequency – magnitude-versus-offset (MVO) and
phase-versus-offset (PVO).
This module provides the offset-domain QC that is specific to CSEM:
field_vs_offset()builds an MVO/PVO curve, flags where the signal drops below the noise floor (the detectability limit), and checks that the amplitude decays monotonically with offset – a bump usually means a bad receiver, a geometry error, or genuine 3-D structure worth a second look;csem_edge_report()/csem_edge_table()collate one or more frequency responses.
Everything is numpy-only, consistent with the rest of the edge modules.
Functions
|
Run the CSEM offset-domain diagnostics for one frequency. |
|
Flatten one or more |
|
Build a magnitude/phase-versus-offset curve and QC it. |
Classes
|
Result of |
- class pycsamt.iot.edge_csem.OffsetResponse(frequency_hz, offsets_m=<factory>, amplitudes=<factory>, phases_deg=None, above_noise=<factory>, max_detectable_offset_m=None, monotonic_decay=False, dynamic_range_db=nan)[source]#
Bases:
PyCSAMTObjectResult of
field_vs_offset()– one MVO/PVO curve.- Parameters:
- pycsamt.iot.edge_csem.field_vs_offset(offsets_m, amplitudes, *, phases_deg=None, noise_floor=None, frequency_hz=None, monotonic_tol=0.05)[source]#
Build a magnitude/phase-versus-offset curve and QC it.
- Parameters:
offsets_m (array-like of float) – Source-receiver offsets in metres (need not be sorted).
amplitudes (array-like of float) – Field amplitude at each offset (e.g. normalised E-field). Must be non-negative and the same length as offsets_m.
phases_deg (array-like of float, optional) – Phase at each offset in degrees, carried through for PVO.
noise_floor (float, optional) – Amplitude below which a reading is not detectable. When given, the largest offset above the floor is reported as the detectability limit and only detectable points drive the decay/dynamic-range QC.
frequency_hz (float, optional) – Frequency this curve was measured at, recorded for reference.
monotonic_tol (float) – Fractional tolerance when checking that amplitude never increases with offset (
a[i+1] <= a[i] * (1 + tol)).
- Return type:
- pycsamt.iot.edge_csem.csem_edge_report(offsets_m, amplitudes, *, phases_deg=None, noise_floor=None, frequency_hz=None)[source]#
Run the CSEM offset-domain diagnostics for one frequency.
- pycsamt.iot.edge_csem.csem_edge_table(reports, *, api=None)[source]#
Flatten one or more
csem_edge_report()results into a table.Accepts a
{label: report}mapping (or(label, report)pairs); the label is typically a frequency or receiver-line identifier.