Skip to article frontmatterSkip to article content
from IPython.display import Image
# @hidden_cell
Image("figures/00_aurora_backdrop_VbZDFnn.jpeg")
<IPython.core.display.Image object>
Image("figures/00a_aurora_backdrop_screenshot_with_credits.png")
<IPython.core.display.Image object>

Overview

  • Objectives, Motivation, Core Packages, Development Principles, History & Software testing

Processing Outline

  • TF Calculations (external notebook)
  • High level flow, TF Kernel Concept, Main Interfaces

Processing Detail

  • Code Flows
  • Core data structures

Example Results

  • Synthetic Data
  • Field Data

Jupyter Notebook exercises

  • Synthetic Data processing
  • Earthscope Data

Here are some notes ...

Aurora

  • EarthScope (IRIS) Sponsored Project
  • Hosted by SimPEG (Geophysical tools developed at UBC)

Objectives:

  • Provide Open-Source Magnetotelluric (MT) Time Series Processing in Python
  • Produce transfer function (TF) objects in mt_metadata format from time series archived in mth5 format.
  • Emulate Egbert’s EMTF legacy remote-reference FORTRAN and Matlab codes

Motivation

Allow researchers to spend more time on data analysis and interpretation, and less time worrying about:

  • interfaces between metadata and processing
  • time series wrangling
  • digital filtering
  • spectral leakage
  • spectrogram transformations
  • calibration (digital counts to SI units)
  • complex-valued regression, regularization, etc.
  • robust statistics
  • noise level and error bar estimation
  • rotations

Provide framework for:

  • plugging-in new methods
  • comparison of benchmark results with updated
  • simple exploration of processing configurations
Image("figures/xkcd_standards.png")
<IPython.core.display.Image object>

Core Packages

  • numpy
  • pandas
  • scipy
  • xarray

Future versions planned to use dask and numba

Development Principles

  • Open source
  • Leverage existing tools and frameworks
  • Extensibility
  • Reusability
  • Readability (PNCA)
  • Parallelizability*

*Work in progress

History

  • 2021: Translate EMTF to python and work with MTH5
  • 2022: Workflows and examples, development
  • 2023: Wide scale testing
  • 2024: Fourier Coefficients layer tested, features layer in development
Image("figures/01_joss_manuscript_cover.png")
<IPython.core.display.Image object>

Software Testing

  • Relatively well tested
    • Uses a combination of unit-tests and integrated tests

Tests rely on Real and Synthetic Data:

  • EMTF came packaged with synthetic data time series from two stations, and we used these data to validate aurora’s results.

  • Provides a benchmark

  • Used for rapid integrated tests

Image("figures/github_tested.png")
      
<IPython.core.display.Image object>

MT Data Processing Outline

The Transfer function equations are described in terms of processing in a companion notebook:

auxiliary/tf_calculations.ipynb

(These links may work in jupyter-lab)

Image("figures/data_processing_ecosystem.png")
<IPython.core.display.Image object>

High Level Processing Flow

Image("../../../aurora/paper/aurora_workflow.png", width=3000, height=4400) # figures/00a_aurora_backdrop_screenshot_with_credits.png")
<IPython.core.display.Image object>
Image("figures/process_flow_high_level_paper_figure_2.png")
<IPython.core.display.Image object>
Image("figures/tf_kernel_paper_figure_1.png")
<IPython.core.display.Image object>
Image("figures/process_flow_main_interfaces.png")
      
<IPython.core.display.Image object>

Detailed Processing Flow

Image("figures/detailed_flow_1_of_2.png")
<IPython.core.display.Image object>
Image("figures/detailed_flow_2_of_2.png")
<IPython.core.display.Image object>

Image("figures/core_data_structures.png")
<IPython.core.display.Image object>
Image("figures/run_summary.png")
<IPython.core.display.Image object>
Image("figures/kernel_dataset.png")
<IPython.core.display.Image object>

Synthetic Data Processing Results

Image("figures/synthetic_rho_phi_curves.png")
<IPython.core.display.Image object>
Image("figures/synthetic_tabulated_results.png")
      
