{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Interactive Example" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import requests\n", "import json\n", "import pandas as pd\n", "import os\n", "import warnings\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "ADLOC_API_URL = \"http://127.0.0.1:8000\"\n", "# ADLOC_API_URL = \"https://ai4eps-adloc.hf.space\"\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Prepare test data\n", "\n", "- Download test data: PhaseNet picks of the 2019 Ridgecrest earthquake sequence\n", "1. picks file: picks.json\n", "2. station information: stations.csv\n", "3. events in SCSN catalog: events.csv\n", "4. config file: config.pkl\n", "\n", "```bash\n", "wget https://github.com/wayneweiqiang/GMMA/releases/download/test_data/test_data.zip\n", "unzip test_data.zip\n", "```" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# !wget https://github.com/wayneweiqiang/GMMA/releases/download/test_data/test_data.zip\n", "# !unzip test_data.zip" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "data_dir = lambda x: os.path.join(\"test_data\", x)\n", "station_csv = data_dir(\"stations.csv\")\n", "pick_json = data_dir(\"picks.json\")\n", "catalog_csv = data_dir(\"catalog_gamma.csv\")\n", "picks_csv = data_dir(\"picks_gamma.csv\")\n", "if not os.path.exists(\"figures\"):\n", " os.makedirs(\"figures\")\n", "figure_dir = lambda x: os.path.join(\"figures\", x)\n", "\n", "## set config\n", "config = {'xlim_degree': [-118.004, -117.004], \n", " 'ylim_degree': [35.205, 36.205],\n", " 'z(km)': [0, 41]}\n", "\n", "## read stations\n", "stations = pd.read_csv(station_csv, delimiter=\"\\t\")\n", "stations = stations.rename(columns={\"station\":\"id\"})\n", "\n", "## read picks\n", "picks = pd.read_json(pick_json).sort_values(\"timestamp\").iloc[:200]\n", "picks[\"timestamp\"] = pd.to_datetime(picks[\"timestamp\"])\n", "\n" ] }, { "cell_type": "code", "execution_count": 5, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idtimestampprobamptype
51368CI.WCS2..HH2019-07-04 17:00:00.0040.3719021.576248e-06p
50738CI.WBM..BH2019-07-04 17:00:00.0040.4294254.883445e-07p
51254CI.WCS2..BH2019-07-04 17:00:00.0040.5709321.388111e-06p
51643CI.WMF..BH2019-07-04 17:00:00.0040.3254801.930339e-07p
51727CI.WMF..HH2019-07-04 17:00:00.0040.4990701.795238e-07p
..................
52664CI.WRV2..EH2019-07-04 17:05:13.6340.5653246.402773e-07p
53676PB.B918..EH2019-07-04 17:05:13.7540.6215346.146262e-07s
53083CI.WVP2..HN2019-07-04 17:05:13.8940.8912104.123632e-06p
46727CI.CCC..HN2019-07-04 17:05:14.0040.7918525.821601e-06s
46543CI.CCC..HH2019-07-04 17:05:14.0040.8274455.868008e-06s
\n", "

200 rows × 5 columns

\n", "
" ], "text/plain": [ " id timestamp prob amp type\n", "51368 CI.WCS2..HH 2019-07-04 17:00:00.004 0.371902 1.576248e-06 p\n", "50738 CI.WBM..BH 2019-07-04 17:00:00.004 0.429425 4.883445e-07 p\n", "51254 CI.WCS2..BH 2019-07-04 17:00:00.004 0.570932 1.388111e-06 p\n", "51643 CI.WMF..BH 2019-07-04 17:00:00.004 0.325480 1.930339e-07 p\n", "51727 CI.WMF..HH 2019-07-04 17:00:00.004 0.499070 1.795238e-07 p\n", "... ... ... ... ... ...\n", "52664 CI.WRV2..EH 2019-07-04 17:05:13.634 0.565324 6.402773e-07 p\n", "53676 PB.B918..EH 2019-07-04 17:05:13.754 0.621534 6.146262e-07 s\n", "53083 CI.WVP2..HN 2019-07-04 17:05:13.894 0.891210 4.123632e-06 p\n", "46727 CI.CCC..HN 2019-07-04 17:05:14.004 0.791852 5.821601e-06 s\n", "46543 CI.CCC..HH 2019-07-04 17:05:14.004 0.827445 5.868008e-06 s\n", "\n", "[200 rows x 5 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "picks" ] }, { "cell_type": "code", "execution_count": 6, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idlongitudelatitudeelevation(m)unitcomponentresponse
0CI.CCC..BH-117.36535.525670.0m/sE,N,Z627368000.00,627368000.00,627368000.00
1CI.CCC..HH-117.36535.525670.0m/sE,N,Z627368000.00,627368000.00,627368000.00
2CI.CCC..HN-117.36535.525670.0m/s**2E,N,Z213979.00,214322.00,213808.00
3CI.CLC..BH-117.59835.816775.0m/sE,N,Z627368000.00,627368000.00,627368000.00
4CI.CLC..HH-117.59835.816775.0m/sE,N,Z627368000.00,627368000.00,627368000.00
5CI.CLC..HN-117.59835.816775.0m/s**2E,N,Z213945.00,213808.00,213740.00
6CI.DTP..BH-117.84635.267908.0m/sE,N,Z627368000.00,627368000.00,627368000.00
7CI.DTP..HH-117.84635.267908.0m/sE,N,Z627368000.00,627368000.00,627368000.00
8CI.DTP..HN-117.84635.267908.0m/s**2E,N,Z214399.00,213971.00,214484.00
9CI.JRC2..BH-117.80935.9821469.0m/sE,N,Z784866000.00,784866000.00,790478000.00
10CI.JRC2..HH-117.80935.9821469.0m/sE,N,Z784866000.00,784866000.00,790478000.00
11CI.JRC2..HN-117.80935.9821469.0m/s**2E,N,Z213808.00,213945.00,214185.00
12CI.LRL..BH-117.68235.4801340.0m/sE,N,Z628306000.00,629984000.00,627467000.00
13CI.LRL..HH-117.68235.4801340.0m/sE,N,Z628306000.00,629984000.00,627467000.00
14CI.LRL..HN-117.68235.4801340.0m/s**2E,N,Z213757.00,213671.00,213201.00
15CI.LRL.2C.HN-117.68235.4801340.0m/s**2E,N,Z213757.00,213671.00,213201.00
16CI.MPM..BH-117.48936.0581839.0m/sE,N,Z627368000.00,627368000.00,627368000.00
17CI.MPM..HH-117.48936.0581839.0m/sE,N,Z627368000.00,627368000.00,627368000.00
18CI.MPM..HN-117.48936.0581839.0m/s**2E,N,Z213911.00,214219.00,213911.00
19CI.Q0072.01.HN-117.66735.610695.0m/s**2E,N,Z256354.00,256354.00,256354.00
20CI.SLA..BH-117.28335.8911174.0m/sE,N,Z622338000.00,618992000.00,616482000.00
21CI.SLA..HH-117.28335.8911174.0m/sE,N,Z622338000.00,618992000.00,616482000.00
22CI.SLA..HN-117.28335.8911174.0m/s**2E,N,Z214253.00,213671.00,213979.00
23CI.SRT..BH-117.75135.692667.0m/sE,N,Z629145000.00,629145000.00,629145000.00
24CI.SRT..HH-117.75135.692667.0m/sE,N,Z629145000.00,629145000.00,629145000.00
25CI.SRT..HN-117.75135.692667.0m/s**2E,N,Z214056.00,213628.00,213842.00
26CI.TOW2..BH-117.76535.809685.0m/sE,N,Z626910000.00,626910000.00,626838000.00
27CI.TOW2..HH-117.76535.809685.0m/sE,N,Z626910000.00,626910000.00,626838000.00
28CI.TOW2..HN-117.76535.809685.0m/s**2E,N,Z213800.00,214142.00,214356.00
29CI.WBM..BH-117.89035.608892.0m/sE,N,Z314573000.00,314573000.00,314573000.00
30CI.WBM..HH-117.89035.608892.0m/sE,N,Z314573000.00,314573000.00,314573000.00
31CI.WBM..HN-117.89035.608892.0m/s**2E,N,Z213550.00,214064.00,213550.00
32CI.WBM.2C.HN-117.89035.608892.0m/s**2E,N,Z213550.00,214064.00,213550.00
33CI.WCS2..BH-117.76536.0251143.0m/sE,N,Z626910000.00,626910000.00,626838000.00
34CI.WCS2..HH-117.76536.0251143.0m/sE,N,Z626910000.00,626910000.00,626838000.00
35CI.WCS2..HN-117.76536.0251143.0m/s**2E,N,Z213757.00,213329.00,213415.00
36CI.WMF..BH-117.85536.1181537.4m/sE,N,Z625790000.00,627467000.00,625790000.00
37CI.WMF..HH-117.85536.1181537.4m/sE,N,Z625790000.00,627467000.00,625790000.00
38CI.WMF..HN-117.85536.1181537.4m/s**2E,N,Z213842.00,213842.00,213842.00
39CI.WMF.2C.HN-117.85536.1181537.4m/s**2E,N,Z213842.00,213842.00,213842.00
40CI.WNM..EH-117.90635.842974.3m/sZ69328700.00
41CI.WNM..HN-117.90635.842974.3m/s**2E,N,Z214021.00,213892.00,214021.00
42CI.WNM.2C.HN-117.90635.842974.3m/s**2E,N,Z214039.00,213911.00,214039.00
43CI.WRC2..BH-117.65035.948943.0m/sE,N,Z629145000.00,629145000.00,629145000.00
44CI.WRC2..HH-117.65035.948943.0m/sE,N,Z629145000.00,629145000.00,629145000.00
45CI.WRC2..HN-117.65035.948943.0m/s**2E,N,Z214227.00,213970.00,214056.00
46CI.WRV2..EH-117.89036.0081070.0m/sZ71450700.00
47CI.WRV2..HN-117.89036.0081070.0m/s**2E,N,Z213850.00,235188.00,235102.00
48CI.WRV2.2C.HN-117.89036.0081070.0m/s**2E,N,Z213868.00,235208.00,235122.00
49CI.WVP2..EH-117.81835.9491465.0m/sZ68041300.00
50CI.WVP2..HN-117.81835.9491465.0m/s**2E,N,Z213764.00,213550.00,213721.00
51CI.WVP2.2C.HN-117.81835.9491465.0m/s**2E,N,Z213782.00,213569.00,213740.00
52NP.1809..HN-117.95736.1101092.0m/s**2E,N,Z429497.00,429497.00,426141.00
53NP.5419..HN-117.66235.649689.0m/s**2E,N,Z426141.00,429497.00,429497.00
54PB.B916..EH-117.66836.1931859.9m/s1,2,Z781398000.00,781398000.00,781398000.00
55PB.B917..EH-117.25935.4051192.0m/s1,2,Z781398000.00,781398000.00,781398000.00
56PB.B918..EH-117.60235.9361042.6m/s1,2,Z781398000.00,781398000.00,781398000.00
57PB.B921..EH-117.46235.587694.5m/s1,2,Z781398000.00,781398000.00,781398000.00
\n", "
" ], "text/plain": [ " id longitude latitude elevation(m) unit component \\\n", "0 CI.CCC..BH -117.365 35.525 670.0 m/s E,N,Z \n", "1 CI.CCC..HH -117.365 35.525 670.0 m/s E,N,Z \n", "2 CI.CCC..HN -117.365 35.525 670.0 m/s**2 E,N,Z \n", "3 CI.CLC..BH -117.598 35.816 775.0 m/s E,N,Z \n", "4 CI.CLC..HH -117.598 35.816 775.0 m/s E,N,Z \n", "5 CI.CLC..HN -117.598 35.816 775.0 m/s**2 E,N,Z \n", "6 CI.DTP..BH -117.846 35.267 908.0 m/s E,N,Z \n", "7 CI.DTP..HH -117.846 35.267 908.0 m/s E,N,Z \n", "8 CI.DTP..HN -117.846 35.267 908.0 m/s**2 E,N,Z \n", "9 CI.JRC2..BH -117.809 35.982 1469.0 m/s E,N,Z \n", "10 CI.JRC2..HH -117.809 35.982 1469.0 m/s E,N,Z \n", "11 CI.JRC2..HN -117.809 35.982 1469.0 m/s**2 E,N,Z \n", "12 CI.LRL..BH -117.682 35.480 1340.0 m/s E,N,Z \n", "13 CI.LRL..HH -117.682 35.480 1340.0 m/s E,N,Z \n", "14 CI.LRL..HN -117.682 35.480 1340.0 m/s**2 E,N,Z \n", "15 CI.LRL.2C.HN -117.682 35.480 1340.0 m/s**2 E,N,Z \n", "16 CI.MPM..BH -117.489 36.058 1839.0 m/s E,N,Z \n", "17 CI.MPM..HH -117.489 36.058 1839.0 m/s E,N,Z \n", "18 CI.MPM..HN -117.489 36.058 1839.0 m/s**2 E,N,Z \n", "19 CI.Q0072.01.HN -117.667 35.610 695.0 m/s**2 E,N,Z \n", "20 CI.SLA..BH -117.283 35.891 1174.0 m/s E,N,Z \n", "21 CI.SLA..HH -117.283 35.891 1174.0 m/s E,N,Z \n", "22 CI.SLA..HN -117.283 35.891 1174.0 m/s**2 E,N,Z \n", "23 CI.SRT..BH -117.751 35.692 667.0 m/s E,N,Z \n", "24 CI.SRT..HH -117.751 35.692 667.0 m/s E,N,Z \n", "25 CI.SRT..HN -117.751 35.692 667.0 m/s**2 E,N,Z \n", "26 CI.TOW2..BH -117.765 35.809 685.0 m/s E,N,Z \n", "27 CI.TOW2..HH -117.765 35.809 685.0 m/s E,N,Z \n", "28 CI.TOW2..HN -117.765 35.809 685.0 m/s**2 E,N,Z \n", "29 CI.WBM..BH -117.890 35.608 892.0 m/s E,N,Z \n", "30 CI.WBM..HH -117.890 35.608 892.0 m/s E,N,Z \n", "31 CI.WBM..HN -117.890 35.608 892.0 m/s**2 E,N,Z \n", "32 CI.WBM.2C.HN -117.890 35.608 892.0 m/s**2 E,N,Z \n", "33 CI.WCS2..BH -117.765 36.025 1143.0 m/s E,N,Z \n", "34 CI.WCS2..HH -117.765 36.025 1143.0 m/s E,N,Z \n", "35 CI.WCS2..HN -117.765 36.025 1143.0 m/s**2 E,N,Z \n", "36 CI.WMF..BH -117.855 36.118 1537.4 m/s E,N,Z \n", "37 CI.WMF..HH -117.855 36.118 1537.4 m/s E,N,Z \n", "38 CI.WMF..HN -117.855 36.118 1537.4 m/s**2 E,N,Z \n", "39 CI.WMF.2C.HN -117.855 36.118 1537.4 m/s**2 E,N,Z \n", "40 CI.WNM..EH -117.906 35.842 974.3 m/s Z \n", "41 CI.WNM..HN -117.906 35.842 974.3 m/s**2 E,N,Z \n", "42 CI.WNM.2C.HN -117.906 35.842 974.3 m/s**2 E,N,Z \n", "43 CI.WRC2..BH -117.650 35.948 943.0 m/s E,N,Z \n", "44 CI.WRC2..HH -117.650 35.948 943.0 m/s E,N,Z \n", "45 CI.WRC2..HN -117.650 35.948 943.0 m/s**2 E,N,Z \n", "46 CI.WRV2..EH -117.890 36.008 1070.0 m/s Z \n", "47 CI.WRV2..HN -117.890 36.008 1070.0 m/s**2 E,N,Z \n", "48 CI.WRV2.2C.HN -117.890 36.008 1070.0 m/s**2 E,N,Z \n", "49 CI.WVP2..EH -117.818 35.949 1465.0 m/s Z \n", "50 CI.WVP2..HN -117.818 35.949 1465.0 m/s**2 E,N,Z \n", "51 CI.WVP2.2C.HN -117.818 35.949 1465.0 m/s**2 E,N,Z \n", "52 NP.1809..HN -117.957 36.110 1092.0 m/s**2 E,N,Z \n", "53 NP.5419..HN -117.662 35.649 689.0 m/s**2 E,N,Z \n", "54 PB.B916..EH -117.668 36.193 1859.9 m/s 1,2,Z \n", "55 PB.B917..EH -117.259 35.405 1192.0 m/s 1,2,Z \n", "56 PB.B918..EH -117.602 35.936 1042.6 m/s 1,2,Z \n", "57 PB.B921..EH -117.462 35.587 694.5 m/s 1,2,Z \n", "\n", " response \n", "0 627368000.00,627368000.00,627368000.00 \n", "1 627368000.00,627368000.00,627368000.00 \n", "2 213979.00,214322.00,213808.00 \n", "3 627368000.00,627368000.00,627368000.00 \n", "4 627368000.00,627368000.00,627368000.00 \n", "5 213945.00,213808.00,213740.00 \n", "6 627368000.00,627368000.00,627368000.00 \n", "7 627368000.00,627368000.00,627368000.00 \n", "8 214399.00,213971.00,214484.00 \n", "9 784866000.00,784866000.00,790478000.00 \n", "10 784866000.00,784866000.00,790478000.00 \n", "11 213808.00,213945.00,214185.00 \n", "12 628306000.00,629984000.00,627467000.00 \n", "13 628306000.00,629984000.00,627467000.00 \n", "14 213757.00,213671.00,213201.00 \n", "15 213757.00,213671.00,213201.00 \n", "16 627368000.00,627368000.00,627368000.00 \n", "17 627368000.00,627368000.00,627368000.00 \n", "18 213911.00,214219.00,213911.00 \n", "19 256354.00,256354.00,256354.00 \n", "20 622338000.00,618992000.00,616482000.00 \n", "21 622338000.00,618992000.00,616482000.00 \n", "22 214253.00,213671.00,213979.00 \n", "23 629145000.00,629145000.00,629145000.00 \n", "24 629145000.00,629145000.00,629145000.00 \n", "25 214056.00,213628.00,213842.00 \n", "26 626910000.00,626910000.00,626838000.00 \n", "27 626910000.00,626910000.00,626838000.00 \n", "28 213800.00,214142.00,214356.00 \n", "29 314573000.00,314573000.00,314573000.00 \n", "30 314573000.00,314573000.00,314573000.00 \n", "31 213550.00,214064.00,213550.00 \n", "32 213550.00,214064.00,213550.00 \n", "33 626910000.00,626910000.00,626838000.00 \n", "34 626910000.00,626910000.00,626838000.00 \n", "35 213757.00,213329.00,213415.00 \n", "36 625790000.00,627467000.00,625790000.00 \n", "37 625790000.00,627467000.00,625790000.00 \n", "38 213842.00,213842.00,213842.00 \n", "39 213842.00,213842.00,213842.00 \n", "40 69328700.00 \n", "41 214021.00,213892.00,214021.00 \n", "42 214039.00,213911.00,214039.00 \n", "43 629145000.00,629145000.00,629145000.00 \n", "44 629145000.00,629145000.00,629145000.00 \n", "45 214227.00,213970.00,214056.00 \n", "46 71450700.00 \n", "47 213850.00,235188.00,235102.00 \n", "48 213868.00,235208.00,235122.00 \n", "49 68041300.00 \n", "50 213764.00,213550.00,213721.00 \n", "51 213782.00,213569.00,213740.00 \n", "52 429497.00,429497.00,426141.00 \n", "53 426141.00,429497.00,429497.00 \n", "54 781398000.00,781398000.00,781398000.00 \n", "55 781398000.00,781398000.00,781398000.00 \n", "56 781398000.00,781398000.00,781398000.00 \n", "57 781398000.00,781398000.00,781398000.00 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stations" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "picks.rename(columns={\"id\": \"station_id\", \"timestamp\": \"phase_time\", \"prob\": \"phase_score\", \"amp\": \"phase_amplitude\", \"type\": \"phase_type\"}, inplace=True)\n", "stations.rename(columns={\"id\": \"station_id\", \"elevation(m)\": \"elevation_m\"}, inplace=True)\n", "stations.drop(columns=[\"unit\", \"component\", \"response\"], inplace=True, errors=\"ignore\")" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "picks[\"phase_type\"] = picks[\"phase_type\"].str.upper()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "picks = picks.merge(stations[[\"station_id\", \"latitude\", \"longitude\", \"elevation_m\"]], on=\"station_id\", how=\"left\")" ] }, { "cell_type": "code", "execution_count": 10, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
station_idphase_timephase_scorephase_amplitudephase_typelatitudelongitudeelevation_m
0CI.WCS2..HH2019-07-04 17:00:00.0040.3719021.576248e-06P36.025-117.7651143.0
1CI.WBM..BH2019-07-04 17:00:00.0040.4294254.883445e-07P35.608-117.890892.0
2CI.WCS2..BH2019-07-04 17:00:00.0040.5709321.388111e-06P36.025-117.7651143.0
3CI.WMF..BH2019-07-04 17:00:00.0040.3254801.930339e-07P36.118-117.8551537.4
4CI.WMF..HH2019-07-04 17:00:00.0040.4990701.795238e-07P36.118-117.8551537.4
...........................
195CI.WRV2..EH2019-07-04 17:05:13.6340.5653246.402773e-07P36.008-117.8901070.0
196PB.B918..EH2019-07-04 17:05:13.7540.6215346.146262e-07S35.936-117.6021042.6
197CI.WVP2..HN2019-07-04 17:05:13.8940.8912104.123632e-06P35.949-117.8181465.0
198CI.CCC..HN2019-07-04 17:05:14.0040.7918525.821601e-06S35.525-117.365670.0
199CI.CCC..HH2019-07-04 17:05:14.0040.8274455.868008e-06S35.525-117.365670.0
\n", "

200 rows × 8 columns

\n", "
" ], "text/plain": [ " station_id phase_time phase_score phase_amplitude \\\n", "0 CI.WCS2..HH 2019-07-04 17:00:00.004 0.371902 1.576248e-06 \n", "1 CI.WBM..BH 2019-07-04 17:00:00.004 0.429425 4.883445e-07 \n", "2 CI.WCS2..BH 2019-07-04 17:00:00.004 0.570932 1.388111e-06 \n", "3 CI.WMF..BH 2019-07-04 17:00:00.004 0.325480 1.930339e-07 \n", "4 CI.WMF..HH 2019-07-04 17:00:00.004 0.499070 1.795238e-07 \n", ".. ... ... ... ... \n", "195 CI.WRV2..EH 2019-07-04 17:05:13.634 0.565324 6.402773e-07 \n", "196 PB.B918..EH 2019-07-04 17:05:13.754 0.621534 6.146262e-07 \n", "197 CI.WVP2..HN 2019-07-04 17:05:13.894 0.891210 4.123632e-06 \n", "198 CI.CCC..HN 2019-07-04 17:05:14.004 0.791852 5.821601e-06 \n", "199 CI.CCC..HH 2019-07-04 17:05:14.004 0.827445 5.868008e-06 \n", "\n", " phase_type latitude longitude elevation_m \n", "0 P 36.025 -117.765 1143.0 \n", "1 P 35.608 -117.890 892.0 \n", "2 P 36.025 -117.765 1143.0 \n", "3 P 36.118 -117.855 1537.4 \n", "4 P 36.118 -117.855 1537.4 \n", ".. ... ... ... ... \n", "195 P 36.008 -117.890 1070.0 \n", "196 S 35.936 -117.602 1042.6 \n", "197 P 35.949 -117.818 1465.0 \n", "198 S 35.525 -117.365 670.0 \n", "199 S 35.525 -117.365 670.0 \n", "\n", "[200 rows x 8 columns]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "picks" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "picks = picks[(picks[\"phase_time\"] > pd.to_datetime(\"2019-07-04T17:02:00.000\")) & (picks[\"phase_time\"] < pd.to_datetime(\"2019-07-04T17:04:00.000\"))]" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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Ghqqe+65R4sXL1ZCQoIOHTqko0ePavr06UpKStKKFSs0ZMgQDR06VKtXr66wvgMHDqhJkyZOZU2aNNGBAwcq7UdBQYHy8vKcHgD8xJAh1nXyhw6VkpOlVaukO+/0WndiYqQffpAeeMA6C/vRR611wRdc4LUuAeedat9LqF27dtq6datycnK0cOFC3XHHHVq9erUa/HLKYXJysiZOnChJuuKKK7R27Vq9+uqr6tWrV4V1Os46N9AYU67sbCkpKXr88cer230AvqJLF2nhQm/3olSDBtKzz3q7F8D5q9ozLCEhIWrdurU6d+6slJQUderUSS+++KIaNWqkoKAgJSQkOO1/6aWXVnqWUNOmTcvNphw6dKjcrMvZJk2apNzc3NLHnj17qjsUAADgI2p9BQFjjAoKChQSEqJrrrlG33//vdPz27dvV4sWLSp8fWJiolauXOlUtmLFCnXv3r3SdkNDQ0tPry55AAAA/1StwDJ58mStWbNGu3fvVkZGhh555BGlp6dr5MiRkqQ//vGPWrBggV577TXt3LlTL7/8sj744AP97ne/K61j9OjRmjRpUun2hAkTtGLFCj399NP67rvv9PTTT+vjjz/W/fff754RArC3J5+UgoPLbthVcpv0OnD//dY16RwO68SkzMw6axqetHu39KtfWVe7HTpUOse1wOAjTDX89re/NS1atDAhISGmcePG5vrrrzcrVqxw2mfOnDmmdevWpl69eqZTp05myZIlTs/36tXL3HHHHU5l77//vmnXrp0JDg427du3NwsXLqxOt4wxxuTm5hpJJjc3t9qvBeAl77xjjOT8CAgwpqDA401Pn16+6eBgY06f9njT8KSffzamWTNjgoKsH2pQkDEXXWQM3w22VdXvby7ND8B72rSRdu4sX/7889b0hwc1aSIdOlS+fMUKqX9/jzYNT3rvPem228qXL1pknX0G2/H4dVgAoNaKilyXFxZ6vOniYtflZ94RAD6oovdURT9w+AwCCwDv+eUSCE4cDumMdW+e8pvflC8LCLBuYwQfdv31UnS0FBhobQcGSo0bS336eLdfqDUCCwDv+cMfrMvFllx3KSRE+te/pPBwjzf9zDPSrbeWbYeFSRs2lH3PwUfFxEirV1vX8bnwQusO36tXWyEGPo01LAAAwGtYwwIAAPwGgQUAANgegQUAANgegQUAANgegQUA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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "color = {\"P\": \"red\", \"S\": \"blue\"}\n", "plt.scatter(picks[\"phase_time\"], picks[\"latitude\"], c=picks[\"phase_type\"].apply(lambda x: color[x]), s=10)\n", "plt.scatter([], [], c=\"red\", label=\"P\")\n", "plt.scatter([], [], c=\"blue\", label=\"S\")\n", "xlim = plt.xlim()\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Eikonal Solver: \n", "Iter 0, error = 999.937\n", "Iter 1, error = 0.000\n", "Time: 1.443\n", "Eikonal Solver: \n", "Iter 0, error = 999.879\n", "Iter 1, error = 0.000\n", "Time: 0.136\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Iter 0: 100%|██████████| 1/1 [00:00<00:00, 1.37it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "ADLoc using 98 picks outof 108 picks\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] }, { "data": { "image/png": "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ZWVlacSIETp48KAeeOABrV27Vjt37lRWVpYGDRqkZs2aafAJ56ZHjRqliRMnVj2/6667tH//fo0fP17btm3T0qVL9fTTT2vcuHGeGyUA9+3ebYUVSTp2zNrEZNMm6c03T/nWRx+VioqsS4nLy63HH/7g3e4CCGxuzbDk5+dr5MiRysvLU0xMjJKTk5WZman+/fvr559/VnZ2tt566y0VFhYqPj5effr00fz58532VMnNza2aSZGkxMRELV++XBMmTFBycrJat26t8ePH68EHH/TcKAG4z9UaspAQa3vYU8jNtUJKJWOkffs82DcAZxy3F93aVV0X7QCoo8JCqXVr6eefnbeIXbTI2uO+Fn/6kzR9+vHN2oKDpUsusZbCAMCJ6vr9zc0PAbjWpIn03nvO61UeeEBKSzvlW6dMcd5pPyFBeucdj/cQwBmEmx8CqNl110m7dknffGNdJXTuuXV621lnSR9+KH31lXWV0IUX1vniIgBwicACoHaxsdLll7v9tqAgK6gAgCdwSggAANgegQUAANgegQUAANgegQUAANgegQUAANgegQUAANgegQUAANgegQUAANgegQUAANgegQUAANgegQUAANgegQUAANgegQUAANgegQUAANgegQWAZ/38s1eqLSuTysu9UjUAP0BgAeAZY8ZIDofUuLH158MPe6TaL76QGjWSwsOlkBDp3HMJLsCZiMACoP5mz5Zef9257OmnpZUr61119+5Saenx5zt3Sj171rtaAH6GwAKg/mbNcl3+t7/Vq9qyMuewUmnr1npVC8APEVgA1F/jxq7LY2LqVW1wsHvlAAIXgQVA/b34YvUyh0N68sl6VRscbK1ZOdkdd9SrWgB+iMACoP66dpVWrJCaNrVWxjZvLm3aJLVuXe+qv/tOuuwyKTTUWnx7773SCy/Uv8sA/EuIrzsAIED06ycdOODxaoODpfXrPV4tAD/DDAsAALA9AgsAALA9AgsAALA9AgsAALA9AgsAALA9AgsAALA9AgsAALA9AgsAALA9AgsAALA9AgsAz/voI2t7/ogIqUMHj+6AW1Eh3XijdNZZUlSUNH68ZIzHqgdgU2zND8CzNm6Urrnm+PPt26X4eOnwYY/cZvnSS6UtW44//+tfrTz09tv1rhqAjTHDAsCzxoypXlZWJs2YUe+qjxxxDiuV3nmHWRYg0BFYAHjWwYOuy3fvrnfVxcWuy42RysvrXT0AGyOwAPCsYcNcl99+e72rjouTwsKql8fHSyGc4AYCGoEFgGc98YTUt69z2dNPS+3aeaT6Tz+VQkOPP4+OljZt8kjVAGyMf5MA8LyVK611Kzt3Sh07erTqbt2sqvfssS5Cio31aPUAbIrAAsA7wsI8HlZO1Lq116oGYEOcEgIAALZHYAEAALZHYAEAALZHYAEAALZHYAEAALZHYAEAALZHYAEAALZHYAEAALZHYAEAALZHYAEAALZHYAEAALZHYAEAALZHYAEAALZHYAEAALZHYAEAALZHYAEAALZHYAEAALZHYAEAALZHYAEAALYX4usOADhDlZVJ774r5eVJl10mXX11gzR78KDV7E8/SVddZTUNwP7cmmGZOXOmkpOTFR0drejoaKWkpGjZsmVVr48ePVoOh8Pp0bNnzzrXn5GRIYfDoV/96lfudAuAvyktlfr2lUaOlCZOlPr0kdLTvd5sUZEVUG67Tfq//5N69JDeeMPrzQLwALcCS0JCgqZOnaoNGzZow4YN6tu3r9LS0vTVV19VHZOamqq8vLyqxwcffFCnun/44Qc98MAD6tWrl3sjAOB/5syR1qyx/l5ebv358MPS3r1ebXb6dOm77yRjpIoK68+77rLyEwB7cyuwDBo0SNddd506duyojh076qmnnlJkZKTWrVtXdUx4eLhatmxZ9YiNjT1lveXl5RoxYoQee+wxnXfeee6PAoB/yc2VQk46I22MtGeP15t1OJzLSkul//3Pq80C8IDTXnRbXl6ujIwMHTp0SCkpKVXlWVlZiouLU8eOHTV27FgVFBScsq7HH39czZs315gxY+rcfmlpqYqLi50eAPxE167S0aPOZY0aSe3aebXZiy46PqEjSUFBUrNmUosWXm0WgAe4HViys7MVGRmp8PBw3XnnnVq0aJGSkpIkSQMHDtQ777yjjz76SH/5y1/0+eefq2/fviqtZb71008/1ezZs/Xqq6+61Y/09HTFxMRUPRITE90dCgBfuekm61xMpfBwae5cqQ4zsvUxbpx04hK5yEhpwYLqkz0A7MdhjDHuvKGsrEy5ubkqLCzUggUL9Nprr2nVqlVVoeVEeXl5atOmjTIyMjRkyJBqr5eUlCg5OVkzZszQwIEDJVkLdwsLC7V48eJa+1FaWuoUhIqLi5WYmKiioiJFR0e7MyQAvvLVV9ZVQl26SC1bNkiTxkhbtlhXCXXtKp19doM0C6AGxcXFiomJOeX3t9uB5WT9+vVTu3btNGvWLJevd+jQQbfddpsefPDBaq9t2bJFF198sYKDg6vKKioqJElBQUH69ttv1a6OU8R1HTAAALCPun5/13si1BhT4ymf/fv3a9euXYqPj3f5eufOnZWdne1U9uc//1klJSV68cUXOc0DAAAkuRlYJk2apIEDByoxMVElJSXKyMhQVlaWMjMzdfDgQU2ZMkVDhw5VfHy8du7cqUmTJqlZs2YaPHhwVR2jRo1S69atlZ6erkaNGqlLly5ObTRp0kSSqpUDAIAzl1uBJT8/XyNHjlReXp5iYmKUnJyszMxM9e/fXz///LOys7P11ltvqbCwUPHx8erTp4/mz5+vqKioqjpyc3MVFMQdAQAAQN3Vew2LXbCGBQAA/1PX72+mOgAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAAAgO0RWAD4p/fek3r3ltLSpNxcX/fGpRdekHr1koYPl4qKfN0bwL+F+LoDAOC222+XXn31+PMlS6QNG6RLL/Vdn06SkiKtW3f8+XvvSbt2SS1b+q5PgD9jhgWA/zkxrFQaOLDh+1GD//zHOaxI0rFjUmqqb/oDBAICCwD/8uOPrssLCxu0G7U5OaxU2r27YfsBBBICCwD/0ry56/LY2IbtRy169XJd3rZtg3YDCCgEFgD+Z8IE5+cOh/Thh77piws9ekjXXONcFhYmLV/um/4AgYDAAsD/TJ9uffvfcIM0apSUny916eLrXjn58EPprbespTV3321dJWSjSSDA7ziMMcbXnfCE4uJixcTEqKioSNHR0b7uDgAAqIO6fn8zwwIAAGyPwAIAAGyPwAIAAGyPwAIAAGyPwAIAAGyPwAIAAGyPwAIAAGyPwAIAAGyPwAIAAGyPwAIAAGyPwAIAAGwvxNcd8JTKWyIVFxf7uCcAAKCuKr+3T3Vrw4AJLCUlJZKkxMREH/cEAAC4q6SkRDExMTW+HjB3a66oqNDevXsVFRUlh8Ph6+54THFxsRITE7Vr166AvQs1YwwMZ8IYpTNjnIwxMPjLGI0xKikpUatWrRQUVPNKlYCZYQkKClJCQoKvu+E10dHRtv6F8wTGGBjOhDFKZ8Y4GWNg8Icx1jazUolFtwAAwPYILAAAwPYILDYXHh6uRx99VOHh4b7uitcwxsBwJoxROjPGyRgDQ6CNMWAW3QIAgMDFDAsAALA9AgsAALA9AgsAALA9AgsAALA9AosbPvnkEw0aNEitWrWSw+HQ4sWLnV53OBwuH9OmTau13uzsbPXu3VsRERFq3bq1Hn/8cad7KixcuFD9+/dX8+bNFR0drZSUFP373/8+ZX/vuOMOtWvXThEREWrevLnS0tL0zTffOB3z008/aeTIkYqJiVFMTIyuvfZapaam+s0YKxljNHDgQJd99vcxXn311dX6csstt9Q6xpEjR2rp0qU++X39z3/+oyuuuEJnn322IiIi1LlzZz3//POnHGdpaanuueceNWvWTGeddZZuvPFG7d69u9Zx+upnebpj/Pvf/66rr75a0dHRcjgcKiwsrHaMP4/xwIEDuueee9SpUyc1btxY55xzju69914VFRUFzBgl//psPd0xVnLns3XkyJEuf6c9xqDOPvjgA/Pwww+bBQsWGElm0aJFTq/n5eU5PV5//XXjcDjMjh07aqyzqKjItGjRwtxyyy0mOzvbLFiwwERFRZnnnnuu6pjx48ebZ555xqxfv95s27bNTJw40YSGhppNmzbV2t9Zs2aZVatWmZycHLNx40YzaNAgk5iYaI4dO1Z1TGpqqunSpYtZs2aNWbNmjWnTpo1p376934yx0vTp083AgQNd9tnfx9i7d28zduxYpz4VFhbWOsYuXbqY7t27++T3ddOmTWbu3Lnmyy+/NDk5Oebtt982jRs3NrNmzap1nHfeeadp3bq1WbFihdm0aZPp06eP6dq1qy1/X093jM8//7xJT0836enpRpL56aefqh3jz2PMzs42Q4YMMUuWLDHbt283K1euNB06dDBDhw4NmDEa41+frac7xkrufLZ26dLF3HDDDXWq93QQWE6Tqx/eydLS0kzfvn1rPWbGjBkmJibGHDlypKosPT3dtGrVylRUVNT4vqSkJPPYY4+51eetW7caSWb79u3GGGP++9//Gklm3bp1VcesXbvWSDLffPON34xxy5YtJiEhweTl5VXrcyCMsXfv3mb8+PE1vn6qMRrj+9/XwYMHm9/+9rc1vl5YWGhCQ0NNRkZGVdmePXtMUFCQyczMrNM47T7GE3388ccuA0sgjbHSu+++a8LCwszRo0eNMYE5Rn/7bK3rGOvz2eoNnBLykvz8fC1dulRjxoxxKh89erSuvvrqqudr165V7969nTb2GTBggPbu3audO3e6rLuiokIlJSWKjY2tKsvKypLD4ajxPYcOHdIbb7yhc889t+qO1mvXrlVMTIx69OhRdVzPnj0VExOjNWvW+MUYDx8+rGHDhunll19Wy5Ytq9UTCGOUpHfeeUfNmjXTBRdcoAceeKDq7uSeGKO3x7l582atWbNGvXv3rnGcGzdu1NGjR3XttddWHdOqVSt16dKlagx2/lnWZYx1EYhjLCoqUnR0tEJCQgJyjP722VrXMXr7s/V0EFi8ZM6cOYqKitKQIUOcyuPj43XOOedUPd+3b59atGjhdEzl83379rms+y9/+YsOHTqkm2++uaqscePG6tSpk0JDQ52OnTFjhiIjIxUZGanMzEytWLFCYWFhVfXHxcVVqz8uLq7Gtu02xgkTJujyyy9XWlqay3oCYYwjRozQvHnzlJWVpcmTJ2vBggVO/anvGL01zoSEBIWHh6tbt24aN26cbrvtthrHuW/fPoWFhalp06bV6q6s144/S3fGWBeBNsb9+/friSee0B133BFwY/S3z1Z3x+jtz9bTETB3a7ab119/XSNGjFCjRo2cytPT06sd63A4nJ6bXxZMnVwuSfPmzdOUKVP0//7f/3P6ZenevXu1RV+S9WXXv39/5eXl6bnnntPNN9+sTz/9tKpfrtowxrgst9sYlyxZoo8++kibN2+utZ/+PEZJGjt2bNXfu3Tpog4dOqhbt27atGmTLrnkkhrbqOsYJe+Mc/Xq1Tp48KDWrVunhx56SO3bt9ewYcNqHKcrJ4/Bbj9LT4zxVG1Xtu9vYywuLtb111+vpKQkPfroo7W2Xdm+P43R3z5b3RljQ3y2ng4CixesXr1a3377rebPn3/KY1u2bFktjRYUFEhSteQ8f/58jRkzRu+995769etXp75Urt7u0KGDevbsqaZNm2rRokUaNmyYWrZsqfz8/Grv+fHHH6u1fTI7jPGjjz7Sjh071KRJE6fyoUOHqlevXsrKyvL7MbpyySWXKDQ0VN99950uueSSeo1R8t44zz33XEnShRdeqPz8fE2ZMqXqA9JVvWVlZfrpp5+cZlkKCgp0+eWXVx1jt5+lO2Osi0AZY0lJiVJTUxUZGalFixY5/cs9UMbob5+t7ozR25+tp4tTQl4we/ZsXXrpperatespj01JSdEnn3yisrKyqrLly5erVatWatu2bVXZvHnzNHr0aM2dO1fXX3/9affNGKPS0tKqtouKirR+/fqq1z/77DMVFRVVfUnUxA5jfOihh/TFF19oy5YtVQ9Jev755/XGG28ExBhd+eqrr3T06FHFx8dXtX26Y5S8M86Tnfh758qll16q0NBQrVixoqosLy9PX375ZdUY7PazPNmpxlgXgTDG4uJiXXvttQoLC9OSJUuqzRIEwhhP9T5/H6O3P1tPm1eW8gaokpISs3nzZrN582YjyUyfPt1s3rzZ/PDDD1XHFBUVmcaNG5uZM2e6rOOhhx4yI0eOrHpeWFhoWrRoYYYNG2ays7PNwoULTXR0tNNlaXPnzjUhISHmb3/7W42Xtn722WemU6dOZvfu3cYYY3bs2GGefvpps2HDBvPDDz+YNWvWmLS0NBMbG2vy8/Or3peammqSk5PN2rVrzdq1a01SUpLp1auXX4zRFdVw6Z2/jnH79u3mscceM59//rnJyckxS5cuNZ07dzYXX3xxtUsoTxzjhRdeaFJTU33y+/ryyy+bJUuWmG3btplt27aZ119/3URHR5uHH364xnEaY13WnJCQYD788EOzadMm07dvX5eXNdvhZ3m6Y8zLyzObN282r776qpFkPvnkE7N582azf//+gBhjcXGx6dGjh7nwwgvN9u3bnX7PA+Xn6G+fraf7u3qyuny2XnjhhVzWbBeVlyKe/Lj11lurjpk1a5aJiIiotk9GpVtvvdX07t3bqeyLL74wvXr1MuHh4aZly5ZmypQpTpek9e7d+5TtVvYtJyfHGGNdEjpw4EATFxdnQkNDTUJCghk+fHi1y832799vRowYYaKiokxUVJTp16+f34zRFVf/U/nzGHNzc81VV11lYmNjTVhYmGnXrp259957nb7gXI1xxIgR5v333/fJOP/617+aCy64wDRu3NhER0ebiy++2MyYMcOUl5fXOE5jjPn555/N3XffbWJjY01ERIS54YYbTG5ubq3j9NXP8nTH+Oijj7rs7xtvvBEQY6zpM/Lk/w7+PEZ/+2w93d/Vk9Xls3XEiBEu9xbyFMcvHQEAALAt1rAAAADbI7AAAADbI7AAAADbI7AAAADbI7AAAADbI7AAAADbI7AAAADbI7AAAADbI7AAAADbI7AAAADbI7AAAADbI7AAAADb+/9VkmSu9TUvcgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from app import run_adloc\n", "\n", "config[\"region\"] = \"Ridgecrest\"\n", "config[\"event_index\"] = 1\n", "\n", "picks_ = picks.copy()\n", "events_, picks_ = run_adloc(picks_, stations, config)\n", "\n", "\n", "plt.figure()\n", "idx = picks_[\"adloc_mask\"] == 1\n", "plt.scatter(picks_[idx][\"phase_time\"], picks_[idx][\"latitude\"], c=picks_[idx][\"phase_type\"].apply(lambda x: color[x]), s=10)\n", "plt.scatter([], [], c=\"red\", label=\"P\")\n", "plt.scatter([], [], c=\"blue\", label=\"S\")\n", "plt.xlim(xlim)\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 14, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
station_idphase_timephase_scorephase_amplitudephase_typelatitudelongitudeelevation_m
9CI.WCS2..HN2019-07-04 17:02:24.4740.3457360.000003S36.025-117.7651143.0
10PB.B921..EH2019-07-04 17:02:58.3040.9453700.000961P35.587-117.462694.5
11CI.CLC..BH2019-07-04 17:02:58.4940.9764440.002152P35.816-117.598775.0
12CI.CLC..HN2019-07-04 17:02:58.5040.9689910.002354P35.816-117.598775.0
13CI.CLC..HH2019-07-04 17:02:58.5040.9790830.002593P35.816-117.598775.0
...........................
112CI.WCS2..HN2019-07-04 17:03:28.3540.4965330.000056P36.025-117.7651143.0
113CI.JRC2..HN2019-07-04 17:03:28.7140.3838730.000084P35.982-117.8091469.0
114CI.WNM..HN2019-07-04 17:03:40.2340.3131300.000019P35.842-117.906974.3
115CI.MPM..HN2019-07-04 17:03:42.3940.3734620.000028P36.058-117.4891839.0
116CI.DTP..HN2019-07-04 17:03:43.3540.4018610.000014P35.267-117.846908.0
\n", "

108 rows × 8 columns

\n", "
" ], "text/plain": [ " station_id phase_time phase_score phase_amplitude \\\n", "9 CI.WCS2..HN 2019-07-04 17:02:24.474 0.345736 0.000003 \n", "10 PB.B921..EH 2019-07-04 17:02:58.304 0.945370 0.000961 \n", "11 CI.CLC..BH 2019-07-04 17:02:58.494 0.976444 0.002152 \n", "12 CI.CLC..HN 2019-07-04 17:02:58.504 0.968991 0.002354 \n", "13 CI.CLC..HH 2019-07-04 17:02:58.504 0.979083 0.002593 \n", ".. ... ... ... ... \n", "112 CI.WCS2..HN 2019-07-04 17:03:28.354 0.496533 0.000056 \n", "113 CI.JRC2..HN 2019-07-04 17:03:28.714 0.383873 0.000084 \n", "114 CI.WNM..HN 2019-07-04 17:03:40.234 0.313130 0.000019 \n", "115 CI.MPM..HN 2019-07-04 17:03:42.394 0.373462 0.000028 \n", "116 CI.DTP..HN 2019-07-04 17:03:43.354 0.401861 0.000014 \n", "\n", " phase_type latitude longitude elevation_m \n", "9 S 36.025 -117.765 1143.0 \n", "10 P 35.587 -117.462 694.5 \n", "11 P 35.816 -117.598 775.0 \n", "12 P 35.816 -117.598 775.0 \n", "13 P 35.816 -117.598 775.0 \n", ".. ... ... ... ... \n", "112 P 36.025 -117.765 1143.0 \n", "113 P 35.982 -117.809 1469.0 \n", "114 P 35.842 -117.906 974.3 \n", "115 P 36.058 -117.489 1839.0 \n", "116 P 35.267 -117.846 908.0 \n", "\n", "[108 rows x 8 columns]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "picks" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "picks_ = picks.copy()\n", "picks_[\"phase_time\"] = picks_[\"phase_time\"].apply(lambda x: x.isoformat())\n", "stations_ = stations.copy()\n", "\n", "picks_ = picks_.to_dict(orient=\"records\")\n", "stations_ = stations.to_dict(orient=\"records\")\n", "\n", "response = requests.post(f\"{ADLOC_API_URL}/predict/\", json={\"picks\": {\"data\":picks_}, \"stations\": {\"data\": stations_}, \"config\": config})\n", "\n", "if response.status_code == 200:\n", " result = response.json()\n", " # Process the result as needed\n", "else:\n", " print(f\"Request failed with status code: {response.status_code}\")\n", " print(f\"Error message: {response.text}\")" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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ZWVlacSIETp48KAeeOABrV27Vjt37lRWVpYGDRqkZs2aafAJ56ZHjRqliRMnVj2/6667tH//fo0fP17btm3T0qVL9fTTT2vcuHGeGyUA9+3ebYUVSTp2zNrEZNMm6c03T/nWRx+VioqsS4nLy63HH/7g3e4CCGxuzbDk5+dr5MiRysvLU0xMjJKTk5WZman+/fvr559/VnZ2tt566y0VFhYqPj5effr00fz58532VMnNza2aSZGkxMRELV++XBMmTFBycrJat26t8ePH68EHH/TcKAG4z9UaspAQa3vYU8jNtUJKJWOkffs82DcAZxy3F93aVV0X7QCoo8JCqXVr6eefnbeIXbTI2uO+Fn/6kzR9+vHN2oKDpUsusZbCAMCJ6vr9zc0PAbjWpIn03nvO61UeeEBKSzvlW6dMcd5pPyFBeucdj/cQwBmEmx8CqNl110m7dknffGNdJXTuuXV621lnSR9+KH31lXWV0IUX1vniIgBwicACoHaxsdLll7v9tqAgK6gAgCdwSggAANgegQUAANgegQUAANgegQUAANgegQUAANgegQUAANgegQUAANgegQUAANgegQUAANgegQUAANgegQUAANgegQUAANgegQUAANgegQUAANgegQWAZ/38s1eqLSuTysu9UjUAP0BgAeAZY8ZIDofUuLH158MPe6TaL76QGjWSwsOlkBDp3HMJLsCZiMACoP5mz5Zef9257OmnpZUr61119+5Saenx5zt3Sj171rtaAH6GwAKg/mbNcl3+t7/Vq9qyMuewUmnr1npVC8APEVgA1F/jxq7LY2LqVW1wsHvlAAIXgQVA/b34YvUyh0N68sl6VRscbK1ZOdkdd9SrWgB+iMACoP66dpVWrJCaNrVWxjZvLm3aJLVuXe+qv/tOuuwyKTTUWnx7773SCy/Uv8sA/EuIrzsAIED06ycdOODxaoODpfXrPV4tAD/DDAsAALA9AgsAALA9AgsAALA9AgsAALA9AgsAALA9AgsAALA9AgsAALA9AgsAALA9AgsAALA9AgsAz/voI2t7/ogIqUMHj+6AW1Eh3XijdNZZUlSUNH68ZIzHqgdgU2zND8CzNm6Urrnm+PPt26X4eOnwYY/cZvnSS6UtW44//+tfrTz09tv1rhqAjTHDAsCzxoypXlZWJs2YUe+qjxxxDiuV3nmHWRYg0BFYAHjW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9etXp75Urt7u0KGDevbsqaZNm2rRokUaNmyYWrZsqfz8/Grv+fHHH6u1fTI7jPGjjz7Sjh071KRJE6fyoUOHqlevXsrKyvL7MbpyySWXKDQ0VN99950uueSSeo1R8t44zz33XEnShRdeqPz8fE2ZMqXqA9JVvWVlZfrpp5+cZlkKCgp0+eWXVx1jt5+lO2Osi0AZY0lJiVJTUxUZGalFixY5/cs9UMbob5+t7ozR25+tp4tTQl4we/ZsXXrpperatespj01JSdEnn3yisrKyqrLly5erVatWatu2bVXZvHnzNHr0aM2dO1fXX3/9affNGKPS0tKqtouKirR+/fqq1z/77DMVFRVVfUnUxA5jfOihh/TFF19oy5YtVQ9Jev755/XGG28ExBhd+eqrr3T06FHFx8dXtX26Y5S8M86Tnfh758qll16q0NBQrVixoqosLy9PX375ZdUY7PazPNmpxlgXgTDG4uJiXXvttQoLC9OSJUuqzRIEwhhP9T5/H6O3P1tPm1eW8gaokpISs3nzZrN582YjyUyfPt1s3rzZ/PDDD1XHFBUVmcaNG5uZM2e6rOOhhx4yI0eOrHpeWFhoWrRoYYYNG2ays7PNwoULTXR0tNNlaXPnzjUhISHmb3/7W42Xtn722WemU6dOZvfu3cYYY3bs2GGefvpps2HDBvPDDz+YNWvWmLS0NBMbG2vy8/Or3peammqSk5PN2rVrzdq1a01SUpLp1auXX4zRFdVw6Z2/jnH79u3mscceM59//rnJyckxS5cuNZ07dzYXX3xxtUsoTxzjhRdeaFJTU33y+/ryyy+bJUuWmG3btplt27aZ119/3URHR5uHH364xnEaY13WnJCQYD788EOzadMm07dvX5eXNdvhZ3m6Y8zLyzObN282r776qpFkPvnkE7N582azf//+gBhjcXGx6dGjh7nwwgvN9u3bnX7PA+Xn6G+fraf7u3qyuny2XnjhhVzWbBeVlyKe/Lj11lurjpk1a5aJiIiotk9GpVtvvdX07t3bqeyLL74wvXr1MuHh4aZly5ZmypQpTpek9e7d+5TtVvYtJyfHGGNdEjpw4EATFxdnQkNDTUJCghk+fHi1y832799vRowYYaKiokxUVJTp16+f34zRFVf/U/nzGHNzc81VV11lYmNjTVhYmGnXrp259957nb7gXI1xxIgR5v333/fJOP/617+aCy64wDRu3NhER0ebiy++2MyYMcOUl5fXOE5jjPn555/N3XffbWJjY01ERIS54YYbTG5ubq3j9NXP8nTH+Oijj7rs7xtvvBEQY6zpM/Lk/w7+PEZ/+2w93d/Vk9Xls3XEiBEu9xbyFMcvHQEAALAt1rAAAADbI7AAAADbI7AAAADbI7AAAADbI7AAAADbI7AAAADbI7AAAADbI7AAAADbI7AAAADbI7AAAADbI7AAAADbI7AAAADb+/9VkmSu9TUvcgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "events_ = pd.DataFrame(result[\"events\"])\n", "picks_ = pd.DataFrame(result[\"picks\"])\n", "\n", "picks_[\"phase_time\"] = pd.to_datetime(picks_[\"phase_time\"])\n", "\n", "plt.figure()\n", "idx = picks_[\"adloc_mask\"] == 1\n", "plt.scatter(picks_[idx][\"phase_time\"], picks_[idx][\"latitude\"], c=picks_[idx][\"phase_type\"].apply(lambda x: color[x]), s=10)\n", "plt.scatter([], [], c=\"red\", label=\"P\")\n", "plt.scatter([], [], c=\"blue\", label=\"S\")\n", "plt.xlim(xlim)\n", "plt.legend()\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "base", "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.12" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "cd49b9d623d06aa0c5f872a997e70207e179b28bd8e4cd8fec363e5d29096c9c" } } }, "nbformat": 4, "nbformat_minor": 2 }