In [1]:
import seispy

In [2]:
# Read the catalog file
db = seispy.pandas.catalog.Catalog('ncsn.hypo00', fmt='special', schema='hypoinverse2000', ncedc=True)
# Extract the 'arrival' table
df = db['arrival']
df


Out[2]:
sta net comp chan p_remark p_fm p_wgt_code year month day ... esaz sta_dur_mag sta_amp_mag p_importance s_importance data_src_code dur_mag_code amp_mag_code loc_code evid
0 HELL BK - HHZ IP D 1 2016 1 1 ... 245 1.67 -0.99 0.629 -0.999 J D - 00 72572330
1 CWC CI - HHZ EP D 2 2016 1 1 ... 164 1.47 -0.99 0.136 -0.999 J D - -- 72572330
2 TIN CI - HHZ IP D 0 2016 1 1 ... 12 1.99 -0.99 0.908 -0.999 J D - -- 72572330
3 WLH2 CI - HHZ EP D 2 2016 1 1 ... 183 1.84 -0.99 0.134 -0.999 J D - -- 72572330
4 MCB NC - HHZ EP U 2 2016 1 1 ... 323 1.46 -0.99 0.010 -0.999 J D - -- 72572330
5 MCD NC - EHZ IP D 0 2016 1 1 ... 345 1.70 -0.99 0.255 -0.999 J D - -- 72572330
6 MCO NC - EHZ EP U 2 2016 1 1 ... 323 1.85 -0.99 0.010 -0.999 J D - -- 72572330
7 MCS NC - EHZ EP U 2 2016 1 1 ... 323 1.84 -0.99 0.010 -0.999 J D - -- 72572330
8 MDH1 NC - DP1 EP U 2 2016 1 1 ... 324 1.91 -0.99 0.000 -0.999 J D - -- 72572330
9 MDR NC - EHZ EP U 2 2016 1 1 ... 325 1.80 -0.99 0.009 -0.999 J D - 02 72572330
10 MEM NC - EHZ IP U 1 2016 1 1 ... 322 1.85 -0.99 0.071 -0.999 J D - -- 72572330
11 MFB NC - EHZ EP D 2 2016 1 1 ... 343 1.17 -0.99 0.006 -0.999 J D - -- 72572330
12 MINS NC - HHZ IP D 1 2016 1 1 ... 317 1.98 -0.99 0.085 -0.999 J D - -- 72572330
13 MLC NC - EHZ EP U 2 2016 1 1 ... 321 2.16 -0.99 0.010 -0.999 J D - -- 72572330
14 MLM NC - EHZ EP D 2 2016 1 1 ... 324 1.63 -0.99 0.012 -0.999 J D - -- 72572330
15 MMP NC - EHZ EP D 2 2016 1 1 ... 316 2.02 -0.99 0.013 -0.999 J D - -- 72572330
16 MMT NC - EHZ EP U 2 2016 1 1 ... 299 2.24 -0.99 0.026 -0.999 J D - -- 72572330
17 MRC NC - EHZ EP D 2 2016 1 1 ... 344 1.89 -0.99 0.013 -0.999 J D - -- 72572330
18 MTU NC - EHZ IP U 0 2016 1 1 ... 327 1.48 -0.99 0.189 0.800 J D - 02 72572330
19 BEN NN - EHZ IP D 0 2016 1 1 ... 341 1.61 -0.99 0.325 -0.999 J D - -- 72572330
20 POC NN - EHZ IP D 0 2016 1 1 ... 357 1.03 -0.99 0.337 0.000 J D - -- 72572330
21 BCH CI - EHZ EP U 2 2016 1 1 ... 38 -0.99 -0.99 0.029 -0.999 J - - -- 72572330
22 FIG CI - HHZ EP D 2 2016 1 1 ... 67 1.81 -0.99 0.000 -0.999 J D - -- 72572365
23 GATR CI - HHZ IP D 0 2016 1 1 ... 67 2.25 -0.99 0.714 -0.999 J D - -- 72572365
24 LOC CI - HHZ EP U 2 2016 1 1 ... 51 2.75 -0.99 0.000 -0.999 J D - -- 72572365
25 NJQ CI - HHN - - 4 2016 1 1 ... 80 -0.99 -0.99 -0.999 0.694 J - - -- 72572365
26 NJQ CI - HHZ EP U 2 2016 1 1 ... 80 1.94 -0.99 0.039 -0.999 J D - -- 72572365
27 SMI CI - HHZ EP D 2 2016 1 1 ... 136 1.51 -0.99 0.534 -0.999 J D - -- 72572365
28 SMW CI - HHN - - 4 2016 1 1 ... 30 -0.99 -0.99 -0.999 0.201 J - - -- 72572365
29 SMW CI - HHZ IP U 1 2016 1 1 ... 30 1.69 -0.99 0.000 -0.999 J D - -- 72572365
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
1676 MCUB NC - EHZ P D 2 2016 1 10 ... 270 0.00 -0.99 0.000 -0.999 R D - -- 72577806
1677 MCV NC - EHZ P D 0 2016 1 10 ... 218 2.52 -0.99 0.059 -0.999 R D - -- 72577806
1678 MDC NC - EHZ P D 0 2016 1 10 ... 239 2.34 -0.99 0.108 -0.999 R D - 02 72577806
1679 MDH1 NC - DP1 P U 0 2016 1 10 ... 229 0.00 -0.99 0.000 -0.999 R D - -- 72577806
1680 MDR NC - EHZ P D 0 2016 1 10 ... 221 2.50 -0.99 0.064 -0.999 R D - 02 72577806
1681 MDY NC - HHZ P D 0 2016 1 10 ... 233 3.01 -0.99 0.090 -0.999 R D - -- 72577806
1682 MEM NC - EHZ P D 0 2016 1 10 ... 230 2.41 -0.99 0.073 -0.999 R D - -- 72577806
1683 MFB NC - EHZ P U 1 2016 1 10 ... 181 2.86 -0.99 0.057 -0.999 R D - -- 72577806
1684 MHD NC - EHZ P D 2 2016 1 10 ... 233 1.69 -0.99 0.001 -0.999 R D - -- 72577806
1685 MINS NC - HHZ P D 0 2016 1 10 ... 235 2.20 -0.99 0.109 -0.999 R D - -- 72577806
1686 MLC NC - EHZ P D 2 2016 1 10 ... 225 2.49 -0.99 0.002 -0.999 R D - -- 72577806
1687 MLH NC - EHZ P D 0 2016 1 10 ... 223 2.85 -0.99 0.085 -0.999 R D - -- 72577806
1688 MLM NC - EHZ P D 0 2016 1 10 ... 236 2.73 -0.99 0.088 -0.999 R D - -- 72577806
1689 MMLB NC - HHZ P D 0 2016 1 10 ... 232 2.67 -0.99 0.082 -0.999 R D - -- 72577806
1690 MMP NC - EHZ P D 0 2016 1 10 ... 230 2.53 -0.99 0.096 -0.999 R D - -- 72577806
1691 MMS NC - EHZ P U 0 2016 1 10 ... 232 4.57 -0.99 0.000 -0.999 R D - -- 72577806
1692 MQ1P NC - EHZ P D 0 2016 1 10 ... 230 2.75 -0.99 0.094 -0.999 R D - -- 72577806
1693 MRC NC - EHZ P U 1 2016 1 10 ... 191 2.78 -0.99 0.074 -0.999 R D - -- 72577806
1694 NEA NC - EHZ P - 3 2016 1 10 ... 277 0.00 -0.99 0.000 -0.999 R D - -- 72577806
1695 ANT NN - EHZ P U 0 2016 1 10 ... 229 0.76 -0.99 0.000 -0.999 R D - -- 72577806
1696 BEN NN - EHZ P D 0 2016 1 10 ... 202 2.68 -0.99 0.390 -0.999 R D - -- 72577806
1697 EMB NN - HHZ P U 0 2016 1 10 ... 307 1.04 -0.99 0.000 -0.999 R D - -- 72577806
1698 GNO NN - EHZ P U 0 2016 1 10 ... 310 0.60 -0.99 0.116 -0.999 R D - -- 72577806
1699 LHV NN - EHZ P D 0 2016 1 10 ... 345 2.68 -0.99 0.965 -0.999 R D - -- 72577806
1700 MLN NN - EHZ P U 0 2016 1 10 ... 171 2.39 -0.99 0.281 -0.999 R D - -- 72577806
1701 ORC NN - EHZ P D 0 2016 1 10 ... 206 2.71 -0.99 0.120 -0.999 R D - -- 72577806
1702 PAH NN - HHZ P D 1 2016 1 10 ... 337 0.00 -0.99 0.000 -0.999 R D - -- 72578101
1703 PNT NN - HHZ P U 1 2016 1 10 ... 320 1.03 -0.99 0.050 -0.999 R D - -- 72578101
1704 POC NN - EHZ P D 0 2016 1 10 ... 169 2.52 -0.99 0.453 -0.999 R D - -- 72578101
1705 RUB NN - HHZ P D 1 2016 1 10 ... 308 0.84 -0.99 0.000 -0.999 R D - -- 72578101

