{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Events to DataFrame\n", "ObsPlus provides a way to extract useful summary information from ObsPy objects in order to create dataframes. This transformation is lossy but very useful when the full complexity of the `Catalog` object isn't warranted. By default the `events_to_df` function collects information the authors of ObsPlus have found useful, but it is fully extensible/customizable using the functionality of the [DataFrameExtractor](../utils/dataframeextractor.ipynb)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To demonstrate how the `Catalog` can be flattened into a table, let's again use the Crandall catalog." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2024-02-28T22:20:15.805599Z", "iopub.status.busy": "2024-02-28T22:20:15.805424Z", "iopub.status.idle": "2024-02-28T22:20:17.904093Z", "shell.execute_reply": "2024-02-28T22:20:17.903568Z" } }, "outputs": [], "source": [ "import obspy\n", "import numpy as np\n", "from matplotlib import pyplot as plt\n", "from obspy.clients.fdsn import Client\n", "\n", "import obsplus" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2024-02-28T22:20:17.907084Z", "iopub.status.busy": "2024-02-28T22:20:17.906476Z", "iopub.status.idle": "2024-02-28T22:20:18.736812Z", "shell.execute_reply": "2024-02-28T22:20:18.736140Z" } }, "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", "
timelatitudelongitudedepthmagnitudeevent_descriptionassociated_phase_countazimuthal_gapevent_idhorizontal_uncertainty...standard_errorused_phase_countstation_countvertical_uncertaintyupdatedauthoragency_idcreation_timeversionstations
02007-08-06 08:48:40.01039.4635-111.2277410.04.37LR0.0NaNsmi:local/248839NaN...1.73560.0134.0NaN2018-10-10 20:33:13.618110976DCNIOSH2018-10-10 20:33:13.618111DUG, GMR, H13A, HLID, I11A, I13A, J11A, J12A, ...
12007-08-07 02:14:24.08039.4632-111.22304180.01.26LR0.0NaNsmi:local/248883NaN...0.88340.014.0NaN2018-10-10 21:10:26.864045056DCNIOSH2018-10-10 21:10:26.864045DUG, P14A, P15A, P16A, P18A, Q14A, Q16A, Q18A,...
22007-08-07 03:44:18.47039.4625-111.21524160.01.45LR0.0NaNsmi:local/248887NaN...0.57160.015.0NaN2018-10-10 21:10:27.576204032DCNIOSH2018-10-10 21:10:27.576204DUG, N17A, P14A, P16A, P18A, Q14A, Q16A, Q18A,...
32007-08-07 07:13:05.76039.4605-111.22423240.02.240.0NaNsmi:local/248891NaN...0.99010.035.0NaN2012-04-12 10:19:26.228029952NaTDUG, L15A, M14A, M15A, M16A, N14A, N15A, N16A,...
42007-08-07 02:05:04.49039.4648-111.22551790.02.08LR0.0NaNsmi:local/248882NaN...0.99350.035.0NaN2018-10-10 21:15:19.190404096DCNIOSH2018-10-10 21:15:19.190404DUG, L15A, M14A, M15A, N14A, N15A, N16A, N17A,...
\n", "

5 rows × 28 columns

\n", "
" ], "text/plain": [ " time latitude longitude depth magnitude \\\n", "0 2007-08-06 08:48:40.010 39.4635 -111.2277 410.0 4.37 \n", "1 2007-08-07 02:14:24.080 39.4632 -111.2230 4180.0 1.26 \n", "2 2007-08-07 03:44:18.470 39.4625 -111.2152 4160.0 1.45 \n", "3 2007-08-07 07:13:05.760 39.4605 -111.2242 3240.0 2.24 \n", "4 2007-08-07 02:05:04.490 39.4648 -111.2255 1790.0 2.08 \n", "\n", " event_description associated_phase_count azimuthal_gap event_id \\\n", "0 LR 0.0 NaN smi:local/248839 \n", "1 LR 0.0 NaN smi:local/248883 \n", "2 LR 0.0 NaN smi:local/248887 \n", "3 0.0 NaN smi:local/248891 \n", "4 LR 0.0 NaN smi:local/248882 \n", "\n", " horizontal_uncertainty ... standard_error used_phase_count \\\n", "0 NaN ... 1.7356 0.0 \n", "1 NaN ... 0.8834 0.0 \n", "2 NaN ... 0.5716 0.0 \n", "3 NaN ... 0.9901 0.0 \n", "4 NaN ... 0.9935 0.0 \n", "\n", " station_count vertical_uncertainty updated author \\\n", "0 134.0 NaN 2018-10-10 20:33:13.618110976 DC \n", "1 14.0 NaN 2018-10-10 21:10:26.864045056 DC \n", "2 15.0 NaN 2018-10-10 21:10:27.576204032 DC \n", "3 35.0 NaN 2012-04-12 10:19:26.228029952 \n", "4 35.0 NaN 2018-10-10 21:15:19.190404096 DC \n", "\n", " agency_id creation_time version \\\n", "0 NIOSH 2018-10-10 20:33:13.618111 \n", "1 NIOSH 2018-10-10 21:10:26.864045 \n", "2 NIOSH 2018-10-10 21:10:27.576204 \n", "3 NaT \n", "4 NIOSH 2018-10-10 21:15:19.190404 \n", "\n", " stations \n", "0 DUG, GMR, H13A, HLID, I11A, I13A, J11A, J12A, ... \n", "1 DUG, P14A, P15A, P16A, P18A, Q14A, Q16A, Q18A,... \n", "2 DUG, N17A, P14A, P16A, P18A, Q14A, Q16A, Q18A,... \n", "3 DUG, L15A, M14A, M15A, M16A, N14A, N15A, N16A,... \n", "4 DUG, L15A, M14A, M15A, N14A, N15A, N16A, N17A,... \n", "\n", "[5 rows x 28 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "crandall = obsplus.load_dataset('crandall_test')\n", "cat = crandall.event_client.get_events()\n", "ev_df = obsplus.events_to_df(cat)\n", "\n", "ev_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`events_to_df` can also operate on other `event_client`s, like the `EventBank`." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2024-02-28T22:20:18.764722Z", "iopub.status.busy": "2024-02-28T22:20:18.764121Z", "iopub.status.idle": "2024-02-28T22:20:18.930059Z", "shell.execute_reply": "2024-02-28T22:20:18.929422Z" } }, "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", "
timelatitudelongitudedepthmagnitudeevent_descriptionassociated_phase_countazimuthal_gapevent_idhorizontal_uncertainty...standard_errorused_phase_countstation_countvertical_uncertaintyupdatedauthoragency_idcreation_timeversionstations
02007-08-06 08:48:40.01039.4635-111.2277410.04.37LR0.0NaNsmi:local/248839NaN...1.73560.0134.0NaN2018-10-10 20:33:13.618110976DCNIOSH2018-10-10 20:33:13.618111DUG, GMR, H13A, HLID, I11A, I13A, J11A, J12A, ...
12007-08-07 02:14:24.08039.4632-111.22304180.01.26LR0.0NaNsmi:local/248883NaN...0.88340.014.0NaN2018-10-10 21:10:26.864045056DCNIOSH2018-10-10 21:10:26.864045DUG, P14A, P15A, P16A, P18A, Q14A, Q16A, Q18A,...
22007-08-07 03:44:18.47039.4625-111.21524160.01.45LR0.0NaNsmi:local/248887NaN...0.57160.015.0NaN2018-10-10 21:10:27.576204032DCNIOSH2018-10-10 21:10:27.576204DUG, N17A, P14A, P16A, P18A, Q14A, Q16A, Q18A,...
32007-08-07 07:13:05.76039.4605-111.22423240.02.240.0NaNsmi:local/248891NaN...0.99010.035.0NaN2012-04-12 10:19:26.228029952NaTDUG, L15A, M14A, M15A, M16A, N14A, N15A, N16A,...
42007-08-07 02:05:04.49039.4648-111.22551790.02.08LR0.0NaNsmi:local/248882NaN...0.99350.035.0NaN2018-10-10 21:15:19.190404096DCNIOSH2018-10-10 21:15:19.190404DUG, L15A, M14A, M15A, N14A, N15A, N16A, N17A,...
\n", "

5 rows × 28 columns

\n", "
" ], "text/plain": [ " time latitude longitude depth magnitude \\\n", "0 2007-08-06 08:48:40.010 39.4635 -111.2277 410.0 4.37 \n", "1 2007-08-07 02:14:24.080 39.4632 -111.2230 4180.0 1.26 \n", "2 2007-08-07 03:44:18.470 39.4625 -111.2152 4160.0 1.45 \n", "3 2007-08-07 07:13:05.760 39.4605 -111.2242 3240.0 2.24 \n", "4 2007-08-07 02:05:04.490 39.4648 -111.2255 1790.0 2.08 \n", "\n", " event_description associated_phase_count azimuthal_gap event_id \\\n", "0 LR 0.0 NaN smi:local/248839 \n", "1 LR 0.0 NaN smi:local/248883 \n", "2 LR 0.0 NaN smi:local/248887 \n", "3 0.0 NaN smi:local/248891 \n", "4 LR 0.0 NaN smi:local/248882 \n", "\n", " horizontal_uncertainty ... standard_error used_phase_count \\\n", "0 NaN ... 1.7356 0.0 \n", "1 NaN ... 0.8834 0.0 \n", "2 NaN ... 0.5716 0.0 \n", "3 NaN ... 0.9901 0.0 \n", "4 NaN ... 0.9935 0.0 \n", "\n", " station_count vertical_uncertainty updated author \\\n", "0 134.0 NaN 2018-10-10 20:33:13.618110976 DC \n", "1 14.0 NaN 2018-10-10 21:10:26.864045056 DC \n", "2 15.0 NaN 2018-10-10 21:10:27.576204032 DC \n", "3 35.0 NaN 2012-04-12 10:19:26.228029952 \n", "4 35.0 NaN 2018-10-10 21:15:19.190404096 DC \n", "\n", " agency_id creation_time version \\\n", "0 NIOSH 2018-10-10 20:33:13.618111 \n", "1 NIOSH 2018-10-10 21:10:26.864045 \n", "2 NIOSH 2018-10-10 21:10:27.576204 \n", "3 NaT \n", "4 NIOSH 2018-10-10 21:15:19.190404 \n", "\n", " stations \n", "0 DUG, GMR, H13A, HLID, I11A, I13A, J11A, J12A, ... \n", "1 DUG, P14A, P15A, P16A, P18A, Q14A, Q16A, Q18A,... \n", "2 DUG, N17A, P14A, P16A, P18A, Q14A, Q16A, Q18A,... \n", "3 DUG, L15A, M14A, M15A, M16A, N14A, N15A, N16A,... \n", "4 DUG, L15A, M14A, M15A, N14A, N15A, N16A, N17A,... \n", "\n", "[5 rows x 28 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bank = crandall.event_client\n", "ev_df2 = obsplus.events_to_df(bank)\n", "ev_df2.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we have access to all the wonderful Pandas magics. Here are a few contrived examples of things we may want to do:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2024-02-28T22:20:18.932342Z", "iopub.status.busy": "2024-02-28T22:20:18.932129Z", "iopub.status.idle": "2024-02-28T22:20:19.036625Z", "shell.execute_reply": "2024-02-28T22:20:19.035930Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot a histogram of magnitudes\n", "ev_df.magnitude.hist()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since there aren't a lot of events let's look at the picks to make things slightly more interesting:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2024-02-28T22:20:19.039104Z", "iopub.status.busy": "2024-02-28T22:20:19.038733Z", "iopub.status.idle": "2024-02-28T22:20:19.110870Z", "shell.execute_reply": "2024-02-28T22:20:19.110332Z" } }, "outputs": [], "source": [ "# get pick info into a dataframe\n", "picks = obsplus.picks_to_df(cat)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2024-02-28T22:20:19.113373Z", "iopub.status.busy": "2024-02-28T22:20:19.113181Z", "iopub.status.idle": "2024-02-28T22:20:19.118041Z", "shell.execute_reply": "2024-02-28T22:20:19.117552Z" } }, "outputs": [ { "data": { "text/plain": [ "phase_hint\n", "P 384\n", "S 85\n", "Pb 72\n", "Sb 40\n", "? 33\n", "Name: count, dtype: int64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# count the types of phase picks made on all events\n", "picks.phase_hint.value_counts()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2024-02-28T22:20:19.120187Z", "iopub.status.busy": "2024-02-28T22:20:19.120004Z", "iopub.status.idle": "2024-02-28T22:20:19.124996Z", "shell.execute_reply": "2024-02-28T22:20:19.124417Z" } }, "outputs": [ { "data": { "text/plain": [ "event_id\n", "smi:local/248828 2007-08-06 01:46:30.424280\n", "smi:local/248839 2007-08-06 08:50:18.697470\n", "smi:local/248843 2007-08-06 10:49:02.491970\n", "smi:local/248882 2007-08-07 02:06:40.963320\n", "smi:local/248883 2007-08-07 02:15:24.573490\n", "smi:local/248887 2007-08-07 03:45:22.084660\n", "smi:local/248891 2007-08-07 07:14:24.078630\n", "smi:local/248925 2007-08-07 21:43:54.936950\n", "Name: time, dtype: datetime64[ns]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# calculate the max pick_time for each event\n", "picks.groupby('event_id')['time'].max()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The example below demonstrates how to calculate travel time stats grouped by stations on stations with at least 3 P picks. Since all the events are coming from roughly the same location (within a few km) we might look for stations that have high standard deviations or obvious outliers as on the the first steps in quality control." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2024-02-28T22:20:19.127135Z", "iopub.status.busy": "2024-02-28T22:20:19.126952Z", "iopub.status.idle": "2024-02-28T22:20:19.169535Z", "shell.execute_reply": "2024-02-28T22:20:19.168920Z" } }, "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", "
countmeanstdmin25%50%75%max
station
DUG60 days 00:00:26.4503916660 days 00:00:00.2716247480 days 00:00:26.0717400 days 00:00:26.3291100 days 00:00:26.4059400 days 00:00:26.6135175000 days 00:00:26.832520
L15A40 days 00:00:44.2814700 days 00:00:00.3952133330 days 00:00:43.9042100 days 00:00:43.9581200 days 00:00:44.2994400 days 00:00:44.6227900 days 00:00:44.622790
M14A30 days 00:00:42.7338000 days 00:00:00.2321987310 days 00:00:42.4656800 days 00:00:42.6667700 days 00:00:42.8678600 days 00:00:42.8678600 days 00:00:42.867860
M15A60 days 00:00:37.3895733330 days 00:00:00.3957345470 days 00:00:36.9245500 days 00:00:37.1552925000 days 00:00:37.2768600 days 00:00:37.7233650 days 00:00:37.872200
N14A40 days 00:00:34.7530225000 days 00:00:00.3091913210 days 00:00:34.3821700 days 00:00:34.5560875000 days 00:00:34.8109950 days 00:00:35.0079300 days 00:00:35.007930
N15A40 days 00:00:30.7875675000 days 00:00:00.6783239740 days 00:00:30.1879900 days 00:00:30.2062825000 days 00:00:30.7936650 days 00:00:31.3749500 days 00:00:31.374950
N16A30 days 00:00:27.0353400 days 00:00:00.3197885400 days 00:00:26.6660800 days 00:00:26.9430250 days 00:00:27.2199700 days 00:00:27.2199700 days 00:00:27.219970
N17A30 days 00:00:28.3474766660 days 00:00:00.1119482170 days 00:00:28.2182100 days 00:00:28.3151600 days 00:00:28.4121100 days 00:00:28.4121100 days 00:00:28.412110
N18A30 days 00:00:34.0954833330 days 00:00:00.5037785240 days 00:00:33.5137700 days 00:00:33.9500550 days 00:00:34.3863400 days 00:00:34.3863400 days 00:00:34.386340
O15A50 days 00:00:24.2222884000 days 00:00:00.1589535070 days 00:00:24.0491700 days 00:00:24.0491700 days 00:00:24.3147420 days 00:00:24.3355000 days 00:00:24.362860
O16A30 days 00:00:14.8057913330 days 00:00:00.2143925460 days 00:00:14.5587600 days 00:00:14.7370370 days 00:00:14.9153140 days 00:00:14.9293070 days 00:00:14.943300
O18A50 days 00:00:23.3890302000 days 00:00:00.4259516960 days 00:00:22.9251600 days 00:00:23.1167500 days 00:00:23.2249600 days 00:00:23.7927200 days 00:00:23.885561
P14A80 days 00:00:26.7573800 days 00:00:00.3690500890 days 00:00:26.2723200 days 00:00:26.4108450 days 00:00:26.7917100 days 00:00:27.1400000 days 00:00:27.143660
P15A90 days 00:00:16.2047476660 days 00:00:00.6925619760 days 00:00:15.2711100 days 00:00:15.9204500 days 00:00:16.1953000 days 00:00:16.6142800 days 00:00:17.513850
P16A110 days 00:00:07.9271020 days 00:00:00.2155842580 days 00:00:07.6821900 days 00:00:07.7954100 days 00:00:07.8592700 days 00:00:08.0346860 days 00:00:08.397620
P17A60 days 00:00:07.1742326660 days 00:00:00.2899629340 days 00:00:06.9055300 days 00:00:06.9434675000 days 00:00:07.0918215000 days 00:00:07.3640755000 days 00:00:07.607380
P18A110 days 00:00:14.7367344540 days 00:00:00.2934483020 days 00:00:14.2584200 days 00:00:14.5803900 days 00:00:14.6909400 days 00:00:14.8566560 days 00:00:15.265000
Q14A60 days 00:00:30.5495766660 days 00:00:00.3359744660 days 00:00:30.2128900 days 00:00:30.3061000 days 00:00:30.4985450 days 00:00:30.6909900 days 00:00:31.090390
Q15A70 days 00:00:18.8100361420 days 00:00:00.2974122450 days 00:00:18.3826900 days 00:00:18.5927900 days 00:00:18.9318500 days 00:00:18.9771415000 days 00:00:19.215850
Q16A100 days 00:00:10.1654778000 days 00:00:00.3289862400 days 00:00:09.6180000 days 00:00:10.0069300 days 00:00:10.1531050 days 00:00:10.2483712500 days 00:00:10.690000
Q18A110 days 00:00:17.1352856360 days 00:00:00.2564296980 days 00:00:16.8944500 days 00:00:16.9757250 days 00:00:17.0105600 days 00:00:17.1867670 days 00:00:17.665000
Q19A30 days 00:00:29.6043533330 days 00:00:00.3834356340 days 00:00:29.1616000 days 00:00:29.4936650 days 00:00:29.8257300 days 00:00:29.8257300 days 00:00:29.825730
R15A40 days 00:00:27.4458025000 days 00:00:00.5459237430 days 00:00:26.7136100 days 00:00:27.1865075000 days 00:00:27.6034350 days 00:00:27.8627300 days 00:00:27.862730
R17A110 days 00:00:20.5011555450 days 00:00:00.2368678270 days 00:00:20.2800000 days 00:00:20.3515150 days 00:00:20.3978100 days 00:00:20.5102610 days 00:00:20.965000
R18A80 days 00:00:27.2907275000 days 00:00:00.2987904930 days 00:00:26.9001000 days 00:00:27.1511975000 days 00:00:27.1537250 days 00:00:27.4493975000 days 00:00:27.732590
SRU140 days 00:00:12.0693935000 days 00:00:00.2430535850 days 00:00:11.7199200 days 00:00:11.9602602500 days 00:00:12.0204100 days 00:00:12.1122795000 days 00:00:12.505000
\n", "
" ], "text/plain": [ " count mean std \\\n", "station \n", "DUG 6 0 days 00:00:26.450391666 0 days 00:00:00.271624748 \n", "L15A 4 0 days 00:00:44.281470 0 days 00:00:00.395213333 \n", "M14A 3 0 days 00:00:42.733800 0 days 00:00:00.232198731 \n", "M15A 6 0 days 00:00:37.389573333 0 days 00:00:00.395734547 \n", "N14A 4 0 days 00:00:34.753022500 0 days 00:00:00.309191321 \n", "N15A 4 0 days 00:00:30.787567500 0 days 00:00:00.678323974 \n", "N16A 3 0 days 00:00:27.035340 0 days 00:00:00.319788540 \n", "N17A 3 0 days 00:00:28.347476666 0 days 00:00:00.111948217 \n", "N18A 3 0 days 00:00:34.095483333 0 days 00:00:00.503778524 \n", "O15A 5 0 days 00:00:24.222288400 0 days 00:00:00.158953507 \n", "O16A 3 0 days 00:00:14.805791333 0 days 00:00:00.214392546 \n", "O18A 5 0 days 00:00:23.389030200 0 days 00:00:00.425951696 \n", "P14A 8 0 days 00:00:26.757380 0 days 00:00:00.369050089 \n", "P15A 9 0 days 00:00:16.204747666 0 days 00:00:00.692561976 \n", "P16A 11 0 days 00:00:07.927102 0 days 00:00:00.215584258 \n", "P17A 6 0 days 00:00:07.174232666 0 days 00:00:00.289962934 \n", "P18A 11 0 days 00:00:14.736734454 0 days 00:00:00.293448302 \n", "Q14A 6 0 days 00:00:30.549576666 0 days 00:00:00.335974466 \n", "Q15A 7 0 days 00:00:18.810036142 0 days 00:00:00.297412245 \n", "Q16A 10 0 days 00:00:10.165477800 0 days 00:00:00.328986240 \n", "Q18A 11 0 days 00:00:17.135285636 0 days 00:00:00.256429698 \n", "Q19A 3 0 days 00:00:29.604353333 0 days 00:00:00.383435634 \n", "R15A 4 0 days 00:00:27.445802500 0 days 00:00:00.545923743 \n", "R17A 11 0 days 00:00:20.501155545 0 days 00:00:00.236867827 \n", "R18A 8 0 days 00:00:27.290727500 0 days 00:00:00.298790493 \n", "SRU 14 0 days 00:00:12.069393500 0 days 00:00:00.243053585 \n", "\n", " min 25% \\\n", "station \n", "DUG 0 days 00:00:26.071740 0 days 00:00:26.329110 \n", "L15A 0 days 00:00:43.904210 0 days 00:00:43.958120 \n", "M14A 0 days 00:00:42.465680 0 days 00:00:42.666770 \n", "M15A 0 days 00:00:36.924550 0 days 00:00:37.155292500 \n", "N14A 0 days 00:00:34.382170 0 days 00:00:34.556087500 \n", "N15A 0 days 00:00:30.187990 0 days 00:00:30.206282500 \n", "N16A 0 days 00:00:26.666080 0 days 00:00:26.943025 \n", "N17A 0 days 00:00:28.218210 0 days 00:00:28.315160 \n", "N18A 0 days 00:00:33.513770 0 days 00:00:33.950055 \n", "O15A 0 days 00:00:24.049170 0 days 00:00:24.049170 \n", "O16A 0 days 00:00:14.558760 0 days 00:00:14.737037 \n", "O18A 0 days 00:00:22.925160 0 days 00:00:23.116750 \n", "P14A 0 days 00:00:26.272320 0 days 00:00:26.410845 \n", "P15A 0 days 00:00:15.271110 0 days 00:00:15.920450 \n", "P16A 0 days 00:00:07.682190 0 days 00:00:07.795410 \n", "P17A 0 days 00:00:06.905530 0 days 00:00:06.943467500 \n", "P18A 0 days 00:00:14.258420 0 days 00:00:14.580390 \n", "Q14A 0 days 00:00:30.212890 0 days 00:00:30.306100 \n", "Q15A 0 days 00:00:18.382690 0 days 00:00:18.592790 \n", "Q16A 0 days 00:00:09.618000 0 days 00:00:10.006930 \n", "Q18A 0 days 00:00:16.894450 0 days 00:00:16.975725 \n", "Q19A 0 days 00:00:29.161600 0 days 00:00:29.493665 \n", "R15A 0 days 00:00:26.713610 0 days 00:00:27.186507500 \n", "R17A 0 days 00:00:20.280000 0 days 00:00:20.351515 \n", "R18A 0 days 00:00:26.900100 0 days 00:00:27.151197500 \n", "SRU 0 days 00:00:11.719920 0 days 00:00:11.960260250 \n", "\n", " 50% 75% \\\n", "station \n", "DUG 0 days 00:00:26.405940 0 days 00:00:26.613517500 \n", "L15A 0 days 00:00:44.299440 0 days 00:00:44.622790 \n", "M14A 0 days 00:00:42.867860 0 days 00:00:42.867860 \n", "M15A 0 days 00:00:37.276860 0 days 00:00:37.723365 \n", "N14A 0 days 00:00:34.810995 0 days 00:00:35.007930 \n", "N15A 0 days 00:00:30.793665 0 days 00:00:31.374950 \n", "N16A 0 days 00:00:27.219970 0 days 00:00:27.219970 \n", "N17A 0 days 00:00:28.412110 0 days 00:00:28.412110 \n", "N18A 0 days 00:00:34.386340 0 days 00:00:34.386340 \n", "O15A 0 days 00:00:24.314742 0 days 00:00:24.335500 \n", "O16A 0 days 00:00:14.915314 0 days 00:00:14.929307 \n", "O18A 0 days 00:00:23.224960 0 days 00:00:23.792720 \n", "P14A 0 days 00:00:26.791710 0 days 00:00:27.140000 \n", "P15A 0 days 00:00:16.195300 0 days 00:00:16.614280 \n", "P16A 0 days 00:00:07.859270 0 days 00:00:08.034686 \n", "P17A 0 days 00:00:07.091821500 0 days 00:00:07.364075500 \n", "P18A 0 days 00:00:14.690940 0 days 00:00:14.856656 \n", "Q14A 0 days 00:00:30.498545 0 days 00:00:30.690990 \n", "Q15A 0 days 00:00:18.931850 0 days 00:00:18.977141500 \n", "Q16A 0 days 00:00:10.153105 0 days 00:00:10.248371250 \n", "Q18A 0 days 00:00:17.010560 0 days 00:00:17.186767 \n", "Q19A 0 days 00:00:29.825730 0 days 00:00:29.825730 \n", "R15A 0 days 00:00:27.603435 0 days 00:00:27.862730 \n", "R17A 0 days 00:00:20.397810 0 days 00:00:20.510261 \n", "R18A 0 days 00:00:27.153725 0 days 00:00:27.449397500 \n", "SRU 0 days 00:00:12.020410 0 days 00:00:12.112279500 \n", "\n", " max \n", "station \n", "DUG 0 days 00:00:26.832520 \n", "L15A 0 days 00:00:44.622790 \n", "M14A 0 days 00:00:42.867860 \n", "M15A 0 days 00:00:37.872200 \n", "N14A 0 days 00:00:35.007930 \n", "N15A 0 days 00:00:31.374950 \n", "N16A 0 days 00:00:27.219970 \n", "N17A 0 days 00:00:28.412110 \n", "N18A 0 days 00:00:34.386340 \n", "O15A 0 days 00:00:24.362860 \n", "O16A 0 days 00:00:14.943300 \n", "O18A 0 days 00:00:23.885561 \n", "P14A 0 days 00:00:27.143660 \n", "P15A 0 days 00:00:17.513850 \n", "P16A 0 days 00:00:08.397620 \n", "P17A 0 days 00:00:07.607380 \n", "P18A 0 days 00:00:15.265000 \n", "Q14A 0 days 00:00:31.090390 \n", "Q15A 0 days 00:00:19.215850 \n", "Q16A 0 days 00:00:10.690000 \n", "Q18A 0 days 00:00:17.665000 \n", "Q19A 0 days 00:00:29.825730 \n", "R15A 0 days 00:00:27.862730 \n", "R17A 0 days 00:00:20.965000 \n", "R18A 0 days 00:00:27.732590 \n", "SRU 0 days 00:00:12.505000 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# get only P picks\n", "df = picks[picks.phase_hint.str.upper() == 'P']\n", "\n", "# add columns for travel time\n", "df['travel_time'] = df['time'] - df['event_time']\n", "\n", "# filter out stations that aren't used at least 3 times\n", "station_count = df['station'].value_counts()\n", "stations_with_three = station_count[station_count > 2]\n", "\n", "# only include picks that are used on at least 3 stations\n", "df = df[df.station.isin(stations_with_three.index)]\n", "\n", "# get stats of travel times\n", "df.groupby('station')['travel_time'].describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In addition to `events_to_df` and `picks_to_df`, the following extractors are defined:\n", "\n", "- `arrivals_to_df` extracts arrival information from an Origin object (or from the preferred origin of each event in a catalog)\n", "- `amplitudes_to_df` extracts amplitude information\n", "- `station_magnitudes_to_df` extracts station magnitude information from a catalog, event, or magnitude\n", "- `magnitudes_to_df` extracts magnitude information" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "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.13" } }, "nbformat": 4, "nbformat_minor": 4 }