Make MTH5 from legacy Phoenix MTU

Older MTU units output data in a different format than the newer MTU-5C units. The data are stored in .TSN files where the N represents the sample rate, these files are accompanied by a .TBL file which contains the metadata needed to characterize the data. Inside each .TSN file is the data for all channels recorded at the sample rate.

Thanks to Dong Hao for his Python code, a reader for the .TBL and .TSN files is now included in mth5. The reader output is a RunTS object.

TODO: update PhoenixCollection to accommodate the older file format and then update PhoenixCollection.assign_run_names to reflect the older format and expected heirarchy. Then MakeMTH5.from_phoenix can be used.

Note: This example assumes that mth5_test_data is installed

Imports

[1]:

from pathlib import Path from mth5_test_data import get_test_data_path from mth5.io.phoenix import read_phoenix from mth5.mth5 import MTH5

Example Data

These data come courtesy of Dong Hao. They reside in mth5_test_data.phoenix_mtu. Lets load in the path and have a look at the files.

You will see there are 3 TSN files one for each sample rate, and one TBL file that provides the metadata information about the station recording.

[2]:
mtu_path = get_test_data_path("phoenix_mtu")
[3]:
ts_files = []
for fn in mtu_path.iterdir():
    print(fn.name)
    if fn.suffix.upper() in [".TS2", ".TS3", ".TS4", ".TS5", ".TSL", ".TSH"]:
        ts_files.append(fn)
    elif fn.suffix.upper() == ".TBL":
        mtu_table_filepath = fn
1690C16C.TBL
1690C16C.TS3
1690C16C.TS4
1690C16C.TS5
phoenix_mtu_test_data.zip

Table File

The TBL file provides the metadata for the station recording. This information has been crudely translated to mt-metadata.timeseries objects. The metadata key names are up to 4 characters and are therefore difficult to translate without the proper documentation. Therefore, if you have more knowledge about the metadata in the TBL file could you either contribute or raise an issue and provide more details.

[4]:
mtu_table = read_phoenix(mtu_table_filepath)

Survey Metadata

Have a look at the mt_metadata.timeseries.Survey object. As you can see the metadata is minimal. The user should input the id at the very least.

[5]:
print(mtu_table.survey_metadata.to_json(required=True))
{
    "survey": {
        "acquired_by.author": "cugb",
        "datum": "WGS 84",
        "geographic_name": "",
        "id": "",
        "name": "",
        "northwest_corner.elevation": 0.0,
        "northwest_corner.latitude": 41.00388,
        "northwest_corner.longitude": 104.00536,
        "project": "",
        "project_lead.author": "",
        "release_license": "CC-BY-4.0",
        "southeast_corner.elevation": 0.0,
        "southeast_corner.latitude": 41.00388,
        "southeast_corner.longitude": 104.00536,
        "summary": "",
        "time_period.end_date": "2011-01-01",
        "time_period.start_date": "2009-01-01"
    }
}

Station Metadata

Have a look at the mt_metadata.timeseries.Station object. Notice there is a default run in the run_list this should be adjusted when creating an MTH5.

[6]:
print(mtu_table.station_metadata.to_json(required=True))
{
    "station": {
        "acquired_by.author": "",
        "channel_layout": "X",
        "channels_recorded": [
            "ex",
            "ey",
            "hx",
            "hy",
            "hz"
        ],
        "data_type": "BBMT",
        "geographic_name": "",
        "id": "10441W10",
        "location.datum": "WGS 84",
        "location.declination.model": "IGRF",
        "location.declination.value": 0.0,
        "location.elevation": 1304.0,
        "location.elevation_uncertainty": 0.0,
        "location.latitude": 41.00388,
        "location.latitude_uncertainty": 0.0,
        "location.longitude": 104.00536,
        "location.longitude_uncertainty": 0.0,
        "location.x": 0.0,
        "location.x2": 0.0,
        "location.x_uncertainty": 0.0,
        "location.y": 0.0,
        "location.y2": 0.0,
        "location.y_uncertainty": 0.0,
        "location.z": 0.0,
        "location.z2": 0.0,
        "location.z_uncertainty": 0.0,
        "orientation.method": "compass",
        "orientation.reference_frame": "geographic",
        "orientation.value": "orthogonal",
        "provenance.archive.name": "",
        "provenance.creation_time": "1980-01-01T00:00:00+00:00",
        "provenance.creator.author": "",
        "provenance.software.author": "",
        "provenance.software.name": "",
        "provenance.software.version": "",
        "provenance.submitter.author": "",
        "run_list": [
            "run_1690"
        ],
        "time_period.end": "2011-01-01T00:00:00+00:00",
        "time_period.start": "2009-01-01T00:00:00+00:00"
    }
}