<IPython.core.display.Image object>
Image("figures/minimal_code_example.png")
<IPython.core.display.Image object>
Image("figures/tf_comparison_cas04_with_remote_reference.png")
<IPython.core.display.Image object>
Image("figures/widescale_tests_histograms.png")
<IPython.core.display.Image object>

Recent Updates

  • Processing Summary and Processing Pre-check:

    • Processing Summary “melts” decimation levels over runs in Kernel Dataset
    • One row per (decimation_level, run) pair
    • Validiaty checks on each row before processing to ensure consistency between Data and Processing Parameters
    • Provides an iterator for building FC layer
  • Fourier Coefficient (“FC”) Group in MTH5:

    • Removes need to re-compute if testing weights and regression schemes
    • Aurora checks for stored FCs consistent with the Processing Configuration
      • If present, they are used for TF estimation
  • Wide scale testing on >1000 Time Series and TFs archived at Earthscope

  • PyPI release: pip install aurora=0.4.2

  • Now installs as part of MTPy

Limitations

  • Can only use a one remote reference station Vs. multiple station simultaneous processing (full matrix of spectral cross power)

  • Assumes 3-,4-,or 5-channel stations

  • Limited data cleaning algorithms

    • Huber’s Regression M-Estimate implemented,
    • Time domain cleaning not implemented
  • Limited data visualization capability

  • No handling for gaps / interpolation

Future Work

  • Plug-ins for:

    • other open source MT codes, birrp-based TFs, etc.
    • Weights: coherency sorting, polarization sorting, etc.
    • ARMA prewhitening
    • Data Imputation
  • Multiple station processing regression engine

  • Expand testing suite:

    • Multiple benchmark datasets
    • More synthetic data cases
  • Align with IAGA Div VI TaskForce for Data interoperability

  • Community testing on benchmark datasets

  • HPC Applications

Longer term future work

  • Moving platform data
  • Allow Natural Fields processing of Induced polarization and DC resistivity layouts

Conclusion:

Aurora provides an example workflow for obtaining robust TF estimates from data archived in MTH5.

Get involved:

Back Up Slides

Image("figures/mt_sources_and_amplitudes.png")
<IPython.core.display.Image object>
Image("figures/standards_proliferate_translators.png")
<IPython.core.display.Image object>
Image("figures/what_do_the_time_series_look_like.png")
<IPython.core.display.Image object>
Image("figures/why_three_packages.png")
<IPython.core.display.Image object>
Image("figures/cascading_decimation.png")
<IPython.core.display.Image object>
Image("figures/potpourri.png")
<IPython.core.display.Image object>
Image("figures/schumann_01.png")
<IPython.core.display.Image object>
Image("figures/schumann_02.png")
<IPython.core.display.Image object>
Image("figures/why_three_packages.png")
<IPython.core.display.Image object>
Image("figures/recent_updates.png")
<IPython.core.display.Image object>
Image("figures/conclusion.png")
      
<IPython.core.display.Image object>
!ls figures/*png
figures/00a_aurora_backdrop_screenshot_with_credits.png
figures/01_joss_manuscript_cover.png
figures/aurora_backdrop.png
figures/cascading_decimation.png
figures/conclusion.png
figures/core_data_structures.png
figures/data_processing_ecosystem.png
figures/detailed_flow_1_of_2.png
figures/detailed_flow_2_of_2.png
figures/github_tested.png
figures/kernel_dataset.png
figures/minimal_code_example.png
figures/mt_sources_and_amplitudes.png
figures/potpourri.png
figures/process_flow_high_level_paper_figure_2.png
figures/process_flow_main_interfaces.png
figures/recent_updates.png
figures/run_summary.png
figures/schumann_01.png
figures/schumann_02.png
figures/standards_proliferate_translators.png
figures/synthetic_rho_phi_curves.png
figures/synthetic_tabulated_results.png
figures/tf_comparison_cas04_with_remote_reference.png
figures/tf_kernel_paper_figure_1.png
figures/what_do_the_time_series_look_like.png
figures/why_three_packages.png
figures/widescale_tests_histograms.png
figures/xkcd_standards.png