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
Content source: malcolmw/SeisPy
Similar notebooks: