requake 0.6__tar.gz → 0.7.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. {requake-0.6 → requake-0.7.2}/CHANGELOG.md +51 -1
  2. {requake-0.6 → requake-0.7.2}/PKG-INFO +70 -29
  3. {requake-0.6 → requake-0.7.2}/README.md +55 -18
  4. requake-0.7.2/pyproject.toml +72 -0
  5. {requake-0.6 → requake-0.7.2}/requake/__init__.py +3 -4
  6. {requake-0.6 → requake-0.7.2}/requake/_version.py +4 -4
  7. {requake-0.6 → requake-0.7.2}/requake/catalog/__init__.py +5 -1
  8. {requake-0.6 → requake-0.7.2}/requake/catalog/catalog.py +15 -19
  9. {requake-0.6 → requake-0.7.2}/requake/catalog/print_catalog.py +7 -11
  10. {requake-0.6 → requake-0.7.2}/requake/catalog/read_catalog.py +13 -17
  11. {requake-0.6 → requake-0.7.2}/requake/catalog/read_catalog_from_csv.py +48 -42
  12. {requake-0.6 → requake-0.7.2}/requake/catalog/read_catalog_from_fdsnws.py +9 -8
  13. {requake-0.6 → requake-0.7.2}/requake/catalog/read_catalog_from_quakeml.py +2 -2
  14. requake-0.7.2/requake/config/__init__.py +17 -0
  15. {requake-0.6 → requake-0.7.2}/requake/config/config.py +3 -1
  16. requake-0.7.2/requake/config/configobj/LICENSE +40 -0
  17. {requake-0.6 → requake-0.7.2}/requake/config/configobj/__init__.py +27 -32
  18. {requake-0.6 → requake-0.7.2}/requake/config/configobj/validate.py +28 -44
  19. {requake-0.6 → requake-0.7.2}/requake/config/configspec.conf +22 -15
  20. {requake-0.6 → requake-0.7.2}/requake/config/generic_printer.py +3 -4
  21. {requake-0.6 → requake-0.7.2}/requake/config/parse_arguments.py +225 -76
  22. {requake-0.6 → requake-0.7.2}/requake/config/rq_setup.py +121 -63
  23. {requake-0.6 → requake-0.7.2}/requake/config/utils.py +38 -36
  24. {requake-0.6 → requake-0.7.2}/requake/families/__init__.py +6 -1
  25. {requake-0.6 → requake-0.7.2}/requake/families/build_families.py +10 -18
  26. {requake-0.6 → requake-0.7.2}/requake/families/build_templates.py +15 -20
  27. {requake-0.6 → requake-0.7.2}/requake/families/families.py +148 -47
  28. {requake-0.6 → requake-0.7.2}/requake/families/flag_family.py +3 -5
  29. {requake-0.6 → requake-0.7.2}/requake/families/pairs.py +7 -10
  30. requake-0.7.2/requake/families/print_families.py +120 -0
  31. {requake-0.6 → requake-0.7.2}/requake/families/print_pairs.py +5 -9
  32. {requake-0.6 → requake-0.7.2}/requake/formulas/__init__.py +5 -2
  33. requake-0.7.2/requake/formulas/conversion.py +98 -0
  34. {requake-0.6 → requake-0.7.2}/requake/formulas/moment.py +1 -1
  35. {requake-0.6 → requake-0.7.2}/requake/formulas/slip.py +4 -5
  36. {requake-0.6 → requake-0.7.2}/requake/main.py +32 -32
  37. {requake-0.6 → requake-0.7.2}/requake/plot/__init__.py +1 -1
  38. {requake-0.6 → requake-0.7.2}/requake/plot/cached_tiler.py +1 -1
  39. requake-0.7.2/requake/plot/colormaps.py +53 -0
  40. {requake-0.6 → requake-0.7.2}/requake/plot/map_families.py +32 -22
  41. {requake-0.6 → requake-0.7.2}/requake/plot/map_tiles.py +19 -1
  42. {requake-0.6 → requake-0.7.2}/requake/plot/plot_cumulative.py +39 -36
  43. {requake-0.6 → requake-0.7.2}/requake/plot/plot_families.py +50 -41
  44. {requake-0.6 → requake-0.7.2}/requake/plot/plot_pair.py +44 -31
  45. {requake-0.6 → requake-0.7.2}/requake/plot/plot_timespans.py +29 -21
  46. requake-0.7.2/requake/plot/plot_utils.py +397 -0
  47. {requake-0.6 → requake-0.7.2}/requake/scan/__init__.py +1 -1
  48. requake-0.7.2/requake/scan/scan_catalog.py +134 -0
  49. {requake-0.6 → requake-0.7.2}/requake/scan/scan_templates.py +60 -48
  50. requake-0.7.2/requake/waveforms/__init__.py +24 -0
  51. {requake-0.6 → requake-0.7.2}/requake/waveforms/arrivals.py +1 -1
  52. requake-0.7.2/requake/waveforms/station_metadata.py +251 -0
  53. requake-0.7.2/requake/waveforms/waveform_pair.py +168 -0
  54. requake-0.7.2/requake/waveforms/waveforms.py +460 -0
  55. {requake-0.6 → requake-0.7.2}/requake.egg-info/PKG-INFO +70 -29
  56. {requake-0.6 → requake-0.7.2}/requake.egg-info/SOURCES.txt +4 -2
  57. {requake-0.6 → requake-0.7.2}/requake.egg-info/requires.txt +2 -0
  58. requake-0.7.2/setup.cfg +4 -0
  59. requake-0.7.2/setup.py +28 -0
  60. requake-0.6/requake/config/__init__.py +0 -12
  61. requake-0.6/requake/families/print_families.py +0 -82
  62. requake-0.6/requake/formulas/conversion.py +0 -43
  63. requake-0.6/requake/plot/plot_utils.py +0 -152
  64. requake-0.6/requake/scan/scan_catalog.py +0 -100
  65. requake-0.6/requake/waveforms/__init__.py +0 -11
  66. requake-0.6/requake/waveforms/station_metadata.py +0 -97
  67. requake-0.6/requake/waveforms/waveforms.py +0 -303
  68. requake-0.6/setup.cfg +0 -12
  69. requake-0.6/setup.py +0 -59
  70. requake-0.6/versioneer.py +0 -1855
  71. {requake-0.6 → requake-0.7.2}/CONTRIBUTORS.txt +0 -0
  72. {requake-0.6 → requake-0.7.2}/LICENSE.txt +0 -0
  73. {requake-0.6 → requake-0.7.2}/MANIFEST.in +0 -0
  74. {requake-0.6 → requake-0.7.2}/requake/config/configobj/_version.py +0 -0
  75. {requake-0.6 → requake-0.7.2}/requake.egg-info/dependency_links.txt +0 -0
  76. {requake-0.6 → requake-0.7.2}/requake.egg-info/entry_points.txt +0 -0
  77. {requake-0.6 → requake-0.7.2}/requake.egg-info/top_level.txt +0 -0