Run Metadata

Have a look at the mt_metadata.timeseries.Run object.

[7]:
print(mtu_table.run_metadata.to_json(required=True))
{
    "run": {
        "acquired_by.author": "",
        "channels_recorded_auxiliary": [],
        "channels_recorded_electric": [
            "ex",
            "ey"
        ],
        "channels_recorded_magnetic": [
            "hx",
            "hy",
            "hz"
        ],
        "data_logger.firmware.author": "",
        "data_logger.firmware.name": "",
        "data_logger.firmware.version": "MTU52",
        "data_logger.id": "MTU_1690",
        "data_logger.power_source.voltage.end": 0.0,
        "data_logger.power_source.voltage.start": 0.0,
        "data_logger.timing_system.drift": 0.0,
        "data_logger.timing_system.n_satellites": 8,
        "data_logger.timing_system.type": "GPS",
        "data_logger.timing_system.uncertainty": 0.0,
        "data_type": "BBMT",
        "id": "run_1690",
        "metadata_by.author": "",
        "provenance.archive.name": "",
        "provenance.creation_time": "1980-01-01T00:00:00+00:00",
        "provenance.creator.author": "",
        "provenance.software.author": "",
        "provenance.software.name": "",
        "provenance.software.version": "",
        "provenance.submitter.author": "",
        "sample_rate": 0.0,
        "time_period.end": "2011-01-01T00:00:00+00:00",
        "time_period.start": "2009-01-01T00:00:00+00:00"
    }
}

Channel Metadata

Each channel has its own channel object. Note that these are generic and the sample rate will be updated when the time series is read from a TSN file. As will the start time and end time.

[8]:
for ch in ["ex", "ey", "hx", "hy", "hz"]:
    print(f"{'='*20} {ch} {'='*20}")
    print(getattr(mtu_table, f"{ch}_metadata").to_json(required=True))
==================== ex ====================
{
    "electric": {
        "ac.end": 0.0,
        "ac.start": 0.0005017281176719806,
        "channel_number": 1,
        "component": "ex",
        "contact_resistance.end": 0.0,
        "contact_resistance.start": 0.0,
        "data_quality.rating.value": null,
        "dc.end": 0.0,
        "dc.start": -0.009348183792613004,
        "dipole_length": 100.0,
        "filters": [],
        "measurement_azimuth": 0.0,
        "measurement_tilt": 0.0,
        "negative.datum": "WGS 84",
        "negative.elevation": 0.0,
        "negative.elevation_uncertainty": 0.0,
        "negative.latitude": 0.0,
        "negative.latitude_uncertainty": 0.0,
        "negative.longitude": 0.0,
        "negative.longitude_uncertainty": 0.0,
        "negative.x": 0.0,
        "negative.x2": 0.0,
        "negative.x_uncertainty": 0.0,
        "negative.y": 0.0,
        "negative.y2": 0.0,
        "negative.y_uncertainty": 0.0,
        "negative.z": 0.0,
        "negative.z2": 0.0,
        "negative.z_uncertainty": 0.0,
        "positive.datum": "WGS 84",
        "positive.elevation": 0.0,
        "positive.elevation_uncertainty": 0.0,
        "positive.latitude": 0.0,
        "positive.latitude_uncertainty": 0.0,
        "positive.longitude": 0.0,
        "positive.longitude_uncertainty": 0.0,
        "positive.x": 0.0,
        "positive.x2": 0.0,
        "positive.x_uncertainty": 0.0,
        "positive.y": 0.0,
        "positive.y2": 0.0,
        "positive.y_uncertainty": 0.0,
        "positive.z": 0.0,
        "positive.z2": 0.0,
        "positive.z_uncertainty": 0.0,
        "sample_rate": 0.0,
        "time_period.end": "2011-01-01T00:00:00+00:00",
        "time_period.start": "2009-01-01T00:00:00+00:00",
        "type": "electric",
        "units": "digital counts"
    }
}
==================== ey ====================
{
    "electric": {
        "ac.end": 0.0,
        "ac.start": 0.0002729797688698493,
        "channel_number": 2,
        "component": "ey",
        "contact_resistance.end": 0.0,
        "contact_resistance.start": 0.0,
        "data_quality.rating.value": null,
        "dc.end": 0.0,
        "dc.start": -0.022668822129824417,
        "dipole_length": 100.0,
        "filters": [],
        "measurement_azimuth": 90.0,
        "measurement_tilt": 0.0,
        "negative.datum": "WGS 84",
        "negative.elevation": 0.0,
        "negative.elevation_uncertainty": 0.0,
        "negative.latitude": 0.0,
        "negative.latitude_uncertainty": 0.0,
        "negative.longitude": 0.0,
        "negative.longitude_uncertainty": 0.0,
        "negative.x": 0.0,
        "negative.x2": 0.0,
        "negative.x_uncertainty": 0.0,
        "negative.y": 0.0,
        "negative.y2": 0.0,
        "negative.y_uncertainty": 0.0,
        "negative.z": 0.0,
        "negative.z2": 0.0,
        "negative.z_uncertainty": 0.0,
        "positive.datum": "WGS 84",
        "positive.elevation": 0.0,
        "positive.elevation_uncertainty": 0.0,
        "positive.latitude": 0.0,
        "positive.latitude_uncertainty": 0.0,
        "positive.longitude": 0.0,
        "positive.longitude_uncertainty": 0.0,
        "positive.x": 0.0,
        "positive.x2": 0.0,
        "positive.x_uncertainty": 0.0,
        "positive.y": 0.0,
        "positive.y2": 0.0,
        "positive.y_uncertainty": 0.0,
        "positive.z": 0.0,
        "positive.z2": 0.0,
        "positive.z_uncertainty": 0.0,
        "sample_rate": 0.0,
        "time_period.end": "2011-01-01T00:00:00+00:00",
        "time_period.start": "2009-01-01T00:00:00+00:00",
        "type": "electric",
        "units": "digital counts"
    }
}
==================== hx ====================
{
    "magnetic": {
        "channel_number": 3,
        "component": "hx",
        "data_quality.rating.value": null,
        "filters": [],
        "h_field_max.end": 0.0,
        "h_field_max.start": 0.0,
        "h_field_min.end": 0.0,
        "h_field_min.start": 0.0,
        "location.datum": "WGS 84",
        "location.elevation": 0.0,
        "location.latitude": 0.0,
        "location.longitude": 0.0,
        "location.x": 0.0,
        "location.y": 0.0,
        "location.z": 0.0,
        "measurement_azimuth": 0.0,
        "measurement_tilt": 0.0,
        "sample_rate": 0.0,
        "sensor.id": "coil1693",
        "time_period.end": "2011-01-01T00:00:00+00:00",
        "time_period.start": "2009-01-01T00:00:00+00:00",
        "type": "magnetic",
        "units": "digital counts"
    }
}
==================== hy ====================
{
    "magnetic": {
        "channel_number": 4,
        "component": "hy",
        "data_quality.rating.value": null,
        "filters": [],
        "h_field_max.end": 0.0,
        "h_field_max.start": 0.0,
        "h_field_min.end": 0.0,
        "h_field_min.start": 0.0,
        "location.datum": "WGS 84",
        "location.elevation": 0.0,
        "location.latitude": 0.0,
        "location.longitude": 0.0,
        "location.x": 0.0,
        "location.y": 0.0,
        "location.z": 0.0,
        "measurement_azimuth": 90.0,
        "measurement_tilt": 0.0,
        "sample_rate": 0.0,
        "sensor.id": "coil1694",
        "time_period.end": "2011-01-01T00:00:00+00:00",
        "time_period.start": "2009-01-01T00:00:00+00:00",
        "type": "magnetic",
        "units": "digital counts"
    }
}
==================== hz ====================
{
    "magnetic": {
        "channel_number": 5,
        "component": "hz",
        "data_quality.rating.value": null,
        "filters": [],
        "h_field_max.end": 0.0,
        "h_field_max.start": 0.0,
        "h_field_min.end": 0.0,
        "h_field_min.start": 0.0,
        "location.datum": "WGS 84",
        "location.elevation": 0.0,
        "location.latitude": 0.0,
        "location.longitude": 0.0,
        "location.x": 0.0,
        "location.y": 0.0,
        "location.z": 0.0,
        "measurement_azimuth": 0.0,
        "measurement_tilt": 0.0,
        "sample_rate": 0.0,
        "sensor.id": "coil1695",
        "time_period.end": "2011-01-01T00:00:00+00:00",
        "time_period.start": "2009-01-01T00:00:00+00:00",
        "type": "magnetic",
        "units": "digital counts"
    }
}

Create MTH5

Now we will demonstrate how to create an MTH5 from the legacy MTU Phoenix data.

[10]:
with MTH5() as m:
    m = m.open_mth5(Path.cwd() / "example_mtu.mth5", mode="a")

    # step 1: add a survey group
    survey_metadata = mtu_table.survey_metadata
    survey_metadata.id = "example_mtu_survey"
    survey_group = m.add_survey(survey_metadata.id, survey_metadata=survey_metadata)

    # step 2: add a station group
    station_metadata = mtu_table.station_metadata
    station_metadata.remove_run("run_1690")
    station_group = survey_group.stations_group.add_station(
        station_metadata.id, station_metadata=station_metadata
    )

    # step 3: add runs
    for fn in ts_files:
        print(f"Adding {fn.name}")
        sr_extension = fn.suffix[-1]
        run_ts = read_phoenix(fn, **{"table_filepath": mtu_table_filepath})
        print(f"Run name: {run_ts.run_metadata.id}, SR: {run_ts.run_metadata.sample_rate} Hz")
        print(run_ts)
        # add Run
        run_group = station_group.add_run(run_ts.run_metadata.id, run_metadata=run_ts.run_metadata)
        run_group.from_runts(run_ts)

    m.channel_summary.summarize()
    channel_df = m.channel_summary.to_dataframe()
    run_df = m.run_summary
    print(m)
2026-01-03T14:53:20.455568-0800 | INFO | mth5.groups.survey | add_survey | line: 281 | survey example_mtu_survey already exists, returning existing group.
2026-01-03T14:53:20.513441-0800 | INFO | mth5.groups.base | _add_group | line: 330 | StationGroup 10441W10 already exists, returning existing group.
Adding 1690C16C.TS3
2026-01-03T14:53:20.558869-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | read | line: 513 | Opening file: 1690C16C.TS3 ...
2026-01-03T14:53:20.559869-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | _read_header | line: 267 | Start time is: 2009-12-16T07:55:00+00:00 UTC
2026-01-03T14:53:20.559869-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | _read_header | line: 289 | Sampling frequency is 2400 Hz
2026-01-03T14:53:20.560869-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | _read_header | line: 290 | Number of records is 2400 in each data block
2026-01-03T14:53:20.560869-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | _read_header | line: 292 | TS type is: MTU-5
2026-01-03T14:53:20.562835-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | read | line: 540 | Total 121 block(s) found in current file
2026-01-03T14:53:20.584265-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | read | line: 554 | # finish reading time series...
2026-01-03T14:53:20.632707-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | to_runts | line: 636 | Applying scale factor of 0.00019073486328125 to channel ex
2026-01-03T14:53:20.673896-0800 | WARNING | mth5.timeseries.run_ts | validate_metadata | line: 1056 | end time of dataset 2009-01-01T00:02:00.999583333+00:00 does not match metadata end 2011-01-01T00:00:00+00:00 updating metatdata value to 2009-01-01T00:02:00.999583333+00:00
2026-01-03T14:53:20.682897-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | to_runts | line: 636 | Applying scale factor of 0.00019073486328125 to channel ey
2026-01-03T14:53:20.698549-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | to_runts | line: 636 | Applying scale factor of 2.7286818781294704e-07 to channel hx
2026-01-03T14:53:20.727284-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | to_runts | line: 636 | Applying scale factor of 2.7286818781294704e-07 to channel hy
2026-01-03T14:53:20.742999-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | to_runts | line: 636 | Applying scale factor of 2.7286818781294704e-07 to channel hz
Run name: sr2400_001, SR: 2400.0 Hz
RunTS Summary:
        Survey:      0
        Station:     10441W10
        Run:         sr2400_001
        Start:       2009-01-01T00:00:00+00:00
        End:         2009-01-01T00:02:00.999583333+00:00
        Sample Rate: 2400.0
        Components:  ['ex', 'ey', 'hx', 'hy', 'hz']