1706 rows × 41 columns


In [3]:
# Intialize the 'second' field using P-wave arrival time (needed to convert arrival time numpy.Datetime object)
df['second'] = df['p_second'].apply(lambda second: second if second >= 0 else 0)
# Convert the P-wave arrival time field to numpy.Datetime object
df['p_time'] = seispy.pandas.time.ymd_to_dt(df, utc=True)
# Update the 'second' field using S-wave arrival time (needed to convert arrival time numpy.Datetime object)
df['second'] = df['s_second'].apply(lambda second: second if second >= 0 else 0)
# Convert the S-wave arrival time field to numpy.Datetime object
df['s_time'] = seispy.pandas.time.ymd_to_dt(df, utc=True)
# Initialize a single 'phase' field
df['phase'] = df.apply(lambda row: 'P' if 'P' in row['p_remark'].upper() else 'S', axis=1)
# Initialize a single 'time' field
df['time'] = df.apply(lambda row: row['p_time'] if 'P' in row['p_remark'].upper() else row['s_time'], axis=1)
# Extract a subset of fields
df = df[['net', 'sta', 'chan', 'phase', 'time']]
df


Out[3]:
net sta chan phase time
0 BK HELL HHZ P 2016-01-01 15:41:14.350000+00:00
1 CI CWC HHZ P 2016-01-01 15:41:11.910000+00:00
2 CI TIN HHZ P 2016-01-01 15:41:03.930000+00:00
3 CI WLH2 HHZ P 2016-01-01 15:41:16.840000+00:00
4 NC MCB HHZ P 2016-01-01 15:41:17.770000+00:00
5 NC MCD EHZ P 2016-01-01 15:41:13.380000+00:00
6 NC MCO EHZ P 2016-01-01 15:41:16.930000+00:00
7 NC MCS EHZ P 2016-01-01 15:41:17.900000+00:00
8 NC MDH1 DP1 P 2016-01-01 15:41:17.790000+00:00
9 NC MDR EHZ P 2016-01-01 15:41:17.130000+00:00
10 NC MEM EHZ P 2016-01-01 15:41:18.360000+00:00
11 NC MFB EHZ P 2016-01-01 15:41:11.240000+00:00
12 NC MINS HHZ P 2016-01-01 15:41:19.100000+00:00
13 NC MLC EHZ P 2016-01-01 15:41:17.160000+00:00
14 NC MLM EHZ P 2016-01-01 15:41:19.710000+00:00
15 NC MMP EHZ P 2016-01-01 15:41:18.240000+00:00
16 NC MMT EHZ P 2016-01-01 15:41:17.310000+00:00
17 NC MRC EHZ P 2016-01-01 15:41:15.660000+00:00
18 NC MTU EHZ P 2016-01-01 15:41:10.440000+00:00
19 NN BEN EHZ P 2016-01-01 15:41:16.420000+00:00
20 NN POC EHZ P 2016-01-01 15:41:09.160000+00:00
21 CI BCH EHZ P 2016-01-01 18:19:42.520000+00:00
22 CI FIG HHZ P 2016-01-01 18:19:39.620000+00:00
23 CI GATR HHZ P 2016-01-01 18:19:30.640000+00:00
24 CI LOC HHZ P 2016-01-01 18:19:32.860000+00:00
25 CI NJQ HHN S 2016-01-01 18:19:43.220000+00:00
26 CI NJQ HHZ P 2016-01-01 18:19:35.440000+00:00
27 CI SMI HHZ P 2016-01-01 18:19:35.600000+00:00
28 CI SMW HHN S 2016-01-01 18:19:46.900000+00:00
29 CI SMW HHZ P 2016-01-01 18:19:37.830000+00:00
... ... ... ... ... ...
1676 NC MCUB EHZ P 2016-01-10 05:25:05.340000+00:00
1677 NC MCV EHZ P 2016-01-10 05:24:44.310000+00:00
1678 NC MDC EHZ P 2016-01-10 05:24:44.960000+00:00
1679 NC MDH1 DP1 P 2016-01-10 05:24:43.450000+00:00
1680 NC MDR EHZ P 2016-01-10 05:24:43.870000+00:00
1681 NC MDY HHZ P 2016-01-10 05:24:45.470000+00:00
1682 NC MEM EHZ P 2016-01-10 05:24:44.540000+00:00
1683 NC MFB EHZ P 2016-01-10 05:24:45.570000+00:00
1684 NC MHD EHZ P 2016-01-10 05:25:01.140000+00:00
1685 NC MINS HHZ P 2016-01-10 05:24:45.810000+00:00
1686 NC MLC EHZ P 2016-01-10 05:24:44.930000+00:00
1687 NC MLH EHZ P 2016-01-10 05:24:43.220000+00:00
1688 NC MLM EHZ P 2016-01-10 05:24:43.950000+00:00
1689 NC MMLB HHZ P 2016-01-10 05:24:45.030000+00:00
1690 NC MMP EHZ P 2016-01-10 05:24:46.040000+00:00
1691 NC MMS EHZ P 2016-01-10 05:24:45.450000+00:00
1692 NC MQ1P EHZ P 2016-01-10 05:24:45.930000+00:00
1693 NC MRC EHZ P 2016-01-10 05:24:40.880000+00:00
1694 NC NEA EHZ P 2016-01-10 05:25:25.400000+00:00
1695 NN ANT EHZ P 2016-01-10 05:24:39.030000+00:00
1696 NN BEN EHZ P 2016-01-10 05:24:40.320000+00:00
1697 NN EMB HHZ P 2016-01-10 05:25:04.400000+00:00
1698 NN GNO EHZ P 2016-01-10 05:25:01.060000+00:00
1699 NN LHV EHZ P 2016-01-10 05:24:39.160000+00:00
1700 NN MLN EHZ P 2016-01-10 05:24:42.340000+00:00
1701 NN ORC EHZ P 2016-01-10 05:24:42.230000+00:00
1702 NN PAH HHZ P 2016-01-10 05:25:07.510000+00:00
1703 NN PNT HHZ P 2016-01-10 05:25:00.170000+00:00
1704 NN POC EHZ P 2016-01-10 05:24:46.500000+00:00
1705 NN RUB HHZ P 2016-01-10 05:25:05.930000+00:00

1706 rows × 5 columns