14
14
TIMEOUT = 180
15
15
16
16
17
- def query_gcmt (
18
- start_time ,
19
- end_time ,
20
- min_magnitude = 5.0 ,
21
- max_depth = None ,
22
- catalog_id = None ,
23
- min_latitude = None ,
24
- max_latitude = None ,
25
- min_longitude = None ,
26
- max_longitude = None ,
27
- ):
28
-
29
- eventlist = _query_gcmt (
30
- start_time = start_time ,
31
- end_time = end_time ,
32
- min_magnitude = min_magnitude ,
33
- min_latitude = min_latitude ,
34
- max_latitude = max_latitude ,
35
- min_longitude = min_longitude ,
36
- max_longitude = max_longitude ,
37
- max_depth = max_depth ,
38
- )
39
-
40
- catalog = CSEPCatalog (
41
- data = eventlist , name = "gCMT" , catalog_id = catalog_id , date_accessed = utc_now_datetime ()
42
- )
43
- return catalog
44
-
45
-
46
17
def from_zenodo (record_id , folder , force = False ):
47
18
"""
48
19
Download data from a Zenodo repository.
49
- Downloads if file does not exist, checksum has changed in local respect to
50
- url or force
20
+
21
+ Downloads if file does not exist, checksum has changed in local respect to url or force
51
22
52
23
Args:
53
24
record_id: corresponding to the Zenodo repository
54
25
folder: where the repository files will be downloaded
55
26
force: force download even if file exists and checksum passes
56
27
57
28
Returns:
58
-
59
29
"""
60
30
# Grab the urls and filenames and checksums
61
31
r = requests .get (f"https://zenodo.org/api/records/{ record_id } " , timeout = 3 )
@@ -87,8 +57,7 @@ def from_zenodo(record_id, folder, force=False):
87
57
88
58
def from_git (url , path , branch = None , depth = 1 , ** kwargs ):
89
59
"""
90
-
91
- Clones a shallow repository from a git url
60
+ Clones a shallow repository from a git url.
92
61
93
62
Args:
94
63
url (str): url of the repository
@@ -115,185 +84,13 @@ def from_git(url, path, branch=None, depth=1, **kwargs):
115
84
return repo
116
85
117
86
118
- def _query_gcmt (
119
- start_time ,
120
- end_time ,
121
- min_magnitude = 3.50 ,
122
- min_latitude = None ,
123
- max_latitude = None ,
124
- min_longitude = None ,
125
- max_longitude = None ,
126
- max_depth = 1000 ,
127
- extra_gcmt_params = None ,
128
- ):
129
- """
130
- Return GCMT eventlist from IRIS web service.
131
- For details see "https://service.iris.edu/fdsnws/event/1/"
132
- Args:
133
- start_time (datetime.datetime): start time of catalog query
134
- end_time (datetime.datetime): end time of catalog query
135
- min_magnitude (float): minimum magnitude of query
136
- min_latitude (float): minimum latitude of query
137
- max_latitude (float): maximum latitude of query
138
- min_longitude (float): minimum longitude of query
139
- max_longitude (float): maximum longitude of query
140
- max_depth (float): maximum depth of query
141
- extra_gcmt_params (dict): additional parameters to pass to IRIS search
142
- function
143
-
144
- Returns:
145
- eventlist
146
- """
147
- extra_gcmt_params = extra_gcmt_params or {}
148
-
149
- eventlist = gcmt_search (
150
- minmagnitude = min_magnitude ,
151
- minlatitude = min_latitude ,
152
- maxlatitude = max_latitude ,
153
- minlongitude = min_longitude ,
154
- maxlongitude = max_longitude ,
155
- starttime = start_time .isoformat (),
156
- endtime = end_time .isoformat (),
157
- maxdepth = max_depth ,
158
- ** extra_gcmt_params ,
159
- )
160
-
161
- return eventlist
162
-
163
-
164
- def gcmt_search (
165
- format = "text" ,
166
- starttime = None ,
167
- endtime = None ,
168
- updatedafter = None ,
169
- minlatitude = None ,
170
- maxlatitude = None ,
171
- minlongitude = None ,
172
- maxlongitude = None ,
173
- latitude = None ,
174
- longitude = None ,
175
- maxradius = None ,
176
- catalog = "GCMT" ,
177
- contributor = None ,
178
- maxdepth = 1000 ,
179
- maxmagnitude = 10.0 ,
180
- mindepth = - 100 ,
181
- minmagnitude = 0 ,
182
- offset = 1 ,
183
- orderby = "time-asc" ,
184
- host = None ,
185
- verbose = False ,
186
- ):
187
- """Search the IRIS database for events matching input criteria.
188
- This search function is a wrapper around the ComCat Web API described here:
189
- https://service.iris.edu/fdsnws/event/1/
190
-
191
- This function returns a list of SummaryEvent objects, described elsewhere in this package.
192
- Args:
193
- starttime (datetime):
194
- Python datetime - Limit to events on or after the specified start time.
195
- endtime (datetime):
196
- Python datetime - Limit to events on or before the specified end time.
197
- updatedafter (datetime):
198
- Python datetime - Limit to events updated after the specified time.
199
- minlatitude (float):
200
- Limit to events with a latitude larger than the specified minimum.
201
- maxlatitude (float):
202
- Limit to events with a latitude smaller than the specified maximum.
203
- minlongitude (float):
204
- Limit to events with a longitude larger than the specified minimum.
205
- maxlongitude (float):
206
- Limit to events with a longitude smaller than the specified maximum.
207
- latitude (float):
208
- Specify the latitude to be used for a radius search.
209
- longitude (float):
210
- Specify the longitude to be used for a radius search.
211
- maxradius (float):
212
- Limit to events within the specified maximum number of degrees
213
- from the geographic point defined by the latitude and longitude parameters.
214
- catalog (str):
215
- Limit to events from a specified catalog.
216
- contributor (str):
217
- Limit to events contributed by a specified contributor.
218
- maxdepth (float):
219
- Limit to events with depth less than the specified maximum.
220
- maxmagnitude (float):
221
- Limit to events with a magnitude smaller than the specified maximum.
222
- mindepth (float):
223
- Limit to events with depth more than the specified minimum.
224
- minmagnitude (float):
225
- Limit to events with a magnitude larger than the specified minimum.
226
- offset (int):
227
- Return results starting at the event count specified, starting at 1.
228
- orderby (str):
229
- Order the results. The allowed values are:
230
- - time order by origin descending time
231
- - time-asc order by origin ascending time
232
- - magnitude order by descending magnitude
233
- - magnitude-asc order by ascending magnitude
234
- host (str):
235
- Replace default ComCat host (earthquake.usgs.gov) with a custom host.
236
- Returns:
237
- list: List of SummaryEvent() objects.
238
- """
239
-
240
- # getting the inputargs must be the first line of the method!
241
- inputargs = locals ().copy ()
242
- newargs = {}
243
-
244
- for key , value in inputargs .items ():
245
- if value is True :
246
- newargs [key ] = "true"
247
- continue
248
- if value is False :
249
- newargs [key ] = "false"
250
- continue
251
- if value is None :
252
- continue
253
- newargs [key ] = value
254
-
255
- del newargs ["verbose" ]
256
-
257
- events = _search_gcmt (** newargs )
258
-
259
- return events
260
-
261
-
262
- def _search_gcmt (** _newargs ):
263
- """
264
- Performs de-query at ISC API and returns event list and access date
265
-
266
- """
267
- paramstr = urlencode (_newargs )
268
- url = HOST_CATALOG + paramstr
269
- fh = request .urlopen (url , timeout = TIMEOUT )
270
- data = fh .read ().decode ("utf8" ).split ("\n " )
271
- fh .close ()
272
- eventlist = []
273
- for line in data [1 :]:
274
- line_ = line .split ("|" )
275
- if len (line_ ) != 1 :
276
- id_ = line_ [0 ]
277
- time_ = datetime .fromisoformat (line_ [1 ])
278
- dt = datetime_to_utc_epoch (time_ )
279
- lat = float (line_ [2 ])
280
- lon = float (line_ [3 ])
281
- depth = float (line_ [4 ])
282
- mag = float (line_ [10 ])
283
- eventlist .append ((id_ , dt , lat , lon , depth , mag ))
284
-
285
- return eventlist
286
-
287
-
288
87
def _download_file (url : str , filename : str ) -> None :
289
88
"""
290
-
291
- Downloads files (from zenodo)
89
+ Downloads files (from zenodo).
292
90
293
91
Args:
294
92
url (str): the url where the file is located
295
93
filename (str): the filename required.
296
-
297
94
"""
298
95
progress_bar_length = 72
299
96
block_size = 1024
@@ -331,9 +128,7 @@ def _download_file(url: str, filename: str) -> None:
331
128
332
129
333
130
def _check_hash (filename , checksum ):
334
- """
335
- Checks if existing file hash matches checksum from url
336
- """
131
+ """Checks if existing file hash matches checksum from url."""
337
132
algorithm , value = checksum .split (":" )
338
133
if not os .path .exists (filename ):
339
134
return value , "invalid"
0 commit comments