{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Build an MTH5 and Operate the Aurora Pipeline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook pulls MT miniSEED data from the IRIS Dataselect web service and produces MTH5 out of it. It outlines the process of making an MTH5 file, generating a processing config, and running the Aurora processor.\n", "\n", "It assumes that aurora, mth5, and mt_metadata have all been installed.\n", "\n", "In this \"new\" version, the workflow has changed somewhat. \n", "\n", "1. The process_mth5 call works with a dataset dataframe, rather than a single run_id\n", "2. The config object is now based on the mt_metadata.base Base class\n", "3. Remote reference processing is supported (at least in theory)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 0. Flow of this notebook\n", "\n", "Section 1: Here we do imports and construct a table of the data that we will access to build the mth5. Note that there is no explanation here as to the table source -- a future update can show how to create such a table from IRIS data_availability tools\n", "\n", "Seciton 2: the metadata and the data are accessed, and the mth5 is created and stored.\n", "\n", "Section 3: Aurora is used to process the data" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# # Uncomment while developing\n", "# %load_ext autoreload\n", "# %autoreload 2\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Required imports for the program. \n", "from pathlib import Path\n", "import pandas as pd\n", "import warnings\n", "\n", "from mth5 import mth5, timeseries\n", "from mth5.clients.fdsn import FDSN\n", "from mth5.clients.make_mth5 import MakeMTH5\n", "from mth5.utils.helpers import initialize_mth5\n", "from mt_metadata.utils.mttime import get_now_utc, MTime\n", "from aurora.config import BANDS_DEFAULT_FILE\n", "from aurora.config.config_creator import ConfigCreator\n", "from aurora.pipelines.process_mth5 import process_mth5\n", "from aurora.transfer_function.kernel_dataset import KernelDataset\n", "from aurora.pipelines.run_summary import RunSummary\n", "\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Build an MTH5 file from information extracted by IRIS\n", "\n", "- If you have already built an MTH5 you can skip this section \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Set path so MTH5 file builds to current working directory. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "PosixPath('/home/kkappler/software/irismt/aurora/docs/examples')" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "default_path = Path().cwd()\n", "default_path" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Select mth5 file version" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# mth5_version = '0.1.0'\n", "mth5_version = '0.2.0'\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Initialize the Make MTH5 code. \n", "maker = MakeMTH5(mth5_version=mth5_version)\n", "maker.client = \"IRIS\"\n", "maker.interact = True\n", "\n", "# Initalize an FDSN object to access column names for request df\n", "fdsn_obj = FDSN()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1A: Specify the data to access from IRIS\n", "\n", "Note that here we explicitly prescribe the data, but this dataframe could be built from IRIS data availability tools in a programatic way" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Generate data frame of FDSN Network, Station, Location, Channel, Startime, Endtime codes of interest\n", "\n", "CAS04LQE = ['8P', 'CAS04', '', 'LQE', '2020-06-02T19:00:00', '2020-07-13T19:00:00']\n", "CAS04LQN = ['8P', 'CAS04', '', 'LQN', '2020-06-02T19:00:00', '2020-07-13T19:00:00']\n", "CAS04BFE = ['8P', 'CAS04', '', 'LFE', '2020-06-02T19:00:00', '2020-07-13T19:00:00']\n", "CAS04BFN = ['8P', 'CAS04', '', 'LFN', '2020-06-02T19:00:00', '2020-07-13T19:00:00']\n", "CAS04BFZ = ['8P', 'CAS04', '', 'LFZ', '2020-06-02T19:00:00', '2020-07-13T19:00:00']\n", "\n", "request_list = [CAS04LQE, CAS04LQN, CAS04BFE, CAS04BFN, CAS04BFZ]\n", "\n", "# Turn list into dataframe\n", "request_df = pd.DataFrame(request_list, columns=fdsn_obj.request_columns)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
networkstationlocationchannelstartend
08PCAS04LQE2020-06-02T19:00:002020-07-13T19:00:00
18PCAS04LQN2020-06-02T19:00:002020-07-13T19:00:00
28PCAS04LFE2020-06-02T19:00:002020-07-13T19:00:00
38PCAS04LFN2020-06-02T19:00:002020-07-13T19:00:00
48PCAS04LFZ2020-06-02T19:00:002020-07-13T19:00:00
\n", "
" ], "text/plain": [ " network station location channel start end\n", "0 8P CAS04 LQE 2020-06-02T19:00:00 2020-07-13T19:00:00\n", "1 8P CAS04 LQN 2020-06-02T19:00:00 2020-07-13T19:00:00\n", "2 8P CAS04 LFE 2020-06-02T19:00:00 2020-07-13T19:00:00\n", "3 8P CAS04 LFN 2020-06-02T19:00:00 2020-07-13T19:00:00\n", "4 8P CAS04 LFZ 2020-06-02T19:00:00 2020-07-13T19:00:00" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Inspect the dataframe\n", "request_df" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# Request the inventory information from IRIS\n", "inventory = fdsn_obj.get_inventory_from_df(request_df, data=False)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(Inventory created at 2024-01-14T18:42:02.056231Z\n", "\tCreated by: ObsPy 1.4.0\n", "\t\t https://www.obspy.org\n", "\tSending institution: MTH5\n", "\tContains:\n", "\t\tNetworks (1):\n", "\t\t\t8P\n", "\t\tStations (1):\n", "\t\t\t8P.CAS04 (Corral Hollow, CA, USA)\n", "\t\tChannels (8):\n", "\t\t\t8P.CAS04..LFZ, 8P.CAS04..LFN, 8P.CAS04..LFE, 8P.CAS04..LQN (2x), \n", "\t\t\t8P.CAS04..LQE (3x),\n", " 0 Trace(s) in Stream:\n", ")" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Inspect the inventory\n", "inventory" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Builds an MTH5 file from the user defined database. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With the mth5 object set, we are ready to actually request the data from the fdsn client (IRIS) and save it to an MTH5 file. This process builds an MTH5 file and can take some time depending on how much data is requested. \n", "\n", "Note: `interact` keeps the MTH5 open after it is done building\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[33m\u001b[1m2024-01-14T10:42:02.807633-0800 | WARNING | mth5.mth5 | open_mth5 | 8P_CAS04.h5 will be overwritten in 'w' mode\u001b[0m\n", "\u001b[1m2024-01-14T10:42:03.186485-0800 | INFO | mth5.mth5 | _initialize_file | Initialized MTH5 0.2.0 file /home/kkappler/software/irismt/aurora/docs/examples/8P_CAS04.h5 in mode w\u001b[0m\n", "\u001b[1m2024-01-14T10:42:56.151432-0800 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_si_units to a CoefficientFilter.\u001b[0m\n", "\u001b[1m2024-01-14T10:42:56.162071-0800 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_dipole_92.000 to a CoefficientFilter.\u001b[0m\n", "\u001b[1m2024-01-14T10:42:56.211669-0800 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_si_units to a CoefficientFilter.\u001b[0m\n", "\u001b[1m2024-01-14T10:42:56.221759-0800 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_dipole_92.000 to a CoefficientFilter.\u001b[0m\n", "\u001b[1m2024-01-14T10:42:56.291045-0800 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_si_units to a CoefficientFilter.\u001b[0m\n", "\u001b[1m2024-01-14T10:42:56.302011-0800 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_dipole_92.000 to a CoefficientFilter.\u001b[0m\n", "\u001b[1m2024-01-14T10:42:56.353822-0800 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_si_units to a CoefficientFilter.\u001b[0m\n", "\u001b[1m2024-01-14T10:42:56.362284-0800 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_dipole_92.000 to a CoefficientFilter.\u001b[0m\n", "\u001b[1m2024-01-14T10:42:56.414744-0800 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_si_units to a CoefficientFilter.\u001b[0m\n", "\u001b[1m2024-01-14T10:42:56.423305-0800 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_dipole_92.000 to a CoefficientFilter.\u001b[0m\n", "\u001b[1m2024-01-14T10:42:57.723419-0800 | INFO | mth5.groups.base | _add_group | RunGroup a already exists, returning existing group.\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:42:57.866211-0800 | WARNING | mth5.timeseries.run_ts | validate_metadata | start time of dataset 2020-06-02T19:00:00+00:00 does not match metadata start 2020-06-02T18:41:43+00:00 updating metatdata value to 2020-06-02T19:00:00+00:00\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:42:58.111401-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id a. Setting to ch.run_metadata.id to a\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:42:58.338249-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id a. Setting to ch.run_metadata.id to a\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:42:58.546531-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id a. Setting to ch.run_metadata.id to a\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:42:58.756314-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id a. Setting to ch.run_metadata.id to a\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:42:58.959951-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id a. Setting to ch.run_metadata.id to a\u001b[0m\n", "\u001b[1m2024-01-14T10:42:59.029104-0800 | INFO | mth5.groups.base | _add_group | RunGroup b already exists, returning existing group.\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:42:59.455798-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id b. Setting to ch.run_metadata.id to b\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:42:59.658208-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id b. Setting to ch.run_metadata.id to b\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:42:59.857993-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id b. Setting to ch.run_metadata.id to b\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:43:00.063593-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id b. Setting to ch.run_metadata.id to b\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:43:00.267380-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id b. Setting to ch.run_metadata.id to b\u001b[0m\n", "\u001b[1m2024-01-14T10:43:00.343973-0800 | INFO | mth5.groups.base | _add_group | RunGroup c already exists, returning existing group.\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:43:00.876907-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id c. Setting to ch.run_metadata.id to c\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:43:01.096488-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id c. Setting to ch.run_metadata.id to c\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:43:01.299819-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id c. Setting to ch.run_metadata.id to c\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:43:01.507180-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id c. Setting to ch.run_metadata.id to c\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:43:01.713057-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id c. Setting to ch.run_metadata.id to c\u001b[0m\n", "\u001b[1m2024-01-14T10:43:01.804340-0800 | INFO | mth5.groups.base | _add_group | RunGroup d already exists, returning existing group.\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:43:02.091286-0800 | WARNING | mth5.timeseries.run_ts | validate_metadata | end time of dataset 2020-07-13T19:00:00+00:00 does not match metadata end 2020-07-13T21:46:12+00:00 updating metatdata value to 2020-07-13T19:00:00+00:00\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:43:02.276636-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id d. Setting to ch.run_metadata.id to d\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:43:02.500754-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id d. Setting to ch.run_metadata.id to d\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:43:02.711015-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id d. Setting to ch.run_metadata.id to d\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:43:02.911784-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id d. Setting to ch.run_metadata.id to d\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:43:03.115840-0800 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id d. Setting to ch.run_metadata.id to d\u001b[0m\n", "\u001b[1m2024-01-14T10:43:03.232392-0800 | INFO | mth5.mth5 | close_mth5 | Flushing and closing /home/kkappler/software/irismt/aurora/docs/examples/8P_CAS04.h5\u001b[0m\n", "\u001b[33m\u001b[1m2024-01-14T10:43:03.255150-0800 | WARNING | mth5.mth5 | filename | MTH5 file is not open or has not been created yet. Returning default name\u001b[0m\n" ] } ], "source": [ "mth5_object = maker.from_fdsn_client(request_df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1B: Examine and Update the MTH5 object\n", "\n", "With the open MTH5 Object, we can start to examine what is in it. For example, retrieve the filename and file_version. You can additionally do things such as getting the station information and edit it by setting a new value, in this case the declination model. " ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "/:\n", "====================\n", " |- Group: Experiment\n", " --------------------\n", " |- Group: Reports\n", " -----------------\n", " |- Group: Standards\n", " -------------------\n", " --> Dataset: summary\n", " ......................\n", " |- Group: Surveys\n", " -----------------\n", " |- Group: CONUS_South\n", " ---------------------\n", " |- Group: Filters\n", " -----------------\n", " |- Group: coefficient\n", " ---------------------\n", " |- Group: electric_analog_to_digital\n", " ------------------------------------\n", " |- Group: electric_dipole_92.000\n", " --------------------------------\n", " |- Group: electric_si_units\n", " ---------------------------\n", " |- Group: magnetic_analog_to_digital\n", " ------------------------------------\n", " |- Group: fap\n", " -------------\n", " |- Group: fir\n", " -------------\n", " |- Group: time_delay\n", " --------------------\n", " |- Group: electric_time_offset\n", " ------------------------------\n", " |- Group: hx_time_offset\n", " ------------------------\n", " |- Group: hy_time_offset\n", " ------------------------\n", " |- Group: hz_time_offset\n", " ------------------------\n", " |- Group: zpk\n", " -------------\n", " |- Group: electric_butterworth_high_pass\n", " ----------------------------------------\n", " --> Dataset: poles\n", " ....................\n", " --> Dataset: zeros\n", " ....................\n", " |- Group: electric_butterworth_low_pass\n", " ---------------------------------------\n", " --> Dataset: poles\n", " ....................\n", " --> Dataset: zeros\n", " ....................\n", " |- Group: magnetic_butterworth_low_pass\n", " ---------------------------------------\n", " --> Dataset: poles\n", " ....................\n", " --> Dataset: zeros\n", " ....................\n", " |- Group: Reports\n", " -----------------\n", " |- Group: Standards\n", " -------------------\n", " --> Dataset: summary\n", " ......................\n", " |- Group: Stations\n", " ------------------\n", " |- Group: CAS04\n", " ---------------\n", " |- Group: Fourier_Coefficients\n", " ------------------------------\n", " |- Group: Transfer_Functions\n", " ----------------------------\n", " |- Group: a\n", " -----------\n", " --> Dataset: ex\n", " .................\n", " --> Dataset: ey\n", " .................\n", " --> Dataset: hx\n", " .................\n", " --> Dataset: hy\n", " .................\n", " --> Dataset: hz\n", " .................\n", " |- Group: b\n", " -----------\n", " --> Dataset: ex\n", " .................\n", " --> Dataset: ey\n", " .................\n", " --> Dataset: hx\n", " .................\n", " --> Dataset: hy\n", " .................\n", " --> Dataset: hz\n", " .................\n", " |- Group: c\n", " -----------\n", " --> Dataset: ex\n", " .................\n", " --> Dataset: ey\n", " .................\n", " --> Dataset: hx\n", " .................\n", " --> Dataset: hy\n", " .................\n", " --> Dataset: hz\n", " .................\n", " |- Group: d\n", " -----------\n", " --> Dataset: ex\n", " .................\n", " --> Dataset: ey\n", " .................\n", " --> Dataset: hx\n", " .................\n", " --> Dataset: hy\n", " .................\n", " --> Dataset: hz\n", " .................\n", " --> Dataset: channel_summary\n", " ..............................\n", " --> Dataset: tf_summary\n", " ........................." ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mth5_object" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "mth5_path = mth5_object.filename" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0.2.0'" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mth5_object.file_version\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m2024-01-14T10:43:03.348442-0800 | INFO | mth5.mth5 | close_mth5 | Flushing and closing /home/kkappler/software/irismt/aurora/docs/examples/8P_CAS04.h5\u001b[0m\n" ] } ], "source": [ "mth5_object.close_mth5()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "mth5_object = initialize_mth5(mth5_path)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1C: Optionally Update Metdata:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "IGRF-13\n", "IGRF\n" ] } ], "source": [ "# Edit and update the MTH5 metadata \n", "s = mth5_object.get_station(\"CAS04\", survey=\"CONUS_South\")\n", "print(s.metadata.location.declination.model)\n", "s.metadata.location.declination.model = 'IGRF'\n", "print(s.metadata.location.declination.model)\n", "s.write_metadata() # writes to file mth5_filename" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Filename: /home/kkappler/software/irismt/aurora/docs/examples/8P_CAS04.h5 \n", " Version: 0.2.0\n" ] } ], "source": [ "# Print some info about the mth5 \n", "mth5_filename = mth5_object.filename\n", "version = mth5_object.file_version\n", "print(f\" Filename: {mth5_filename} \\n Version: {version}\")\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "tags": [] }, "outputs": [], "source": [ "# Get the available stations and runs from the MTH5 object\n", "mth5_object.channel_summary.summarize()\n", "ch_summary = mth5_object.channel_summary.to_dataframe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2: Process Data\n", "If MTH5 file already exists you can start here if you dont want to execute the previous code to get data again." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "interact = False\n", "if interact:\n", " pass\n", "else:\n", " h5_path = default_path.joinpath(\"8P_CAS04.h5\")\n", " mth5_object = initialize_mth5(h5_path, mode=\"a\", file_version=mth5_version)\n", " ch_summary = mth5_object.channel_summary.to_dataframe()\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Generate an Aurora Configuration file using MTH5 as an input\n", "\n", "Up to this point, we have used mth5 and mt_metadata, but haven't yet used aurora. So we will use the MTH5 that we just created (and examined and updated) as input into Aurora.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Channel Summary\n", "\n", "This is a very useful datastructure inside the mth5. It acts basically like an index of available data at the channel-run level, i.e. there is one row for every contiguous chunk of time-series recorded by an electric dipole or magnetometer" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
surveystationrunlatitudelongitudeelevationcomponentstartendn_samplessample_ratemeasurement_typeazimuthtiltunitshdf5_referencerun_hdf5_referencestation_hdf5_reference
0CONUS SouthCAS04a37.633351-121.468382329.3875ex2020-06-02 19:00:00+00:002020-06-02 22:07:46+00:00112671.0electric13.20.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
1CONUS SouthCAS04a37.633351-121.468382329.3875ey2020-06-02 19:00:00+00:002020-06-02 22:07:46+00:00112671.0electric103.20.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
2CONUS SouthCAS04a37.633351-121.468382329.3875hx2020-06-02 19:00:00+00:002020-06-02 22:07:46+00:00112671.0magnetic13.20.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
3CONUS SouthCAS04a37.633351-121.468382329.3875hy2020-06-02 19:00:00+00:002020-06-02 22:07:46+00:00112671.0magnetic103.20.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
4CONUS SouthCAS04a37.633351-121.468382329.3875hz2020-06-02 19:00:00+00:002020-06-02 22:07:46+00:00112671.0magnetic0.090.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
5CONUS SouthCAS04b37.633351-121.468382329.3875ex2020-06-02 22:24:55+00:002020-06-12 17:52:23+00:008476491.0electric13.20.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
6CONUS SouthCAS04b37.633351-121.468382329.3875ey2020-06-02 22:24:55+00:002020-06-12 17:52:23+00:008476491.0electric103.20.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
7CONUS SouthCAS04b37.633351-121.468382329.3875hx2020-06-02 22:24:55+00:002020-06-12 17:52:23+00:008476491.0magnetic13.20.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
8CONUS SouthCAS04b37.633351-121.468382329.3875hy2020-06-02 22:24:55+00:002020-06-12 17:52:23+00:008476491.0magnetic103.20.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
9CONUS SouthCAS04b37.633351-121.468382329.3875hz2020-06-02 22:24:55+00:002020-06-12 17:52:23+00:008476491.0magnetic0.090.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
10CONUS SouthCAS04c37.633351-121.468382329.3875ex2020-06-12 18:32:17+00:002020-07-01 17:32:59+00:0016380431.0electric13.20.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
11CONUS SouthCAS04c37.633351-121.468382329.3875ey2020-06-12 18:32:17+00:002020-07-01 17:32:59+00:0016380431.0electric103.20.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
12CONUS SouthCAS04c37.633351-121.468382329.3875hx2020-06-12 18:32:17+00:002020-07-01 17:32:59+00:0016380431.0magnetic13.20.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
13CONUS SouthCAS04c37.633351-121.468382329.3875hy2020-06-12 18:32:17+00:002020-07-01 17:32:59+00:0016380431.0magnetic103.20.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
14CONUS SouthCAS04c37.633351-121.468382329.3875hz2020-06-12 18:32:17+00:002020-07-01 17:32:59+00:0016380431.0magnetic0.090.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
15CONUS SouthCAS04d37.633351-121.468382329.3875ex2020-07-01 19:36:55+00:002020-07-13 19:00:00+00:0010345861.0electric13.20.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
16CONUS SouthCAS04d37.633351-121.468382329.3875ey2020-07-01 19:36:55+00:002020-07-13 19:00:00+00:0010345861.0electric103.20.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
17CONUS SouthCAS04d37.633351-121.468382329.3875hx2020-07-01 19:36:55+00:002020-07-13 19:00:00+00:0010345861.0magnetic13.20.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
18CONUS SouthCAS04d37.633351-121.468382329.3875hy2020-07-01 19:36:55+00:002020-07-13 19:00:00+00:0010345861.0magnetic103.20.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
19CONUS SouthCAS04d37.633351-121.468382329.3875hz2020-07-01 19:36:55+00:002020-07-13 19:00:00+00:0010345861.0magnetic0.090.0digital counts<HDF5 object reference><HDF5 object reference><HDF5 object reference>
\n", "
" ], "text/plain": [ " survey station run latitude longitude elevation component \\\n", "0 CONUS South CAS04 a 37.633351 -121.468382 329.3875 ex \n", "1 CONUS South CAS04 a 37.633351 -121.468382 329.3875 ey \n", "2 CONUS South CAS04 a 37.633351 -121.468382 329.3875 hx \n", "3 CONUS South CAS04 a 37.633351 -121.468382 329.3875 hy \n", "4 CONUS South CAS04 a 37.633351 -121.468382 329.3875 hz \n", "5 CONUS South CAS04 b 37.633351 -121.468382 329.3875 ex \n", "6 CONUS South CAS04 b 37.633351 -121.468382 329.3875 ey \n", "7 CONUS South CAS04 b 37.633351 -121.468382 329.3875 hx \n", "8 CONUS South CAS04 b 37.633351 -121.468382 329.3875 hy \n", "9 CONUS South CAS04 b 37.633351 -121.468382 329.3875 hz \n", "10 CONUS South CAS04 c 37.633351 -121.468382 329.3875 ex \n", "11 CONUS South CAS04 c 37.633351 -121.468382 329.3875 ey \n", "12 CONUS South CAS04 c 37.633351 -121.468382 329.3875 hx \n", "13 CONUS South CAS04 c 37.633351 -121.468382 329.3875 hy \n", "14 CONUS South CAS04 c 37.633351 -121.468382 329.3875 hz \n", "15 CONUS South CAS04 d 37.633351 -121.468382 329.3875 ex \n", "16 CONUS South CAS04 d 37.633351 -121.468382 329.3875 ey \n", "17 CONUS South CAS04 d 37.633351 -121.468382 329.3875 hx \n", "18 CONUS South CAS04 d 37.633351 -121.468382 329.3875 hy \n", "19 CONUS South CAS04 d 37.633351 -121.468382 329.3875 hz \n", "\n", " start end n_samples \\\n", "0 2020-06-02 19:00:00+00:00 2020-06-02 22:07:46+00:00 11267 \n", "1 2020-06-02 19:00:00+00:00 2020-06-02 22:07:46+00:00 11267 \n", "2 2020-06-02 19:00:00+00:00 2020-06-02 22:07:46+00:00 11267 \n", "3 2020-06-02 19:00:00+00:00 2020-06-02 22:07:46+00:00 11267 \n", "4 2020-06-02 19:00:00+00:00 2020-06-02 22:07:46+00:00 11267 \n", "5 2020-06-02 22:24:55+00:00 2020-06-12 17:52:23+00:00 847649 \n", "6 2020-06-02 22:24:55+00:00 2020-06-12 17:52:23+00:00 847649 \n", "7 2020-06-02 22:24:55+00:00 2020-06-12 17:52:23+00:00 847649 \n", "8 2020-06-02 22:24:55+00:00 2020-06-12 17:52:23+00:00 847649 \n", "9 2020-06-02 22:24:55+00:00 2020-06-12 17:52:23+00:00 847649 \n", "10 2020-06-12 18:32:17+00:00 2020-07-01 17:32:59+00:00 1638043 \n", "11 2020-06-12 18:32:17+00:00 2020-07-01 17:32:59+00:00 1638043 \n", "12 2020-06-12 18:32:17+00:00 2020-07-01 17:32:59+00:00 1638043 \n", "13 2020-06-12 18:32:17+00:00 2020-07-01 17:32:59+00:00 1638043 \n", "14 2020-06-12 18:32:17+00:00 2020-07-01 17:32:59+00:00 1638043 \n", "15 2020-07-01 19:36:55+00:00 2020-07-13 19:00:00+00:00 1034586 \n", "16 2020-07-01 19:36:55+00:00 2020-07-13 19:00:00+00:00 1034586 \n", "17 2020-07-01 19:36:55+00:00 2020-07-13 19:00:00+00:00 1034586 \n", "18 2020-07-01 19:36:55+00:00 2020-07-13 19:00:00+00:00 1034586 \n", "19 2020-07-01 19:36:55+00:00 2020-07-13 19:00:00+00:00 1034586 \n", "\n", " sample_rate measurement_type azimuth tilt units \\\n", "0 1.0 electric 13.2 0.0 digital counts \n", "1 1.0 electric 103.2 0.0 digital counts \n", "2 1.0 magnetic 13.2 0.0 digital counts \n", "3 1.0 magnetic 103.2 0.0 digital counts \n", "4 1.0 magnetic 0.0 90.0 digital counts \n", "5 1.0 electric 13.2 0.0 digital counts \n", "6 1.0 electric 103.2 0.0 digital counts \n", "7 1.0 magnetic 13.2 0.0 digital counts \n", "8 1.0 magnetic 103.2 0.0 digital counts \n", "9 1.0 magnetic 0.0 90.0 digital counts \n", "10 1.0 electric 13.2 0.0 digital counts \n", "11 1.0 electric 103.2 0.0 digital counts \n", "12 1.0 magnetic 13.2 0.0 digital counts \n", "13 1.0 magnetic 103.2 0.0 digital counts \n", "14 1.0 magnetic 0.0 90.0 digital counts \n", "15 1.0 electric 13.2 0.0 digital counts \n", "16 1.0 electric 103.2 0.0 digital counts \n", "17 1.0 magnetic 13.2 0.0 digital counts \n", "18 1.0 magnetic 103.2 0.0 digital counts \n", "19 1.0 magnetic 0.0 90.0 digital counts \n", "\n", " hdf5_reference run_hdf5_reference station_hdf5_reference \n", "0 \n", "1 \n", "2 \n", "3 \n", "4 \n", "5 \n", "6 \n", "7 \n", "8 \n", "9 \n", "10 \n", "11 \n", "12 \n", "13 \n", "14 \n", "15 \n", "16 \n", "17 \n", "18 \n", "19 " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ch_summary" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Channel summary has a lot of uses, below we use it to check if the data have mixed sample rates, and to get a list of available stations" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Available stations: ['CAS04']\n" ] } ], "source": [ "available_runs = ch_summary.run.unique()\n", "sr = ch_summary.sample_rate.unique()\n", "if len(sr) != 1:\n", " print('Only one sample rate per run is available')\n", " \n", "available_stations = ch_summary.station.unique()\n", "print(f\"Available stations: {available_stations}\")" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "### Run Summary\n", "\n", "A cousin of the channel summary is the Run Summary.\n", "This is a condensed version of the channel summary, with one row per continuous acquistion run at a station.\n", "\n", "The run summary can be accessed from an open mth5 object, or from an iterable of h5 paths as in the example below\n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m2024-01-14T10:43:04.066603-0800 | INFO | mth5.mth5 | close_mth5 | Flushing and closing /home/kkappler/software/irismt/aurora/docs/examples/8P_CAS04.h5\u001b[0m\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
surveystation_idrun_idstartendsample_rateinput_channelsoutput_channelschannel_scale_factorsvalidmth5_path
0CONUS SouthCAS04a2020-06-02 19:00:00+00:002020-06-02 22:07:46+00:001.0[hx, hy][ex, ey, hz]{'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '...True/home/kkappler/software/irismt/aurora/docs/exa...
1CONUS SouthCAS04b2020-06-02 22:24:55+00:002020-06-12 17:52:23+00:001.0[hx, hy][ex, ey, hz]{'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '...True/home/kkappler/software/irismt/aurora/docs/exa...
2CONUS SouthCAS04c2020-06-12 18:32:17+00:002020-07-01 17:32:59+00:001.0[hx, hy][ex, ey, hz]{'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '...True/home/kkappler/software/irismt/aurora/docs/exa...
3CONUS SouthCAS04d2020-07-01 19:36:55+00:002020-07-13 19:00:00+00:001.0[hx, hy][ex, ey, hz]{'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '...True/home/kkappler/software/irismt/aurora/docs/exa...
\n", "
" ], "text/plain": [ " survey station_id run_id start \\\n", "0 CONUS South CAS04 a 2020-06-02 19:00:00+00:00 \n", "1 CONUS South CAS04 b 2020-06-02 22:24:55+00:00 \n", "2 CONUS South CAS04 c 2020-06-12 18:32:17+00:00 \n", "3 CONUS South CAS04 d 2020-07-01 19:36:55+00:00 \n", "\n", " end sample_rate input_channels output_channels \\\n", "0 2020-06-02 22:07:46+00:00 1.0 [hx, hy] [ex, ey, hz] \n", "1 2020-06-12 17:52:23+00:00 1.0 [hx, hy] [ex, ey, hz] \n", "2 2020-07-01 17:32:59+00:00 1.0 [hx, hy] [ex, ey, hz] \n", "3 2020-07-13 19:00:00+00:00 1.0 [hx, hy] [ex, ey, hz] \n", "\n", " channel_scale_factors valid \\\n", "0 {'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '... True \n", "1 {'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '... True \n", "2 {'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '... True \n", "3 {'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '... True \n", "\n", " mth5_path \n", "0 /home/kkappler/software/irismt/aurora/docs/exa... \n", "1 /home/kkappler/software/irismt/aurora/docs/exa... \n", "2 /home/kkappler/software/irismt/aurora/docs/exa... \n", "3 /home/kkappler/software/irismt/aurora/docs/exa... " ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mth5_run_summary = RunSummary()\n", "h5_path = default_path.joinpath(\"8P_CAS04.h5\")\n", "mth5_run_summary.from_mth5s([h5_path,])\n", "run_summary = mth5_run_summary.clone()\n", "run_summary.df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we have a dataframe of the available runs to process from the MTH5 \n", "\n", "Sometimes we just want to look at the survey, station, run, and time intervals\n", "we can for that we can call mini_summary" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
surveystation_idrun_idstartend
0CONUS SouthCAS04a2020-06-02 19:00:00+00:002020-06-02 22:07:46+00:00
1CONUS SouthCAS04b2020-06-02 22:24:55+00:002020-06-12 17:52:23+00:00
2CONUS SouthCAS04c2020-06-12 18:32:17+00:002020-07-01 17:32:59+00:00
3CONUS SouthCAS04d2020-07-01 19:36:55+00:002020-07-13 19:00:00+00:00
\n", "
" ], "text/plain": [ " survey station_id run_id start \\\n", "0 CONUS South CAS04 a 2020-06-02 19:00:00+00:00 \n", "1 CONUS South CAS04 b 2020-06-02 22:24:55+00:00 \n", "2 CONUS South CAS04 c 2020-06-12 18:32:17+00:00 \n", "3 CONUS South CAS04 d 2020-07-01 19:36:55+00:00 \n", "\n", " end \n", "0 2020-06-02 22:07:46+00:00 \n", "1 2020-06-12 17:52:23+00:00 \n", "2 2020-07-01 17:32:59+00:00 \n", "3 2020-07-13 19:00:00+00:00 " ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "run_summary.mini_summary" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But here are the columns in the run summary" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['survey', 'station_id', 'run_id', 'start', 'end', 'sample_rate',\n", " 'input_channels', 'output_channels', 'channel_scale_factors', 'valid',\n", " 'mth5_path'],\n", " dtype='object')" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "run_summary.df.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " Make your own mini summary by choosing columns" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
surveystation_idrun_idstartend
0CONUS SouthCAS04a2020-06-02 19:00:00+00:002020-06-02 22:07:46+00:00
1CONUS SouthCAS04b2020-06-02 22:24:55+00:002020-06-12 17:52:23+00:00
2CONUS SouthCAS04c2020-06-12 18:32:17+00:002020-07-01 17:32:59+00:00
3CONUS SouthCAS04d2020-07-01 19:36:55+00:002020-07-13 19:00:00+00:00
\n", "
" ], "text/plain": [ " survey station_id run_id start \\\n", "0 CONUS South CAS04 a 2020-06-02 19:00:00+00:00 \n", "1 CONUS South CAS04 b 2020-06-02 22:24:55+00:00 \n", "2 CONUS South CAS04 c 2020-06-12 18:32:17+00:00 \n", "3 CONUS South CAS04 d 2020-07-01 19:36:55+00:00 \n", "\n", " end \n", "0 2020-06-02 22:07:46+00:00 \n", "1 2020-06-12 17:52:23+00:00 \n", "2 2020-07-01 17:32:59+00:00 \n", "3 2020-07-13 19:00:00+00:00 " ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "coverage_short_list_columns = [\"survey\", 'station_id', 'run_id', 'start', 'end', ]\n", "run_summary.df[coverage_short_list_columns]" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "### Kernel Dataset" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is like a run summary, but for a single station or a pair of stations.\n", "It is used to specify the inputs to aurora processing.\n", "\n", "It takes a run_summary and a station name, and optionally, a remote reference station name\n", "\n", "It is made _based on the available data_ in the MTH5 archive.\n", "\n", "Syntax:\n", "kernel_dataset.from_run_summary(run_summary, local_station_id, reference_station_id)\n", "\n", "By Default, all runs will be processed\n", "\n", "To restrict to processing a single run, or a list of runs, we can either tell KernelDataset to keep or drop a station_run dictionary. \n" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
surveystation_idrun_idstartendduration
0CONUS SouthCAS04a2020-06-02 19:00:00+00:002020-06-02 22:07:46+00:0011266.0
1CONUS SouthCAS04b2020-06-02 22:24:55+00:002020-06-12 17:52:23+00:00847648.0
2CONUS SouthCAS04c2020-06-12 18:32:17+00:002020-07-01 17:32:59+00:001638042.0
3CONUS SouthCAS04d2020-07-01 19:36:55+00:002020-07-13 19:00:00+00:001034585.0
\n", "
" ], "text/plain": [ " survey station_id run_id start \\\n", "0 CONUS South CAS04 a 2020-06-02 19:00:00+00:00 \n", "1 CONUS South CAS04 b 2020-06-02 22:24:55+00:00 \n", "2 CONUS South CAS04 c 2020-06-12 18:32:17+00:00 \n", "3 CONUS South CAS04 d 2020-07-01 19:36:55+00:00 \n", "\n", " end duration \n", "0 2020-06-02 22:07:46+00:00 11266.0 \n", "1 2020-06-12 17:52:23+00:00 847648.0 \n", "2 2020-07-01 17:32:59+00:00 1638042.0 \n", "3 2020-07-13 19:00:00+00:00 1034585.0 " ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kernel_dataset = KernelDataset()\n", "kernel_dataset.from_run_summary(run_summary, \"CAS04\")\n", "kernel_dataset.mini_summary" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Here is one way to select a single run:\n" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " survey station_id run_id start \\\n", "0 CONUS South CAS04 a 2020-06-02 19:00:00+00:00 \n", "\n", " end \n", "0 2020-06-02 22:07:46+00:00 \n" ] } ], "source": [ "station_runs_dict = {}\n", "station_runs_dict[\"CAS04\"] = [\"a\", ]\n", "keep_or_drop = \"keep\"\n", "\n", "kernel_dataset.select_station_runs(station_runs_dict, keep_or_drop)\n", "print(kernel_dataset.df[coverage_short_list_columns])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## To discard runs that are not very long" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
surveystation_idrun_idstartend
0CONUS SouthCAS04b2020-06-02 22:24:55+00:002020-06-12 17:52:23+00:00
1CONUS SouthCAS04c2020-06-12 18:32:17+00:002020-07-01 17:32:59+00:00
2CONUS SouthCAS04d2020-07-01 19:36:55+00:002020-07-13 19:00:00+00:00
\n", "
" ], "text/plain": [ " survey station_id run_id start \\\n", "0 CONUS South CAS04 b 2020-06-02 22:24:55+00:00 \n", "1 CONUS South CAS04 c 2020-06-12 18:32:17+00:00 \n", "2 CONUS South CAS04 d 2020-07-01 19:36:55+00:00 \n", "\n", " end \n", "0 2020-06-12 17:52:23+00:00 \n", "1 2020-07-01 17:32:59+00:00 \n", "2 2020-07-13 19:00:00+00:00 " ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kernel_dataset = KernelDataset()\n", "kernel_dataset.from_run_summary(run_summary, \"CAS04\")\n", "cutoff_duration_in_seconds = 15000\n", "kernel_dataset.drop_runs_shorter_than(cutoff_duration_in_seconds)\n", "kernel_dataset.df[coverage_short_list_columns]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Select only runs \"b\" & \"d\"" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
surveystation_idrun_idstartend
0CONUS SouthCAS04b2020-06-02 22:24:55+00:002020-06-12 17:52:23+00:00
1CONUS SouthCAS04d2020-07-01 19:36:55+00:002020-07-13 19:00:00+00:00
\n", "
" ], "text/plain": [ " survey station_id run_id start \\\n", "0 CONUS South CAS04 b 2020-06-02 22:24:55+00:00 \n", "1 CONUS South CAS04 d 2020-07-01 19:36:55+00:00 \n", "\n", " end \n", "0 2020-06-12 17:52:23+00:00 \n", "1 2020-07-13 19:00:00+00:00 " ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kernel_dataset = KernelDataset()\n", "kernel_dataset.from_run_summary(run_summary, \"CAS04\")\n", "station_runs_dict = {}\n", "station_runs_dict[\"CAS04\"] = [\"b\",\"d\"]\n", "keep_or_drop = \"keep\"\n", "kernel_dataset.select_station_runs(station_runs_dict, keep_or_drop)\n", "kernel_dataset.df[coverage_short_list_columns]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The same result can be obtained by _excluding_ runs a & c" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
surveystation_idrun_idstartend
0CONUS SouthCAS04b2020-06-02 22:24:55+00:002020-06-12 17:52:23+00:00
1CONUS SouthCAS04d2020-07-01 19:36:55+00:002020-07-13 19:00:00+00:00
\n", "
" ], "text/plain": [ " survey station_id run_id start \\\n", "0 CONUS South CAS04 b 2020-06-02 22:24:55+00:00 \n", "1 CONUS South CAS04 d 2020-07-01 19:36:55+00:00 \n", "\n", " end \n", "0 2020-06-12 17:52:23+00:00 \n", "1 2020-07-13 19:00:00+00:00 " ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kernel_dataset = KernelDataset()\n", "kernel_dataset.from_run_summary(run_summary, \"CAS04\")\n", "station_runs_dict = {}\n", "station_runs_dict[\"CAS04\"] = [\"a\",\"c\"]\n", "keep_or_drop = \"drop\"\n", "kernel_dataset.select_station_runs(station_runs_dict, keep_or_drop)\n", "kernel_dataset.df[coverage_short_list_columns]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Make an aurora configuration file (and then save that json file.)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "cc = ConfigCreator()\n", "config = cc.create_from_kernel_dataset(kernel_dataset, \n", " emtf_band_file=BANDS_DEFAULT_FILE,)\n" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "for decimation in config.decimations:\n", " decimation.estimator.engine = \"RME\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Take a look at the config:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{\n", " \"processing\": {\n", " \"band_setup_file\": \"/home/kkappler/software/irismt/aurora/aurora/config/emtf_band_setup/bs_test.cfg\",\n", " \"band_specification_style\": \"EMTF\",\n", " \"channel_nomenclature.ex\": \"ex\",\n", " \"channel_nomenclature.ey\": \"ey\",\n", " \"channel_nomenclature.hx\": \"hx\",\n", " \"channel_nomenclature.hy\": \"hy\",\n", " \"channel_nomenclature.hz\": \"hz\",\n", " \"decimations\": [\n", " {\n", " \"decimation_level\": {\n", " \"anti_alias_filter\": \"default\",\n", " \"bands\": [\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 0,\n", " \"frequency_max\": 0.23828125,\n", " \"frequency_min\": 0.19140625,\n", " \"index_max\": 30,\n", " \"index_min\": 25\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 0,\n", " \"frequency_max\": 0.19140625,\n", " \"frequency_min\": 0.15234375,\n", " \"index_max\": 24,\n", " \"index_min\": 20\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 0,\n", " \"frequency_max\": 0.15234375,\n", " \"frequency_min\": 0.12109375,\n", " \"index_max\": 19,\n", " \"index_min\": 16\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 0,\n", " \"frequency_max\": 0.12109375,\n", " \"frequency_min\": 0.09765625,\n", " \"index_max\": 15,\n", " \"index_min\": 13\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 0,\n", " \"frequency_max\": 0.09765625,\n", " \"frequency_min\": 0.07421875,\n", " \"index_max\": 12,\n", " \"index_min\": 10\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 0,\n", " \"frequency_max\": 0.07421875,\n", " \"frequency_min\": 0.05859375,\n", " \"index_max\": 9,\n", " \"index_min\": 8\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 0,\n", " \"frequency_max\": 0.05859375,\n", " \"frequency_min\": 0.04296875,\n", " \"index_max\": 7,\n", " \"index_min\": 6\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 0,\n", " \"frequency_max\": 0.04296875,\n", " \"frequency_min\": 0.03515625,\n", " \"index_max\": 5,\n", " \"index_min\": 5\n", " }\n", " }\n", " ],\n", " \"decimation.factor\": 1.0,\n", " \"decimation.level\": 0,\n", " \"decimation.method\": \"default\",\n", " \"decimation.sample_rate\": 1.0,\n", " \"estimator.engine\": \"RME\",\n", " \"estimator.estimate_per_channel\": true,\n", " \"extra_pre_fft_detrend_type\": \"linear\",\n", " \"input_channels\": [\n", " \"hx\",\n", " \"hy\"\n", " ],\n", " \"method\": \"fft\",\n", " \"min_num_stft_windows\": 2,\n", " \"output_channels\": [\n", " \"hz\",\n", " \"ex\",\n", " \"ey\"\n", " ],\n", " \"pre_fft_detrend_type\": \"linear\",\n", " \"prewhitening_type\": \"first difference\",\n", " \"recoloring\": true,\n", " \"reference_channels\": [\n", " \"hx\",\n", " \"hy\"\n", " ],\n", " \"regression.max_iterations\": 10,\n", " \"regression.max_redescending_iterations\": 2,\n", " \"regression.minimum_cycles\": 10,\n", " \"save_fcs\": false,\n", " \"window.clock_zero_type\": \"ignore\",\n", " \"window.num_samples\": 128,\n", " \"window.overlap\": 32,\n", " \"window.type\": \"boxcar\"\n", " }\n", " },\n", " {\n", " \"decimation_level\": {\n", " \"anti_alias_filter\": \"default\",\n", " \"bands\": [\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 1,\n", " \"frequency_max\": 0.0341796875,\n", " \"frequency_min\": 0.0263671875,\n", " \"index_max\": 17,\n", " \"index_min\": 14\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 1,\n", " \"frequency_max\": 0.0263671875,\n", " \"frequency_min\": 0.0205078125,\n", " \"index_max\": 13,\n", " \"index_min\": 11\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 1,\n", " \"frequency_max\": 0.0205078125,\n", " \"frequency_min\": 0.0166015625,\n", " \"index_max\": 10,\n", " \"index_min\": 9\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 1,\n", " \"frequency_max\": 0.0166015625,\n", " \"frequency_min\": 0.0126953125,\n", " \"index_max\": 8,\n", " \"index_min\": 7\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 1,\n", " \"frequency_max\": 0.0126953125,\n", " \"frequency_min\": 0.0107421875,\n", " \"index_max\": 6,\n", " \"index_min\": 6\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 1,\n", " \"frequency_max\": 0.0107421875,\n", " \"frequency_min\": 0.0087890625,\n", " \"index_max\": 5,\n", " \"index_min\": 5\n", " }\n", " }\n", " ],\n", " \"decimation.factor\": 4.0,\n", " \"decimation.level\": 1,\n", " \"decimation.method\": \"default\",\n", " \"decimation.sample_rate\": 0.25,\n", " \"estimator.engine\": \"RME\",\n", " \"estimator.estimate_per_channel\": true,\n", " \"extra_pre_fft_detrend_type\": \"linear\",\n", " \"input_channels\": [\n", " \"hx\",\n", " \"hy\"\n", " ],\n", " \"method\": \"fft\",\n", " \"min_num_stft_windows\": 2,\n", " \"output_channels\": [\n", " \"hz\",\n", " \"ex\",\n", " \"ey\"\n", " ],\n", " \"pre_fft_detrend_type\": \"linear\",\n", " \"prewhitening_type\": \"first difference\",\n", " \"recoloring\": true,\n", " \"reference_channels\": [\n", " \"hx\",\n", " \"hy\"\n", " ],\n", " \"regression.max_iterations\": 10,\n", " \"regression.max_redescending_iterations\": 2,\n", " \"regression.minimum_cycles\": 10,\n", " \"save_fcs\": false,\n", " \"window.clock_zero_type\": \"ignore\",\n", " \"window.num_samples\": 128,\n", " \"window.overlap\": 32,\n", " \"window.type\": \"boxcar\"\n", " }\n", " },\n", " {\n", " \"decimation_level\": {\n", " \"anti_alias_filter\": \"default\",\n", " \"bands\": [\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 2,\n", " \"frequency_max\": 0.008544921875,\n", " \"frequency_min\": 0.006591796875,\n", " \"index_max\": 17,\n", " \"index_min\": 14\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 2,\n", " \"frequency_max\": 0.006591796875,\n", " \"frequency_min\": 0.005126953125,\n", " \"index_max\": 13,\n", " \"index_min\": 11\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 2,\n", " \"frequency_max\": 0.005126953125,\n", " \"frequency_min\": 0.004150390625,\n", " \"index_max\": 10,\n", " \"index_min\": 9\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 2,\n", " \"frequency_max\": 0.004150390625,\n", " \"frequency_min\": 0.003173828125,\n", " \"index_max\": 8,\n", " \"index_min\": 7\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 2,\n", " \"frequency_max\": 0.003173828125,\n", " \"frequency_min\": 0.002685546875,\n", " \"index_max\": 6,\n", " \"index_min\": 6\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 2,\n", " \"frequency_max\": 0.002685546875,\n", " \"frequency_min\": 0.002197265625,\n", " \"index_max\": 5,\n", " \"index_min\": 5\n", " }\n", " }\n", " ],\n", " \"decimation.factor\": 4.0,\n", " \"decimation.level\": 2,\n", " \"decimation.method\": \"default\",\n", " \"decimation.sample_rate\": 0.0625,\n", " \"estimator.engine\": \"RME\",\n", " \"estimator.estimate_per_channel\": true,\n", " \"extra_pre_fft_detrend_type\": \"linear\",\n", " \"input_channels\": [\n", " \"hx\",\n", " \"hy\"\n", " ],\n", " \"method\": \"fft\",\n", " \"min_num_stft_windows\": 2,\n", " \"output_channels\": [\n", " \"hz\",\n", " \"ex\",\n", " \"ey\"\n", " ],\n", " \"pre_fft_detrend_type\": \"linear\",\n", " \"prewhitening_type\": \"first difference\",\n", " \"recoloring\": true,\n", " \"reference_channels\": [\n", " \"hx\",\n", " \"hy\"\n", " ],\n", " \"regression.max_iterations\": 10,\n", " \"regression.max_redescending_iterations\": 2,\n", " \"regression.minimum_cycles\": 10,\n", " \"save_fcs\": false,\n", " \"window.clock_zero_type\": \"ignore\",\n", " \"window.num_samples\": 128,\n", " \"window.overlap\": 32,\n", " \"window.type\": \"boxcar\"\n", " }\n", " },\n", " {\n", " \"decimation_level\": {\n", " \"anti_alias_filter\": \"default\",\n", " \"bands\": [\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 3,\n", " \"frequency_max\": 0.00274658203125,\n", " \"frequency_min\": 0.00213623046875,\n", " \"index_max\": 22,\n", " \"index_min\": 18\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 3,\n", " \"frequency_max\": 0.00213623046875,\n", " \"frequency_min\": 0.00164794921875,\n", " \"index_max\": 17,\n", " \"index_min\": 14\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 3,\n", " \"frequency_max\": 0.00164794921875,\n", " \"frequency_min\": 0.00115966796875,\n", " \"index_max\": 13,\n", " \"index_min\": 10\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 3,\n", " \"frequency_max\": 0.00115966796875,\n", " \"frequency_min\": 0.00079345703125,\n", " \"index_max\": 9,\n", " \"index_min\": 7\n", " }\n", " },\n", " {\n", " \"band\": {\n", " \"center_averaging_type\": \"geometric\",\n", " \"closed\": \"left\",\n", " \"decimation_level\": 3,\n", " \"frequency_max\": 0.00079345703125,\n", " \"frequency_min\": 0.00054931640625,\n", " \"index_max\": 6,\n", " \"index_min\": 5\n", " }\n", " }\n", " ],\n", " \"decimation.factor\": 4.0,\n", " \"decimation.level\": 3,\n", " \"decimation.method\": \"default\",\n", " \"decimation.sample_rate\": 0.015625,\n", " \"estimator.engine\": \"RME\",\n", " \"estimator.estimate_per_channel\": true,\n", " \"extra_pre_fft_detrend_type\": \"linear\",\n", " \"input_channels\": [\n", " \"hx\",\n", " \"hy\"\n", " ],\n", " \"method\": \"fft\",\n", " \"min_num_stft_windows\": 2,\n", " \"output_channels\": [\n", " \"hz\",\n", " \"ex\",\n", " \"ey\"\n", " ],\n", " \"pre_fft_detrend_type\": \"linear\",\n", " \"prewhitening_type\": \"first difference\",\n", " \"recoloring\": true,\n", " \"reference_channels\": [\n", " \"hx\",\n", " \"hy\"\n", " ],\n", " \"regression.max_iterations\": 10,\n", " \"regression.max_redescending_iterations\": 2,\n", " \"regression.minimum_cycles\": 10,\n", " \"save_fcs\": false,\n", " \"window.clock_zero_type\": \"ignore\",\n", " \"window.num_samples\": 128,\n", " \"window.overlap\": 32,\n", " \"window.type\": \"boxcar\"\n", " }\n", " }\n", " ],\n", " \"id\": \"CAS04-None\",\n", " \"stations.local.id\": \"CAS04\",\n", " \"stations.local.mth5_path\": \"/home/kkappler/software/irismt/aurora/docs/examples/8P_CAS04.h5\",\n", " \"stations.local.remote\": false,\n", " \"stations.local.runs\": [\n", " {\n", " \"run\": {\n", " \"id\": \"b\",\n", " \"input_channels\": [\n", " {\n", " \"channel\": {\n", " \"id\": \"hx\",\n", " \"scale_factor\": 1.0\n", " }\n", " },\n", " {\n", " \"channel\": {\n", " \"id\": \"hy\",\n", " \"scale_factor\": 1.0\n", " }\n", " }\n", " ],\n", " \"output_channels\": [\n", " {\n", " \"channel\": {\n", " \"id\": \"ex\",\n", " \"scale_factor\": 1.0\n", " }\n", " },\n", " {\n", " \"channel\": {\n", " \"id\": \"ey\",\n", " \"scale_factor\": 1.0\n", " }\n", " },\n", " {\n", " \"channel\": {\n", " \"id\": \"hz\",\n", " \"scale_factor\": 1.0\n", " }\n", " }\n", " ],\n", " \"sample_rate\": 1.0,\n", " \"time_periods\": [\n", " {\n", " \"time_period\": {\n", " \"end\": \"2020-06-12T17:52:23+00:00\",\n", " \"start\": \"2020-06-02T22:24:55+00:00\"\n", " }\n", " }\n", " ]\n", " }\n", " },\n", " {\n", " \"run\": {\n", " \"id\": \"d\",\n", " \"input_channels\": [\n", " {\n", " \"channel\": {\n", " \"id\": \"hx\",\n", " \"scale_factor\": 1.0\n", " }\n", " },\n", " {\n", " \"channel\": {\n", " \"id\": \"hy\",\n", " \"scale_factor\": 1.0\n", " }\n", " }\n", " ],\n", " \"output_channels\": [\n", " {\n", " \"channel\": {\n", " \"id\": \"ex\",\n", " \"scale_factor\": 1.0\n", " }\n", " },\n", " {\n", " \"channel\": {\n", " \"id\": \"ey\",\n", " \"scale_factor\": 1.0\n", " }\n", " },\n", " {\n", " \"channel\": {\n", " \"id\": \"hz\",\n", " \"scale_factor\": 1.0\n", " }\n", " }\n", " ],\n", " \"sample_rate\": 1.0,\n", " \"time_periods\": [\n", " {\n", " \"time_period\": {\n", " \"end\": \"2020-07-13T19:00:00+00:00\",\n", " \"start\": \"2020-07-01T19:36:55+00:00\"\n", " }\n", " }\n", " ]\n", " }\n", " }\n", " ],\n", " \"stations.remote\": []\n", " }\n", "}" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "config" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Run the Aurora Pipeline using the input MTh5 and Confiugration File" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m2024-01-14T10:43:04.266683-0800 | INFO | aurora.pipelines.transfer_function_kernel | show_processing_summary | Processing Summary Dataframe:\u001b[0m\n", "\u001b[1m2024-01-14T10:43:04.272434-0800 | INFO | aurora.pipelines.transfer_function_kernel | show_processing_summary | survey station_id run_id valid remote duration fc dec_level dec_factor sample_rate window_duration num_samples_window num_samples num_stft_windows\n", "0 CONUS South CAS04 b True False 847648.0 False 0 1.0 1.000000 128.0 128 847648.0 8829.0\n", "1 CONUS South CAS04 b True False 847648.0 False 1 4.0 0.250000 512.0 128 211912.0 2207.0\n", "2 CONUS South CAS04 b True False 847648.0 False 2 4.0 0.062500 2048.0 128 52978.0 551.0\n", "3 CONUS South CAS04 b True False 847648.0 False 3 4.0 0.015625 8192.0 128 13244.0 137.0\n", "4 CONUS South CAS04 d True False 1034585.0 False 0 1.0 1.000000 128.0 128 1034585.0 10776.0\n", "5 CONUS South CAS04 d True False 1034585.0 False 1 4.0 0.250000 512.0 128 258646.0 2693.0\n", "6 CONUS South CAS04 d True False 1034585.0 False 2 4.0 0.062500 2048.0 128 64661.0 673.0\n", "7 CONUS South CAS04 d True False 1034585.0 False 3 4.0 0.015625 8192.0 128 16165.0 168.0\u001b[0m\n", "\u001b[1m2024-01-14T10:43:04.273880-0800 | INFO | aurora.pipelines.transfer_function_kernel | memory_warning | Total memory: 62.73 GB\u001b[0m\n", "\u001b[1m2024-01-14T10:43:04.274445-0800 | INFO | aurora.pipelines.transfer_function_kernel | memory_warning | Total Bytes of Raw Data: 0.014 GB\u001b[0m\n", "\u001b[1m2024-01-14T10:43:04.274901-0800 | INFO | aurora.pipelines.transfer_function_kernel | memory_warning | Raw Data will use: 0.022 % of memory\u001b[0m\n", "\u001b[1m2024-01-14T10:43:04.294047-0800 | INFO | aurora.pipelines.transfer_function_kernel | check_if_fc_levels_already_exist | Fourier coefficients not detected for survey: CONUS South, station_id: CAS04, run_id: b-- Fourier coefficients will be computed\u001b[0m\n", "\u001b[1m2024-01-14T10:43:04.308964-0800 | INFO | aurora.pipelines.transfer_function_kernel | check_if_fc_levels_already_exist | Fourier coefficients not detected for survey: CONUS South, station_id: CAS04, run_id: d-- Fourier coefficients will be computed\u001b[0m\n", "\u001b[1m2024-01-14T10:43:04.310055-0800 | INFO | aurora.pipelines.process_mth5 | process_mth5 | fc_levels_already_exist = False\u001b[0m\n", "\u001b[1m2024-01-14T10:43:04.310457-0800 | INFO | aurora.pipelines.process_mth5 | process_mth5 | Processing config indicates 4 decimation levels\u001b[0m\n", "\u001b[1m2024-01-14T10:43:04.311219-0800 | INFO | aurora.pipelines.transfer_function_kernel | valid_decimations | After validation there are 4 valid decimation levels\u001b[0m\n", "\u001b[1m2024-01-14T10:43:05.684536-0800 | INFO | aurora.transfer_function.kernel_dataset | initialize_dataframe_for_processing | Dataset dataframe initialized successfully\u001b[0m\n", "\u001b[1m2024-01-14T10:43:05.685088-0800 | INFO | aurora.pipelines.transfer_function_kernel | update_dataset_df | Dataset Dataframe Updated for decimation level 0 Successfully\u001b[0m\n", "\u001b[1m2024-01-14T10:43:06.799551-0800 | INFO | aurora.pipelines.process_mth5 | save_fourier_coefficients | Skip saving FCs. dec_level_config.save_fc = False False\u001b[0m\n", "\u001b[1m2024-01-14T10:43:07.973010-0800 | INFO | aurora.pipelines.process_mth5 | save_fourier_coefficients | Skip saving FCs. dec_level_config.save_fc = False False\u001b[0m\n", "\u001b[1m2024-01-14T10:43:08.008574-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 25.728968s (0.038867Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:08.199503-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 19.929573s (0.050177Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:08.454349-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 15.164131s (0.065945Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:08.738590-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 11.746086s (0.085135Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:09.074259-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 9.195791s (0.108745Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:09.421783-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 7.362526s (0.135823Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:09.840684-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 5.856115s (0.170762Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:10.309801-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 4.682492s (0.213562Hz)\u001b[0m\n" ] }, { "data": { "image/png": "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NvTRSUxMRGZmJoYMGYILFy5g+vTpKCoqQnR0NDZu3MgkiMiKVCoVUlNTazQVExE5GslrhIiIiIikIus+QkRERETWxESIiIiInBYTISIiInJaTISIiIjIaTERIiKLDRgwAL6+vhg0aJDUoRAR3REmQkRkseTkZHz22WdSh0FEdMeYCBGRxXr27AkvLy+pwyAiumNMhIiczPbt29G3b18EBQVBoVBg9erVNcpkZGQgIiICbm5uiImJwe7du20fKBGRDTARInIy5eXliIqKQkZGhsnjK1asQEpKClJTU7F3715ERUWhV69eOH/+vI0jJSKyPiZCRE4mPj4es2fPxoABA0wenzt3LsaMGYORI0ciMjISixYtgoeHB5YsWWLjSImIrI+JEBGJbt68idzcXMTFxYn7XFxcEBcXh127dkkYGRGRdTARIiLRxYsXodVqayxqrFarUVRUJG7HxcVh8ODBWL9+PUJCQpgkEZHdknz1eSKyPz/88IPUIRARNQjWCBGRqFmzZlAqlSguLjbaX1xcjICAAImiIiKyHiZCRCRydXVF586dkZ2dLe7T6XTIzs5G9+7dJYyMiMg62DRG5GTKyspw4sQJcTsvLw/79u2Dn58fwsLCkJKSgsTERHTp0gXdunVDeno6ysvLMXLkSAmjJiKyDoUgCILUQRCR7Wzbtg2xsbE19icmJiIzMxMA8MEHH+Cdd95BUVERoqOjMX/+fMTExNg4UiIi62MiRERERE6LfYSIiIjIaTERIiIiIqfFRIiIiIicFhMhIiIiclpMhIiIiMhpMREiIiIip8VEiIiIiJwWZ5aug06nw9mzZ+Hl5QWFQiF1OERERGQGQRBw9epVBAUFwcWl7jofJkJ1OHv2LEJDQ6UOg4iIiG5DQUEBQkJC6izDRKgOXl5eAPQfpLe3t8TREBERkTlKS0sRGhoqPsfrwkSoDobmMG9vbyZCREREdsacbi3sLE1EREROi4kQEREROS0mQkREROS0mAgRERGR02IiRERERE6LiRARERE5LSZCRERE5LSYCBEREZHTYiJERERETouJEBERETktJkJERETktOw2EdJqtXj99dfRsmVLuLu7o3Xr1pg1axYEQRDLCIKA6dOnIzAwEO7u7oiLi8Px48cljJqIiIjkxG4TobfffhsLFy7EBx98gD/++ANvv/025syZg//+979imTlz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X9x2dXXFvffeW+v1T548icrKSjzwwAPivsaNG6Nbt274448/AAB//PEHYmJijM7r3r17vbFfv37dqFkMAFJSUvDcc8/h888/R1xcHAYPHozWrVsblXF3d8e1a9fqvT4RWRcTISKSXGxsLBYuXAhXV1cEBQWhUSP9f01lZWVQKpXIzc2tMSKrSZMm4vfu7u5QKBQ2jdmgWbNmuHz5stG+GTNmYNiwYVi3bh02bNiA1NRUfPXVVxgwYIBYpqSkBM2bN7d1uERUDfsIEZHkPD09cddddyEsLExMggCgU6dO0Gq1OH/+PO666y6jV0BAgNnXb926NVxdXbFz505xX2VlJXJychAZGQkAaN++PXbv3m103v/+9796r92pUyccPny4xv67774bkyZNwubNm5GQkIClS5eKx27cuIGTJ0+iU6dOZr8HIrIOJkJEJFt33303hg8fjmeffRZZWVnIy8vD7t27kZaWhnXr1pl9HU9PT7zwwgt46aWXsHHjRhw+fBhjxozBtWvXMHr0aADA2LFjcfz4cbz00ks4evQoli1bZtY8RL169cLPP/8sbl+/fh3jxo3Dtm3bcPr0aezcuRM5OTlo3769WOZ///sfVCqVWU1vRGRdTISISNaWLl2KZ599FpMnT0bbtm3Rv39/5OTkICwszKLrvPXWWxg4cCCeeeYZ3HfffThx4gQ2bdoEX19fAPqRXKtWrcLq1asRFRWFRYsWiZ2x6zJ8+HAcOnQIR48eBQAolUpcunQJzz77LO6++27885//RHx8PN544w3xnOXLl2P48OHw8PCw6D0QUcNTCIIgSB0EEZE9e+mll1BaWorFixfXW/bixYto27Yt9uzZg5YtW9ogOiKqC2uEiIju0GuvvYbw8HCz1g87deoUFixYwCSISCZYI0REREROizVCRERE5LSYCBEREZHTYiJERERETouJEBERETktJkJERETktJgIERERkdNiIkREREROi4kQEREROS0mQkREROS0/h97s4OeLKKC6wAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m2024-01-14T10:43:11.549673-0800 | INFO | aurora.pipelines.transfer_function_kernel | update_dataset_df | DECIMATION LEVEL 1\u001b[0m\n", "\u001b[1m2024-01-14T10:43:11.742180-0800 | INFO | aurora.pipelines.transfer_function_kernel | update_dataset_df | Dataset Dataframe Updated for decimation level 1 Successfully\u001b[0m\n", "\u001b[1m2024-01-14T10:43:12.233537-0800 | INFO | aurora.pipelines.process_mth5 | save_fourier_coefficients | Skip saving FCs. dec_level_config.save_fc = False False\u001b[0m\n", "\u001b[1m2024-01-14T10:43:12.686413-0800 | INFO | aurora.pipelines.process_mth5 | save_fourier_coefficients | Skip saving FCs. dec_level_config.save_fc = False False\u001b[0m\n", "\u001b[1m2024-01-14T10:43:12.702055-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 102.915872s (0.009717Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:12.793054-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 85.631182s (0.011678Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:12.915422-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 68.881694s (0.014518Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:13.083985-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 54.195827s (0.018452Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:13.244329-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 43.003958s (0.023254Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:13.398642-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 33.310722s (0.030020Hz)\u001b[0m\n" ] }, { "data": { "image/png": "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kvTwww87pixo2rSpdu7cqTp1nP+zWbNmjaZPn66vv/5adru93GtMmjRJkydPliRNmDBBc+fOdWzLz8+X1Wp1LI8cOVIfffSRJOe/k7/85S+aPn26AgICtGbNGrVq1UqS1K5dO0er0uDBgzV79myX3zsA1FSFhYWKiopSgwYNLrmfVwcdV3Tr1q3CL5fy+Pn5lelKkKSgoCBTBp2LuzGuueYap/ffrFkzx8/FxcUVfj7lOXTokIYMGeIIGJdSp04dt36+kZGR2r17tyRp7969atCggctdkbNnz3aEHElKSkpy1Dp06FBH0Pnll1/09ddfq1+/fk7H9+nTR3369FFBQYHWrVun9evXa8mSJfr2228d+7z++uuaOnWqJDnuEjzPYrE4fTZnzpxx/NykSRMFBQXpwIEDeuWVVySVdkV26tTJ6fjz6tata8rfYwCoyOX+rffqCQObNGkiq9Va5nbgvLw8hYWFXdG5U1NTFRsbq86dO1/Rebzd2bNnnZYvbrG58LP19/d3OeRIpbddXxhyXn75ZR0/flyGYZR7m7Y73X777Y6fjx07pk8++cTlY9955x2n5VatWjkm4LuwNUyS0tLSKjxPcHCwevXqpZSUFGVmZjqNdyosLHR81u3bt3c67qeffnJa3rt3r+Pn8y2T+fn5OnfunCRp4sSJTpME7t+/3+m9MHEgAPzKq4OOr6+vOnXq5NQNYbfblZGRoa5du17RuUePHq0dO3aUGRhqdu+9957j58LCQv373/92LF/YSuCKo0ePOi0PHz5cwcHBkuToeqmstLQ0py/xffv2uXTcmDFjnLp/Ro0apS1btpTZr6SkRG+99ZYj8K1fv14//PCDy/UtWbJER44ccSwnJSVp48aN5e5bv359x88+Pj6O5tU777xT/v7+jm0LFy50/Lxjxw7t2LHDsXz33Xe7XBsAoCyPd10VFRVpz549juWsrCxt3rxZISEhio6OVnJyspKSkhQfH68uXbpoxowZOnnypOMuLFTOH//4R+3cuVPNmzfXggULnL60R44cWalztW7d2mm5T58+6t27t7Zu3aoFCxZUSb2uatu2raZMmaKnn35aUum4m/j4eN11113q2LFjmQkDExMTJclprIzFYtGgQYPKNIMWFRVp6dKlkkqD0vvvv6/x48dLkt599129++67atmypbp166arr75aFotFW7Zs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uLp166bly5fL39/fHW8LAADUMG6ZRyciIkILFizQ7373O7Vu3VovvPCCBg0apF27dqlz585edUs38+gAAFDzuPr97ZYWnQEDBmjw4MFq1aqVjh49qt69e0uSvvvuO11zzTXuuCQAAEAZbgk6f//73xUTE6Ps7GxNnz5d9evXlyTl5OTo0UcfdcclAQAAyvDaR0BUF7quAACoeTz+CIj33ntP3bp1U0REhPbv3y9JmjFjhj755BN3XRIAAMCJW4LO7NmzlZycrN69e+v48eOy2WySpIYNG2rGjBnuuCQAAEAZbgk6r732mv7xj3/omWeekdVqdayPj4/X999/745LAgAAlOGWoJOVlaWOHTuWWe/n56eTJ0+645IAAABluCXotGjRQps3by6zfvny5WrTpo07LgkAAFCGW24vT05O1ujRo3XmzBkZhqENGzZo3rx5mjp1qt566y13XBIAAKAMtwSdhx9+WAEBAfrjH/+oU6dOafDgwYqIiNCrr76q+++/3x2XBAAAKMPt8+icOnVKRUVFuuqqq9x5md+MeXQAAKh5PD6Pzrlz5/R///d/eu+99xQQECBJOnTokIqKitx1SQAAACdu6brav3+/evXqpQMHDqi4uFh33HGHGjRooGnTpqm4uFhz5sxxx2UBAACcuKVFZ/z48YqPj9exY8ccrTmS1L9/f2VkZLjjkgAAAGW4pUVnzZo1+s9//iNfX1+n9TExMTp48KA7LgkAAFCGW1p07Ha747EPF/r555/VoEEDd1wSAACgDLcEnTvvvNPpmVYWi0VFRUVKSUnR73//e3dcEgAAoAy33F6enZ2tXr16yTAM7d69W/Hx8dq9e7eaNGmir776yqtuNef2cgAAah5Xv7/dNo/OuXPnNH/+fG3ZskVFRUW64YYbNGTIEKfByd6AoAMAQM3jsaBTUlKi6667TkuWLKkRz7Ui6AAAUPN4bMLAunXr6syZM1V9WgAAgEpzy2Dk0aNHa9q0aTp37pw7Tg8AAOASt8yjk5mZqYyMDK1YsULt2rVTYGCg0/b09HR3XBYAAMCJW4JOw4YNNXDgQHecGgAAwGVuCTpz5851x2kBAAAqxW1PLwcAAPA0twSdjh076oYbbijz6tSpk2666SYlJSVp1apVlTrn3/72N1ksFk2YMMGx7syZMxo9erQaN26s+vXra+DAgcrLy6vidwMAAGoqtwSdXr166aefflJgYKB69OihHj16qH79+tq7d686d+6snJwcJSYm6pNPPnHpfJmZmXrjjTfUvn17p/WPPfaY/v3vf+vjjz/Wl19+qUOHDmnAgAHueEsAAKAGcssYnSNHjmjixIn605/+5LT+hRde0P79+7VixQqlpKRoypQpuvvuuy95rqKiIg0ZMkT/+Mc/9MILLzjWFxQU6J///Kc++OAD3XbbbZJKxwa1adNG33zzjW688caqf2MAAKBGcUuLzkcffaQHHnigzPr7779fH330kSTpgQce0K5duy57rtGjR6tPnz5KTEx0Wr9x40aVlJQ4rb/uuusUHR2tdevWVXi+4uJiFRYWOr0AAIA5uSXo+Pv76z//+U+Z9f/5z3/k7+8vSbLb7Y6fK/Lhhx9q06ZNmjp1apltubm58vX1VcOGDZ3Wh4aGKjc3t8JzTp06VcHBwY5XVFSUC+8IAADURG7puho7dqweeeQRbdy4UZ07d5ZUOs7mrbfe0tNPPy1J+vzzzxUXF1fhObKzszV+/HitXLnysoGoMiZPnqzk5GTHcmFhIWEHAACTctvTy99//33NmjXL0T3VunVrjR07VoMHD5YknT59WhaLpcIQs3jxYvXv319Wq9WxzmazyWKxyMfHR59//rkSExN17Ngxp1ad5s2ba8KECXrsscdcqpOHegIAUPN47OnlVeXEiRPav3+/07rhw4fruuuu01NPPaWoqCg1bdpU8+bNc8zCvGvXLl133XVat26dy4ORCToAANQ8rn5/u6XrSpKOHz+uBQsW6KefftLjjz+ukJAQbdq0SaGhoYqMjLzs8Q0aNND111/vtC4wMFCNGzd2rH/ooYeUnJyskJAQBQUFaezYseratSt3XAEAAEluCjpbt25VYmKigoODtW/fPj388MMKCQlRenq6Dhw4oHfffbdKrvP3v/9dPj4+GjhwoIqLi9WzZ0+9/vrrVXJuAABQ87ml6yoxMVE33HCDpk+frgYNGmjLli26+uqr9Z///EeDBw/Wvn37qvqSvxldVwAA1Dyufn+75fbyzMxM/b//9//KrI+MjLzkrd8AAABVyS1Bx8/Pr9yJ+H788Uc1bdrUHZcEAAAowy1Bp1+/fnr++edVUlIiSbJYLDpw4ICeeuopxx1SAAAA7uaWoPPyyy+rqKhITZs21enTp3XrrbfqmmuuUYMGDfSXv/zFHZcEAAAowy13XQUHB2vlypVau3attmzZoqKiIt1www1lnlcFAADgTlUedOx2u9LS0pSenq59+/bJYrGoRYsWCgsLk2EYslgsVX1JAACAclVp15VhGOrXr58efvhhHTx4UO3atVPbtm21f/9+DRs2TP3796/KywEAAFxSlbbopKWl6auvvlJGRoZ69OjhtO2LL77QPffco3fffVdDhw6tyssCAACUq0pbdObNm6enn366TMiRpNtuu02TJk3S+++/X5WXBAAAqFCVBp2tW7eqV69eFW7v3bu3tmzZUpWXBAAAqFCVdl3l5+crNDS0wu2hoaE6duxYVV4SQHWw2aQ1a6ScHCk8XLr5Zslq9XRVKAd/VYCzKg06NptNdepUfEqr1apz585V5SUBuFt6ujR+vPTzz7+ua9ZMevVVacAAz9V1IS/7dredten719fo1N4c1WsZrnaP3iyrr/vrqQl/VUB1q9KHevr4+Kh3797y8/Mrd3txcbGWL18um81WVZe8YjzUE7iE9HTp3nuli/+ZOD9NxIIFnv8G9bJv92+eTFf0K+MVYfu1nkPWZjqQ/KpunO6eeux26Z13pIceqviv6uOPJSamh5m4+v1dpUFn+PDhLu03d+7cqrrkFSPoABWw2aSYGOcAcSGLRYqMlLKypEu05LqNK9/u//qX9MADvy67uZzV49LVPfVeSYbTAEi7Sq//9YQFuvmVAVVajt3u3HjlI5tu1hqFK0c5Ctca3Sy7rGrWTNq3j24smIdHgk5NRNCBV/GmLpgvvpBuv/3y+332mdS7t/vrudDF3+6XUlAgufm/bbtd8rWWaL+aK1w55d7lYZdFBxWp4KNZCgqpumB44sSvb6+/0vWqxitKv4bTbDXTeL2qRRqgVauk7t2r7NKAR7n6/e2WZ10B+A3S00tbUHr0kAYPLv0zJqZ0vSfs2+fafjk5bi2jXCdPur7v11+7r47z7Hadk68iKwg5kuQjQ1H6WbtSV1bppX18JIvsGqa5WqB7FSnnFrhIHdQC3av+WuiRvyrA0zzQ3gx4gDe1lJSnorEwBw+WrvfEWJjwcNf2i4lxaxnl8qnE/6NVw52ep4+cVKCL+547ULVpo56/XXZV/Lvso9LfqVc1QXuvuke6xL6AGdGiA/PztpaSi5WUSGPGlA050q/rxo+XqvuOxTvukCIjZaj8ASWGLFJUlHTrrdVblyTVqyf70s9c2tWIiHRzMapU8PK7LqZKL2055VrrVpR+1s1aU6XXBmoCgg7My26X5s6V7r1XxkUDao3zLSULF3qouP+y2yVf30t3/xhG6YDglVXb5XFZderoPw/MlKFfB9OeZ5dFhqSvBs6Q4VP9LQR2w6K6fe5UtpqVqc2xjyw6oCidiLvZ7fXUa1JPhdkFyvGJvGQ9h6xR6jC2ioNhJUKW9TB9V6h9CDowp/ODVUeMkIyybRIWwygNEBMmlHZreUplxppU8wCLkhLpppcG6F4t0EE5t4r8rGa6Vwt064wBOnGiWsuSVPqx2WXVeL0qqfwgJkkTNENfr3N/ELP4WBTULEj7J868ZD0HkmdU/Xw69eqVDgh3havdkYCJEHRgTq4GiJ9/Lh274ymV+L9xW1SM++oox/kGpEUaoBjtU3et0gP6QN21Si2UpUUqHTNUHWN9L3b+Y1ukSwexRRpQHUN0HG6cPkAbnligXKtzPTnWZtrwxAL3zKNjsUh33lk6d1BF961b/tvNeLP7W7cAb8NgZJhTJQKE/WDFd8q4m92/noJVoB8UqwgdcgwcddpHFv2sZtpefKuq8ybuvLwLa7DqS3Uvdz9PPNXlfCPG739fGnY+0d3lzh0jlU71U51unD5Athfu1uaLZkaOdOfMyFZr6QSJ995bGmouHO91PvzMmOFdA/CBakLQgSnZ/evp9/pMy/X7y+679Zdwxbm/pHKdPGVRkYI0TjO1QPfKLotT2LmwC+auw9X7JeXqzVTVHSQk50aMgwclu1E2iFkspds90Yhh9bUqbkL3y+5XpQYMKL07r7xZomfM8PwM1oCH0HUFUzp5yqKVcm2w6s6mnmvOr0wXTHXfxX3LLd7dG3K+EeN8LReqtY0YAwaUzn+0apX0wQelf2ZlEXJQqxF0YEo+Pq4PVg2L9Nw3Yb16pRP3RkZKiy3lj4VZbBngkbu4a0KQON+IcXGrUrNm3vEYLo+wWkunP37ggdI/a1XSA8riERA8AsKUDKN0avzYWCnhYLpmXDQt/gFF6THNUGbUAGVlef674Px8gVL5wys8+aVd3jMzo6K8qzfE2+eDBFD1eNaViwg65nY+QPgYNnW7YLDq17pZdovVq/6v35sDBUECgLep8UFn6tSpSk9P186dOxUQEKDf/e53mjZtmlq3bu3Y58yZM5o4caI+/PBDFRcXq2fPnnr99dcVGhrq8nUIOubnzQHiYgQKAHBNjQ86vXr10v3336/OnTvr3Llzevrpp7Vt2zbt2LFDgYGlT5UZNWqUli5dqrS0NAUHB2vMmDHy8fHR2rVrXb4OQad2IEAAgLnU+KBzsV9++UVXXXWVvvzyS91yyy0qKChQ06ZN9cEHH+je/w5u2Llzp9q0aaN169bpxhtvdOm8BB0AAGoeV7+/a8xdVwUFBZKkkJAQSdLGjRtVUlKixMRExz7XXXedoqOjtW7dugrPU1xcrMLCQqcXAAAwpxoRdOx2uyZMmKCbbrpJ119/vSQpNzdXvr6+atiwodO+oaGhys3NrfBcU6dOVXBwsOMVFRXlztIBAIAH1YigM3r0aG3btk0ffvjhFZ9r8uTJKigocLyys7OroEIAAOCNvP4REGPGjNGSJUv01VdfqVmzZo71YWFhOnv2rI4fP+7UqpOXl6ewsLAKz+fn5yc/Pz93lgwAALyE17boGIahMWPGaNGiRfriiy/UokULp+2dOnVS3bp1lZGR4Vi3a9cuHThwQF27dq3ucgEAgBfy2had0aNH64MPPtAnn3yiBg0aOMbdBAcHKyAgQMHBwXrooYeUnJyskJAQBQUFaezYseratavLd1wBAABz89rbyy0VPElw7ty5GjZsmKRfJwycN2+e04SBl+q6uhi3lwMAUPOYbh4ddyHoAABQ85huHh0AAIDKIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTMkXQSU1NVUxMjPz9/ZWQkKANGzZ4uiQAAOAFanzQmT9/vpKTk5WSkqJNmzapQ4cO6tmzpw4fPuzp0gAAgIfV+KDzyiuvaOTIkRo+fLhiY2M1Z84c1atXT2+//banSwMAAB5Wx9MFXImzZ89q48aNmjx5smOdj4+PEhMTtW7dunKPKS4uVnFxsWO5oKBAklRYWOjeYgEAQJU5/71tGMYl96vRQefIkSOy2WwKDQ11Wh8aGqqdO3eWe8zUqVP15z//ucz6qKgot9QIAADc58SJEwoODq5we40OOr/F5MmTlZyc7Fi22+3Kz89X48aNZbFYPFhZWZ07d1ZmZqany/AKNf2z8Mb6PVVTdV3XXdepyvNWxbkKCwsVFRWl7OxsBQUFVUld8Bxv/LfCUy73WRiGoRMnTigiIuKS56nRQadJkyayWq3Ky8tzWp+Xl6ewsLByj/Hz85Ofn5/TuoYNG7qrxCtitVr5h+u/avpn4Y31e6qm6rquu65TleetynMFBQV53e8YKs8b/63wFFc+i0u15JxXowcj+/r6qlOnTsrIyHCss9vtysjIUNeuXT1YWdUYPXq0p0vwGjX9s/DG+j1VU3Vd113XqcrzeuPvBTyL34lfVdVnYTEuN4rHy82fP19JSUl644031KVLF82YMUMfffSRdu7cWWbsDgCYTWFhoYKDg1VQUEBLAFCOGt11JUn33XeffvnlFz377LPKzc1VXFycli9fTsgBUCv4+fkpJSWlTJc8gFI1vkUHAACgIjV6jA4AAMClEHQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpEXQAwISys7PVvXt3xcbGqn379vr44489XRLgEdxeDgAmlJOTo7y8PMXFxSk3N1edOnXSjz/+qMDAQE+XBlSrGj9hIACgrPDwcIWHh0uSwsLC1KRJE+Xn5xN0UOvQdQUAXuirr75S3759FRERIYvFosWLF5fZJzU1VTExMfL391dCQoI2bNhQ7rk2btwom82mqKgoN1cNeB+CDgB4oZMnT6pDhw5KTU0td/v8+fOVnJyslJQUbdq0SR06dFDPnj11+PBhp/3y8/M1dOhQvfnmm9VRNuB1GKMDAF7OYrFo0aJFuueeexzrEhIS1LlzZ82aNUuSZLfbFRUVpbFjx2rSpEmSpOLiYt1xxx0aOXKkHnzwQU+UDngcLToAUMOcPXtWGzduVGJiomOdj4+PEhMTtW7dOkmSYRgaNmyYbrvtNkIOajWCDgDUMEeOHJHNZlNoaKjT+tDQUOXm5kqS1q5dq/nz52vx4sWKi4tTXFycvv/+e0+UC3gUd10BgAl169ZNdrvd02UAHkeLDgDUME2aNJHValVeXp7T+ry8PIWFhXmoKsA7EXQAoIbx9fVVp06dlJGR4Vhnt9uVkZGhrl27erAywPvQdQUAXqioqEh79uxxLGdlZWnz5s0KCQlRdHS0kpOTlZSUpPj4eHXp0kUzZszQyZMnNXz4cA9WDXgfbi8HAC+0evVq9ejRo8z6pKQkpaWlSZJmzZqlF198Ubm5uYqLi9PMmTOVkJBQzZUC3o2gAwAATIsxOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgBqpGHDhumee+65onOsXr1aFotFx48fv+R+GRkZatOmjWw222XPuXz5csXFxclut19RbQCqBkEHgFsNGzZMFotFFotFvr6+uuaaa/T888/r3LlzV3TeV1991fHMJ3d78skn9cc//lFWq/Wy+/bq1Ut169bV+++/Xw2VAbgcgg4At+vVq5dycnK0e/duTZw4Uc8995xefPHF33Qum80mu92u4OBgNWzYsGoLLcfXX3+tvXv3auDAgS4fM2zYMM2cOdONVQFwFUEHgNv5+fkpLCxMzZs316hRo5SYmKhPP/1UklRcXKzHH39ckZGRCgwMVEJCglavXu04Ni0tTQ0bNtSnn36q2NhY+fn56cCBA2W6roqLizVu3DhdddVV8vf3V7du3ZSZmelUx2effaZrr71WAQEB6tGjh/bt23fZ2j/88EPdcccd8vf3d6zbsmWLevTooQYNGigoKEidOnXSt99+69jet29fffvtt9q7d+9v+8AAVBmCDoBqFxAQoLNnz0qSxowZo3Xr1unDDz/U1q1bNWjQIPXq1Uu7d+927H/q1ClNmzZNb731lrZv366rrrqqzDmffPJJLVy4UO+88442bdqka665Rj179lR+fr4kKTs7WwMGDFDfvn21efNmPfzww5o0adJla12zZo3i4+Od1g0ZMkTNmjVTZmamNm7cqEmTJqlu3bqO7dHR0QoNDdWaNWt+0+cDoOrU8XQBAGoPwzCUkZGhzz//XGPHjtWBAwc0d+5cHThwQBEREZKkxx9/XMuXL9fcuXP117/+VZJUUlKi119/XR06dCj3vCdPntTs2bOVlpam3r17S5L+8Y9/aOXKlfrnP/+pJ554QrNnz1bLli318ssvS5Jat26t77//XtOmTbtkzfv373fUdt6BAwf0xBNP6LrrrpMktWrVqsxxERER2r9/fyU+HQDuQNAB4HZLlixR/fr1VVJSIrvdrsGDB+u5557T6tWrZbPZdO211zrtX1xcrMaNGzuWfX191b59+wrPv3fvXpWUlOimm25yrKtbt666dOmiH374QZL0ww8/KCEhwem4rl27Xrb206dPO3VbSVJycrIefvhhvffee0pMTNSgQYPUsmVLp30CAgJ06tSpy54fgHsRdAC4XY8ePTR79mz5+voqIiJCdeqU/tNTVFQkq9WqjRs3lrmjqX79+o6fAwICZLFYqrXm85o0aaJjx445rXvuuec0ePBgLV26VMuWLVNKSoo+/PBD9e/f37FPfn6+mjZtWt3lArgIY3QAuF1gYKCuueYaRUdHO0KOJHXs2FE2m02HDx/WNddc4/QKCwtz+fwtW7aUr6+v1q5d61hXUlKizMxMxcbGSpLatGmjDRs2OB33zTffXPbcHTt21I4dO8qsv/baa/XYY49pxYoVGjBggObOnevYdubMGe3du1cdO3Z0+T0AcA+CDgCPufbaazVkyBANHTpU6enpysrK0oYNGzR16lQtXbrU5fMEBgZq1KhReuKJJ7R8+XLt2LFDI0eO1KlTp/TQQw9Jkh555BHt3r1bTzzxhHbt2qUPPvjApXl4evbsqa+//tqxfPr0aY0ZM0arV6/W/v37tXbtWmVmZqpNmzaOfb755hv5+fm51DUGwL0IOgA8au7cuRo6dKgmTpyo1q1b65577lFmZqaio6MrdZ6//e1vGjhwoB588EHdcMMN2rNnjz7//HM1atRIUumdUAsXLtTixYvVoUMHzZkzxzHY+VKGDBmi7du3a9euXZIkq9Wqo0ePaujQobr22mv1hz/8Qb1799af//xnxzHz5s3TkCFDVK9evUq9BwBVz2IYhuHpIgDAmz3xxBMqLCzUG2+8cdl9jxw5otatW+vbb79VixYtqqE6AJdCiw4AXMYzzzyj5s2bu/T8qn379un1118n5ABeghYdAABgWrToAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0/r/eoC3NgmpG2gAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m2024-01-14T10:43:14.037690-0800 | INFO | aurora.pipelines.transfer_function_kernel | update_dataset_df | DECIMATION LEVEL 2\u001b[0m\n", "\u001b[1m2024-01-14T10:43:14.109079-0800 | INFO | aurora.pipelines.transfer_function_kernel | update_dataset_df | Dataset Dataframe Updated for decimation level 2 Successfully\u001b[0m\n", "\u001b[1m2024-01-14T10:43:14.423959-0800 | INFO | aurora.pipelines.process_mth5 | save_fourier_coefficients | Skip saving FCs. dec_level_config.save_fc = False False\u001b[0m\n", "\u001b[1m2024-01-14T10:43:14.754151-0800 | INFO | aurora.pipelines.process_mth5 | save_fourier_coefficients | Skip saving FCs. dec_level_config.save_fc = False False\u001b[0m\n", "\u001b[1m2024-01-14T10:43:14.764705-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 411.663489s (0.002429Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:14.806179-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 342.524727s (0.002919Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:14.847611-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 275.526776s (0.003629Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:14.962995-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 216.783308s (0.004613Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:15.064856-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 172.015831s (0.005813Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:15.179677-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 133.242890s (0.007505Hz)\u001b[0m\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkcAAAG9CAYAAAAfotIVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABK2ElEQVR4nO3de3yMd97/8fdkyEFIiJAECaqqzlFBbdliU4fVquO2ZSt6cP+2DaVRLe3upq1uLT2pSulhSdst1Tq11TrdWUqtElG0lKJxKBIlTJogYub6/ZHbdEaCCTOZmXg9H495yHX6fj8zYq6P7+kyGYZhCAAAAJKkAG8HAAAA4EtIjgAAAByQHAEAADggOQIAAHBAcgQAAOCA5AgAAMAByREAAIADkiMAAAAHJEcAAAAOSI4AAAAckBwBAAA48Pvk6NChQ+rWrZtatGihNm3a6JNPPvF2SKhgubm5mjRpkm6//XZFRUUpMDBQoaGhatmypR566CEtW7ZMl3qE4MsvvyyTyeT0Wrp06WXr+/nnnzV27Fi1bNlSoaGhCgoKUnR0tFq3bq177rlHkydP1smTJ0tdZ7Va9dZbb6lLly6qVauWQkJC1LRpU40ZM0ZHjx694vs8f/682rdv7xTriBEjXPqMAADlYPi5I0eOGN9++61hGIZx9OhRo169ekZBQYF3g0KFSUtLM4KDgw1Jl31lZ2eXeX3Lli1LnTto0KBL1peVlWWEh4dfsb4Lv5MXnDlzxujZs+clz4+IiDAyMzMv+16ff/75UtclJSWV8xMDAFxJlYpIwDwpJiZGMTExkqTo6GhFRkYqLy9PoaGhXo4MnjZ16lQ99dRT9m2z2ay+ffvaW1f27t2rFStWKDc3t8zrMzMztWPHjlL7P//8c+Xl5SkiIqLUsUcffVQWi0WSFBoaqnvuuUc33HCDiouLtWfPHq1bt06HDh0qdd0zzzyjlStX2uN88MEHFRMTo/T0dB08eFB5eXkaMmSIvv/++zJ/d7dv365Jkya59sEAAK6Nt7Ozr776yrjzzjuNmJgYQ5KxePHiUufMmDHDaNiwoREUFGR07NjR2LhxY5llbd682WjZsqWHI/YfK1euNAYNGmTExsYagYGBRrVq1YxOnToZs2fPNmw221WVuXr1auPBBx802rVrZ0RHRxuBgYFGSEiI0aRJE2PEiBHG9u3by1XenDlzXGrhudiOHTsMs9lsv65u3brGli1bSp137tw54+233zZyc3NLHXv00Uft18fFxTm1QL3xxhulzrdYLE6xpqenlxnbpk2bjF9++cW+feLECSMoKMh+3dNPP20/tmvXLsNkMtmPvfnmm2W+h/j4eEOSkZCQYNSvX5+WIwDwIK8nR19++aXxzDPPGIsWLSozOfroo4+MwMBAY/bs2caOHTuMkSNHGjVr1ix1sztx4oTRokULY/369RUYvW86f/68042/rNc999xzVQnSuHHjLltuYGCgsWrVKpfLu9rk6C9/+YvTdQsXLizX+zh79qxRq1Ytp4RlwIAB9u1bbrml1DUnTpxwqvOJJ54wzp8/f8W65s2b53RdVlaW0/HWrVvbj/Xu3bvU9ampqYYkIygoyNixY4fRsGFDkiMA8CCvd6v16dNHffr0ueTxV199VSNHjtQDDzwgSZo1a5a++OILzZ49WxMmTJAkFRUVqX///powYYJ+97vfXba+oqIiFRUV2bdtNpvy8vJUu3ZtmUwmN7wj73vhhRf05ptvSpJMJpP+9Kc/KTY2Vp999pl+/PFHSdL8+fN166236sEHHyxX2VWqVFGXLl3UokUL1apVS8HBwcrLy9PKlSu1e/dunTt3TqNGjdKmTZtcKu/MmTNO27/++qvy8/OveN2qVavsP9esWVM9evRw6boLFi1a5DRo+s4771TTpk21ePFiSdKWLVu0YcMGtWzZ0n5OlSpVFBcXp4MHD0oqGcw9e/Zs3XrrrWrTpo06dOigrl27KigoyKmuzMxMp+3IyEinWOPi4vTdd99JkrZt2+Z0bPv27XrxxRclSU8//bQaNGjgNLi8uLi4XO8bACoLwzD066+/ql69egoIcPP8Mm9nZ450UctRUVGRYTabS7UmDR8+3OjXr59hGIZhs9mMe++910hNTXWpjgv/C+fFixcvXrx4+f/r0KFDbspCfuP1lqPLOX78uKxWq6Kiopz2R0VFadeuXZKk9evXa/78+WrTpo2WLFkiSfrggw/UunXrMsucOHGiUlJS7NsWi0VxcXE6dOiQwsLCPPNGKtDatWt111132be///57xcbG2reTk5P173//W5IUFBSkY8eOlav8//znP3rsscfKHHTsaNWqVerYsWO5yi6PmJgYnT59WpKUkJCgjIwMl6/NyclRixYtZLVaJUl//etfNX78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6vwLn+GFV3p6epmxbdq0yfjll1/s2ydOnDCCgoLs1z399NP2Y7t27TJMJpP92Jtvvlnme4iPjzckGQkJCUb9+vVpOQKA64Qn798+mxzl5+cbY8aMsd+cb7jhBuOZZ54xioqK7OfYbDbjb3/7mxEVFWUEBQUZf/jDH4zdu3eXq57Klhz95S9/cUpUFi5cWK7rz549a9SqVcspYRkwYIB9+5Zbbil1zYkTJ5zqfOKJJ4zz589fsa558+Y5XZeVleV0vHXr1vZjvXv3LnV9amqqIckICgoyduzYYTRs2JDkCACuE9dlclRRKlty1LRpU3uCUKtWLcNqtZbr+vnz5zslLNu3by9z38UcExNJRu3atY1+/foZqampxvLly42zZ8+WumbixIlO15w8edLp+N13320/Vq9ePadj3377rVG1alVDkjFlypRSMZAcAUDl5sn7t8/OVsPVOXz4sP3nm266qdS4rStJT0+3/9yyZUu1bt1ad911l6pXr17mORe89tprMplM9u0TJ07os88+03PPPafevXsrKipKzz//vKxWq/2cvLw8pzIuXsSrRo0aTuVdUFxcrBEjRqi4uFi33nqrxo0bV673CADA5ZAcwe7o0aP2wdGS7KuMh4SEqF+/fvb9//73v3X+/HmnawcMGKD//Oc/6tGjR5kJmcViUWpq6mUHTxsXLStw8fYFkyZN0rZt2xQSEqL09HSZzeYrvzkAAFxEclTJ1K9f3/7zjz/+eMkEoyzvv/++U8uO4yNY7rvvPvvPx44d05dfflnq+m7duikjI0N5eXlatmyZnn32WSUkJDid89prr9l/rl27ttOxX3/99ZLbkZGRkqSDBw9q8uTJkqQXXnhBzZo1c/n9AQDgCpKjSuYPf/iD/eeTJ0/q008/dfnaixfYbNq0qX1RxbvuusvpWFldaxeEh4erd+/eSk1NVWZmph588EH7sfz8fPsSAm3atHG67qeffnLa3rdvn/3n1q1bSyrpirvQajVu3DinhR8PHDjg9F5YDBIAcDVIjiqZUaNGOXUzPfLII9q2bVup84qLi/Xuu+/q2LFjkqSNGzfqhx9+cLmepUuX6vjx4/btpKQkZWVllXmu43ilgIAA+1iinj17Kjg42H5s4cKF9p937typnTt32rfvvvtul2MDAOBa+OwikLg6LVu21KRJk/T0009LKnkGXUJCgu68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sGFDPfLII0pMTNRnn30mSSoqKtITTzyh+vXrKzQ0VJ06ddKaNWvs16anp6tmzZr67LPP1KJFCwUFBengwYOlutWKior02GOPqW7dugoODlaXLl2UmZnpFMeXX36pm266SSEhIerevbv2799/xdg/+ugj3XHHHQoODrbv27Ztm7p3764aNWooLCxM7du31+bNm+3H77rrLm3evFn79u27ug8MgFeRHAGocCEhITp37pwkadSoUdqwYYM++ugjbd++XUOGDFHv3r21Z88e+/mnT5/WlClT9O6772rHjh2qW7duqTKffPJJLVy4UO+99562bNmiG2+8Ub169VJeXp4k6dChQxo4cKDuuusubd26VQ8//LAmTJhwxVjXrVunhIQEp33Dhg1TgwYNlJmZqaysLE2YMEFVq1a1H4+Li1NUVJTWrVt3VZ8PAO+q4u0AAFw/DMNQRkaGVqxYodGjR+vgwYOaM2eODh48qHr16kmSnnjiCS1fvlxz5szRiy++KEkqLi7Wm2++qbZt25ZZbmFhoWbOnKn09HT16dNHkvTOO+9o1apV+te//qXx48dr5syZatKkiV555RVJUrNmzfTdd99pypQpl435wIED9tguOHjwoMaPH6+bb75ZktS0adNS19WrV08HDhwox6cDwFeQHAHwuKVLl6p69eoqLi6WzWbT0KFD9eyzz2rNmjWyWq266aabnM4vKipS7dq17duBgYFq06bNJcvft2+fiouLddttt9n3Va1aVR07dtQPP/wgSfrhhx/UqVMnp+s6d+58xdjPnDnj1KUmSSkpKXr44Yf1wQcfKDExUUOGDFGTJk2czgkJCdHp06evWD4A30NyBMDjunfvrpkzZyowMFD16tVTlSolXz0FBQUym83KysoqNROsevXq9p9DQkJkMpkqNOYLIiMjdfLkSad9zz77rIYOHaovvvhCy5YtU2pqqj766CMNGDDAfk5eXp7q1KlT0eECcAPGHAHwuNDQUN14442Ki4uzJ0aS1K5dO1mtVh07dkw33nij0ys6Otrl8ps0aaLAwECtX7/evq+4uFiZmZlq0aKFJKl58+batGmT03XffPPNFctu166ddu7cWWr/TTfdpMcff1wrV67UwIEDNWfOHPuxs2fPat++fWrXrp3L7wGA7yA5AuA1N910k4YNG6bhw4dr0aJFys7O1qZNmzR58mR98cUXLpcTGhqqRx55ROPHj9fy5cu1c+dOjRw5UqdPn9ZDDz0kSfrLX/6iPXv2aPz48dq9e7fmzp3r0jpJvXr10tdff23fPnPmjEaNGqU1a9bowIEDWr9+vTIzM9W8eXP7Od98842CgoJc6rYD4HtIjgB41Zw5czR8+HCNGzdOzZo1U//+/ZWZmam4uLhylfPPf/5TgwYN0v33369bbrlFe/fu1YoVK1SrVi1JJTPIFi5cqCVLlqht27aaNWuWfcD35QwbNkw7duzQ7t27JUlms1knTpzQ8OHDddNNN+lPf/qT+vTpo+eee85+zbx58zRs2DBVq1atXO8BgG8wGYZheDsIAPBl48ePV35+vt56660rnnv8+HE1a9ZMmzdvVuPGjSsgOgDuRssRAFzBM888o4YNG7r0vLT9+/frzTffJDEC/BgtRwAAAA5oOQIAAHBAcgQAAOCA5AgAAMAByREAAIADkiMAAAAHJEcAAAAOSI4AAAAckBwBAAA4IDkCAABw8P8BNl+yYC0/vEcAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m2024-01-14T10:43:15.771183-0800 | INFO | aurora.pipelines.transfer_function_kernel | update_dataset_df | DECIMATION LEVEL 3\u001b[0m\n", "\u001b[1m2024-01-14T10:43:15.799960-0800 | INFO | aurora.pipelines.transfer_function_kernel | update_dataset_df | Dataset Dataframe Updated for decimation level 3 Successfully\u001b[0m\n", "\u001b[1m2024-01-14T10:43:16.108674-0800 | INFO | aurora.pipelines.process_mth5 | save_fourier_coefficients | Skip saving FCs. dec_level_config.save_fc = False False\u001b[0m\n", "\u001b[1m2024-01-14T10:43:16.403179-0800 | INFO | aurora.pipelines.process_mth5 | save_fourier_coefficients | Skip saving FCs. dec_level_config.save_fc = False False\u001b[0m\n", "\u001b[1m2024-01-14T10:43:16.411907-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 1514.701336s (0.000660Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:16.453957-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 1042.488956s (0.000959Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:16.495345-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 723.371271s (0.001382Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:16.537654-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 532.971560s (0.001876Hz)\u001b[0m\n", "\u001b[1m2024-01-14T10:43:16.578356-0800 | INFO | aurora.time_series.frequency_band_helpers | get_band_for_tf_estimate | Processing band 412.837995s (0.002422Hz)\u001b[0m\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m2024-01-14T10:43:17.251452-0800 | INFO | mth5.mth5 | close_mth5 | Flushing and closing /home/kkappler/software/irismt/aurora/docs/examples/8P_CAS04.h5\u001b[0m\n" ] } ], "source": [ "show_plot = True\n", "tf_cls = process_mth5(config,\n", " kernel_dataset,\n", " units=\"MT\",\n", " show_plot=show_plot,\n", " z_file_path=None,\n", " )" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "mt_metadata.transfer_functions.core.TF" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "type(tf_cls)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Write the transfer functions generated by the Aurora pipeline" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "EMTFXML(station='CAS04', latitude=37.63, longitude=-121.47, elevation=329.39)" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ " tf_cls.write(fn=\"emtfxml_test.xml\", file_type=\"emtfxml\")" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "EMTFXML(station='CAS04', latitude=37.63, longitude=-121.47, elevation=329.39)" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tf_cls.write(fn=\"emtfxml_test.xml\", file_type=\"edi\")" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "EMTFXML(station='CAS04', latitude=37.63, longitude=-121.47, elevation=329.39)" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ " tf_cls.write(fn=\"emtfxml_test.xml\", file_type=\"zmm\")" ] } ], "metadata": { "kernelspec": { "display_name": "aurora-test", "language": "python", "name": "aurora-test" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.10" } }, "nbformat": 4, "nbformat_minor": 4 }