2026-01-03T14:53:20.758259-0800 | INFO | mth5.groups.base | _add_group | line: 330 | RunGroup sr2400_001 already exists, returning existing group.
Adding 1690C16C.TS4
2026-01-03T14:53:22.658313-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | read | line: 513 | Opening file: 1690C16C.TS4 ...
2026-01-03T14:53:22.659315-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | _read_header | line: 267 | Start time is: 2009-12-16T07:50:00+00:00 UTC
2026-01-03T14:53:22.660315-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | _read_header | line: 289 | Sampling frequency is 150 Hz
2026-01-03T14:53:22.660315-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | _read_header | line: 290 | Number of records is 150 in each data block
2026-01-03T14:53:22.661314-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | _read_header | line: 292 | TS type is: MTU-5
2026-01-03T14:53:22.661314-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | read | line: 540 | Total 1952 block(s) found in current file
2026-01-03T14:53:22.753514-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | read | line: 554 | # finish reading time series...
2026-01-03T14:53:22.803064-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | to_runts | line: 636 | Applying scale factor of 0.00019073486328125 to channel ex
2026-01-03T14:53:22.840463-0800 | WARNING | mth5.timeseries.run_ts | validate_metadata | line: 1056 | end time of dataset 2009-01-01T00:32:31.993333333+00:00 does not match metadata end 2011-01-01T00:00:00+00:00 updating metatdata value to 2009-01-01T00:32:31.993333333+00:00
2026-01-03T14:53:22.847459-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | to_runts | line: 636 | Applying scale factor of 0.00019073486328125 to channel ey
2026-01-03T14:53:22.861675-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | to_runts | line: 636 | Applying scale factor of 2.7286818781294704e-07 to channel hx
2026-01-03T14:53:22.891820-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | to_runts | line: 636 | Applying scale factor of 2.7286818781294704e-07 to channel hy
2026-01-03T14:53:22.904983-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | to_runts | line: 636 | Applying scale factor of 2.7286818781294704e-07 to channel hz
Run name: sr150_001, SR: 150.0 Hz
RunTS Summary:
        Survey:      0
        Station:     10441W10
        Run:         sr150_001
        Start:       2009-01-01T00:00:00+00:00
        End:         2009-01-01T00:32:31.993333333+00:00
        Sample Rate: 150.0
        Components:  ['ex', 'ey', 'hx', 'hy', 'hz']
2026-01-03T14:53:22.920399-0800 | INFO | mth5.groups.base | _add_group | line: 330 | RunGroup sr150_001 already exists, returning existing group.
Adding 1690C16C.TS5
2026-01-03T14:53:24.959385-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | read | line: 513 | Opening file: 1690C16C.TS5 ...
2026-01-03T14:53:24.960380-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | _read_header | line: 267 | Start time is: 2009-12-16T07:46:52+00:00 UTC
2026-01-03T14:53:24.960380-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | _read_header | line: 289 | Sampling frequency is 15 Hz
2026-01-03T14:53:24.961381-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | _read_header | line: 290 | Number of records is 15 in each data block
2026-01-03T14:53:24.962380-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | _read_header | line: 292 | TS type is: MTU-5
2026-01-03T14:53:24.963380-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | read | line: 540 | Total 73036 block(s) found in current file
2026-01-03T14:53:27.446818-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | read | line: 554 | # finish reading time series...
2026-01-03T14:53:27.501031-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | to_runts | line: 636 | Applying scale factor of 0.00019073486328125 to channel ex
2026-01-03T14:53:27.548355-0800 | WARNING | mth5.timeseries.run_ts | validate_metadata | line: 1056 | end time of dataset 2009-01-01T20:17:15.933333333+00:00 does not match metadata end 2011-01-01T00:00:00+00:00 updating metatdata value to 2009-01-01T20:17:15.933333333+00:00
2026-01-03T14:53:27.561829-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | to_runts | line: 636 | Applying scale factor of 0.00019073486328125 to channel ey
2026-01-03T14:53:27.597811-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | to_runts | line: 636 | Applying scale factor of 2.7286818781294704e-07 to channel hx
2026-01-03T14:53:27.648222-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | to_runts | line: 636 | Applying scale factor of 2.7286818781294704e-07 to channel hy
2026-01-03T14:53:27.681830-0800 | INFO | mth5.io.phoenix.readers.mtu.mtu_ts | to_runts | line: 636 | Applying scale factor of 2.7286818781294704e-07 to channel hz
Run name: sr15_001, SR: 15.0 Hz
RunTS Summary:
        Survey:      0
        Station:     10441W10
        Run:         sr15_001
        Start:       2009-01-01T00:00:00+00:00
        End:         2009-01-01T20:17:15.933333333+00:00
        Sample Rate: 15.0
        Components:  ['ex', 'ey', 'hx', 'hy', 'hz']