@@ -1,6 +1,56 @@
1
1
  # Requake Changelog
2
2
 
3
- Copyright (c) 2021-2024 Claudio Satriano <satriano@ipgp.fr>
3
+ Copyright (c) 2021-2026 Claudio Satriano <satriano@ipgp.fr>
4
+
5
+ ## v0.7.2 - 2026-04-13
6
+
7
+ This release is intended to validate the new release workflow.
8
+ It introduces no new features or bug fixes.
9
+
10
+ ## v0.7.1 - 2026-04-13
11
+
12
+ This release is intended to validate the new release workflow.
13
+ It introduces no new features or bug fixes.
14
+
15
+ ## v0.7 - 2026-04-10
16
+
17
+ This version requires at least Python 3.9.
18
+
19
+ Note: you might want to run `requake update_config` to update your config file
20
+ to the latest version.
21
+
22
+ - New option `--shorterthan` to select families with a duration shorter than a
23
+ given value. For this option and for `--longerthan` it is now possible to
24
+ specify the duration in seconds, minutes, hours, or months, in addition to
25
+ days and years.
26
+ - New option `--colorby` for many plot commands, to color families by a
27
+ specific attribute other than the family number
28
+ - New option `--colormap` for many plot commands, to select a colormap
29
+ for coloring families. If not specified, a default colormap for each
30
+ attribute specified in `--colorby` is used.
31
+ - New option `--range` to manually specify the range of values for the color
32
+ scale
33
+ - New option `--force` for commands that write files, to overwrite existing
34
+ files without asking
35
+ - New option `--freq_band` for trace plotting commands, to override the
36
+ frequency band specified in the config file
37
+ - New option `--detailed` for `print_families`, to print more detailed
38
+ information about each family, including the list of events
39
+ - New option `--output` to save plots to files instead of showing them on
40
+ screen
41
+ - Config option `waveform_data_path` renamed to `sds_data_path`
42
+ - New config option `event_data_path` to specify the path to a local directory
43
+ with waveform files organized per event
44
+ - Add missing `street` map style for `map_families`
45
+ - Catalog scan: when more than a station is provided and the closest station
46
+ to the event is not available, use the next closest station instead.
47
+ - Catalog scan: accurate estimation of the number of event pairs to process
48
+ - Initial support for plotting families found with template scan
49
+ - Improved reading of CSV catalog files:
50
+ - avoid duplicated column guessing
51
+ - ensure that prefectly matching column field names are correctly guessed
52
+ - warn if an invalid time format is found
53
+ - Colored terminal output for warnings and errors
4
54
 
