Delete example_interactive.ipynb
Browse files- example_interactive.ipynb +0 -971
example_interactive.ipynb
DELETED
@@ -1,971 +0,0 @@
|
|
1 |
-
{
|
2 |
-
"cells": [
|
3 |
-
{
|
4 |
-
"attachments": {},
|
5 |
-
"cell_type": "markdown",
|
6 |
-
"metadata": {},
|
7 |
-
"source": [
|
8 |
-
"# Interactive Example"
|
9 |
-
]
|
10 |
-
},
|
11 |
-
{
|
12 |
-
"cell_type": "code",
|
13 |
-
"execution_count": 1,
|
14 |
-
"metadata": {},
|
15 |
-
"outputs": [],
|
16 |
-
"source": [
|
17 |
-
"import requests\n",
|
18 |
-
"import json\n",
|
19 |
-
"import pandas as pd\n",
|
20 |
-
"import os\n",
|
21 |
-
"import warnings\n",
|
22 |
-
"import numpy as np"
|
23 |
-
]
|
24 |
-
},
|
25 |
-
{
|
26 |
-
"cell_type": "code",
|
27 |
-
"execution_count": 2,
|
28 |
-
"metadata": {},
|
29 |
-
"outputs": [],
|
30 |
-
"source": [
|
31 |
-
"ADLOC_API_URL = \"http://127.0.0.1:8000\"\n"
|
32 |
-
]
|
33 |
-
},
|
34 |
-
{
|
35 |
-
"cell_type": "markdown",
|
36 |
-
"metadata": {},
|
37 |
-
"source": [
|
38 |
-
"## 2. Prepare test data\n",
|
39 |
-
"\n",
|
40 |
-
"- Download test data: PhaseNet picks of the 2019 Ridgecrest earthquake sequence\n",
|
41 |
-
"1. picks file: picks.json\n",
|
42 |
-
"2. station information: stations.csv\n",
|
43 |
-
"3. events in SCSN catalog: events.csv\n",
|
44 |
-
"4. config file: config.pkl\n",
|
45 |
-
"\n",
|
46 |
-
"```bash\n",
|
47 |
-
"wget https://github.com/wayneweiqiang/GMMA/releases/download/test_data/test_data.zip\n",
|
48 |
-
"unzip test_data.zip\n",
|
49 |
-
"```"
|
50 |
-
]
|
51 |
-
},
|
52 |
-
{
|
53 |
-
"cell_type": "code",
|
54 |
-
"execution_count": 3,
|
55 |
-
"metadata": {},
|
56 |
-
"outputs": [],
|
57 |
-
"source": [
|
58 |
-
"# !wget https://github.com/wayneweiqiang/GMMA/releases/download/test_data/test_data.zip\n",
|
59 |
-
"# !unzip test_data.zip"
|
60 |
-
]
|
61 |
-
},
|
62 |
-
{
|
63 |
-
"cell_type": "code",
|
64 |
-
"execution_count": 4,
|
65 |
-
"metadata": {},
|
66 |
-
"outputs": [],
|
67 |
-
"source": [
|
68 |
-
"data_dir = lambda x: os.path.join(\"test_data\", x)\n",
|
69 |
-
"station_csv = data_dir(\"stations.csv\")\n",
|
70 |
-
"pick_json = data_dir(\"picks.json\")\n",
|
71 |
-
"catalog_csv = data_dir(\"catalog_gamma.csv\")\n",
|
72 |
-
"picks_csv = data_dir(\"picks_gamma.csv\")\n",
|
73 |
-
"if not os.path.exists(\"figures\"):\n",
|
74 |
-
" os.makedirs(\"figures\")\n",
|
75 |
-
"figure_dir = lambda x: os.path.join(\"figures\", x)\n",
|
76 |
-
"\n",
|
77 |
-
"## set config\n",
|
78 |
-
"config = {'xlim_degree': [-118.004, -117.004], \n",
|
79 |
-
" 'ylim_degree': [35.205, 36.205],\n",
|
80 |
-
" 'z(km)': [0, 41]}\n",
|
81 |
-
"\n",
|
82 |
-
"## read stations\n",
|
83 |
-
"stations = pd.read_csv(station_csv, delimiter=\"\\t\")\n",
|
84 |
-
"stations = stations.rename(columns={\"station\":\"id\"})\n",
|
85 |
-
"stations_json = json.loads(stations.to_json(orient=\"records\"))\n",
|
86 |
-
"\n",
|
87 |
-
"## read picks\n",
|
88 |
-
"picks = pd.read_json(pick_json).sort_values(\"timestamp\").iloc[:200]\n",
|
89 |
-
"picks[\"timestamp\"] = picks[\"timestamp\"].apply(lambda x: x.isoformat(timespec='milliseconds'))\n",
|
90 |
-
"picks_json = json.loads(picks.to_json(orient=\"records\"))\n"
|
91 |
-
]
|
92 |
-
},
|
93 |
-
{
|
94 |
-
"cell_type": "code",
|
95 |
-
"execution_count": 5,
|
96 |
-
"metadata": {},
|
97 |
-
"outputs": [
|
98 |
-
{
|
99 |
-
"name": "stdout",
|
100 |
-
"output_type": "stream",
|
101 |
-
"text": [
|
102 |
-
" id timestamp prob amp type\n",
|
103 |
-
"51368 CI.WCS2..HH 2019-07-04T17:00:00.004 0.371902 1.576248e-06 p\n",
|
104 |
-
"50738 CI.WBM..BH 2019-07-04T17:00:00.004 0.429425 4.883445e-07 p\n",
|
105 |
-
"51254 CI.WCS2..BH 2019-07-04T17:00:00.004 0.570932 1.388111e-06 p\n",
|
106 |
-
"51643 CI.WMF..BH 2019-07-04T17:00:00.004 0.325480 1.930339e-07 p\n",
|
107 |
-
"51727 CI.WMF..HH 2019-07-04T17:00:00.004 0.499070 1.795238e-07 p\n",
|
108 |
-
"... ... ... ... ... ...\n",
|
109 |
-
"52664 CI.WRV2..EH 2019-07-04T17:05:13.634 0.565324 6.402773e-07 p\n",
|
110 |
-
"53676 PB.B918..EH 2019-07-04T17:05:13.754 0.621534 6.146262e-07 s\n",
|
111 |
-
"53083 CI.WVP2..HN 2019-07-04T17:05:13.894 0.891210 4.123632e-06 p\n",
|
112 |
-
"46727 CI.CCC..HN 2019-07-04T17:05:14.004 0.791852 5.821601e-06 s\n",
|
113 |
-
"46543 CI.CCC..HH 2019-07-04T17:05:14.004 0.827445 5.868008e-06 s\n",
|
114 |
-
"\n",
|
115 |
-
"[200 rows x 5 columns]\n"
|
116 |
-
]
|
117 |
-
}
|
118 |
-
],
|
119 |
-
"source": [
|
120 |
-
"print(picks)"
|
121 |
-
]
|
122 |
-
},
|
123 |
-
{
|
124 |
-
"cell_type": "code",
|
125 |
-
"execution_count": 6,
|
126 |
-
"metadata": {},
|
127 |
-
"outputs": [],
|
128 |
-
"source": [
|
129 |
-
"picks.rename(columns={\"id\": \"station_id\", \"timestamp\": \"phase_time\", \"prob\": \"phase_score\", \"amp\": \"phase_amplitude\", \"type\": \"phase_type\"}, inplace=True)\n",
|
130 |
-
"stations.rename(columns={\"id\": \"station_id\"}, inplace=True)"
|
131 |
-
]
|
132 |
-
},
|
133 |
-
{
|
134 |
-
"cell_type": "code",
|
135 |
-
"execution_count": 7,
|
136 |
-
"metadata": {},
|
137 |
-
"outputs": [],
|
138 |
-
"source": [
|
139 |
-
"picks[\"phase_time\"] = pd.to_datetime(picks[\"phase_time\"])\n",
|
140 |
-
"picks[\"timestamp\"] = picks[\"phase_time\"]\n",
|
141 |
-
"picks[\"phase_type\"] = picks[\"phase_type\"].str.upper()"
|
142 |
-
]
|
143 |
-
},
|
144 |
-
{
|
145 |
-
"cell_type": "code",
|
146 |
-
"execution_count": 8,
|
147 |
-
"metadata": {},
|
148 |
-
"outputs": [],
|
149 |
-
"source": [
|
150 |
-
"picks = picks.merge(stations, on=\"station_id\")"
|
151 |
-
]
|
152 |
-
},
|
153 |
-
{
|
154 |
-
"cell_type": "code",
|
155 |
-
"execution_count": 9,
|
156 |
-
"metadata": {},
|
157 |
-
"outputs": [],
|
158 |
-
"source": [
|
159 |
-
"# picks = picks[(picks[\"timestamp\"] > \"2019-07-04T17:02:00.000Z\") & (picks[\"timestamp\"] < \"2019-07-04T17:04:00.000Z\")]\n",
|
160 |
-
"picks = picks[(picks[\"timestamp\"] > pd.to_datetime(\"2019-07-04T17:02:00.000\")) & (picks[\"timestamp\"] < pd.to_datetime(\"2019-07-04T17:04:00.000\"))]"
|
161 |
-
]
|
162 |
-
},
|
163 |
-
{
|
164 |
-
"cell_type": "code",
|
165 |
-
"execution_count": 10,
|
166 |
-
"metadata": {},
|
167 |
-
"outputs": [
|
168 |
-
{
|
169 |
-
"data": {
|
170 |
-
"image/png": "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",
|
171 |
-
"text/plain": [
|
172 |
-
"<Figure size 640x480 with 1 Axes>"
|
173 |
-
]
|
174 |
-
},
|
175 |
-
"metadata": {},
|
176 |
-
"output_type": "display_data"
|
177 |
-
}
|
178 |
-
],
|
179 |
-
"source": [
|
180 |
-
"plt.figure()\n",
|
181 |
-
"# plt.scatter(picks[\"longitude\"], picks[\"latitude\"], c=picks[\"timestamp\"], cmap=\"viridis\")\n",
|
182 |
-
"color = {\"P\": \"red\", \"S\": \"blue\"}\n",
|
183 |
-
"plt.scatter(picks[\"timestamp\"], picks[\"latitude\"], c=picks[\"phase_type\"].apply(lambda x: color[x]), s=10)\n",
|
184 |
-
"plt.scatter([], [], c=\"red\", label=\"P\")\n",
|
185 |
-
"plt.scatter([], [], c=\"blue\", label=\"S\")\n",
|
186 |
-
"plt.legend()\n",
|
187 |
-
"plt.show()"
|
188 |
-
]
|
189 |
-
},
|
190 |
-
{
|
191 |
-
"cell_type": "code",
|
192 |
-
"execution_count": 11,
|
193 |
-
"metadata": {},
|
194 |
-
"outputs": [
|
195 |
-
{
|
196 |
-
"data": {
|
197 |
-
"text/html": [
|
198 |
-
"<div>\n",
|
199 |
-
"<style scoped>\n",
|
200 |
-
" .dataframe tbody tr th:only-of-type {\n",
|
201 |
-
" vertical-align: middle;\n",
|
202 |
-
" }\n",
|
203 |
-
"\n",
|
204 |
-
" .dataframe tbody tr th {\n",
|
205 |
-
" vertical-align: top;\n",
|
206 |
-
" }\n",
|
207 |
-
"\n",
|
208 |
-
" .dataframe thead th {\n",
|
209 |
-
" text-align: right;\n",
|
210 |
-
" }\n",
|
211 |
-
"</style>\n",
|
212 |
-
"<table border=\"1\" class=\"dataframe\">\n",
|
213 |
-
" <thead>\n",
|
214 |
-
" <tr style=\"text-align: right;\">\n",
|
215 |
-
" <th></th>\n",
|
216 |
-
" <th>station_id</th>\n",
|
217 |
-
" <th>phase_time</th>\n",
|
218 |
-
" <th>phase_score</th>\n",
|
219 |
-
" <th>phase_amplitude</th>\n",
|
220 |
-
" <th>phase_type</th>\n",
|
221 |
-
" <th>timestamp</th>\n",
|
222 |
-
" <th>longitude</th>\n",
|
223 |
-
" <th>latitude</th>\n",
|
224 |
-
" <th>elevation(m)</th>\n",
|
225 |
-
" <th>unit</th>\n",
|
226 |
-
" <th>component</th>\n",
|
227 |
-
" <th>response</th>\n",
|
228 |
-
" </tr>\n",
|
229 |
-
" </thead>\n",
|
230 |
-
" <tbody>\n",
|
231 |
-
" <tr>\n",
|
232 |
-
" <th>1</th>\n",
|
233 |
-
" <td>CI.WCS2..HH</td>\n",
|
234 |
-
" <td>2019-07-04 17:03:02.664</td>\n",
|
235 |
-
" <td>0.948111</td>\n",
|
236 |
-
" <td>0.001982</td>\n",
|
237 |
-
" <td>P</td>\n",
|
238 |
-
" <td>2019-07-04 17:03:02.664</td>\n",
|
239 |
-
" <td>-117.765</td>\n",
|
240 |
-
" <td>36.025</td>\n",
|
241 |
-
" <td>1143.0</td>\n",
|
242 |
-
" <td>m/s</td>\n",
|
243 |
-
" <td>E,N,Z</td>\n",
|
244 |
-
" <td>626910000.00,626910000.00,626838000.00</td>\n",
|
245 |
-
" </tr>\n",
|
246 |
-
" <tr>\n",
|
247 |
-
" <th>2</th>\n",
|
248 |
-
" <td>CI.WCS2..HH</td>\n",
|
249 |
-
" <td>2019-07-04 17:03:08.144</td>\n",
|
250 |
-
" <td>0.753875</td>\n",
|
251 |
-
" <td>0.001982</td>\n",
|
252 |
-
" <td>S</td>\n",
|
253 |
-
" <td>2019-07-04 17:03:08.144</td>\n",
|
254 |
-
" <td>-117.765</td>\n",
|
255 |
-
" <td>36.025</td>\n",
|
256 |
-
" <td>1143.0</td>\n",
|
257 |
-
" <td>m/s</td>\n",
|
258 |
-
" <td>E,N,Z</td>\n",
|
259 |
-
" <td>626910000.00,626910000.00,626838000.00</td>\n",
|
260 |
-
" </tr>\n",
|
261 |
-
" <tr>\n",
|
262 |
-
" <th>4</th>\n",
|
263 |
-
" <td>CI.WBM..BH</td>\n",
|
264 |
-
" <td>2019-07-04 17:03:02.174</td>\n",
|
265 |
-
" <td>0.954165</td>\n",
|
266 |
-
" <td>0.002353</td>\n",
|
267 |
-
" <td>P</td>\n",
|
268 |
-
" <td>2019-07-04 17:03:02.174</td>\n",
|
269 |
-
" <td>-117.890</td>\n",
|
270 |
-
" <td>35.608</td>\n",
|
271 |
-
" <td>892.0</td>\n",
|
272 |
-
" <td>m/s</td>\n",
|
273 |
-
" <td>E,N,Z</td>\n",
|
274 |
-
" <td>314573000.00,314573000.00,314573000.00</td>\n",
|
275 |
-
" </tr>\n",
|
276 |
-
" <tr>\n",
|
277 |
-
" <th>5</th>\n",
|
278 |
-
" <td>CI.WBM..BH</td>\n",
|
279 |
-
" <td>2019-07-04 17:03:07.254</td>\n",
|
280 |
-
" <td>0.931752</td>\n",
|
281 |
-
" <td>0.002353</td>\n",
|
282 |
-
" <td>S</td>\n",
|
283 |
-
" <td>2019-07-04 17:03:07.254</td>\n",
|
284 |
-
" <td>-117.890</td>\n",
|
285 |
-
" <td>35.608</td>\n",
|
286 |
-
" <td>892.0</td>\n",
|
287 |
-
" <td>m/s</td>\n",
|
288 |
-
" <td>E,N,Z</td>\n",
|
289 |
-
" <td>314573000.00,314573000.00,314573000.00</td>\n",
|
290 |
-
" </tr>\n",
|
291 |
-
" <tr>\n",
|
292 |
-
" <th>6</th>\n",
|
293 |
-
" <td>CI.WBM..BH</td>\n",
|
294 |
-
" <td>2019-07-04 17:03:21.834</td>\n",
|
295 |
-
" <td>0.511648</td>\n",
|
296 |
-
" <td>0.000096</td>\n",
|
297 |
-
" <td>P</td>\n",
|
298 |
-
" <td>2019-07-04 17:03:21.834</td>\n",
|
299 |
-
" <td>-117.890</td>\n",
|
300 |
-
" <td>35.608</td>\n",
|
301 |
-
" <td>892.0</td>\n",
|
302 |
-
" <td>m/s</td>\n",
|
303 |
-
" <td>E,N,Z</td>\n",
|
304 |
-
" <td>314573000.00,314573000.00,314573000.00</td>\n",
|
305 |
-
" </tr>\n",
|
306 |
-
" <tr>\n",
|
307 |
-
" <th>...</th>\n",
|
308 |
-
" <td>...</td>\n",
|
309 |
-
" <td>...</td>\n",
|
310 |
-
" <td>...</td>\n",
|
311 |
-
" <td>...</td>\n",
|
312 |
-
" <td>...</td>\n",
|
313 |
-
" <td>...</td>\n",
|
314 |
-
" <td>...</td>\n",
|
315 |
-
" <td>...</td>\n",
|
316 |
-
" <td>...</td>\n",
|
317 |
-
" <td>...</td>\n",
|
318 |
-
" <td>...</td>\n",
|
319 |
-
" <td>...</td>\n",
|
320 |
-
" </tr>\n",
|
321 |
-
" <tr>\n",
|
322 |
-
" <th>194</th>\n",
|
323 |
-
" <td>CI.DTP..BH</td>\n",
|
324 |
-
" <td>2019-07-04 17:03:04.984</td>\n",
|
325 |
-
" <td>0.948384</td>\n",
|
326 |
-
" <td>0.000483</td>\n",
|
327 |
-
" <td>P</td>\n",
|
328 |
-
" <td>2019-07-04 17:03:04.984</td>\n",
|
329 |
-
" <td>-117.846</td>\n",
|
330 |
-
" <td>35.267</td>\n",
|
331 |
-
" <td>908.0</td>\n",
|
332 |
-
" <td>m/s</td>\n",
|
333 |
-
" <td>E,N,Z</td>\n",
|
334 |
-
" <td>627368000.00,627368000.00,627368000.00</td>\n",
|
335 |
-
" </tr>\n",
|
336 |
-
" <tr>\n",
|
337 |
-
" <th>195</th>\n",
|
338 |
-
" <td>CI.DTP..BH</td>\n",
|
339 |
-
" <td>2019-07-04 17:03:12.134</td>\n",
|
340 |
-
" <td>0.616461</td>\n",
|
341 |
-
" <td>0.000483</td>\n",
|
342 |
-
" <td>S</td>\n",
|
343 |
-
" <td>2019-07-04 17:03:12.134</td>\n",
|
344 |
-
" <td>-117.846</td>\n",
|
345 |
-
" <td>35.267</td>\n",
|
346 |
-
" <td>908.0</td>\n",
|
347 |
-
" <td>m/s</td>\n",
|
348 |
-
" <td>E,N,Z</td>\n",
|
349 |
-
" <td>627368000.00,627368000.00,627368000.00</td>\n",
|
350 |
-
" </tr>\n",
|
351 |
-
" <tr>\n",
|
352 |
-
" <th>196</th>\n",
|
353 |
-
" <td>CI.DTP..HN</td>\n",
|
354 |
-
" <td>2019-07-04 17:03:04.984</td>\n",
|
355 |
-
" <td>0.967691</td>\n",
|
356 |
-
" <td>0.000484</td>\n",
|
357 |
-
" <td>P</td>\n",
|
358 |
-
" <td>2019-07-04 17:03:04.984</td>\n",
|
359 |
-
" <td>-117.846</td>\n",
|
360 |
-
" <td>35.267</td>\n",
|
361 |
-
" <td>908.0</td>\n",
|
362 |
-
" <td>m/s**2</td>\n",
|
363 |
-
" <td>E,N,Z</td>\n",
|
364 |
-
" <td>214399.00,213971.00,214484.00</td>\n",
|
365 |
-
" </tr>\n",
|
366 |
-
" <tr>\n",
|
367 |
-
" <th>197</th>\n",
|
368 |
-
" <td>CI.DTP..HN</td>\n",
|
369 |
-
" <td>2019-07-04 17:03:12.154</td>\n",
|
370 |
-
" <td>0.672017</td>\n",
|
371 |
-
" <td>0.000484</td>\n",
|
372 |
-
" <td>S</td>\n",
|
373 |
-
" <td>2019-07-04 17:03:12.154</td>\n",
|
374 |
-
" <td>-117.846</td>\n",
|
375 |
-
" <td>35.267</td>\n",
|
376 |
-
" <td>908.0</td>\n",
|
377 |
-
" <td>m/s**2</td>\n",
|
378 |
-
" <td>E,N,Z</td>\n",
|
379 |
-
" <td>214399.00,213971.00,214484.00</td>\n",
|
380 |
-
" </tr>\n",
|
381 |
-
" <tr>\n",
|
382 |
-
" <th>198</th>\n",
|
383 |
-
" <td>CI.DTP..HN</td>\n",
|
384 |
-
" <td>2019-07-04 17:03:43.354</td>\n",
|
385 |
-
" <td>0.401861</td>\n",
|
386 |
-
" <td>0.000014</td>\n",
|
387 |
-
" <td>P</td>\n",
|
388 |
-
" <td>2019-07-04 17:03:43.354</td>\n",
|
389 |
-
" <td>-117.846</td>\n",
|
390 |
-
" <td>35.267</td>\n",
|
391 |
-
" <td>908.0</td>\n",
|
392 |
-
" <td>m/s**2</td>\n",
|
393 |
-
" <td>E,N,Z</td>\n",
|
394 |
-
" <td>214399.00,213971.00,214484.00</td>\n",
|
395 |
-
" </tr>\n",
|
396 |
-
" </tbody>\n",
|
397 |
-
"</table>\n",
|
398 |
-
"<p>108 rows × 12 columns</p>\n",
|
399 |
-
"</div>"
|
400 |
-
],
|
401 |
-
"text/plain": [
|
402 |
-
" station_id phase_time phase_score phase_amplitude \\\n",
|
403 |
-
"1 CI.WCS2..HH 2019-07-04 17:03:02.664 0.948111 0.001982 \n",
|
404 |
-
"2 CI.WCS2..HH 2019-07-04 17:03:08.144 0.753875 0.001982 \n",
|
405 |
-
"4 CI.WBM..BH 2019-07-04 17:03:02.174 0.954165 0.002353 \n",
|
406 |
-
"5 CI.WBM..BH 2019-07-04 17:03:07.254 0.931752 0.002353 \n",
|
407 |
-
"6 CI.WBM..BH 2019-07-04 17:03:21.834 0.511648 0.000096 \n",
|
408 |
-
".. ... ... ... ... \n",
|
409 |
-
"194 CI.DTP..BH 2019-07-04 17:03:04.984 0.948384 0.000483 \n",
|
410 |
-
"195 CI.DTP..BH 2019-07-04 17:03:12.134 0.616461 0.000483 \n",
|
411 |
-
"196 CI.DTP..HN 2019-07-04 17:03:04.984 0.967691 0.000484 \n",
|
412 |
-
"197 CI.DTP..HN 2019-07-04 17:03:12.154 0.672017 0.000484 \n",
|
413 |
-
"198 CI.DTP..HN 2019-07-04 17:03:43.354 0.401861 0.000014 \n",
|
414 |
-
"\n",
|
415 |
-
" phase_type timestamp longitude latitude elevation(m) \\\n",
|
416 |
-
"1 P 2019-07-04 17:03:02.664 -117.765 36.025 1143.0 \n",
|
417 |
-
"2 S 2019-07-04 17:03:08.144 -117.765 36.025 1143.0 \n",
|
418 |
-
"4 P 2019-07-04 17:03:02.174 -117.890 35.608 892.0 \n",
|
419 |
-
"5 S 2019-07-04 17:03:07.254 -117.890 35.608 892.0 \n",
|
420 |
-
"6 P 2019-07-04 17:03:21.834 -117.890 35.608 892.0 \n",
|
421 |
-
".. ... ... ... ... ... \n",
|
422 |
-
"194 P 2019-07-04 17:03:04.984 -117.846 35.267 908.0 \n",
|
423 |
-
"195 S 2019-07-04 17:03:12.134 -117.846 35.267 908.0 \n",
|
424 |
-
"196 P 2019-07-04 17:03:04.984 -117.846 35.267 908.0 \n",
|
425 |
-
"197 S 2019-07-04 17:03:12.154 -117.846 35.267 908.0 \n",
|
426 |
-
"198 P 2019-07-04 17:03:43.354 -117.846 35.267 908.0 \n",
|
427 |
-
"\n",
|
428 |
-
" unit component response \n",
|
429 |
-
"1 m/s E,N,Z 626910000.00,626910000.00,626838000.00 \n",
|
430 |
-
"2 m/s E,N,Z 626910000.00,626910000.00,626838000.00 \n",
|
431 |
-
"4 m/s E,N,Z 314573000.00,314573000.00,314573000.00 \n",
|
432 |
-
"5 m/s E,N,Z 314573000.00,314573000.00,314573000.00 \n",
|
433 |
-
"6 m/s E,N,Z 314573000.00,314573000.00,314573000.00 \n",
|
434 |
-
".. ... ... ... \n",
|
435 |
-
"194 m/s E,N,Z 627368000.00,627368000.00,627368000.00 \n",
|
436 |
-
"195 m/s E,N,Z 627368000.00,627368000.00,627368000.00 \n",
|
437 |
-
"196 m/s**2 E,N,Z 214399.00,213971.00,214484.00 \n",
|
438 |
-
"197 m/s**2 E,N,Z 214399.00,213971.00,214484.00 \n",
|
439 |
-
"198 m/s**2 E,N,Z 214399.00,213971.00,214484.00 \n",
|
440 |
-
"\n",
|
441 |
-
"[108 rows x 12 columns]"
|
442 |
-
]
|
443 |
-
},
|
444 |
-
"execution_count": 11,
|
445 |
-
"metadata": {},
|
446 |
-
"output_type": "execute_result"
|
447 |
-
}
|
448 |
-
],
|
449 |
-
"source": [
|
450 |
-
"picks"
|
451 |
-
]
|
452 |
-
},
|
453 |
-
{
|
454 |
-
"cell_type": "code",
|
455 |
-
"execution_count": 12,
|
456 |
-
"metadata": {},
|
457 |
-
"outputs": [],
|
458 |
-
"source": [
|
459 |
-
"# stations.rename(columns={\"elevation(m)\", \"elevation_m\"}, inplace=True)\n",
|
460 |
-
"stations.rename(columns={\"elevation(m)\": \"elevation_m\"}, inplace=True)\n"
|
461 |
-
]
|
462 |
-
},
|
463 |
-
{
|
464 |
-
"cell_type": "code",
|
465 |
-
"execution_count": 13,
|
466 |
-
"metadata": {},
|
467 |
-
"outputs": [
|
468 |
-
{
|
469 |
-
"data": {
|
470 |
-
"text/html": [
|
471 |
-
"<div>\n",
|
472 |
-
"<style scoped>\n",
|
473 |
-
" .dataframe tbody tr th:only-of-type {\n",
|
474 |
-
" vertical-align: middle;\n",
|
475 |
-
" }\n",
|
476 |
-
"\n",
|
477 |
-
" .dataframe tbody tr th {\n",
|
478 |
-
" vertical-align: top;\n",
|
479 |
-
" }\n",
|
480 |
-
"\n",
|
481 |
-
" .dataframe thead th {\n",
|
482 |
-
" text-align: right;\n",
|
483 |
-
" }\n",
|
484 |
-
"</style>\n",
|
485 |
-
"<table border=\"1\" class=\"dataframe\">\n",
|
486 |
-
" <thead>\n",
|
487 |
-
" <tr style=\"text-align: right;\">\n",
|
488 |
-
" <th></th>\n",
|
489 |
-
" <th>station_id</th>\n",
|
490 |
-
" <th>phase_time</th>\n",
|
491 |
-
" <th>phase_score</th>\n",
|
492 |
-
" <th>phase_amplitude</th>\n",
|
493 |
-
" <th>phase_type</th>\n",
|
494 |
-
" <th>timestamp</th>\n",
|
495 |
-
" <th>longitude</th>\n",
|
496 |
-
" <th>latitude</th>\n",
|
497 |
-
" <th>elevation(m)</th>\n",
|
498 |
-
" <th>unit</th>\n",
|
499 |
-
" <th>component</th>\n",
|
500 |
-
" <th>response</th>\n",
|
501 |
-
" </tr>\n",
|
502 |
-
" </thead>\n",
|
503 |
-
" <tbody>\n",
|
504 |
-
" <tr>\n",
|
505 |
-
" <th>1</th>\n",
|
506 |
-
" <td>CI.WCS2..HH</td>\n",
|
507 |
-
" <td>2019-07-04 17:03:02.664</td>\n",
|
508 |
-
" <td>0.948111</td>\n",
|
509 |
-
" <td>0.001982</td>\n",
|
510 |
-
" <td>P</td>\n",
|
511 |
-
" <td>2019-07-04 17:03:02.664</td>\n",
|
512 |
-
" <td>-117.765</td>\n",
|
513 |
-
" <td>36.025</td>\n",
|
514 |
-
" <td>1143.0</td>\n",
|
515 |
-
" <td>m/s</td>\n",
|
516 |
-
" <td>E,N,Z</td>\n",
|
517 |
-
" <td>626910000.00,626910000.00,626838000.00</td>\n",
|
518 |
-
" </tr>\n",
|
519 |
-
" <tr>\n",
|
520 |
-
" <th>2</th>\n",
|
521 |
-
" <td>CI.WCS2..HH</td>\n",
|
522 |
-
" <td>2019-07-04 17:03:08.144</td>\n",
|
523 |
-
" <td>0.753875</td>\n",
|
524 |
-
" <td>0.001982</td>\n",
|
525 |
-
" <td>S</td>\n",
|
526 |
-
" <td>2019-07-04 17:03:08.144</td>\n",
|
527 |
-
" <td>-117.765</td>\n",
|
528 |
-
" <td>36.025</td>\n",
|
529 |
-
" <td>1143.0</td>\n",
|
530 |
-
" <td>m/s</td>\n",
|
531 |
-
" <td>E,N,Z</td>\n",
|
532 |
-
" <td>626910000.00,626910000.00,626838000.00</td>\n",
|
533 |
-
" </tr>\n",
|
534 |
-
" <tr>\n",
|
535 |
-
" <th>4</th>\n",
|
536 |
-
" <td>CI.WBM..BH</td>\n",
|
537 |
-
" <td>2019-07-04 17:03:02.174</td>\n",
|
538 |
-
" <td>0.954165</td>\n",
|
539 |
-
" <td>0.002353</td>\n",
|
540 |
-
" <td>P</td>\n",
|
541 |
-
" <td>2019-07-04 17:03:02.174</td>\n",
|
542 |
-
" <td>-117.890</td>\n",
|
543 |
-
" <td>35.608</td>\n",
|
544 |
-
" <td>892.0</td>\n",
|
545 |
-
" <td>m/s</td>\n",
|
546 |
-
" <td>E,N,Z</td>\n",
|
547 |
-
" <td>314573000.00,314573000.00,314573000.00</td>\n",
|
548 |
-
" </tr>\n",
|
549 |
-
" <tr>\n",
|
550 |
-
" <th>5</th>\n",
|
551 |
-
" <td>CI.WBM..BH</td>\n",
|
552 |
-
" <td>2019-07-04 17:03:07.254</td>\n",
|
553 |
-
" <td>0.931752</td>\n",
|
554 |
-
" <td>0.002353</td>\n",
|
555 |
-
" <td>S</td>\n",
|
556 |
-
" <td>2019-07-04 17:03:07.254</td>\n",
|
557 |
-
" <td>-117.890</td>\n",
|
558 |
-
" <td>35.608</td>\n",
|
559 |
-
" <td>892.0</td>\n",
|
560 |
-
" <td>m/s</td>\n",
|
561 |
-
" <td>E,N,Z</td>\n",
|
562 |
-
" <td>314573000.00,314573000.00,314573000.00</td>\n",
|
563 |
-
" </tr>\n",
|
564 |
-
" <tr>\n",
|
565 |
-
" <th>6</th>\n",
|
566 |
-
" <td>CI.WBM..BH</td>\n",
|
567 |
-
" <td>2019-07-04 17:03:21.834</td>\n",
|
568 |
-
" <td>0.511648</td>\n",
|
569 |
-
" <td>0.000096</td>\n",
|
570 |
-
" <td>P</td>\n",
|
571 |
-
" <td>2019-07-04 17:03:21.834</td>\n",
|
572 |
-
" <td>-117.890</td>\n",
|
573 |
-
" <td>35.608</td>\n",
|
574 |
-
" <td>892.0</td>\n",
|
575 |
-
" <td>m/s</td>\n",
|
576 |
-
" <td>E,N,Z</td>\n",
|
577 |
-
" <td>314573000.00,314573000.00,314573000.00</td>\n",
|
578 |
-
" </tr>\n",
|
579 |
-
" <tr>\n",
|
580 |
-
" <th>...</th>\n",
|
581 |
-
" <td>...</td>\n",
|
582 |
-
" <td>...</td>\n",
|
583 |
-
" <td>...</td>\n",
|
584 |
-
" <td>...</td>\n",
|
585 |
-
" <td>...</td>\n",
|
586 |
-
" <td>...</td>\n",
|
587 |
-
" <td>...</td>\n",
|
588 |
-
" <td>...</td>\n",
|
589 |
-
" <td>...</td>\n",
|
590 |
-
" <td>...</td>\n",
|
591 |
-
" <td>...</td>\n",
|
592 |
-
" <td>...</td>\n",
|
593 |
-
" </tr>\n",
|
594 |
-
" <tr>\n",
|
595 |
-
" <th>194</th>\n",
|
596 |
-
" <td>CI.DTP..BH</td>\n",
|
597 |
-
" <td>2019-07-04 17:03:04.984</td>\n",
|
598 |
-
" <td>0.948384</td>\n",
|
599 |
-
" <td>0.000483</td>\n",
|
600 |
-
" <td>P</td>\n",
|
601 |
-
" <td>2019-07-04 17:03:04.984</td>\n",
|
602 |
-
" <td>-117.846</td>\n",
|
603 |
-
" <td>35.267</td>\n",
|
604 |
-
" <td>908.0</td>\n",
|
605 |
-
" <td>m/s</td>\n",
|
606 |
-
" <td>E,N,Z</td>\n",
|
607 |
-
" <td>627368000.00,627368000.00,627368000.00</td>\n",
|
608 |
-
" </tr>\n",
|
609 |
-
" <tr>\n",
|
610 |
-
" <th>195</th>\n",
|
611 |
-
" <td>CI.DTP..BH</td>\n",
|
612 |
-
" <td>2019-07-04 17:03:12.134</td>\n",
|
613 |
-
" <td>0.616461</td>\n",
|
614 |
-
" <td>0.000483</td>\n",
|
615 |
-
" <td>S</td>\n",
|
616 |
-
" <td>2019-07-04 17:03:12.134</td>\n",
|
617 |
-
" <td>-117.846</td>\n",
|
618 |
-
" <td>35.267</td>\n",
|
619 |
-
" <td>908.0</td>\n",
|
620 |
-
" <td>m/s</td>\n",
|
621 |
-
" <td>E,N,Z</td>\n",
|
622 |
-
" <td>627368000.00,627368000.00,627368000.00</td>\n",
|
623 |
-
" </tr>\n",
|
624 |
-
" <tr>\n",
|
625 |
-
" <th>196</th>\n",
|
626 |
-
" <td>CI.DTP..HN</td>\n",
|
627 |
-
" <td>2019-07-04 17:03:04.984</td>\n",
|
628 |
-
" <td>0.967691</td>\n",
|
629 |
-
" <td>0.000484</td>\n",
|
630 |
-
" <td>P</td>\n",
|
631 |
-
" <td>2019-07-04 17:03:04.984</td>\n",
|
632 |
-
" <td>-117.846</td>\n",
|
633 |
-
" <td>35.267</td>\n",
|
634 |
-
" <td>908.0</td>\n",
|
635 |
-
" <td>m/s**2</td>\n",
|
636 |
-
" <td>E,N,Z</td>\n",
|
637 |
-
" <td>214399.00,213971.00,214484.00</td>\n",
|
638 |
-
" </tr>\n",
|
639 |
-
" <tr>\n",
|
640 |
-
" <th>197</th>\n",
|
641 |
-
" <td>CI.DTP..HN</td>\n",
|
642 |
-
" <td>2019-07-04 17:03:12.154</td>\n",
|
643 |
-
" <td>0.672017</td>\n",
|
644 |
-
" <td>0.000484</td>\n",
|
645 |
-
" <td>S</td>\n",
|
646 |
-
" <td>2019-07-04 17:03:12.154</td>\n",
|
647 |
-
" <td>-117.846</td>\n",
|
648 |
-
" <td>35.267</td>\n",
|
649 |
-
" <td>908.0</td>\n",
|
650 |
-
" <td>m/s**2</td>\n",
|
651 |
-
" <td>E,N,Z</td>\n",
|
652 |
-
" <td>214399.00,213971.00,214484.00</td>\n",
|
653 |
-
" </tr>\n",
|
654 |
-
" <tr>\n",
|
655 |
-
" <th>198</th>\n",
|
656 |
-
" <td>CI.DTP..HN</td>\n",
|
657 |
-
" <td>2019-07-04 17:03:43.354</td>\n",
|
658 |
-
" <td>0.401861</td>\n",
|
659 |
-
" <td>0.000014</td>\n",
|
660 |
-
" <td>P</td>\n",
|
661 |
-
" <td>2019-07-04 17:03:43.354</td>\n",
|
662 |
-
" <td>-117.846</td>\n",
|
663 |
-
" <td>35.267</td>\n",
|
664 |
-
" <td>908.0</td>\n",
|
665 |
-
" <td>m/s**2</td>\n",
|
666 |
-
" <td>E,N,Z</td>\n",
|
667 |
-
" <td>214399.00,213971.00,214484.00</td>\n",
|
668 |
-
" </tr>\n",
|
669 |
-
" </tbody>\n",
|
670 |
-
"</table>\n",
|
671 |
-
"<p>108 rows × 12 columns</p>\n",
|
672 |
-
"</div>"
|
673 |
-
],
|
674 |
-
"text/plain": [
|
675 |
-
" station_id phase_time phase_score phase_amplitude \\\n",
|
676 |
-
"1 CI.WCS2..HH 2019-07-04 17:03:02.664 0.948111 0.001982 \n",
|
677 |
-
"2 CI.WCS2..HH 2019-07-04 17:03:08.144 0.753875 0.001982 \n",
|
678 |
-
"4 CI.WBM..BH 2019-07-04 17:03:02.174 0.954165 0.002353 \n",
|
679 |
-
"5 CI.WBM..BH 2019-07-04 17:03:07.254 0.931752 0.002353 \n",
|
680 |
-
"6 CI.WBM..BH 2019-07-04 17:03:21.834 0.511648 0.000096 \n",
|
681 |
-
".. ... ... ... ... \n",
|
682 |
-
"194 CI.DTP..BH 2019-07-04 17:03:04.984 0.948384 0.000483 \n",
|
683 |
-
"195 CI.DTP..BH 2019-07-04 17:03:12.134 0.616461 0.000483 \n",
|
684 |
-
"196 CI.DTP..HN 2019-07-04 17:03:04.984 0.967691 0.000484 \n",
|
685 |
-
"197 CI.DTP..HN 2019-07-04 17:03:12.154 0.672017 0.000484 \n",
|
686 |
-
"198 CI.DTP..HN 2019-07-04 17:03:43.354 0.401861 0.000014 \n",
|
687 |
-
"\n",
|
688 |
-
" phase_type timestamp longitude latitude elevation(m) \\\n",
|
689 |
-
"1 P 2019-07-04 17:03:02.664 -117.765 36.025 1143.0 \n",
|
690 |
-
"2 S 2019-07-04 17:03:08.144 -117.765 36.025 1143.0 \n",
|
691 |
-
"4 P 2019-07-04 17:03:02.174 -117.890 35.608 892.0 \n",
|
692 |
-
"5 S 2019-07-04 17:03:07.254 -117.890 35.608 892.0 \n",
|
693 |
-
"6 P 2019-07-04 17:03:21.834 -117.890 35.608 892.0 \n",
|
694 |
-
".. ... ... ... ... ... \n",
|
695 |
-
"194 P 2019-07-04 17:03:04.984 -117.846 35.267 908.0 \n",
|
696 |
-
"195 S 2019-07-04 17:03:12.134 -117.846 35.267 908.0 \n",
|
697 |
-
"196 P 2019-07-04 17:03:04.984 -117.846 35.267 908.0 \n",
|
698 |
-
"197 S 2019-07-04 17:03:12.154 -117.846 35.267 908.0 \n",
|
699 |
-
"198 P 2019-07-04 17:03:43.354 -117.846 35.267 908.0 \n",
|
700 |
-
"\n",
|
701 |
-
" unit component response \n",
|
702 |
-
"1 m/s E,N,Z 626910000.00,626910000.00,626838000.00 \n",
|
703 |
-
"2 m/s E,N,Z 626910000.00,626910000.00,626838000.00 \n",
|
704 |
-
"4 m/s E,N,Z 314573000.00,314573000.00,314573000.00 \n",
|
705 |
-
"5 m/s E,N,Z 314573000.00,314573000.00,314573000.00 \n",
|
706 |
-
"6 m/s E,N,Z 314573000.00,314573000.00,314573000.00 \n",
|
707 |
-
".. ... ... ... \n",
|
708 |
-
"194 m/s E,N,Z 627368000.00,627368000.00,627368000.00 \n",
|
709 |
-
"195 m/s E,N,Z 627368000.00,627368000.00,627368000.00 \n",
|
710 |
-
"196 m/s**2 E,N,Z 214399.00,213971.00,214484.00 \n",
|
711 |
-
"197 m/s**2 E,N,Z 214399.00,213971.00,214484.00 \n",
|
712 |
-
"198 m/s**2 E,N,Z 214399.00,213971.00,214484.00 \n",
|
713 |
-
"\n",
|
714 |
-
"[108 rows x 12 columns]"
|
715 |
-
]
|
716 |
-
},
|
717 |
-
"execution_count": 13,
|
718 |
-
"metadata": {},
|
719 |
-
"output_type": "execute_result"
|
720 |
-
}
|
721 |
-
],
|
722 |
-
"source": [
|
723 |
-
"picks"
|
724 |
-
]
|
725 |
-
},
|
726 |
-
{
|
727 |
-
"cell_type": "code",
|
728 |
-
"execution_count": 14,
|
729 |
-
"metadata": {},
|
730 |
-
"outputs": [
|
731 |
-
{
|
732 |
-
"name": "stdout",
|
733 |
-
"output_type": "stream",
|
734 |
-
"text": [
|
735 |
-
"Eikonal Solver: \n",
|
736 |
-
"Iter 0, error = 999.937\n",
|
737 |
-
"Iter 1, error = 0.000\n",
|
738 |
-
"Time: 1.424\n",
|
739 |
-
"Eikonal Solver: \n",
|
740 |
-
"Iter 0, error = 999.879\n",
|
741 |
-
"Iter 1, error = 0.000\n",
|
742 |
-
"Time: 0.093\n"
|
743 |
-
]
|
744 |
-
}
|
745 |
-
],
|
746 |
-
"source": [
|
747 |
-
"from app import run_adloc"
|
748 |
-
]
|
749 |
-
},
|
750 |
-
{
|
751 |
-
"cell_type": "code",
|
752 |
-
"execution_count": 15,
|
753 |
-
"metadata": {},
|
754 |
-
"outputs": [],
|
755 |
-
"source": [
|
756 |
-
"# call loalhost:8000/predict\n",
|
757 |
-
"picks_ = picks.copy()\n",
|
758 |
-
"picks_.drop(columns=[\"timestamp\", \"latitude\", \"longitude\", \"elevation(m)\", \"unit\", \"component\", \"response\"], inplace=True, errors=\"ignore\")\n",
|
759 |
-
"picks_[\"phase_time\"] = picks_[\"phase_time\"].apply(lambda x: x.isoformat())\n",
|
760 |
-
"stations_ = stations.copy()\n",
|
761 |
-
"stations_.drop(columns=[\"component\", \"unit\", \"response\"], inplace=True, errors=\"ignore\")\n",
|
762 |
-
"picks_ = picks_.to_dict(orient=\"records\")\n",
|
763 |
-
"stations_ = stations.to_dict(orient=\"records\")\n",
|
764 |
-
"\n",
|
765 |
-
"response = requests.post(f\"{ADLOC_API_URL}/predict/\", json={\"stations\": {\"data\": stations_}, \"picks\": {\"data\":picks_}, \"config\": config})\n",
|
766 |
-
"\n",
|
767 |
-
"if response.status_code == 200:\n",
|
768 |
-
" result = response.json()\n",
|
769 |
-
" # Process the result as needed\n",
|
770 |
-
"else:\n",
|
771 |
-
" print(f\"Request failed with status code: {response.status_code}\")\n",
|
772 |
-
" print(f\"Error message: {response.text}\")"
|
773 |
-
]
|
774 |
-
},
|
775 |
-
{
|
776 |
-
"cell_type": "code",
|
777 |
-
"execution_count": 16,
|
778 |
-
"metadata": {},
|
779 |
-
"outputs": [
|
780 |
-
{
|
781 |
-
"name": "stdout",
|
782 |
-
"output_type": "stream",
|
783 |
-
"text": [
|
784 |
-
"[{'time': '2019-07-04T17:02:55.148967757', 'adloc_score': 0.9949418137109317, 'adloc_residual_time': 0.195455895248725, 'num_picks': 98, 'event_index': 0, 'longitude': -117.49587484976774, 'latitude': 35.7090950366934, 'depth_km': 0.0}]\n"
|
785 |
-
]
|
786 |
-
}
|
787 |
-
],
|
788 |
-
"source": [
|
789 |
-
"print(result[\"events\"])"
|
790 |
-
]
|
791 |
-
},
|
792 |
-
{
|
793 |
-
"cell_type": "code",
|
794 |
-
"execution_count": 17,
|
795 |
-
"metadata": {},
|
796 |
-
"outputs": [
|
797 |
-
{
|
798 |
-
"name": "stderr",
|
799 |
-
"output_type": "stream",
|
800 |
-
"text": [
|
801 |
-
"Iter 0: 100%|██████████| 1/1 [00:00<00:00, 1.19it/s]"
|
802 |
-
]
|
803 |
-
},
|
804 |
-
{
|
805 |
-
"name": "stdout",
|
806 |
-
"output_type": "stream",
|
807 |
-
"text": [
|
808 |
-
"ADLoc using 98 picks outof 108 picks\n"
|
809 |
-
]
|
810 |
-
},
|
811 |
-
{
|
812 |
-
"name": "stderr",
|
813 |
-
"output_type": "stream",
|
814 |
-
"text": [
|
815 |
-
"\n"
|
816 |
-
]
|
817 |
-
}
|
818 |
-
],
|
819 |
-
"source": [
|
820 |
-
"config[\"region\"] = \"Ridgecrest\"\n",
|
821 |
-
"config[\"event_index\"] = 1\n",
|
822 |
-
"\n",
|
823 |
-
"picks_, events_ = run_adloc(picks, stations, config)"
|
824 |
-
]
|
825 |
-
},
|
826 |
-
{
|
827 |
-
"cell_type": "code",
|
828 |
-
"execution_count": 18,
|
829 |
-
"metadata": {},
|
830 |
-
"outputs": [],
|
831 |
-
"source": [
|
832 |
-
"picks_ = pd.DataFrame(picks_)"
|
833 |
-
]
|
834 |
-
},
|
835 |
-
{
|
836 |
-
"cell_type": "code",
|
837 |
-
"execution_count": 19,
|
838 |
-
"metadata": {},
|
839 |
-
"outputs": [
|
840 |
-
{
|
841 |
-
"data": {
|
842 |
-
"text/plain": [
|
843 |
-
"<matplotlib.collections.PathCollection at 0x326714670>"
|
844 |
-
]
|
845 |
-
},
|
846 |
-
"execution_count": 19,
|
847 |
-
"metadata": {},
|
848 |
-
"output_type": "execute_result"
|
849 |
-
},
|
850 |
-
{
|
851 |
-
"data": {
|
852 |
-
"image/png": "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n33W8ng81tGjR31tGRkZVnx8vFVeXl7l80aNGmXdcsstVc4vKCiwIiMjrczMTF/bt99+a4WFhVlZWVmWZVnWf/7zH0uStX79et8yOTk5liTr888/r7ZumKM+bIuWZVlJSUnW008/XW2NMJfp22FF77//viXJ+vHHH/3a+Uw8MxxhqaP27dunZcuWacKECX7t48eP1xVXXOGbzsnJ0eWXX+43CNKQIUO0Z88e7dq1K+C6t2zZonXr1unyyy/3tWVnZ8vlcvmes3nzZh07dkxXX321b5n4+HhdcMEFWrdune+1PR6P+vbt61smJSVFHo/HtwzqvrqwLR43a9YstWjRQhdeeKEee+wxlZSUnOa7hmmc3g5rgs/EM1Nvbn7Y0Lz44ouKiYnR6NGj/drj4uJUXl7um967d6/atWvnt0zr1q19884//3xfe9u2bfXdd9+ptLRUM2bM0G233eab17RpU3Xp0kWRkZG+5zZq1EjNmzevtO69e/f6lmnVqlWl2lu1auVbBnVfXdgWJWnSpEm66KKL1Lx5c23cuFEPPvigdu7cqQULFpzZDwBGcHo7rAk+E88MgaWOWrhwocaOHavGjRv7tWdkZFRa1uVy+U1b/+1cdnL7mjVrdPDgQa1fv16TJ09Wx44ddfPNN0uSLr30Un3++eenrMuyLL/1nvwagZZB3VZXtsX77rvP9//k5GQ1b95cN9xwg++oC+o2U7fDU7328dfnM/HUCCx10Jo1a7Rt2zYtXrz4lMu2adOmUnLfv3+/pBPfKo47/s2iZ8+e2rdvn2bMmOH74wy03pKSEv34449+32z379+vfv36+ZbZt29fped+9913lV4bdVNd2RYDSUlJkSR98cUXBJY6zoTtsCb4TDwz9GGpg1544QVdfPHF6tWr1ymXTU1N1erVq/3O1b/99tuKj4+vdFi0IsuyVFxcXOX8iy++WJGRkXrnnXd8bfn5+frkk098O4nU1FQVFhZq48aNvmU2bNigwsLCanckqDvqyrYYyJYtWyTZpwxQt5mwHdYEn4lnyKnevqisqKjI2rJli7VlyxZLkvXUU09ZW7Zssb7++mvfMoWFhVbTpk2tefPmBVzH5MmTrfT0dN90QUGB1bp1a+vmm2+2cnNzrddee81yu93Wk08+6VvmmWeesd544w1r+/bt1vbt262FCxdabrfbeuihh3zLbNiwwerSpYv1zTff+NruvPNOq23bttbKlSutf//731ZaWprVq1cvq7S01LfM0KFDreTkZCsnJ8fKycmxevbsaV177bW18vPC2VPftsV169b53sNXX31lLV682IqPj7dGjBhRaz8z1L66th3m5+dbW7ZssZ5//nlLkrV69Wpry5Yt1oEDB3zL8Jl4+ggsBjl+KdzJj1tvvdW3zPz5860mTZpYBQUFAddx6623Wpdffrlf28cff2wNHDjQioqKstq0aWPNmDHD7/K9P/3pT1aPHj2spk2bWm632+rdu7f17LPPWmVlZZVq27lzp6/tyJEj1t13323FxsZaTZo0sa699lorLy/P77UPHDhgjR071oqJibFiYmKssWPHVrrUD+apb9vi5s2brb59+1oej8dq3Lix1aVLF2v69OnWoUOHzuwHhbOqrm2H06dPD1jvokWLfMvwmXj6XJZVYXg/AAAAA9GHBQAAGI/AAgAAjEdgAQAAxiOwAAAA4xFYAACA8QgsAADAeAQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADGI7AAAADj/X92hNcrMFko+AAAAABJRU5ErkJggg==",
|
853 |
-
"text/plain": [
|
854 |
-
"<Figure size 640x480 with 1 Axes>"
|
855 |
-
]
|
856 |
-
},
|
857 |
-
"metadata": {},
|
858 |
-
"output_type": "display_data"
|
859 |
-
}
|
860 |
-
],
|
861 |
-
"source": [
|
862 |
-
"plt.figure()\n",
|
863 |
-
"idx = picks_[\"adloc_mask\"] == 1\n",
|
864 |
-
"plt.scatter(picks_[idx][\"timestamp\"], picks_[idx][\"latitude\"], c=picks_[idx][\"phase_type\"].apply(lambda x: color[x]), s=10)"
|
865 |
-
]
|
866 |
-
},
|
867 |
-
{
|
868 |
-
"cell_type": "code",
|
869 |
-
"execution_count": 20,
|
870 |
-
"metadata": {},
|
871 |
-
"outputs": [
|
872 |
-
{
|
873 |
-
"data": {
|
874 |
-
"text/html": [
|
875 |
-
"<div>\n",
|
876 |
-
"<style scoped>\n",
|
877 |
-
" .dataframe tbody tr th:only-of-type {\n",
|
878 |
-
" vertical-align: middle;\n",
|
879 |
-
" }\n",
|
880 |
-
"\n",
|
881 |
-
" .dataframe tbody tr th {\n",
|
882 |
-
" vertical-align: top;\n",
|
883 |
-
" }\n",
|
884 |
-
"\n",
|
885 |
-
" .dataframe thead th {\n",
|
886 |
-
" text-align: right;\n",
|
887 |
-
" }\n",
|
888 |
-
"</style>\n",
|
889 |
-
"<table border=\"1\" class=\"dataframe\">\n",
|
890 |
-
" <thead>\n",
|
891 |
-
" <tr style=\"text-align: right;\">\n",
|
892 |
-
" <th></th>\n",
|
893 |
-
" <th>time</th>\n",
|
894 |
-
" <th>adloc_score</th>\n",
|
895 |
-
" <th>adloc_residual_time</th>\n",
|
896 |
-
" <th>num_picks</th>\n",
|
897 |
-
" <th>event_index</th>\n",
|
898 |
-
" <th>longitude</th>\n",
|
899 |
-
" <th>latitude</th>\n",
|
900 |
-
" <th>depth_km</th>\n",
|
901 |
-
" </tr>\n",
|
902 |
-
" </thead>\n",
|
903 |
-
" <tbody>\n",
|
904 |
-
" <tr>\n",
|
905 |
-
" <th>0</th>\n",
|
906 |
-
" <td>2019-07-04 17:02:55.148967757</td>\n",
|
907 |
-
" <td>0.994942</td>\n",
|
908 |
-
" <td>0.195456</td>\n",
|
909 |
-
" <td>98</td>\n",
|
910 |
-
" <td>1</td>\n",
|
911 |
-
" <td>-117.495875</td>\n",
|
912 |
-
" <td>35.709095</td>\n",
|
913 |
-
" <td>0.0</td>\n",
|
914 |
-
" </tr>\n",
|
915 |
-
" </tbody>\n",
|
916 |
-
"</table>\n",
|
917 |
-
"</div>"
|
918 |
-
],
|
919 |
-
"text/plain": [
|
920 |
-
" time adloc_score adloc_residual_time num_picks \\\n",
|
921 |
-
"0 2019-07-04 17:02:55.148967757 0.994942 0.195456 98 \n",
|
922 |
-
"\n",
|
923 |
-
" event_index longitude latitude depth_km \n",
|
924 |
-
"0 1 -117.495875 35.709095 0.0 "
|
925 |
-
]
|
926 |
-
},
|
927 |
-
"execution_count": 20,
|
928 |
-
"metadata": {},
|
929 |
-
"output_type": "execute_result"
|
930 |
-
}
|
931 |
-
],
|
932 |
-
"source": [
|
933 |
-
"events_"
|
934 |
-
]
|
935 |
-
},
|
936 |
-
{
|
937 |
-
"cell_type": "code",
|
938 |
-
"execution_count": null,
|
939 |
-
"metadata": {},
|
940 |
-
"outputs": [],
|
941 |
-
"source": []
|
942 |
-
}
|
943 |
-
],
|
944 |
-
"metadata": {
|
945 |
-
"kernelspec": {
|
946 |
-
"display_name": "base",
|
947 |
-
"language": "python",
|
948 |
-
"name": "python3"
|
949 |
-
},
|
950 |
-
"language_info": {
|
951 |
-
"codemirror_mode": {
|
952 |
-
"name": "ipython",
|
953 |
-
"version": 3
|
954 |
-
},
|
955 |
-
"file_extension": ".py",
|
956 |
-
"mimetype": "text/x-python",
|
957 |
-
"name": "python",
|
958 |
-
"nbconvert_exporter": "python",
|
959 |
-
"pygments_lexer": "ipython3",
|
960 |
-
"version": "3.10.12"
|
961 |
-
},
|
962 |
-
"orig_nbformat": 4,
|
963 |
-
"vscode": {
|
964 |
-
"interpreter": {
|
965 |
-
"hash": "cd49b9d623d06aa0c5f872a997e70207e179b28bd8e4cd8fec363e5d29096c9c"
|
966 |
-
}
|
967 |
-
}
|
968 |
-
},
|
969 |
-
"nbformat": 4,
|
970 |
-
"nbformat_minor": 2
|
971 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|