2026-01-03T14:53:27.714389-0800 | INFO | mth5.groups.base | _add_group | line: 330 | RunGroup sr15_001 already exists, returning existing group.
/:
====================
    |- Group: Experiment
    --------------------
        |- Group: Reports
        -----------------
        |- Group: Standards
        -------------------
            --> Dataset: summary
            ......................
        |- Group: Surveys
        -----------------
            |- Group: example_mtu_survey
            ----------------------------
                |- Group: Filters
                -----------------
                    |- Group: coefficient
                    ---------------------
                    |- Group: fap
                    -------------
                    |- Group: fir
                    -------------
                    |- Group: time_delay
                    --------------------
                    |- Group: zpk
                    -------------
                |- Group: Reports
                -----------------
                |- Group: Standards
                -------------------
                    --> Dataset: summary
                    ......................
                |- Group: Stations
                ------------------
                    |- Group: 10441W10
                    ------------------
                        |- Group: Features
                        ------------------
                        |- Group: Fourier_Coefficients
                        ------------------------------
                        |- Group: Transfer_Functions
                        ----------------------------
                        |- Group: sr150_001
                        -------------------
                            --> Dataset: ex
                            .................
                            --> Dataset: ey
                            .................
                            --> Dataset: hx
                            .................
                            --> Dataset: hy
                            .................
                            --> Dataset: hz
                            .................
                        |- Group: sr15_001
                        ------------------
                            --> Dataset: ex
                            .................
                            --> Dataset: ey
                            .................
                            --> Dataset: hx
                            .................
                            --> Dataset: hy
                            .................
                            --> Dataset: hz
                            .................
                        |- Group: sr2400_001
                        --------------------
                            --> Dataset: ex
                            .................
                            --> Dataset: ey
                            .................
                            --> Dataset: hx
                            .................
                            --> Dataset: hy
                            .................
                            --> Dataset: hz
                            .................
        --> Dataset: channel_summary
        ..............................
        --> Dataset: fc_summary
        .........................
        --> Dataset: tf_summary
        .........................
