gmprocess 2.3.0__tar.gz → 2.5.0__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 (250) hide show
  1. {gmprocess-2.3.0 → gmprocess-2.5.0}/CHANGELOG.md +33 -8
  2. {gmprocess-2.3.0 → gmprocess-2.5.0}/CONTRIBUTING.md +4 -4
  3. {gmprocess-2.3.0 → gmprocess-2.5.0}/PKG-INFO +24 -11
  4. gmprocess-2.5.0/README.md +54 -0
  5. {gmprocess-2.3.0 → gmprocess-2.5.0}/code.json +82 -0
  6. {gmprocess-2.3.0 → gmprocess-2.5.0}/pyproject.toml +1 -1
  7. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/apps/gmrecords.py +1 -1
  8. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/bin/cwa_gather.py +3 -1
  9. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/core/stationstream.py +58 -49
  10. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/core/stationtrace.py +43 -44
  11. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/core/streamarray.py +11 -5
  12. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/core/streamcollection.py +25 -32
  13. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/config_production.yml +17 -11
  14. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/config_production_v1.yml +5 -6
  15. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/config_test.yml +5 -5
  16. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/config_test_download.yml +2 -2
  17. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/asdf/flatfile.py +5 -8
  18. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/asdf/stream_workspace.py +14 -10
  19. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/asdf/waveform_metrics_xml.py +6 -3
  20. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/cosmos/cesmd_fetcher.py +8 -6
  21. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/cosmos/core.py +72 -22
  22. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/cosmos/cosmos_writer.py +168 -88
  23. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/dmg/core.py +3 -3
  24. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/obspy/core.py +32 -7
  25. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/read_directory.py +11 -2
  26. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/smc/core.py +1 -1
  27. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/unam/core.py +3 -3
  28. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/metrics/containers.py +2 -0
  29. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/metrics/oscillator.py +2 -2
  30. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/metrics/reduce.py +13 -12
  31. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/metrics/rotate.py +5 -0
  32. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/metrics/station_metric.py +1 -1
  33. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/metrics/station_metric_collection.py +1 -1
  34. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/metrics/transform.py +82 -34
  35. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/metrics/waveform_metric_calculator.py +66 -59
  36. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/metrics/waveform_metric_collection.py +16 -5
  37. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/metrics/waveform_metric_list.py +1 -1
  38. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/metrics/waveform_metric_type.py +11 -11
  39. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/base.py +2 -2
  40. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/generate_report.py +5 -4
  41. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/processing_steps.py +1 -1
  42. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/config.py +5 -0
  43. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/config_versioning.py +12 -0
  44. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/export_gmpacket_utils.py +1 -1
  45. gmprocess-2.5.0/src/gmprocess/utils/memory.py +32 -0
  46. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/tests_utils.py +1 -1
  47. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/adjust_highpass.py +1 -1
  48. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/adjust_highpass_ridder.py +20 -2
  49. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/clipping/clipping_ann.py +1 -1
  50. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/clipping/jerk.py +1 -1
  51. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/clipping/max_amp.py +1 -1
  52. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/clipping/ping.py +2 -2
  53. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/clipping/std_dev.py +1 -1
  54. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/corner_frequencies.py +44 -32
  55. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/detrend.py +1 -1
  56. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/fft.py +4 -3
  57. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/filtering.py +5 -5
  58. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/instrument_response.py +5 -4
  59. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/nn_quality_assurance.py +19 -13
  60. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/phase.py +2 -2
  61. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/prism_adaptive_baseline.py +2 -2
  62. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/processing.py +2 -2
  63. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/sanity_checks.py +1 -1
  64. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/snr.py +6 -6
  65. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/spectrum.py +9 -9
  66. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/windows.py +120 -49
  67. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/zero_pad.py +1 -1
  68. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess.egg-info/PKG-INFO +24 -11
  69. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess.egg-info/SOURCES.txt +1 -0
  70. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess.egg-info/requires.txt +1 -1
  71. gmprocess-2.3.0/README.md +0 -42
  72. {gmprocess-2.3.0 → gmprocess-2.5.0}/.coveragerc +0 -0
  73. {gmprocess-2.3.0 → gmprocess-2.5.0}/.gitignore +0 -0
  74. {gmprocess-2.3.0 → gmprocess-2.5.0}/.gitlab-ci.yml +0 -0
  75. {gmprocess-2.3.0 → gmprocess-2.5.0}/CODE_OF_CONDUCT.md +0 -0
  76. {gmprocess-2.3.0 → gmprocess-2.5.0}/DISCLAIMER.md +0 -0
  77. {gmprocess-2.3.0 → gmprocess-2.5.0}/LICENSE.md +0 -0
  78. {gmprocess-2.3.0 → gmprocess-2.5.0}/MANIFEST.in +0 -0
  79. {gmprocess-2.3.0 → gmprocess-2.5.0}/pytest.ini +0 -0
  80. {gmprocess-2.3.0 → gmprocess-2.5.0}/setup.cfg +0 -0
  81. {gmprocess-2.3.0 → gmprocess-2.5.0}/setup.py +0 -0
  82. {gmprocess-2.3.0 → gmprocess-2.5.0}/setup_env.sh +0 -0
  83. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/__init__.py +0 -0
  84. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/apps/__init__.py +0 -0
  85. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/bin/__init__.py +0 -0
  86. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/bin/bundle_datarelease.py +0 -0
  87. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/bin/fetch_orfeus.py +0 -0
  88. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/bin/fix_inventory.py +0 -0
  89. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/bin/gmconvert.py +0 -0
  90. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/bin/gminfo.py +0 -0
  91. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/bin/gmprocess_config.py +0 -0
  92. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/bin/gmrecords.py +0 -0
  93. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/bin/gmworkspace.py +0 -0
  94. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/bin/update_event_json.sh +0 -0
  95. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/core/__init__.py +0 -0
  96. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/core/provenance.py +0 -0
  97. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/core/scalar_event.py +0 -0
  98. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/CESMD_NGA_ids.csv +0 -0
  99. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/__init__.py +0 -0
  100. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/cosmos_table10.xls +0 -0
  101. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/cosmos_table4.xls +0 -0
  102. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/demo/ci38457511/raw/CICCC.RAW +0 -0
  103. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/demo/ci38457511/raw/CICLC.v1 +0 -0
  104. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/demo/ci38457511/raw/CITOW2.RAW +0 -0
  105. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/demo/nc72282711/workspace.h5 +0 -0
  106. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/fdsn_codes.csv +0 -0
  107. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/lme/SA_rotd50.0_2020.03.31.csv +0 -0
  108. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/modules.yml +0 -0
  109. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nga_w2_selected.csv +0 -0
  110. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_clipping/bias_1.csv +0 -0
  111. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_clipping/bias_output.csv +0 -0
  112. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_clipping/masterF.txt +0 -0
  113. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_clipping/weight_1.csv +0 -0
  114. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_clipping/weight_output.csv +0 -0
  115. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/Cant/M.csv +0 -0
  116. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/Cant/bias_1.csv +0 -0
  117. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/Cant/bias_2.csv +0 -0
  118. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/Cant/bias_output.csv +0 -0
  119. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/Cant/final_training.csv +0 -0
  120. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/Cant/masterF.txt +0 -0
  121. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/Cant/model_3.txt +0 -0
  122. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/Cant/model_5.txt +0 -0
  123. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/Cant/mu_sigma.csv +0 -0
  124. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/Cant/weight_1.csv +0 -0
  125. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/Cant/weight_2.csv +0 -0
  126. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/Cant/weight_output.csv +0 -0
  127. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/CantWell/M.csv +0 -0
  128. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/CantWell/bias_1.csv +0 -0
  129. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/CantWell/bias_2.csv +0 -0
  130. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/CantWell/bias_output.csv +0 -0
  131. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/CantWell/final_training.csv +0 -0
  132. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/CantWell/masterF.txt +0 -0
  133. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/CantWell/model_0.txt +0 -0
  134. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/CantWell/mu_sigma.csv +0 -0
  135. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/CantWell/weight_1.csv +0 -0
  136. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/CantWell/weight_2.csv +0 -0
  137. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/nn_qa/CantWell/weight_output.csv +0 -0
  138. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/picker.yml +0 -0
  139. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/station_coordinates.xlsx +0 -0
  140. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/data/usgs_ids_nga_and_srcmod_cross_reference.xlsx +0 -0
  141. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/gui/__init__.py +0 -0
  142. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/gui/gui_ucla/Documentation.md +0 -0
  143. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/gui/gui_ucla/GUI_human_review.ipynb +0 -0
  144. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/gui/gui_ucla/HumanReviewGUI.py +0 -0
  145. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/gui/gui_ucla/__init__.py +0 -0
  146. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/__init__.py +0 -0
  147. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/asdf/__init__.py +0 -0
  148. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/asdf/base_metrics_xml.py +0 -0
  149. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/asdf/core.py +0 -0
  150. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/asdf/flatfile_constants.py +0 -0
  151. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/asdf/path_utils.py +0 -0
  152. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/asdf/rupture.py +0 -0
  153. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/asdf/station_metrics_xml.py +0 -0
  154. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/asdf/utils.py +0 -0
  155. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/asdf/workspace_constants.py +0 -0
  156. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/bhrc/__init__.py +0 -0
  157. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/bhrc/core.py +0 -0
  158. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/cosmos/__init__.py +0 -0
  159. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/cosmos/cesmd_search.py +0 -0
  160. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/cosmos/data_structures.py +0 -0
  161. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/cwb/__init__.py +0 -0
  162. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/cwb/core.py +0 -0
  163. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/dmg/__init__.py +0 -0
  164. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/dynamic_search_parameters.py +0 -0
  165. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/esm/__init__.py +0 -0
  166. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/esm/core.py +0 -0
  167. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/fetcher.py +0 -0
  168. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/geonet/__init__.py +0 -0
  169. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/geonet/core.py +0 -0
  170. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/global_fetcher.py +0 -0
  171. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/knet/__init__.py +0 -0
  172. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/knet/core.py +0 -0
  173. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/knet/knet_fetcher.py +0 -0
  174. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/nga.py +0 -0
  175. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/nsmn/__init__.py +0 -0
  176. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/nsmn/core.py +0 -0
  177. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/obspy/__init__.py +0 -0
  178. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/obspy/fdsn_fetcher.py +0 -0
  179. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/read.py +0 -0
  180. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/renadic/__init__.py +0 -0
  181. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/renadic/core.py +0 -0
  182. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/report.py +0 -0
  183. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/seedname.py +0 -0
  184. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/smc/__init__.py +0 -0
  185. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/unam/__init__.py +0 -0
  186. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/usc/__init__.py +0 -0
  187. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/usc/core.py +0 -0
  188. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/io/utils.py +0 -0
  189. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/metrics/__init__.py +0 -0
  190. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/metrics/combine.py +0 -0
  191. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/metrics/metric_collection_base.py +0 -0
  192. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/metrics/utils.py +0 -0
  193. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/metrics/waveform_metric_calculator_component_base.py +0 -0
  194. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/metrics/waveform_metric_component.py +0 -0
  195. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/__init__.py +0 -0
  196. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/arg_dicts.py +0 -0
  197. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/assemble.py +0 -0
  198. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/autoprocess.py +0 -0
  199. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/autoshakemap.py +0 -0
  200. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/clean.py +0 -0
  201. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/compute_station_metrics.py +0 -0
  202. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/compute_waveform_metrics.py +0 -0
  203. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/download.py +0 -0
  204. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/export_cosmos.py +0 -0
  205. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/export_failure_tables.py +0 -0
  206. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/export_gmpacket.py +0 -0
  207. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/export_metric_tables.py +0 -0
  208. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/export_provenance_tables.py +0 -0
  209. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/generate_regression_plot.py +0 -0
  210. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/generate_station_maps.py +0 -0
  211. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/import_data.py +0 -0
  212. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/init.py +0 -0
  213. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/lazy_loader.py +0 -0
  214. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/process_waveforms.py +0 -0
  215. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/subcommands/projects.py +0 -0
  216. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/__init__.py +0 -0
  217. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/args.py +0 -0
  218. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/assemble_utils.py +0 -0
  219. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/constants.py +0 -0
  220. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/download_utils.py +0 -0
  221. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/ground_motion_models.py +0 -0
  222. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/logging.py +0 -0
  223. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/misc.py +0 -0
  224. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/misc_plots.py +0 -0
  225. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/prompt.py +0 -0
  226. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/report_utils.py +0 -0
  227. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/rupture_utils.py +0 -0
  228. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/strec.py +0 -0
  229. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/summary_plots.py +0 -0
  230. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/utils/tables.py +0 -0
  231. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/__init__.py +0 -0
  232. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/baseline_correction.py +0 -0
  233. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/clipping/clip_detection.py +0 -0
  234. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/clipping/clipping_check.py +0 -0
  235. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/clipping/histogram.py +0 -0
  236. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/convert_units.py +0 -0
  237. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/integrate.py +0 -0
  238. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/pretesting.py +0 -0
  239. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/processing_step.py +0 -0
  240. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/resample.py +0 -0
  241. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/taper.py +0 -0
  242. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess/waveform_processing/zero_crossings.py +0 -0
  243. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess.egg-info/dependency_links.txt +0 -0
  244. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess.egg-info/entry_points.txt +0 -0
  245. {gmprocess-2.3.0 → gmprocess-2.5.0}/src/gmprocess.egg-info/top_level.txt +0 -0
  246. {gmprocess-2.3.0 → gmprocess-2.5.0}/tools/matlab/README.md +0 -0
  247. {gmprocess-2.3.0 → gmprocess-2.5.0}/tools/matlab/get_all_waveforms.m +0 -0
  248. {gmprocess-2.3.0 → gmprocess-2.5.0}/tools/matlab/get_events.m +0 -0
  249. {gmprocess-2.3.0 → gmprocess-2.5.0}/tools/matlab/get_waveform_metrics.m +0 -0
  250. {gmprocess-2.3.0 → gmprocess-2.5.0}/tools/matlab/waveform_plot.png +0 -0
@@ -1,13 +1,38 @@
1
1
  ## main
2
2
 
3
+ ## 2.5.0 / 2025-05-21
4
+
5
+ - Enhancements
6
+ - Use location code to distinguish among instruments at a site.
7
+ - Bugfix
8
+ - Bugfixes in the COSMOS fetcher query values.
9
+ - The `any_trace_failures` option was not working as intended. See issue #1261 and the merge request that closes it.
10
+ - Dependencies
11
+ - Require usgs-strec >= 2.3.11, update tests to reflect strec fixes.
12
+
13
+ ## 2.4.0 / 2025-04-04
14
+
15
+ - Enhancements
16
+ - Store only the peak value instead of the whole trace for waveform_metrics, resulting in significantly less memory usage.
17
+ - Use P phase pickers within time window around P phase travel time to set split time between noise (pre-event window) and signal (event window). Update the `pickers` section of the configuration file to include relevant parameters.
18
+ - COSMOS v0 writer incorporates sensitivity from StationXML stages in real #22 and real #42 headers
19
+ - Support FAS metric for individual channel components (this could be classified as a bugfix).
20
+ - Add helper functions to facilitate developers tracking memory usage with `tracemalloc`.
21
+ - Bugfix
22
+ - Fix error with zeropad method using 'fhp' to extracts filter order
23
+ - Fix cosmos v0 writer header failing to write sensitivities due to if statement testing 'trace.stats.standard' instead of 'trace.stats'
24
+ - Set self.output_units in instrument_response.RemoveResponse._remove_sensivitiy() to "ACC" (was not set).
25
+ - Get structure type from correct field in DMG format.
26
+ - Fix two calls to `numpy.mean()` to avoid warnings about zero length arrays.
27
+ - Fixed error in parsing units from COSMOS format.
3
28
 
4
29
  ## 2.3.0 / 2025-01-23
5
30
 
6
31
  - Enhancements
7
32
  - Substantial changes to the default processing steps.
8
- - Add support for psudo-response spectra (PSA and PSV) and change default metrics to use PSA rather than SA.
9
- - Allow for user to set a different query window duration for different tectonic envirnments.
10
- - Increase default query window duraiton.
33
+ - Add support for psuedo-response spectra (PSA and PSV) and change default metrics to use PSA rather than SA.
34
+ - Allow for user to set a different query window duration for different tectonic environments.
35
+ - Increase default query window duration.
11
36
  - Add a new "source_path" method to compute the signal end that uses 1/fc as the source duration, which is then added to a path duration that is parameterized with coefficients for an intercept and distance term.
12
37
  - Exclude network 7D, which is for ocean bottom stations.
13
38
  - Apply clipping check to strong motion instruments. In the past, we thought it was safe to assume strong motion instruments did not clip but we have found exceptions to this.
@@ -57,7 +82,7 @@
57
82
  ## 2.1.2 / 2024-11-14
58
83
  - Enhancements
59
84
  - Station distance (epicentral distance) added to the reports
60
- - Add support velocity and dispacement COSMOS and DMG files
85
+ - Add support velocity and displacement COSMOS and DMG files
61
86
  - More graceful exiting when bad eventid is inputted to `download`
62
87
  - Allow `reports` to continue processing when an event directory is empty (no data)
63
88
  - Update default config to use the Ramos-Sepulveda et al. (2023) high-pass corner selection method, and increase the p-wave shift to -2 sec from -1 sec.
@@ -93,7 +118,7 @@
93
118
  - Updated line styles of annotation lines in SNR plots.
94
119
  - Remove the `export_shakemap` subcommand.
95
120
  - Default config updates
96
- - Change KO smoothing paramter to 188.5.
121
+ - Change KO smoothing parameter to 188.5.
97
122
  - Add arias intensity.
98
123
  - Lower pga threshold on distance search criteria.
99
124
  - Update release instructions in CONTRIBUTING.md.
@@ -120,7 +145,7 @@
120
145
  - Other
121
146
  - Turned off automatic generation of moveout plot since it isn't getting used.
122
147
  - Renamed src/gmprocess/utils/test_utils.py to src/gmprocess/utils/test_utils.py to avoid it being detected as a unit test module.
123
- - Decrease precision in fetcher bounds and fix Geonet bounds to include negaive longitudes.
148
+ - Decrease precision in fetcher bounds and fix Geonet bounds to include negative longitudes.
124
149
  - Move the "config" subcommand to be a stand-alone command line program called "gmprocess_config".
125
150
  - Removed "list_metrics" command.
126
151
  - Removed cap on python version, increased minimum version to 3.9
@@ -168,7 +193,7 @@
168
193
  - Added station metric units to constants.
169
194
  - Bugfixes
170
195
  - Resolve key error that was preventing writing of metric tables when Arias Intensity was requested.
171
- - Resolve bug that occurs when multiple channels/stations are present in the invetory when trying to retrieve the sampling rate for the metric table.
196
+ - Resolve bug that occurs when multiple channels/stations are present in the inventory when trying to retrieve the sampling rate for the metric table.
172
197
 
173
198
  ## 1.2.8 / 2023-08-21
174
199
 
@@ -296,7 +321,7 @@
296
321
  - More gracefully handle cases where workspace file does not exist but is expected.
297
322
  - Add label arg to gmconvert.
298
323
  - Make colocated selection optional.
299
- - Replace stastic map with interactive HTML map and add to CLI tutorial in documentation.
324
+ - Replace statistic map with interactive HTML map and add to CLI tutorial in documentation.
300
325
  - Remove cartopy dependency.
301
326
  - Get scnl from COSMOS comments.
302
327
  - Add freq differentiation option.
@@ -47,7 +47,7 @@ DOCS: [one line description]
47
47
  ```
48
48
 
49
49
  We use the set of commit types from the [angular][9] project:
50
- * **BUILD**: Changes that affect the build system or external dependencies (e.g., pyrpoject.toml)
50
+ * **BUILD**: Changes that affect the build system or external dependencies (e.g., pyproject.toml)
51
51
  * **CI**: Changes to our CI configuration files and scripts (e.g., .gitlab-ci.yml)
52
52
  * **DOCS**: Documentation only changes
53
53
  * **FEAT**: A new feature
@@ -76,7 +76,7 @@ Common reasons to rebase include:
76
76
  ## Releases
77
77
 
78
78
  1. Create a release candidate branch with a name related to the release version like `v1.2.1.rc0`.
79
- 2. Update `code.json`, this is now automated with the `esi-releases` pacakge. For example, use the following command to increase the minor version number (options are "major", "minor", and "patch"):
79
+ 2. Update `code.json`, this is now automated with the `esi-releases` package. For example, use the following command to increase the minor version number (options are "major", "minor", and "patch"):
80
80
  ```
81
81
  releases minor
82
82
  ```
@@ -95,7 +95,7 @@ Common reasons to rebase include:
95
95
  - This git push command is what triggers the "release" pipeline that includes the test, build, and deploy stages.
96
96
  - *Note that we cannot have a hyphen in the tag name.*
97
97
  - Also, if we end the tag name with "dev" then it will be build and uploaded to pypi as a pre-release version, which means that it will never be pip installed unless the user specifies the exact version of the pre-release.
98
- - Maintainence note: the PYPI tokens are maintained in gitlab for the ESI group, under Settings then CI/CD, then Variables. These tokens are associated with the "pager_cicd" pypi service account.
98
+ - Maintenance note: the PYPI tokens are maintained in gitlab for the ESI group, under Settings then CI/CD, then Variables. These tokens are associated with the "pager_cicd" pypi service account.
99
99
  8. Create release from tag in gitlab. Give it a release title like `v1.2.1`.
100
100
  9. Copy/paste the relevant part of the changelog into the "describe this release" section.
101
101
 
@@ -126,7 +126,7 @@ Note that the script includes the follow arguments:
126
126
  Notes:
127
127
  - Never commit the built documentation files.
128
128
  - Remember that the notebooks run gmprocess code when you build the docs,
129
- so please be sure to check that the tutorials ran sucessfully.
129
+ so please be sure to check that the tutorials ran successfully.
130
130
  - The result of the tutorials will depend on your config file options,
131
131
  so I recommend having a project with the default config file set up
132
132
  and use that project when building the docs.
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: gmprocess
3
- Version: 2.3.0
3
+ Version: 2.5.0
4
4
  Summary: USGS Automated Ground Motion Processing Software
5
5
  Author-email: Eric Thompson <emthompsone@usgs.gov>, Mike Hearne <mhearne@usgs.gov>, Brad Aagaard <baagaard@usgs.gov>, Bruce Worden <cbworden@contractor.usgs.gov>, John Rekoske <jrekoske@ucsd.edu>, Heather Hunsinger <hhunsinger@usgs.gov>, Gabe Ferragut <gferragut@usgs.gov>
6
6
  License: License
@@ -79,7 +79,7 @@ Requires-Dist: scipy>=1.7
79
79
  Requires-Dist: setuptools-scm>=6.3.2
80
80
  Requires-Dist: statsmodels>=0.12.2
81
81
  Requires-Dist: tqdm>4.67
82
- Requires-Dist: usgs-strec>=2.3.2
82
+ Requires-Dist: usgs-strec>=2.3.11
83
83
  Requires-Dist: xlrd>=2.0
84
84
  Provides-Extra: dev
85
85
  Requires-Dist: build>=0.7.0; extra == "dev"
@@ -109,6 +109,7 @@ Provides-Extra: build
109
109
  Requires-Dist: build; extra == "build"
110
110
  Requires-Dist: twine; extra == "build"
111
111
  Requires-Dist: check-wheel-contents; extra == "build"
112
+ Dynamic: license-file
112
113
 
113
114
  # Introduction
114
115
  This is a project designed to provide a number of functions related to parsing and processing earthquake ground motion data, building on top of the [ObsPy](https://github.com/obspy/obspy/wiki) library.
@@ -132,22 +133,34 @@ This will require that you create an account at code.usgs.gov, which is a more i
132
133
  # Suggested Citation
133
134
  If you wish to cite this software please cite:
134
135
 
135
- - Thompson, E.M., M. Hearne, B.T. Aagaard, J.M. Rekoske, C.B. Worden, M.P. Moschetti, H.E. Hunsinger, G.C. Ferragut, G.A. Parker, J.A. Smith, K.K. Smith, and A.R. Kottke (2024). USGS Automated Ground Motion Processing Software Version 2, U.S. Geological Survey software release. [https://doi.org/10.5066/P13HMKFJ](https://doi.org/10.5066/P13HMKFJ)
136
-
136
+ - Thompson, E.M., M. Hearne, B.T. Aagaard, J.M. Rekoske, C.B. Worden, M.P. Moschetti, H.E. Hunsinger, G.C. Ferragut, G.A. Parker, J.A. Smith, K.K. Smith, and A.R. Kottke (2024). USGS Automated Ground Motion Processing Software Version 2, U.S. Geological Survey software release, doi: [10.5066/P13HMKFJ](https://doi.org/10.5066/P13HMKFJ).
137
+
138
+ - Thompson, E.M., M. Hearne, B.T. Aagaard, J.M. Rekoske, C.B. Worden, M.P. Moschetti, H.E. Hunsinger, G.C. Ferragut, G.A. Parker, J.A. Smith, Smith, K.K., and A.R. Kottke (2025). Automated, Near Real‐Time Ground‐Motion Processing at the US Geological Survey. _Seismological Research Letters_, 96(1), pp.538-553, doi: [10.1785/0220240021](https://doi.org/10.1785/0220240021).
139
+
137
140
  # Journal Articles
138
141
  The list below is a subset of articles that made use of this software in their study. If you would like to have an article added to this list, please open an issue or email the developers.
139
142
 
140
- - Ahdi, S.K., B.T. Aagaard, M.P. Moschetti, G.A. Parker, O.S. Boyd, W.J. Stephenson (2024). Empirical ground-motion basin response in the California Great Valley, Reno, Nevada, and Portland, Oregon. _Earthquake Spectra_, 40(2):1099-1131. [https://doi.org/10.1177/87552930241237250](https://doi.org/10.1177/87552930241237250)
143
+ - Ahdi, S.K., B.T. Aagaard, M.P. Moschetti, G.A. Parker, O.S. Boyd, and W.J. Stephenson (2024). Empirical ground-motion basin response in the California Great Valley, Reno, Nevada, and Portland, Oregon. _Earthquake Spectra_, 40(2): 1099-1131, doi: [10.1177/87552930241237250](https://doi.org/10.1177/87552930241237250).
144
+
145
+ - Boyd OS, D. Churchwell, M.P. Moschetti, et al. (2024). Sediment thickness map of United States Atlantic and Gulf Coastal Plain Strata, and their influence on earthquake ground motions. _Earthquake Spectra_, 40(1): 89-112, doi: [10.1177/87552930231204880](https://doi.org/10.1177/87552930231204880).
146
+
147
+ - Chatterjee, A., D.T. Trugman, G. Hirth, J. Lee, and V.C. Tsai (2024). High‐frequency ground motions of earthquakes correlate with fault network complexity. _Geophysical Research Letters_, 51(12), doi: [10.1029/2024GL109418](https://doi.org/10.1029/2024GL109418).
148
+
149
+ - Hirakawa, E., G.A. Parker, A. Baltay, and T. Hanks (2023). Rupture directivity of the 25 October 2022 Mw 5.1 Alum Rock earthquake. _The Seismic Record_, 3(2): 144-155, doi: [10.1785/0320230013](https://doi.org/10.1785/0320230013).
150
+
151
+ - Ji, C., A. Cabas, A. Kottke, M. Pilz, J. Macedo, and C. Liu (2023). A DesignSafe earthquake ground motion database for California and surrounding regions. _Earthquake Spectra_, 39(1): 702–721, doi: [10.1177/87552930221141108](https://doi.org/10.1177/87552930221141108).
152
+
153
+ - Li, M., E.M. Rathje, J.P. Stewart, M.E. Ramos-Sepulveda, and Y.M. Hashash (2025). Regional adjustment to the NGA-East GMM for Texas, Oklahoma, and Kansas. _Earthquake Spectra_, doi: [10.1177/87552930251313817](https://doi.org/10.1177/87552930251313817).
141
154
 
142
- - Boyd OS, D. Churchwell, M.P. Moschetti, et al. (2024). Sediment thickness map of United States Atlantic and Gulf Coastal Plain Strata, and their influence on earthquake ground motions. _Earthquake Spectra_, 40(1):89-112. [https://doi.org/10.1177/87552930231204880](https://doi.org/10.1177/87552930231204880)
155
+ - Mohammed, S., R. Shams, C.C. Nweke, T.E. Buckreis, M.D. Kohler, Y. Bozorgnia, and J.P. Stewart (2024). Usability of Community Seismic Network recordings for ground-motion modeling. _Earthquake Spectra_, 40(4): 2598-2622, doi: [10.1177/87552930241267749](https://doi.org/10.1177/87552930241267749).
143
156
 
144
- - Ji, C., A. Cabas, A. Kottke, M. Pilz, J. Macedo, C. Liu (2023). A DesignSafe earthquake ground motion database for California and surrounding regions. _Earthquake Spectra_, 39 (1): 702–721. [https://doi.org/10.1177/87552930221141108](https://doi.org/10.1177/87552930221141108)
157
+ - Moschetti M.P., E.M. Thompson, J.M. Rekoske, M. Hearne, P. Powers, D. McNamara, and C. Tape (2019). Ground‐Motion Amplification in Cook Inlet Region, Alaska, from Intermediate‐Depth Earthquakes, Including the 2018 7.1 Anchorage Earthquake. _Seismological Research Letters_, 91(1): 142–152, doi: [10.1785/0220190179](https://doi.org/10.1785/0220190179).
145
158
 
146
- - Moschetti M.P., E.M. Thompson, J.M. Rekoske, M. Hearne, P. Powers, D. McNamara, C. Tape (2019). Ground‐Motion Amplification in Cook Inlet Region, Alaska, from Intermediate‐Depth Earthquakes, Including the 2018 7.1 Anchorage Earthquake. _Seismological Research Letters_, 91 (1): 142–152. [https://doi.org/10.1785/0220190179](https://doi.org/10.1785/0220190179)
159
+ - Moschetti, M.P., B.T. Aagaard, S.K. Ahdi, J. Altekruse, O.S. Boyd, A.D. Frankel, J. Herrick, M.D. Petersen, P.M. Powers, S. Rezaeian, and A.M. Shumway (2024). The 2023 US national seismic hazard model: Ground-motion characterization for the conterminous United States. _Earthquake Spectra_, 40(2): 1158-1190, doi: [10.1177/87552930231223995](https://doi.org/10.1177/87552930231223995).
147
160
 
148
- - Parker G, A. Baltay (2022). Empirical Map‐Based Nonergodic Models of Site Response in the Greater Los Angeles Area. _Bulletin of the Seismological Society of America_, 112 (3): 1607–1629. [https://doi.org/10.1785/0120210175](https://doi.org/10.1785/0120210175)
161
+ - Parker, G.A., and A.S. Baltay (2022). Empirical Map‐Based Nonergodic Models of Site Response in the Greater Los Angeles Area. _Bulletin of the Seismological Society of America_, 112(3): 1607–1629, doi: [10.1785/0120210175](https://doi.org/10.1785/0120210175)
149
162
 
150
- - Rekoske J.M., E.M. Thompson, M.P. Moschetti, M. Hearne, B.T. Aagaard, G. Parker (2020). The 2019 Ridgecrest, California, Earthquake Sequence Ground Motions: Processed Records and Derived Intensity Metrics. _Seismological Research Letters_, 91 (4): 2010–2023. [https://doi.org/10.1785/0220190292](https://doi.org/10.1785/0220190292)
163
+ - Rekoske J.M., E.M. Thompson, M.P. Moschetti, M. Hearne, B.T. Aagaard, and G.A. Parker (2020). The 2019 Ridgecrest, California, Earthquake Sequence Ground Motions: Processed Records and Derived Intensity Metrics. _Seismological Research Letters_, 91(4): 2010–2023, doi: [10.1785/0220190292](https://doi.org/10.1785/0220190292)
151
164
 
152
165
  # Disclaimer
153
166
 
@@ -0,0 +1,54 @@
1
+ # Introduction
2
+ This is a project designed to provide a number of functions related to parsing and processing earthquake ground motion data, building on top of the [ObsPy](https://github.com/obspy/obspy/wiki) library.
3
+ Most of the extensions that we provide are to handle strong motion data and related issues.
4
+
5
+
6
+ # Documentation
7
+ - Please note, we are in the process of improving the documentation and that there are some incomplete sections.
8
+ - The full documentation can be viewed locally by running the `docs/makedocs.sh` script.
9
+ - The documentation is also available [here](https://ghsc.code-pages.usgs.gov/esi/groundmotion-processing/).
10
+ - The MATLAB functions included in the `tools/matlab` directory include a short [tutorial](tools/matlab/readme.md)
11
+
12
+ # Getting Help
13
+ The developers can be reached at [gmprocess@usgs.gov](mailto:gmprocess@usgs.gov).
14
+
15
+ If you would like to post an issue to ask a question, request a new feature, or report a bug, you can do so at the [github mirror](https://github.com/DOI-USGS/ghsc-esi-groundmotion-processing) of this repository.
16
+
17
+ If you would like to contribute merge requests to this repository, please let us know and we can add you as a collaborator.
18
+ This will require that you create an account at code.usgs.gov, which is a more involved process than creating a personal account at gitub.com and posting to the issues on the github mirror.
19
+
20
+ # Suggested Citation
21
+ If you wish to cite this software please cite:
22
+
23
+ - Thompson, E.M., M. Hearne, B.T. Aagaard, J.M. Rekoske, C.B. Worden, M.P. Moschetti, H.E. Hunsinger, G.C. Ferragut, G.A. Parker, J.A. Smith, K.K. Smith, and A.R. Kottke (2024). USGS Automated Ground Motion Processing Software Version 2, U.S. Geological Survey software release, doi: [10.5066/P13HMKFJ](https://doi.org/10.5066/P13HMKFJ).
24
+
25
+ - Thompson, E.M., M. Hearne, B.T. Aagaard, J.M. Rekoske, C.B. Worden, M.P. Moschetti, H.E. Hunsinger, G.C. Ferragut, G.A. Parker, J.A. Smith, Smith, K.K., and A.R. Kottke (2025). Automated, Near Real‐Time Ground‐Motion Processing at the US Geological Survey. _Seismological Research Letters_, 96(1), pp.538-553, doi: [10.1785/0220240021](https://doi.org/10.1785/0220240021).
26
+
27
+ # Journal Articles
28
+ The list below is a subset of articles that made use of this software in their study. If you would like to have an article added to this list, please open an issue or email the developers.
29
+
30
+ - Ahdi, S.K., B.T. Aagaard, M.P. Moschetti, G.A. Parker, O.S. Boyd, and W.J. Stephenson (2024). Empirical ground-motion basin response in the California Great Valley, Reno, Nevada, and Portland, Oregon. _Earthquake Spectra_, 40(2): 1099-1131, doi: [10.1177/87552930241237250](https://doi.org/10.1177/87552930241237250).
31
+
32
+ - Boyd OS, D. Churchwell, M.P. Moschetti, et al. (2024). Sediment thickness map of United States Atlantic and Gulf Coastal Plain Strata, and their influence on earthquake ground motions. _Earthquake Spectra_, 40(1): 89-112, doi: [10.1177/87552930231204880](https://doi.org/10.1177/87552930231204880).
33
+
34
+ - Chatterjee, A., D.T. Trugman, G. Hirth, J. Lee, and V.C. Tsai (2024). High‐frequency ground motions of earthquakes correlate with fault network complexity. _Geophysical Research Letters_, 51(12), doi: [10.1029/2024GL109418](https://doi.org/10.1029/2024GL109418).
35
+
36
+ - Hirakawa, E., G.A. Parker, A. Baltay, and T. Hanks (2023). Rupture directivity of the 25 October 2022 Mw 5.1 Alum Rock earthquake. _The Seismic Record_, 3(2): 144-155, doi: [10.1785/0320230013](https://doi.org/10.1785/0320230013).
37
+
38
+ - Ji, C., A. Cabas, A. Kottke, M. Pilz, J. Macedo, and C. Liu (2023). A DesignSafe earthquake ground motion database for California and surrounding regions. _Earthquake Spectra_, 39(1): 702–721, doi: [10.1177/87552930221141108](https://doi.org/10.1177/87552930221141108).
39
+
40
+ - Li, M., E.M. Rathje, J.P. Stewart, M.E. Ramos-Sepulveda, and Y.M. Hashash (2025). Regional adjustment to the NGA-East GMM for Texas, Oklahoma, and Kansas. _Earthquake Spectra_, doi: [10.1177/87552930251313817](https://doi.org/10.1177/87552930251313817).
41
+
42
+ - Mohammed, S., R. Shams, C.C. Nweke, T.E. Buckreis, M.D. Kohler, Y. Bozorgnia, and J.P. Stewart (2024). Usability of Community Seismic Network recordings for ground-motion modeling. _Earthquake Spectra_, 40(4): 2598-2622, doi: [10.1177/87552930241267749](https://doi.org/10.1177/87552930241267749).
43
+
44
+ - Moschetti M.P., E.M. Thompson, J.M. Rekoske, M. Hearne, P. Powers, D. McNamara, and C. Tape (2019). Ground‐Motion Amplification in Cook Inlet Region, Alaska, from Intermediate‐Depth Earthquakes, Including the 2018 7.1 Anchorage Earthquake. _Seismological Research Letters_, 91(1): 142–152, doi: [10.1785/0220190179](https://doi.org/10.1785/0220190179).
45
+
46
+ - Moschetti, M.P., B.T. Aagaard, S.K. Ahdi, J. Altekruse, O.S. Boyd, A.D. Frankel, J. Herrick, M.D. Petersen, P.M. Powers, S. Rezaeian, and A.M. Shumway (2024). The 2023 US national seismic hazard model: Ground-motion characterization for the conterminous United States. _Earthquake Spectra_, 40(2): 1158-1190, doi: [10.1177/87552930231223995](https://doi.org/10.1177/87552930231223995).
47
+
48
+ - Parker, G.A., and A.S. Baltay (2022). Empirical Map‐Based Nonergodic Models of Site Response in the Greater Los Angeles Area. _Bulletin of the Seismological Society of America_, 112(3): 1607–1629, doi: [10.1785/0120210175](https://doi.org/10.1785/0120210175)
49
+
50
+ - Rekoske J.M., E.M. Thompson, M.P. Moschetti, M. Hearne, B.T. Aagaard, and G.A. Parker (2020). The 2019 Ridgecrest, California, Earthquake Sequence Ground Motions: Processed Records and Derived Intensity Metrics. _Seismological Research Letters_, 91(4): 2010–2023, doi: [10.1785/0220190292](https://doi.org/10.1785/0220190292)
51
+
52
+ # Disclaimer
53
+
54
+ Any use of trade, firm, or product names is for descriptive purposes only and does not imply endorsement by the U.S. Government.
@@ -1,4 +1,86 @@
1
1
  [
2
+ {
3
+ "name": "groundmotion-processing",
4
+ "description": "Read and process ground motion waveform data",
5
+ "version": "v2.5.0",
6
+ "status": "Production",
7
+ "organization": "U.S. Geological Survey",
8
+ "vcs": "git",
9
+ "repositoryURL": "https://code.usgs.gov/ghsc/esi/groundmotion-processing.git",
10
+ "homepageURL": "https://code.usgs.gov/ghsc/esi/groundmotion-processing",
11
+ "downloadURL": "https://code.usgs.gov/ghsc/esi/groundmotion-processing/-/archive/v2.5.0/groundmotion-processing-v2.5.0.zip",
12
+ "disclaimerURL": "https://code.usgs.gov/ghsc/esi/groundmotion-processing/-/raw/v2.5.0/DISCLAIMER.md",
13
+ "permissions": {
14
+ "licenses": [
15
+ {
16
+ "name": "Public Domain, CC0-1.0",
17
+ "URL": "https://code.usgs.gov/ghsc/esi/groundmotion-processing/-/raw/v2.5.0/LICENSE.md"
18
+ }
19
+ ],
20
+ "usageType": "openSource",
21
+ "exemptionText": null
22
+ },
23
+ "laborHours": 1,
24
+ "languages": [
25
+ "python"
26
+ ],
27
+ "tags": [
28
+ "earthquake",
29
+ "impact",
30
+ "strong motion",
31
+ "amplitudes",
32
+ "ground motion",
33
+ "usg-artificial-intelligence"
34
+ ],
35
+ "contact": {
36
+ "name": "Eric Thompson",
37
+ "email": "emthompson@usgs.gov"
38
+ },
39
+ "date": {
40
+ "metadataLastUpdated": "2025-05-21"
41
+ }
42
+ },
43
+ {
44
+ "name": "groundmotion-processing",
45
+ "description": "Read and process ground motion waveform data",
46
+ "version": "v2.4.0",
47
+ "status": "Production",
48
+ "organization": "U.S. Geological Survey",
49
+ "vcs": "git",
50
+ "repositoryURL": "https://code.usgs.gov/ghsc/esi/groundmotion-processing.git",
51
+ "homepageURL": "https://code.usgs.gov/ghsc/esi/groundmotion-processing",
52
+ "downloadURL": "https://code.usgs.gov/ghsc/esi/groundmotion-processing/-/archive/v2.4.0/groundmotion-processing-v2.4.0.zip",
53
+ "disclaimerURL": "https://code.usgs.gov/ghsc/esi/groundmotion-processing/-/raw/v2.4.0/DISCLAIMER.md",
54
+ "permissions": {
55
+ "licenses": [
56
+ {
57
+ "name": "Public Domain, CC0-1.0",
58
+ "URL": "https://code.usgs.gov/ghsc/esi/groundmotion-processing/-/raw/v2.4.0/LICENSE.md"
59
+ }
60
+ ],
61
+ "usageType": "openSource",
62
+ "exemptionText": null
63
+ },
64
+ "laborHours": 1,
65
+ "languages": [
66
+ "python"
67
+ ],
68
+ "tags": [
69
+ "earthquake",
70
+ "impact",
71
+ "strong motion",
72
+ "amplitudes",
73
+ "ground motion",
74
+ "usg-artificial-intelligence"
75
+ ],
76
+ "contact": {
77
+ "name": "Eric Thompson",
78
+ "email": "emthompson@usgs.gov"
79
+ },
80
+ "date": {
81
+ "metadataLastUpdated": "2025-04-04"
82
+ }
83
+ },
2
84
  {
3
85
  "name": "groundmotion-processing",
4
86
  "description": "Read and process ground motion waveform data",
@@ -45,7 +45,7 @@ dependencies = [
45
45
  "setuptools-scm>=6.3.2",
46
46
  "statsmodels>=0.12.2",
47
47
  "tqdm>4.67",
48
- "usgs-strec>=2.3.2",
48
+ "usgs-strec>=2.3.11",
49
49
  "xlrd>=2.0",
50
50
  ]
51
51
 
@@ -357,7 +357,7 @@ class GMrecordsApp(object):
357
357
  "(1) a single column with ComCat event IDs, or "
358
358
  "(2) six columns in which those columns are: "
359
359
  "event_id (string, no spaces), time (any ISO standard for date/time), "
360
- "latitutde (float, decimal degrees), longitude (float, decimal "
360
+ "latitude (float, decimal degrees), longitude (float, decimal "
361
361
  "degrees), depth (float, km), magnitude (float), and magnitude type "
362
362
  "(string)."
363
363
  ),
@@ -111,6 +111,7 @@ class App:
111
111
  msg = "Failed to download STREC results."
112
112
  print(msg)
113
113
 
114
+
114
115
  def cli():
115
116
  """Command line interface to the cwa_gather application."""
116
117
 
@@ -133,7 +134,7 @@ def cli():
133
134
  - For "Channel", choose "HN?" for all strong motion stations.
134
135
  - For "Start Time (UTC)", enter a date before the event of interest.
135
136
  - For "End Time (UTC)", enter a date after the event of interest.
136
- - "Label", doesn't matter becasue they don't use what you put here.
137
+ - "Label", doesn't matter because they don't use what you put here.
137
138
  - Click the "Submit" button, and you should see a "Success!" pop up.
138
139
  - Next will be a screen showing a list of all of your downloads.
139
140
  - Right click on the most recent entry, it will be called "output.stationXML"
@@ -228,5 +229,6 @@ def cli():
228
229
  app = App()
229
230
  app.main(args.event_id, args.datafile, args.metadata)
230
231
 
232
+
231
233
  if __name__ == "__main__":
232
234
  cli()
@@ -103,7 +103,7 @@ class StationStream(Stream):
103
103
  if not isinstance(trace, StationTrace):
104
104
  raise ValueError(
105
105
  "Input Traces to StationStream must be of subtype "
106
- "StationTrace unless an invenotry is also provided."
106
+ "StationTrace unless an inventory is also provided."
107
107
  )
108
108
  else:
109
109
  if not isinstance(trace, StationTrace):
@@ -136,23 +136,27 @@ class StationStream(Stream):
136
136
 
137
137
  # If not, resample
138
138
  if not success:
139
- for tr in self.traces:
140
- tr.interpolate(
141
- sampling_rate=1 / new_delta,
142
- method="lanczos",
143
- starttime=newstart,
144
- npts=new_npts,
145
- a=N_LANCZOS,
146
- )
147
- tr.set_provenance(
148
- "interpolate",
149
- {
150
- "interpolation_method": "lanczos",
151
- "new_number_of_samples": new_npts,
152
- "new_start_time": newstart,
153
- "a": N_LANCZOS,
154
- },
155
- )
139
+ try:
140
+ for tr in self.traces:
141
+ tr.interpolate(
142
+ sampling_rate=1 / new_delta,
143
+ method="lanczos",
144
+ starttime=newstart,
145
+ npts=new_npts,
146
+ a=N_LANCZOS,
147
+ )
148
+ tr.set_provenance(
149
+ "interpolate",
150
+ {
151
+ "interpolation_method": "lanczos",
152
+ "new_number_of_samples": new_npts,
153
+ "new_start_time": newstart,
154
+ "a": N_LANCZOS,
155
+ },
156
+ )
157
+ except BaseException:
158
+ for tr in self.traces:
159
+ tr.fail("Traces within stream are misaligned.")
156
160
  else:
157
161
  # start/end times may be different but within tolerance
158
162
  # to prevent further issues downstream, setting these
@@ -164,7 +168,7 @@ class StationStream(Stream):
164
168
  if not isinstance(trace, StationTrace):
165
169
  raise ValueError(
166
170
  "Input Traces to StationStream must be of subtype "
167
- "StationTrace unless an invenotry is also provided."
171
+ "StationTrace unless an inventory is also provided."
168
172
  )
169
173
  else:
170
174
  if not isinstance(trace, StationTrace):
@@ -221,7 +225,7 @@ class StationStream(Stream):
221
225
  all_codes = []
222
226
  for tr in self:
223
227
  stats = tr.stats
224
- all_codes.append(f"{stats.network}.{stats.station}.{stats.channel}")
228
+ all_codes.append(f"{stats.network}.{stats.station}.{stats.location}.{stats.channel}")
225
229
  if len(set(all_codes)) != len(all_codes):
226
230
  for tr in self:
227
231
  tr.fail("Nonunique channel code in StationStream.")
@@ -229,37 +233,43 @@ class StationStream(Stream):
229
233
  def __check_id(self):
230
234
  # Check that id is consistent, and set id if it passes the check.
231
235
  if len(self):
232
- stats = self.traces[0].stats
233
- if hasattr(self, "use_array") and self.use_array:
234
- trace = self[0]
235
- id_str = ".".join(
236
- [
237
- trace.stats.network,
238
- trace.stats.station,
239
- trace.stats.location,
240
- trace.stats.channel,
241
- ],
242
- )
236
+ use_array = hasattr(self, "use_array") and self.use_array
237
+ stats = self[0].stats
238
+ if use_array:
239
+ id_str = ".".join([
240
+ stats.network,
241
+ stats.station,
242
+ stats.location,
243
+ stats.channel,
244
+ ])
243
245
  else:
244
- id_str = f"{stats.network}.{stats.station}.{stats.channel[0:2]}"
246
+ id_str = ".".join([
247
+ stats.network,
248
+ stats.station,
249
+ stats.location,
250
+ stats.channel[0:2],
251
+ ])
245
252
 
246
253
  # Check that the id would be the same for all traces
247
- for tr in self:
254
+ for tr in self: # Use self to avoid creating temporary object
248
255
  stats = tr.stats
249
- if hasattr(self, "use_array") and self.use_array:
250
- test_str = ".".join(
251
- [
252
- stats.network,
253
- stats.station,
254
- stats.location,
255
- stats.channel,
256
- ],
257
- )
256
+ if use_array:
257
+ test_str = ".".join([
258
+ stats.network,
259
+ stats.station,
260
+ stats.location,
261
+ stats.channel,
262
+ ])
258
263
  else:
259
- test_str = f"{stats.network}.{stats.station}.{stats.channel[0:2]}"
264
+ test_str = ".".join([
265
+ stats.network,
266
+ stats.station,
267
+ stats.location,
268
+ stats.channel[0:2],
269
+ ])
260
270
 
261
271
  if id_str != test_str:
262
- raise ValueError("Inconsistent stream ID for different traces.")
272
+ raise ValueError(f"Inconsistent stream IDs {id_str} and {test_str} for different traces.")
263
273
  self.id = id_str
264
274
 
265
275
  def get_id(self):
@@ -273,13 +283,12 @@ class StationStream(Stream):
273
283
  return self.id
274
284
 
275
285
  def get_net_sta(self):
276
- """Get just the network and station compopnent of the ID."""
277
- return ".".join(self.get_id().split(".")[0:2])
286
+ """Get just the network and station components of the ID."""
287
+ return ".".join(self.id.split(".")[0:2])
278
288
 
279
289
  def get_net_sta_loc(self):
280
- """Get network, station, and location codes."""
281
- stats = self[0].stats
282
- return ".".join([stats.network, stats.station, stats.location])
290
+ """Get just the network, station, and location components of the ID."""
291
+ return ".".join(self.id.split(".")[0:3])
283
292
 
284
293
  def get_inst(self):
285
294
  """Get first two characters of the channel code."""