5
55
  ## v0.6 - 2024-05-04
6
56
 
@@ -1,39 +1,43 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: requake
3
- Version: 0.6
3
+ Version: 0.7.2
4
4
  Summary: Repeating earthquakes search and analysis
5
- Home-page: https://requake.seismicsource.org
6
- Author: Claudio Satriano
7
- Author-email: satriano@ipgp.fr
8
- License: GNU General Public License v3 or later (GPLv3+)
5
+ Author-email: Claudio Satriano <satriano@ipgp.fr>
6
+ License-Expression: GPL-3.0-or-later
9
7
  Project-URL: Homepage, https://requake.seismicsource.org
10
8
  Project-URL: Source, https://github.com/SeismicSource/requake
11
9
  Project-URL: Documentation, https://requake.readthedocs.io
12
- Platform: OS Independent
10
+ Platform: OS
11
+ Platform: Independent
13
12
  Classifier: Development Status :: 4 - Beta
14
13
  Classifier: Environment :: Console
15
14
  Classifier: Intended Audience :: Science/Research
16
- Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
17
15
  Classifier: Operating System :: OS Independent
18
16
  Classifier: Programming Language :: Python
19
17
  Classifier: Programming Language :: Python :: 3
20
- Classifier: Programming Language :: Python :: 3.7
21
- Classifier: Programming Language :: Python :: 3.8
22
18
  Classifier: Programming Language :: Python :: 3.9
23
19
  Classifier: Programming Language :: Python :: 3.10
24
20
  Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
25
24
  Classifier: Topic :: Scientific/Engineering
26
25
  Classifier: Topic :: Scientific/Engineering :: Physics
27
- Requires-Python: >3.7
26
+ Requires-Python: >=3.9
28
27
  Description-Content-Type: text/markdown
29
28
  License-File: LICENSE.txt
30
29
  Requires-Dist: scipy>=1.5.0
31
30
  Requires-Dist: obspy>=1.2.0
31
+ Requires-Dist: cartopy
32
32
  Requires-Dist: argcomplete
33
33
  Requires-Dist: tqdm
34
34
  Requires-Dist: tabulate
35
+ Requires-Dist: pygments
36
+ Dynamic: description
37
+ Dynamic: description-content-type
38
+ Dynamic: license-file
35
39
 
36
- <img src="https://cdn.jsdelivr.net/gh/SeismicSource/requake@dc9a6e6fd818e57e0c0d74f9c16f2bfc6d4d148c/imgs/Requake_logo.svg" width="400">
40
+ <img src="https://cdn.jsdelivr.net/gh/SeismicSource/requake@b6498527a861637124bae1b49943b83f9ca4a7d2/imgs/Requake_logo.svg" width="400">
37
41
 
38
42
  # Requake
39
43
 
@@ -45,7 +49,7 @@ Repeating earthquakes search and analysis.
45
49
  [![docs-badge]][docs-link]
46
50
  [![DOI-badge]][DOI-link]
47
51
 
48
- Copyright (c) 2021-2024 Claudio Satriano <satriano@ipgp.fr>
52
+ Copyright (c) 2021-2026 Claudio Satriano <satriano@ipgp.fr>
49
53
 
50
54
  ## Description
51
55
 
@@ -55,18 +59,43 @@ It can either scan an existing earthquake catalog to search for similar events,
55
59
  or perform template matching on a continuous waveform stream.
56
60
 
57
61
  Catalogs and waveforms can be read from local files or downloaded using
58
- standard [FDSN web services](https://www.fdsn.org/webservices/).
62
+ standard [FDSN web services].
59
63
 
60
- Requake is written in Python and uses [ObsPy](https://obspy.org) as backend.
64
+ Requake is written in Python and uses [ObsPy] as backend.
61
65
 
62
66
  ## Installation
63
67
 
64
68
  ### Installing the latest release
65
69
 
66
- #### Using pip and PyPI (preferred method)
70
+ #### Using Anaconda
67
71
 
68
- The latest release of Requake is available on the
69
- [Python Package Index](https://pypi.org/project/requake/).
72
+ The following command will automatically create an [Anaconda] environment
73
+ named `requake`, install the required packages and install the latest
74
+ version of SourceSpec via `pip`:
75
+
76
+ conda env create --file https://raw.githubusercontent.com/SeismicSource/requake/main/requake_conda_env.yml
77
+
78
+ If you want a different name for your environment, use:
79
+
80
+ conda env create -n YOUR_ENV_NAME --file https://raw.githubusercontent.com/SeismicSource/requake/main/requake_conda_env.yml
81
+
82
+ Activate the environment with:
83
+
84
+ conda activate requake
85
+
86
+ (or `conda activate YOUR_ENV_NAME`)
87
+
88
+ To keep Requake updated run the following command from within the environment:
89
+
90
+ pip install --upgrade requake
91
+
92
+ Or, to switch to a development snapshot, run:
93
+
94
+ pip install git+https://github.com/SeismicSource/requake.git
95
+
96
+ #### Using pip and PyPI
97
+
98
+ The latest release of Requake is available on the [Python Package Index].
70
99
 
71
100
  You can install it easily through `pip`:
72
101
 
@@ -75,9 +104,8 @@ You can install it easily through `pip`:
75
104
  ### Installing a development snapshot
76
105
 
77
106
  If you need a recent feature that is not in the latest release (see the
78
- `unreleased` section in [CHANGELOG](CHANGELOG.md)), you want to use the more
79
- recent development snapshot from the
80
- [Requake GitHub repository](https://github.com/SeismicSource/requake).
107
+ `unreleased` section in [CHANGELOG][changelog-link]), you want to use the more
108
+ recent development snapshot from the [Requake GitHub repository].
81
109
 
82
110
  #### Using pip
83
111
 
@@ -149,9 +177,14 @@ Certain commands (e.g., `plot_pair`) require further arguments (use, e.g.,
149
177
  `requake plot_pair -h` to get help).
150
178
 
151
179
  Requake supports command line tab completion for commands and arguments, thanks
152
- to [argcomplete](https://kislyuk.github.io/argcomplete/).
153
- To enable command line tab completion, add the following line to your `.bashrc`
154
- or `.zshrc`:
180
+ to [argcomplete].
181
+ To enable command line tab completion run:
182
+
183
+ activate-global-python-argcomplete
184
+
185
+ (This is a one-time command that needs to be run only once).
186
+
187
+ Or, alternatively, add the following line to your `.bashrc` or `.zshrc`:
155
188
 
156
189
  eval "$(register-python-argcomplete requake)"
157
190
 
@@ -193,8 +226,8 @@ parallelization will be implemented.
193
226
 
194
227
  If you used Requake for a scientific paper, please cite it as:
195
228
 
196
- > Satriano, C. (2024). Requake: Repeating earthquakes search and analysis (X.Y).
197
- > [doi: 10.5281/ZENODO.10832204]
229
+ > Satriano, C. (2026). Requake: Repeating earthquakes search and analysis (X.Y).
230
+ > [doi: 10.5281/ZENODO.10832203]
198
231
 
199
232
  Please replace `X.Y` with the Requake version number you used.
200
233
 
@@ -215,9 +248,17 @@ You can also cite the following abstract presented at the
215
248
  [docs-link]: https://requake.readthedocs.io/en/latest/?badge=latest
216
249
  [changelog-badge]: https://img.shields.io/badge/Changelog-136CB6.svg
217
250
  [changelog-link]: https://github.com/SeismicSource/requake/blob/main/CHANGELOG.md
218
- [DOI-badge]: https://zenodo.org/badge/DOI/10.5281/zenodo.10832204.svg
219
- [DOI-link]: https://doi.org/10.5281/zenodo.10832204
251
+ [DOI-badge]: https://zenodo.org/badge/DOI/10.5281/zenodo.10832203.svg
252
+ [DOI-link]: https://doi.org/10.5281/zenodo.10832203
253
+ [Requake GitHub repository]: https://github.com/SeismicSource/requake
254
+
255
+ <!-- External links -->
256
+ [FDSN web services]: https://www.fdsn.org/webservices/
257
+ [ObsPy]: https://obspy.org
258
+ [Anaconda]: https://www.anaconda.com/download
259
+ [Python Package Index]: https://pypi.org/project/requake/
260
+ [argcomplete]: https://kislyuk.github.io/argcomplete/
220
261
 
221
262
  <!-- References -->
222
- [doi: 10.5281/ZENODO.10832204]: https://doi.org/10.5281/ZENODO.10832204
263
+ [doi: 10.5281/ZENODO.10832203]: https://doi.org/10.5281/ZENODO.10832203
223
264
  [bibcode: 2021AGUFM.T25A0167S]: https://ui.adsabs.harvard.edu/abs/2021AGUFM.T25A0167S
@@ -10,7 +10,7 @@ Repeating earthquakes search and analysis.
10
10
  [![docs-badge]][docs-link]
11
11
  [![DOI-badge]][DOI-link]
12
12
 
13
- Copyright (c) 2021-2024 Claudio Satriano <satriano@ipgp.fr>
13
+ Copyright (c) 2021-2026 Claudio Satriano <satriano@ipgp.fr>
14
14
 
15
15
  ## Description
16
16
 
@@ -20,18 +20,43 @@ It can either scan an existing earthquake catalog to search for similar events,
20
20
  or perform template matching on a continuous waveform stream.
21
21
 
22
22
  Catalogs and waveforms can be read from local files or downloaded using
23
- standard [FDSN web services](https://www.fdsn.org/webservices/).
23
+ standard [FDSN web services].
24
24
 
25
- Requake is written in Python and uses [ObsPy](https://obspy.org) as backend.
25
+ Requake is written in Python and uses [ObsPy] as backend.
26
26
 
27
27
  ## Installation
28
28
 
29
29
  ### Installing the latest release
30
30
 
31
- #### Using pip and PyPI (preferred method)
31
+ #### Using Anaconda
32
32
 
33
- The latest release of Requake is available on the
34
- [Python Package Index](https://pypi.org/project/requake/).
33
+ The following command will automatically create an [Anaconda] environment
34
+ named `requake`, install the required packages and install the latest
35
+ version of SourceSpec via `pip`:
36
+
37
+ conda env create --file https://raw.githubusercontent.com/SeismicSource/requake/main/requake_conda_env.yml
38
+
39
+ If you want a different name for your environment, use:
40
+
41
+ conda env create -n YOUR_ENV_NAME --file https://raw.githubusercontent.com/SeismicSource/requake/main/requake_conda_env.yml
42
+
43
+ Activate the environment with:
44
+
45
+ conda activate requake
46
+
47
+ (or `conda activate YOUR_ENV_NAME`)
48
+
49
+ To keep Requake updated run the following command from within the environment:
50
+
51
+ pip install --upgrade requake
52
+
53
+ Or, to switch to a development snapshot, run:
54
+
55
+ pip install git+https://github.com/SeismicSource/requake.git
56
+
57
+ #### Using pip and PyPI
58
+
59
+ The latest release of Requake is available on the [Python Package Index].
35
60
 
36
61
  You can install it easily through `pip`:
37
62
 
@@ -40,9 +65,8 @@ You can install it easily through `pip`:
40
65
  ### Installing a development snapshot
41
66
 
42
67
  If you need a recent feature that is not in the latest release (see the
43
- `unreleased` section in [CHANGELOG](CHANGELOG.md)), you want to use the more
44
- recent development snapshot from the
45
- [Requake GitHub repository](https://github.com/SeismicSource/requake).
68
+ `unreleased` section in [CHANGELOG][changelog-link]), you want to use the more
69
+ recent development snapshot from the [Requake GitHub repository].
46
70
 
47
71
  #### Using pip
48
72
 
@@ -114,9 +138,14 @@ Certain commands (e.g., `plot_pair`) require further arguments (use, e.g.,
114
138
  `requake plot_pair -h` to get help).
115
139
 
116
140
  Requake supports command line tab completion for commands and arguments, thanks
117
- to [argcomplete](https://kislyuk.github.io/argcomplete/).
118
- To enable command line tab completion, add the following line to your `.bashrc`
119
- or `.zshrc`:
141
+ to [argcomplete].
142
+ To enable command line tab completion run:
143
+
144
+ activate-global-python-argcomplete
145
+
146
+ (This is a one-time command that needs to be run only once).
147
+
148
+ Or, alternatively, add the following line to your `.bashrc` or `.zshrc`:
120
149
 
121
150
  eval "$(register-python-argcomplete requake)"
122
151
 
@@ -158,8 +187,8 @@ parallelization will be implemented.
158
187
 
159
188
  If you used Requake for a scientific paper, please cite it as:
160
189
 
161
- > Satriano, C. (2024). Requake: Repeating earthquakes search and analysis (X.Y).
162
- > [doi: 10.5281/ZENODO.10832204]
190
+ > Satriano, C. (2026). Requake: Repeating earthquakes search and analysis (X.Y).
191
+ > [doi: 10.5281/ZENODO.10832203]
163
192
 
164
193
  Please replace `X.Y` with the Requake version number you used.
165
194
 
@@ -180,9 +209,17 @@ You can also cite the following abstract presented at the
180
209
  [docs-link]: https://requake.readthedocs.io/en/latest/?badge=latest
181
210
  [changelog-badge]: https://img.shields.io/badge/Changelog-136CB6.svg
182
211
  [changelog-link]: https://github.com/SeismicSource/requake/blob/main/CHANGELOG.md
183
- [DOI-badge]: https://zenodo.org/badge/DOI/10.5281/zenodo.10832204.svg
184
- [DOI-link]: https://doi.org/10.5281/zenodo.10832204
212
+ [DOI-badge]: https://zenodo.org/badge/DOI/10.5281/zenodo.10832203.svg
213
+ [DOI-link]: https://doi.org/10.5281/zenodo.10832203
214
+ [Requake GitHub repository]: https://github.com/SeismicSource/requake
215
+
216
+ <!-- External links -->
217
+ [FDSN web services]: https://www.fdsn.org/webservices/
218
+ [ObsPy]: https://obspy.org
219
+ [Anaconda]: https://www.anaconda.com/download
220
+ [Python Package Index]: https://pypi.org/project/requake/
221
+ [argcomplete]: https://kislyuk.github.io/argcomplete/
185
222
 
186
223
  <!-- References -->
187
- [doi: 10.5281/ZENODO.10832204]: https://doi.org/10.5281/ZENODO.10832204
188
- [bibcode: 2021AGUFM.T25A0167S]: https://ui.adsabs.harvard.edu/abs/2021AGUFM.T25A0167S
224
+ [doi: 10.5281/ZENODO.10832203]: https://doi.org/10.5281/ZENODO.10832203
225
+ [bibcode: 2021AGUFM.T25A0167S]: https://ui.adsabs.harvard.edu/abs/2021AGUFM.T25A0167S
@@ -0,0 +1,72 @@
1
+ [build-system]
2
+ requires = ["setuptools>=77", "versioneer[toml]"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "requake"
7
+ dynamic = ["version", "readme"]
8
+ authors = [
9
+ { name = "Claudio Satriano", email = "satriano@ipgp.fr" },
10
+ ]
11
+ description = "Repeating earthquakes search and analysis"
12
+ license = "GPL-3.0-or-later"
13
+ license-files = ["LICENSE.txt"]
14
+ classifiers = [
15
+ "Development Status :: 4 - Beta",
16
+ "Environment :: Console",
17
+ "Intended Audience :: Science/Research",
18
+ "Operating System :: OS Independent",
19
+ "Programming Language :: Python",
20
+ "Programming Language :: Python :: 3",
21
+ "Programming Language :: Python :: 3.9",
22
+ "Programming Language :: Python :: 3.10",
23
+ "Programming Language :: Python :: 3.11",
24
+ "Programming Language :: Python :: 3.12",
25
+ "Programming Language :: Python :: 3.13",
26
+ "Programming Language :: Python :: 3.14",
27
+ "Topic :: Scientific/Engineering",
28
+ "Topic :: Scientific/Engineering :: Physics",
29
+ ]
30
+ requires-python = ">=3.9"
31
+ dependencies = [
32
+ "scipy>=1.5.0",
33
+ "obspy>=1.2.0",
34
+ "cartopy",
35
+ "argcomplete",
36
+ "tqdm",
37
+ "tabulate",
38
+ "pygments",
39
+ ]
40
+
41
+ [project.urls]
42
+ Homepage = "https://requake.seismicsource.org"
43
+ Source = "https://github.com/SeismicSource/requake"
44
+ Documentation = "https://requake.readthedocs.io"
45
+
46
+ [project.scripts]
47
+ requake = "requake.main:main"
48
+
49
+ [tool.setuptools]
50
+ include-package-data = true
51
+ platforms = [
52
+ "OS",
53
+ "Independent",
54
+ ]
55
+
56
+ [tool.setuptools.packages.find]
57
+ include = ["requake", "requake.*"]
58
+
59
+ [tool.setuptools.package-data]
60
+ "*" = ["LICENSE"]
61
+ "requake.config" = ["*.conf"]
62
+
63
+ [tool.setuptools.dynamic]
64
+ version = {attr = "requake.__version__"}
65
+
66
+ [tool.versioneer]
67
+ VCS = "git"
68
+ style = "pep440"
69
+ versionfile_source = "requake/_version.py"
70
+ versionfile_build = "requake/_version.py"
71
+ tag_prefix = "v"
72
+ parentdir_prefix = "requake-"
@@ -4,11 +4,10 @@
4
4
  Initialize requake package.
5
5
 
6
6
  :copyright:
7
- 2021-2024 Claudio Satriano <satriano@ipgp.fr>
7
+ 2021-2026 Claudio Satriano <satriano@ipgp.fr>
8
8
  :license:
9
9
  GNU General Public License v3.0 or later
10
10
  (https://www.gnu.org/licenses/gpl-3.0-standalone.html)
11
11
  """
12
- from ._version import get_versions
13
- __version__ = get_versions()['version']
14
- del get_versions
12
+ from . import _version
13
+ __version__ = _version.get_versions()['version']
@@ -1,5 +1,5 @@
1
1
 
2
- # This file was generated by 'versioneer.py' (0.19) from
2
+ # This file was generated by 'versioneer.py' (0.29) from
3
3
  # revision-control system data, or from the parent directory name of an
4
4
  # unpacked source archive. Distribution tarballs contain a pre-generated copy
5
5
  # of this file.
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2024-05-04T17:23:20+0200",
11
+ "date": "2026-04-13T09:24:19+0200",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "dc9a6e6fd818e57e0c0d74f9c16f2bfc6d4d148c",
15
- "version": "0.6"
14
+ "full-revisionid": "b6498527a861637124bae1b49943b83f9ca4a7d2",
15
+ "version": "0.7.2"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -4,10 +4,14 @@
4
4
  Functions and data structures for managing earthquake catalogs.
5
5
 
6
6
  :copyright:
7
- 2021-2024 Claudio Satriano <satriano@ipgp.fr>
7
+ 2021-2026 Claudio Satriano <satriano@ipgp.fr>
8
8
  :license:
9
9
  GNU General Public License v3.0 or later
10
10
  (https://www.gnu.org/licenses/gpl-3.0-standalone.html)
11
11
  """
12
+ from .catalog import ( # noqa
13
+ RequakeCatalog, RequakeEvent, generate_evid,
14
+ fix_non_locatable_events, read_stored_catalog
15
+ )
12
16
  from .read_catalog import read_catalog # noqa
13
17
  from .print_catalog import print_catalog # noqa
@@ -4,15 +4,16 @@
4
4
  Classes and functions for downloading, reading and writing catalogs.
5
5
 
6
6
  :copyright:
7
- 2021-2024 Claudio Satriano <satriano@ipgp.fr>
7
+ 2021-2026 Claudio Satriano <satriano@ipgp.fr>
8
8
  :license:
9
9
  GNU General Public License v3.0 or later
10
10
  (https://www.gnu.org/licenses/gpl-3.0-standalone.html)
11
11
  """
12
12
  import numpy as np
13
13
  from obspy import UTCDateTime
14
- from ..formulas.conversion import float_or_none
15
- from ..waveforms.station_metadata import get_traceid_coords
14
+ from ..config import config
15
+ from ..formulas import float_or_none
16
+ from ..waveforms import get_traceid_coords
16
17
 
17
18
 
18
19
  class RequakeEvent():
@@ -91,8 +92,8 @@ class RequakeEvent():
91
92
  self.mag = float_or_none(word[10])
92
93
  self.mag_author = word[11]
93
94
  self.location_name = word[12]
94
- except IndexError as e:
95
- raise ValueError(f'Invalid line: {line}') from e
95
+ except IndexError as err:
96
+ raise ValueError(f'Invalid line: {line}') from err
96
97
 
97
98
  def fdsn_text(self):
98
99
  """
@@ -181,13 +182,13 @@ class RequakeCatalog(list):
181
182
  for ev in self:
182
183
  fp.write(ev.fdsn_text() + '\n')
183
184
 
184
-
185
185
  def filter(
186
186
  self, starttime=None, endtime=None,
187
187
  minlatitude=None, maxlatitude=None,
188
188
  minlongitude=None, maxlongitude=None,
189
189
  mindepth=None, maxdepth=None,
190
- minmagnitude=None, maxmagnitude=None):
190
+ minmagnitude=None, maxmagnitude=None
191
+ ):
191
192
  """
192
193
  Filter the catalog, based on the specified criteria.
193
194
 
@@ -248,13 +249,10 @@ class RequakeCatalog(list):
248
249
  return outcat
249
250
 
250
251
 
251
- def read_stored_catalog(config):
252
+ def read_stored_catalog():
252
253
  """
253
254
  Read the catalog stored in the output directory.
254
255
 
255
- :param config: Configuration object.
256
- :type config: config.Config
257
-
258
256
  :return: Catalog object.
259
257
  :rtype: RequakeCatalog
260
258
 
@@ -268,24 +266,22 @@ def read_stored_catalog(config):
268
266
  if not cat:
269
267
  raise ValueError('Empty catalog')
270
268
  return cat
271
- except ValueError as m:
269
+ except ValueError as err:
272
270
  raise ValueError(
273
- f'Error reading catalog file {config.scan_catalog_file}: {m}'
274
- ) from m
275
- except FileNotFoundError as m:
271
+ f'Error reading catalog file {config.scan_catalog_file}: {err}'
272
+ ) from err
273
+ except (FileNotFoundError, NotADirectoryError) as err:
276
274
  raise FileNotFoundError(
277
275
  f'Catalog file {config.scan_catalog_file} not found'
278
- ) from m
276
+ ) from err
279
277
 
280
278
 
281
- def fix_non_locatable_events(catalog, config):
279
+ def fix_non_locatable_events(catalog):
282
280
  """
283
281
  Fix non-locatable events in catalog.
284
282
 
285
283
  :param catalog: a RequakeCatalog object
286
284
  :type catalog: RequakeCatalog
287
- :param config: a Config object
288
- :type config: config.Config
289
285
  """
290
286
  if not any(ev.lat is None or ev.lon is None for ev in catalog):
291
287
  return
@@ -4,29 +4,25 @@
4
4
  Print the event catalog to screen.
5
5
 
6
6
  :copyright:
7
- 2021-2024 Claudio Satriano <satriano@ipgp.fr>
7
+ 2021-2026 Claudio Satriano <satriano@ipgp.fr>
8
8
  :license:
9
9
  GNU General Public License v3.0 or later
10
10
  (https://www.gnu.org/licenses/gpl-3.0-standalone.html)
11
11
  """
12
12
  import logging
13
+ from ..config import rq_exit, generic_printer
13
14
  from .catalog import read_stored_catalog
14
- from ..config.generic_printer import generic_printer
15
- from ..config.rq_setup import rq_exit
16
15
  logger = logging.getLogger(__name__.rsplit('.', maxsplit=1)[-1])
17
16
 
18
17
 
19
- def print_catalog(config):
18
+ def print_catalog():
20
19
  """
21
20
  Print the event catalog to screen.
22
-
23
- :param config: Configuration object.
24
- :type config: config.Config
25
21
  """
26
22
  try:
27
- catalog = read_stored_catalog(config)
28
- except (ValueError, FileNotFoundError) as m:
29
- logger.error(m)
23
+ catalog = read_stored_catalog()
24
+ except (ValueError, FileNotFoundError) as msg:
25
+ logger.error(msg)
30
26
  rq_exit(1)
31
27
 
32
28
  headers_fmt = [
@@ -50,4 +46,4 @@ def print_catalog(config):
50
46
  ]
51
47
  for ev in catalog
52
48
  ]
53
- generic_printer(config, rows, headers_fmt)
49
+ generic_printer(rows, headers_fmt)