gmprocess 2.2.0__tar.gz → 2.4.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 (252) hide show
  1. {gmprocess-2.2.0 → gmprocess-2.4.0}/CHANGELOG.md +52 -5
  2. {gmprocess-2.2.0 → gmprocess-2.4.0}/CONTRIBUTING.md +4 -4
  3. {gmprocess-2.2.0 → gmprocess-2.4.0}/PKG-INFO +23 -10
  4. gmprocess-2.4.0/README.md +54 -0
  5. {gmprocess-2.2.0 → gmprocess-2.4.0}/code.json +82 -0
  6. {gmprocess-2.2.0 → gmprocess-2.4.0}/setup_env.sh +33 -11
  7. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/apps/gmrecords.py +3 -2
  8. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/bin/cwa_gather.py +3 -1
  9. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/core/scalar_event.py +1 -1
  10. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/core/stationstream.py +24 -23
  11. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/core/stationtrace.py +70 -33
  12. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/core/streamcollection.py +14 -29
  13. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/config_production.yml +67 -37
  14. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/config_production_v1.yml +3 -3
  15. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/config_test.yml +19 -214
  16. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/config_test_download.yml +2 -2
  17. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/asdf/flatfile.py +8 -0
  18. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/asdf/flatfile_constants.py +4 -2
  19. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/asdf/stream_workspace.py +13 -11
  20. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/asdf/waveform_metrics_xml.py +6 -3
  21. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/cosmos/cesmd_search.py +0 -2
  22. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/cosmos/core.py +72 -22
  23. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/cosmos/cosmos_writer.py +190 -88
  24. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/cwb/core.py +0 -4
  25. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/dmg/core.py +3 -15
  26. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/dynamic_search_parameters.py +9 -2
  27. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/esm/core.py +0 -2
  28. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/geonet/core.py +0 -7
  29. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/knet/core.py +0 -4
  30. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/knet/knet_fetcher.py +0 -4
  31. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/obspy/core.py +22 -6
  32. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/read_directory.py +11 -3
  33. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/report.py +12 -3
  34. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/smc/core.py +1 -6
  35. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/usc/core.py +0 -7
  36. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/metrics/containers.py +9 -0
  37. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/metrics/oscillator.py +4 -3
  38. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/metrics/reduce.py +89 -7
  39. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/metrics/station_metric.py +1 -1
  40. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/metrics/station_metric_collection.py +1 -1
  41. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/metrics/transform.py +85 -32
  42. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/metrics/waveform_metric_calculator.py +20 -3
  43. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/metrics/waveform_metric_collection.py +16 -5
  44. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/metrics/waveform_metric_list.py +1 -1
  45. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/metrics/waveform_metric_type.py +91 -9
  46. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/base.py +2 -2
  47. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/process_waveforms.py +3 -3
  48. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/processing_steps.py +1 -1
  49. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/assemble_utils.py +0 -9
  50. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/config.py +77 -3
  51. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/config_versioning.py +12 -0
  52. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/constants.py +2 -0
  53. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/download_utils.py +7 -1
  54. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/export_gmpacket_utils.py +1 -0
  55. gmprocess-2.4.0/src/gmprocess/utils/memory.py +32 -0
  56. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/summary_plots.py +11 -5
  57. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/tests_utils.py +1 -1
  58. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/adjust_highpass.py +21 -12
  59. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/adjust_highpass_ridder.py +24 -2
  60. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/clipping/clipping_ann.py +1 -1
  61. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/clipping/clipping_check.py +0 -4
  62. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/clipping/jerk.py +1 -1
  63. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/clipping/max_amp.py +1 -1
  64. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/clipping/ping.py +2 -2
  65. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/clipping/std_dev.py +1 -1
  66. gmprocess-2.4.0/src/gmprocess/waveform_processing/convert_units.py +30 -0
  67. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/corner_frequencies.py +5 -8
  68. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/detrend.py +7 -1
  69. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/fft.py +8 -8
  70. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/filtering.py +95 -1
  71. gmprocess-2.4.0/src/gmprocess/waveform_processing/instrument_response.py +500 -0
  72. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/nn_quality_assurance.py +6 -9
  73. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/phase.py +2 -2
  74. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/pretesting.py +1 -6
  75. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/prism_adaptive_baseline.py +2 -2
  76. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/processing.py +21 -11
  77. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/sanity_checks.py +1 -1
  78. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/snr.py +15 -11
  79. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/spectrum.py +13 -9
  80. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/windows.py +158 -69
  81. gmprocess-2.4.0/src/gmprocess/waveform_processing/zero_pad.py +90 -0
  82. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess.egg-info/PKG-INFO +23 -10
  83. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess.egg-info/SOURCES.txt +2 -0
  84. gmprocess-2.2.0/README.md +0 -42
  85. gmprocess-2.2.0/src/gmprocess/waveform_processing/instrument_response.py +0 -253
  86. gmprocess-2.2.0/src/gmprocess/waveform_processing/zero_pad.py +0 -27
  87. {gmprocess-2.2.0 → gmprocess-2.4.0}/.coveragerc +0 -0
  88. {gmprocess-2.2.0 → gmprocess-2.4.0}/.gitignore +0 -0
  89. {gmprocess-2.2.0 → gmprocess-2.4.0}/.gitlab-ci.yml +0 -0
  90. {gmprocess-2.2.0 → gmprocess-2.4.0}/CODE_OF_CONDUCT.md +0 -0
  91. {gmprocess-2.2.0 → gmprocess-2.4.0}/DISCLAIMER.md +0 -0
  92. {gmprocess-2.2.0 → gmprocess-2.4.0}/LICENSE.md +0 -0
  93. {gmprocess-2.2.0 → gmprocess-2.4.0}/MANIFEST.in +0 -0
  94. {gmprocess-2.2.0 → gmprocess-2.4.0}/pyproject.toml +0 -0
  95. {gmprocess-2.2.0 → gmprocess-2.4.0}/pytest.ini +0 -0
  96. {gmprocess-2.2.0 → gmprocess-2.4.0}/setup.cfg +0 -0
  97. {gmprocess-2.2.0 → gmprocess-2.4.0}/setup.py +0 -0
  98. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/__init__.py +0 -0
  99. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/apps/__init__.py +0 -0
  100. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/bin/__init__.py +0 -0
  101. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/bin/bundle_datarelease.py +0 -0
  102. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/bin/fetch_orfeus.py +0 -0
  103. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/bin/fix_inventory.py +0 -0
  104. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/bin/gmconvert.py +0 -0
  105. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/bin/gminfo.py +0 -0
  106. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/bin/gmprocess_config.py +0 -0
  107. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/bin/gmrecords.py +0 -0
  108. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/bin/gmworkspace.py +0 -0
  109. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/bin/update_event_json.sh +0 -0
  110. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/core/__init__.py +0 -0
  111. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/core/provenance.py +0 -0
  112. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/core/streamarray.py +0 -0
  113. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/CESMD_NGA_ids.csv +0 -0
  114. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/__init__.py +0 -0
  115. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/cosmos_table10.xls +0 -0
  116. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/cosmos_table4.xls +0 -0
  117. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/demo/ci38457511/raw/CICCC.RAW +0 -0
  118. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/demo/ci38457511/raw/CICLC.v1 +0 -0
  119. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/demo/ci38457511/raw/CITOW2.RAW +0 -0
  120. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/demo/nc72282711/workspace.h5 +0 -0
  121. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/fdsn_codes.csv +0 -0
  122. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/lme/SA_rotd50.0_2020.03.31.csv +0 -0
  123. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/modules.yml +0 -0
  124. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nga_w2_selected.csv +0 -0
  125. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_clipping/bias_1.csv +0 -0
  126. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_clipping/bias_output.csv +0 -0
  127. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_clipping/masterF.txt +0 -0
  128. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_clipping/weight_1.csv +0 -0
  129. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_clipping/weight_output.csv +0 -0
  130. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/Cant/M.csv +0 -0
  131. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/Cant/bias_1.csv +0 -0
  132. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/Cant/bias_2.csv +0 -0
  133. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/Cant/bias_output.csv +0 -0
  134. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/Cant/final_training.csv +0 -0
  135. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/Cant/masterF.txt +0 -0
  136. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/Cant/model_3.txt +0 -0
  137. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/Cant/model_5.txt +0 -0
  138. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/Cant/mu_sigma.csv +0 -0
  139. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/Cant/weight_1.csv +0 -0
  140. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/Cant/weight_2.csv +0 -0
  141. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/Cant/weight_output.csv +0 -0
  142. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/CantWell/M.csv +0 -0
  143. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/CantWell/bias_1.csv +0 -0
  144. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/CantWell/bias_2.csv +0 -0
  145. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/CantWell/bias_output.csv +0 -0
  146. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/CantWell/final_training.csv +0 -0
  147. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/CantWell/masterF.txt +0 -0
  148. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/CantWell/model_0.txt +0 -0
  149. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/CantWell/mu_sigma.csv +0 -0
  150. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/CantWell/weight_1.csv +0 -0
  151. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/CantWell/weight_2.csv +0 -0
  152. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/nn_qa/CantWell/weight_output.csv +0 -0
  153. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/picker.yml +0 -0
  154. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/station_coordinates.xlsx +0 -0
  155. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/data/usgs_ids_nga_and_srcmod_cross_reference.xlsx +0 -0
  156. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/gui/__init__.py +0 -0
  157. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/gui/gui_ucla/Documentation.md +0 -0
  158. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/gui/gui_ucla/GUI_human_review.ipynb +0 -0
  159. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/gui/gui_ucla/HumanReviewGUI.py +0 -0
  160. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/gui/gui_ucla/__init__.py +0 -0
  161. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/__init__.py +0 -0
  162. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/asdf/__init__.py +0 -0
  163. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/asdf/base_metrics_xml.py +0 -0
  164. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/asdf/core.py +0 -0
  165. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/asdf/path_utils.py +0 -0
  166. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/asdf/rupture.py +0 -0
  167. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/asdf/station_metrics_xml.py +0 -0
  168. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/asdf/utils.py +0 -0
  169. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/asdf/workspace_constants.py +0 -0
  170. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/bhrc/__init__.py +0 -0
  171. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/bhrc/core.py +0 -0
  172. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/cosmos/__init__.py +0 -0
  173. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/cosmos/cesmd_fetcher.py +0 -0
  174. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/cosmos/data_structures.py +0 -0
  175. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/cwb/__init__.py +0 -0
  176. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/dmg/__init__.py +0 -0
  177. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/esm/__init__.py +0 -0
  178. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/fetcher.py +0 -0
  179. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/geonet/__init__.py +0 -0
  180. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/global_fetcher.py +0 -0
  181. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/knet/__init__.py +0 -0
  182. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/nga.py +0 -0
  183. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/nsmn/__init__.py +0 -0
  184. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/nsmn/core.py +0 -0
  185. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/obspy/__init__.py +0 -0
  186. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/obspy/fdsn_fetcher.py +0 -0
  187. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/read.py +0 -0
  188. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/renadic/__init__.py +0 -0
  189. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/renadic/core.py +0 -0
  190. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/seedname.py +0 -0
  191. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/smc/__init__.py +0 -0
  192. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/unam/__init__.py +0 -0
  193. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/unam/core.py +0 -0
  194. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/usc/__init__.py +0 -0
  195. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/io/utils.py +0 -0
  196. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/metrics/__init__.py +0 -0
  197. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/metrics/combine.py +0 -0
  198. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/metrics/metric_collection_base.py +0 -0
  199. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/metrics/rotate.py +0 -0
  200. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/metrics/utils.py +0 -0
  201. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/metrics/waveform_metric_calculator_component_base.py +0 -0
  202. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/metrics/waveform_metric_component.py +0 -0
  203. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/__init__.py +0 -0
  204. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/arg_dicts.py +0 -0
  205. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/assemble.py +0 -0
  206. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/autoprocess.py +0 -0
  207. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/autoshakemap.py +0 -0
  208. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/clean.py +0 -0
  209. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/compute_station_metrics.py +0 -0
  210. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/compute_waveform_metrics.py +0 -0
  211. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/download.py +0 -0
  212. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/export_cosmos.py +0 -0
  213. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/export_failure_tables.py +0 -0
  214. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/export_gmpacket.py +0 -0
  215. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/export_metric_tables.py +0 -0
  216. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/export_provenance_tables.py +0 -0
  217. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/generate_regression_plot.py +0 -0
  218. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/generate_report.py +0 -0
  219. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/generate_station_maps.py +0 -0
  220. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/import_data.py +0 -0
  221. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/init.py +0 -0
  222. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/lazy_loader.py +0 -0
  223. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/subcommands/projects.py +0 -0
  224. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/__init__.py +0 -0
  225. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/args.py +0 -0
  226. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/ground_motion_models.py +0 -0
  227. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/logging.py +0 -0
  228. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/misc.py +0 -0
  229. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/misc_plots.py +0 -0
  230. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/prompt.py +0 -0
  231. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/report_utils.py +0 -0
  232. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/rupture_utils.py +0 -0
  233. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/strec.py +0 -0
  234. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/utils/tables.py +0 -0
  235. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/__init__.py +0 -0
  236. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/baseline_correction.py +0 -0
  237. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/clipping/clip_detection.py +0 -0
  238. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/clipping/histogram.py +0 -0
  239. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/integrate.py +0 -0
  240. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/processing_step.py +0 -0
  241. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/resample.py +0 -0
  242. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/taper.py +0 -0
  243. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess/waveform_processing/zero_crossings.py +0 -0
  244. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess.egg-info/dependency_links.txt +0 -0
  245. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess.egg-info/entry_points.txt +0 -0
  246. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess.egg-info/requires.txt +0 -0
  247. {gmprocess-2.2.0 → gmprocess-2.4.0}/src/gmprocess.egg-info/top_level.txt +0 -0
  248. {gmprocess-2.2.0 → gmprocess-2.4.0}/tools/matlab/README.md +0 -0
  249. {gmprocess-2.2.0 → gmprocess-2.4.0}/tools/matlab/get_all_waveforms.m +0 -0
  250. {gmprocess-2.2.0 → gmprocess-2.4.0}/tools/matlab/get_events.m +0 -0
  251. {gmprocess-2.2.0 → gmprocess-2.4.0}/tools/matlab/get_waveform_metrics.m +0 -0
  252. {gmprocess-2.2.0 → gmprocess-2.4.0}/tools/matlab/waveform_plot.png +0 -0
@@ -1,5 +1,52 @@
1
1
  ## main
2
2
 
3
+ ## 2.4.0 / 2025-04-04
4
+
5
+ - Enhancements
6
+ - Store only the peak value instead of the whole trace for waveform_metrics, resulting in significantly less memory usage.
7
+ - 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.
8
+ - COSMOS v0 writer incorporates sensitivity from StationXML stages in real #22 and real #42 headers
9
+ - Support FAS metric for individual channel components (this could be classified as a bugfix).
10
+ - Add helper functions to facilitate developers tracking memory usage with `tracemalloc`.
11
+ - Bugfix
12
+ - Fix error with zeropad method using 'fhp' to extracts filter order
13
+ - Fix cosmos v0 writer header failing to write sensitivities due to if statement testing 'trace.stats.standard' instead of 'trace.stats'
14
+ - Set self.output_units in instrument_response.RemoveResponse._remove_sensivitiy() to "ACC" (was not set).
15
+ - Get structure type from correct field in DMG format.
16
+ - Fix two calls to `numpy.mean()` to avoid warnings about zero length arrays.
17
+ - Fixed error in parsing units from COSMOS format.
18
+
19
+ ## 2.3.0 / 2025-01-23
20
+
21
+ - Enhancements
22
+ - Substantial changes to the default processing steps.
23
+ - Add support for psuedo-response spectra (PSA and PSV) and change default metrics to use PSA rather than SA.
24
+ - Allow for user to set a different query window duration for different tectonic environments.
25
+ - Increase default query window duration.
26
+ - 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.
27
+ - Exclude network 7D, which is for ocean bottom stations.
28
+ - 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.
29
+ - Update summary plots so that the time axis is the same across raw, accel, vel, and disp plots.
30
+ - Update report to plot stations in order of epicentral distance.
31
+ - Update setup_env.sh to use miniforge rather than miniconda and renamed to install.sh to be consistent with other repos.
32
+ - Add taper before differentiation for velocity instruments.
33
+ - Expand instrument response QA to include consistency of units with instrument type.
34
+ - Set unit registry to treat "counts" as having a unique dimension, rather than being dimensionless.
35
+ - Simplify SNR failure message.
36
+ - Allow water_level to be specified as "None" for the instrument response in config file.
37
+ - Add QA check for inconsistency in sample rate reported in data and metadata.
38
+ - Increase `sec_before_split` default value for trimming the record.
39
+ - Add config options to allow for using a Butterworth filter for filtering prior to instrument response removal, rather than the default options that ObsPy uses with their `remove_response` method.
40
+ - Add `bandpass` processing step.
41
+ - Documentation
42
+ - Fix the description of the --textfile option for gmrecords.
43
+ - Bugfix
44
+ - Do not exit when event id not found in comcat while looking for a rupture file.
45
+ - Ensure fill value matches the data type of the trace.
46
+ - Add provenance entry for when the detrend method is "pre".
47
+ - Fix errors in some filtering provenance entries.
48
+ - Bugfix in normalizing pre-event noise spectra.
49
+
3
50
  ## 2.2.0 / 2024-12-23
4
51
  - Enhancements
5
52
  - Add the PRISM/Jones et al. (doi: 10.1785/0220160200) adaptive baseline correction step.
@@ -25,7 +72,7 @@
25
72
  ## 2.1.2 / 2024-11-14
26
73
  - Enhancements
27
74
  - Station distance (epicentral distance) added to the reports
28
- - Add support velocity and dispacement COSMOS and DMG files
75
+ - Add support velocity and displacement COSMOS and DMG files
29
76
  - More graceful exiting when bad eventid is inputted to `download`
30
77
  - Allow `reports` to continue processing when an event directory is empty (no data)
31
78
  - 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.
@@ -61,7 +108,7 @@
61
108
  - Updated line styles of annotation lines in SNR plots.
62
109
  - Remove the `export_shakemap` subcommand.
63
110
  - Default config updates
64
- - Change KO smoothing paramter to 188.5.
111
+ - Change KO smoothing parameter to 188.5.
65
112
  - Add arias intensity.
66
113
  - Lower pga threshold on distance search criteria.
67
114
  - Update release instructions in CONTRIBUTING.md.
@@ -88,7 +135,7 @@
88
135
  - Other
89
136
  - Turned off automatic generation of moveout plot since it isn't getting used.
90
137
  - Renamed src/gmprocess/utils/test_utils.py to src/gmprocess/utils/test_utils.py to avoid it being detected as a unit test module.
91
- - Decrease precision in fetcher bounds and fix Geonet bounds to include negaive longitudes.
138
+ - Decrease precision in fetcher bounds and fix Geonet bounds to include negative longitudes.
92
139
  - Move the "config" subcommand to be a stand-alone command line program called "gmprocess_config".
93
140
  - Removed "list_metrics" command.
94
141
  - Removed cap on python version, increased minimum version to 3.9
@@ -136,7 +183,7 @@
136
183
  - Added station metric units to constants.
137
184
  - Bugfixes
138
185
  - Resolve key error that was preventing writing of metric tables when Arias Intensity was requested.
139
- - Resolve bug that occurs when multiple channels/stations are present in the invetory when trying to retrieve the sampling rate for the metric table.
186
+ - Resolve bug that occurs when multiple channels/stations are present in the inventory when trying to retrieve the sampling rate for the metric table.
140
187
 
141
188
  ## 1.2.8 / 2023-08-21
142
189
 
@@ -264,7 +311,7 @@
264
311
  - More gracefully handle cases where workspace file does not exist but is expected.
265
312
  - Add label arg to gmconvert.
266
313
  - Make colocated selection optional.
267
- - Replace stastic map with interactive HTML map and add to CLI tutorial in documentation.
314
+ - Replace statistic map with interactive HTML map and add to CLI tutorial in documentation.
268
315
  - Remove cartopy dependency.
269
316
  - Get scnl from COSMOS comments.
270
317
  - 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.1
1
+ Metadata-Version: 2.4
2
2
  Name: gmprocess
3
- Version: 2.2.0
3
+ Version: 2.4.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
@@ -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): 702721. [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): 142152, 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.4.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.4.0/groundmotion-processing-v2.4.0.zip",
12
+ "disclaimerURL": "https://code.usgs.gov/ghsc/esi/groundmotion-processing/-/raw/v2.4.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.4.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-04-04"
41
+ }
42
+ },
43
+ {
44
+ "name": "groundmotion-processing",
45
+ "description": "Read and process ground motion waveform data",
46
+ "version": "v2.3.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.3.0/groundmotion-processing-v2.3.0.zip",
53
+ "disclaimerURL": "https://code.usgs.gov/ghsc/esi/groundmotion-processing/-/raw/v2.3.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.3.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-01-23"
82
+ }
83
+ },
2
84
  {
3
85
  "name": "groundmotion-processing",
4
86
  "description": "Read and process ground motion waveform data",
@@ -8,11 +8,9 @@ echo "Installing ${VENV}...${cwd}"
8
8
  unamestr=`uname`
9
9
  if [ "$unamestr" == 'Linux' ]; then
10
10
  prof=~/.bashrc
11
- mini_conda_url=https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
12
11
  matplotlibdir=~/.config/matplotlib
13
12
  elif [ "$unamestr" == 'FreeBSD' ] || [ "$unamestr" == 'Darwin' ]; then
14
13
  prof=~/.bash_profile
15
- mini_conda_url=https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
16
14
  matplotlibdir=~/.matplotlib
17
15
  else
18
16
  echo "Unsupported environment. Exiting."
@@ -39,9 +37,7 @@ elif [ ! grep -Fxq "backend" $matplotlibrc ]; then
39
37
  echo "NOTE: A non-interactive matplotlib backend (Agg) has been set for this user."
40
38
  else
41
39
  sed -i '' 's/backend.*/backend : Agg/' $matplotlibrc
42
- echo "###############"
43
40
  echo "NOTE: $matplotlibrc has been changed to set 'backend : Agg'"
44
- echo "###############"
45
41
  fi
46
42
 
47
43
 
@@ -50,21 +46,45 @@ conda --version
50
46
  if [ $? -ne 0 ]; then
51
47
  echo "No conda detected, installing miniconda..."
52
48
 
53
- curl -L $mini_conda_url -o miniconda.sh;
49
+ command -v curl >/dev/null 2>&1 || { echo >&2 "Script requires curl but it's not installed. Aborting."; exit 1; }
50
+
51
+ miniforge_url="https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
52
+ curl -L $miniforge_url -o miniforge.sh &>/dev/null
53
+
54
+ # if miniforge.sh fails, bow out gracefully
55
+ if [ $? -ne 0 ];then
56
+ echo "Failed to run miniconda installer shell script. Exiting."
57
+ exit 1
58
+ fi
59
+
54
60
  echo "Install directory: $HOME/miniconda"
55
61
 
56
- bash miniconda.sh -f -b -p $HOME/miniconda
62
+ bash miniforge.sh -f -b -p $HOME/miniconda
57
63
 
58
64
  # Need this to get conda into path
59
65
  . $HOME/miniconda/etc/profile.d/conda.sh
66
+
67
+ rm miniforge.sh
60
68
  else
61
69
  echo "conda detected, installing $VENV environment..."
62
70
  fi
63
71
 
64
- echo "PATH:"
65
- echo $PATH
66
- echo ""
67
-
72
+ # Update the conda tool
73
+ CVNUM=`conda -V | cut -f2 -d' '`
74
+ LATEST=`conda search conda | tail -1 | tr -s ' ' | cut -f2 -d" "`
75
+ echo "${CVNUM}"
76
+ echo "${LATEST}"
77
+ if [ ${LATEST} != ${CVNUM} ]; then
78
+ echo "##################Updating conda tool..."
79
+ CVERSION=`conda -V`
80
+ echo "Current conda version: ${CVERSION}"
81
+ conda update -n base -c defaults conda -y
82
+ CVERSION=`conda -V`
83
+ echo "New conda version: ${CVERSION}"
84
+ echo "##################Done updating conda tool..."
85
+ else
86
+ echo "conda ${CVNUM} already matches latest version ${LATEST}. No update required."
87
+ fi
68
88
 
69
89
  # only add this line if it does not already exist
70
90
  grep "/etc/profile.d/conda.sh" $prof
@@ -72,6 +92,9 @@ if [ $? -ne 0 ]; then
72
92
  echo ". $_CONDA_ROOT/etc/profile.d/conda.sh" >> $prof
73
93
  fi
74
94
 
95
+ # Set libmamba as solver
96
+ conda config --set solver libmamba &>/dev/null
97
+
75
98
  # Start in conda base environment
76
99
  echo "Activate base virtual environment"
77
100
  conda activate base
@@ -87,7 +110,6 @@ if [ $? -ne 0 ]; then
87
110
  exit
88
111
  fi
89
112
 
90
-
91
113
  # Activate the new environment
92
114
  echo "Activating the $VENV virtual environment"
93
115
  conda activate $VENV
@@ -357,8 +357,9 @@ 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 "
361
- "degrees), depth (float, km), magnitude (float)."
360
+ "latitude (float, decimal degrees), longitude (float, decimal "
361
+ "degrees), depth (float, km), magnitude (float), and magnitude type "
362
+ "(string)."
362
363
  ),
363
364
  )
364
365
 
@@ -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()
@@ -276,7 +276,7 @@ def get_events_from_file(filename=None):
276
276
  fields = line.split(",")
277
277
  if len(fields) != 7:
278
278
  raise IOError(
279
- f"Expected 6 columns in events file '{filename}'. Error parsing line '{line}'."
279
+ f"Expected 7 columns in events file '{filename}'. Error parsing line '{line}'."
280
280
  )
281
281
  event_values = {
282
282
  "id": fields[0].strip(),
@@ -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):
@@ -184,8 +188,6 @@ class StationStream(Stream):
184
188
 
185
189
  def validate(self):
186
190
  """Validation checks for Traces within a StationStream."""
187
- logging.debug(self)
188
-
189
191
  # Check that channel codes are unique_npts
190
192
  self.__check_channels()
191
193
 
@@ -275,7 +277,7 @@ class StationStream(Stream):
275
277
  return self.id
276
278
 
277
279
  def get_net_sta(self):
278
- """Get just the network and station compopnent of the ID."""
280
+ """Get just the network and station component of the ID."""
279
281
  return ".".join(self.get_id().split(".")[0:2])
280
282
 
281
283
  def get_net_sta_loc(self):
@@ -520,7 +522,6 @@ def _channel_from_stats(stats):
520
522
  response = Response(instrument_sensitivity=sensitivity)
521
523
 
522
524
  comments = Comment(stats.standard.comments)
523
- logging.debug("channel: %s", stats.channel)
524
525
  channel = Channel(
525
526
  stats.channel,
526
527
  stats.location,