2026-01-03T14:53:29.988875-0800 | INFO | mth5.mth5 | close_mth5 | line: 772 | Flushing and closing c:\Users\peaco\OneDrive\Documents\GitHub\mth5\docs\examples\notebooks\example_mtu.mth5
[11]:
channel_df
[11]:
survey station run latitude longitude elevation component start end n_samples sample_rate measurement_type azimuth tilt units has_data hdf5_reference run_hdf5_reference station_hdf5_reference
0 example_mtu_survey 10441W10 sr150_001 41.00388 104.00536 1304.0 ex 2009-01-01 00:00:00+00:00 2009-01-01 00:32:31.993333333+00:00 292800 150.0 electric 0.0 0.0 milliVolt per kilometer True <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
1 example_mtu_survey 10441W10 sr150_001 41.00388 104.00536 1304.0 ey 2009-01-01 00:00:00+00:00 2009-01-01 00:32:31.993333333+00:00 292800 150.0 electric 90.0 0.0 milliVolt per kilometer True <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
2 example_mtu_survey 10441W10 sr150_001 41.00388 104.00536 1304.0 hx 2009-01-01 00:00:00+00:00 2009-01-01 00:32:31.993333333+00:00 292800 150.0 magnetic 0.0 0.0 nanoTesla True <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
3 example_mtu_survey 10441W10 sr150_001 41.00388 104.00536 1304.0 hy 2009-01-01 00:00:00+00:00 2009-01-01 00:32:31.993333333+00:00 292800 150.0 magnetic 90.0 0.0 nanoTesla True <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
4 example_mtu_survey 10441W10 sr150_001 41.00388 104.00536 1304.0 hz 2009-01-01 00:00:00+00:00 2009-01-01 00:32:31.993333333+00:00 292800 150.0 magnetic 0.0 0.0 nanoTesla True <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
5 example_mtu_survey 10441W10 sr15_001 41.00388 104.00536 1304.0 ex 2009-01-01 00:00:00+00:00 2009-01-01 20:17:15.933333333+00:00 1095540 15.0 electric 0.0 0.0 milliVolt per kilometer True <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
6 example_mtu_survey 10441W10 sr15_001 41.00388 104.00536 1304.0 ey 2009-01-01 00:00:00+00:00 2009-01-01 20:17:15.933333333+00:00 1095540 15.0 electric 90.0 0.0 milliVolt per kilometer True <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
7 example_mtu_survey 10441W10 sr15_001 41.00388 104.00536 1304.0 hx 2009-01-01 00:00:00+00:00 2009-01-01 20:17:15.933333333+00:00 1095540 15.0 magnetic 0.0 0.0 nanoTesla True <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
8 example_mtu_survey 10441W10 sr15_001 41.00388 104.00536 1304.0 hy 2009-01-01 00:00:00+00:00 2009-01-01 20:17:15.933333333+00:00 1095540 15.0 magnetic 90.0 0.0 nanoTesla True <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
9 example_mtu_survey 10441W10 sr15_001 41.00388 104.00536 1304.0 hz 2009-01-01 00:00:00+00:00 2009-01-01 20:17:15.933333333+00:00 1095540 15.0 magnetic 0.0 0.0 nanoTesla True <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
10 example_mtu_survey 10441W10 sr2400_001 41.00388 104.00536 1304.0 ex 2009-01-01 00:00:00+00:00 2009-01-01 00:02:00.999583333+00:00 290400 2400.0 electric 0.0 0.0 milliVolt per kilometer True <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
11 example_mtu_survey 10441W10 sr2400_001 41.00388 104.00536 1304.0 ey 2009-01-01 00:00:00+00:00 2009-01-01 00:02:00.999583333+00:00 290400 2400.0 electric 90.0 0.0 milliVolt per kilometer True <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
12 example_mtu_survey 10441W10 sr2400_001 41.00388 104.00536 1304.0 hx 2009-01-01 00:00:00+00:00 2009-01-01 00:02:00.999583333+00:00 290400 2400.0 magnetic 0.0 0.0 nanoTesla True <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
13 example_mtu_survey 10441W10 sr2400_001 41.00388 104.00536 1304.0 hy 2009-01-01 00:00:00+00:00 2009-01-01 00:02:00.999583333+00:00 290400 2400.0 magnetic 90.0 0.0 nanoTesla True <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
14 example_mtu_survey 10441W10 sr2400_001 41.00388 104.00536 1304.0 hz 2009-01-01 00:00:00+00:00 2009-01-01 00:02:00.999583333+00:00 290400 2400.0 magnetic 0.0 0.0 nanoTesla True <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
[12]:
run_df
[12]:
channel_scale_factors duration end has_data input_channels mth5_path n_samples output_channels run sample_rate start station survey run_hdf5_reference station_hdf5_reference
0 {'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '... 1951.993333 2009-01-01 00:32:31.993333333+00:00 True [hx, hy] c:/Users/peaco/OneDrive/Documents/GitHub/mth5/... 292800 [ex, ey, hz] sr150_001 150.0 2009-01-01 00:00:00+00:00 10441W10 example_mtu_survey <HDF5 object reference> <HDF5 object reference>
1 {'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '... 73035.933333 2009-01-01 20:17:15.933333333+00:00 True [hx, hy] c:/Users/peaco/OneDrive/Documents/GitHub/mth5/... 1095540 [ex, ey, hz] sr15_001 15.0 2009-01-01 00:00:00+00:00 10441W10 example_mtu_survey <HDF5 object reference> <HDF5 object reference>
2 {'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '... 120.999583 2009-01-01 00:02:00.999583333+00:00 True [hx, hy] c:/Users/peaco/OneDrive/Documents/GitHub/mth5/... 290400 [ex, ey, hz] sr2400_001 2400.0 2009-01-01 00:00:00+00:00 10441W10 example_mtu_survey <HDF5 object reference> <HDF5 object reference>
[ ]: