gmprocess 2.2.0__tar.gz → 2.3.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.2.0 → gmprocess-2.3.0}/CHANGELOG.md +32 -0
  2. {gmprocess-2.2.0 → gmprocess-2.3.0}/PKG-INFO +2 -2
  3. {gmprocess-2.2.0 → gmprocess-2.3.0}/code.json +41 -0
  4. {gmprocess-2.2.0 → gmprocess-2.3.0}/setup_env.sh +33 -11
  5. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/apps/gmrecords.py +2 -1
  6. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/core/scalar_event.py +1 -1
  7. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/core/stationstream.py +0 -3
  8. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/core/stationtrace.py +37 -15
  9. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/core/streamcollection.py +1 -2
  10. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/config_production.yml +51 -28
  11. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/config_test.yml +14 -209
  12. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/flatfile.py +8 -0
  13. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/flatfile_constants.py +4 -2
  14. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/stream_workspace.py +0 -2
  15. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/cosmos/cesmd_search.py +0 -2
  16. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/cwb/core.py +0 -4
  17. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/dmg/core.py +0 -12
  18. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/dynamic_search_parameters.py +9 -2
  19. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/esm/core.py +0 -2
  20. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/geonet/core.py +0 -7
  21. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/knet/core.py +0 -4
  22. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/knet/knet_fetcher.py +0 -4
  23. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/obspy/core.py +22 -6
  24. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/read_directory.py +0 -1
  25. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/report.py +12 -3
  26. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/smc/core.py +0 -5
  27. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/usc/core.py +0 -7
  28. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/containers.py +7 -0
  29. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/oscillator.py +2 -1
  30. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/reduce.py +88 -1
  31. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/transform.py +17 -4
  32. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/waveform_metric_calculator.py +17 -1
  33. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/waveform_metric_type.py +82 -0
  34. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/process_waveforms.py +3 -3
  35. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/assemble_utils.py +0 -9
  36. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/config.py +72 -3
  37. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/constants.py +2 -0
  38. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/download_utils.py +7 -1
  39. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/export_gmpacket_utils.py +1 -0
  40. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/summary_plots.py +11 -5
  41. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/adjust_highpass.py +20 -11
  42. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/adjust_highpass_ridder.py +4 -0
  43. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/clipping/clipping_check.py +0 -4
  44. gmprocess-2.3.0/src/gmprocess/waveform_processing/convert_units.py +30 -0
  45. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/corner_frequencies.py +0 -1
  46. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/detrend.py +6 -0
  47. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/fft.py +8 -8
  48. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/filtering.py +94 -0
  49. gmprocess-2.3.0/src/gmprocess/waveform_processing/instrument_response.py +499 -0
  50. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/nn_quality_assurance.py +0 -3
  51. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/pretesting.py +1 -6
  52. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/processing.py +19 -9
  53. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/snr.py +16 -12
  54. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/spectrum.py +4 -0
  55. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/windows.py +39 -21
  56. gmprocess-2.3.0/src/gmprocess/waveform_processing/zero_pad.py +90 -0
  57. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess.egg-info/PKG-INFO +2 -2
  58. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess.egg-info/SOURCES.txt +1 -0
  59. gmprocess-2.2.0/src/gmprocess/waveform_processing/instrument_response.py +0 -253
  60. gmprocess-2.2.0/src/gmprocess/waveform_processing/zero_pad.py +0 -27
  61. {gmprocess-2.2.0 → gmprocess-2.3.0}/.coveragerc +0 -0
  62. {gmprocess-2.2.0 → gmprocess-2.3.0}/.gitignore +0 -0
  63. {gmprocess-2.2.0 → gmprocess-2.3.0}/.gitlab-ci.yml +0 -0
  64. {gmprocess-2.2.0 → gmprocess-2.3.0}/CODE_OF_CONDUCT.md +0 -0
  65. {gmprocess-2.2.0 → gmprocess-2.3.0}/CONTRIBUTING.md +0 -0
  66. {gmprocess-2.2.0 → gmprocess-2.3.0}/DISCLAIMER.md +0 -0
  67. {gmprocess-2.2.0 → gmprocess-2.3.0}/LICENSE.md +0 -0
  68. {gmprocess-2.2.0 → gmprocess-2.3.0}/MANIFEST.in +0 -0
  69. {gmprocess-2.2.0 → gmprocess-2.3.0}/README.md +0 -0
  70. {gmprocess-2.2.0 → gmprocess-2.3.0}/pyproject.toml +0 -0
  71. {gmprocess-2.2.0 → gmprocess-2.3.0}/pytest.ini +0 -0
  72. {gmprocess-2.2.0 → gmprocess-2.3.0}/setup.cfg +0 -0
  73. {gmprocess-2.2.0 → gmprocess-2.3.0}/setup.py +0 -0
  74. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/__init__.py +0 -0
  75. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/apps/__init__.py +0 -0
  76. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/__init__.py +0 -0
  77. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/bundle_datarelease.py +0 -0
  78. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/cwa_gather.py +0 -0
  79. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/fetch_orfeus.py +0 -0
  80. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/fix_inventory.py +0 -0
  81. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/gmconvert.py +0 -0
  82. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/gminfo.py +0 -0
  83. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/gmprocess_config.py +0 -0
  84. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/gmrecords.py +0 -0
  85. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/gmworkspace.py +0 -0
  86. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/update_event_json.sh +0 -0
  87. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/core/__init__.py +0 -0
  88. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/core/provenance.py +0 -0
  89. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/core/streamarray.py +0 -0
  90. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/CESMD_NGA_ids.csv +0 -0
  91. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/__init__.py +0 -0
  92. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/config_production_v1.yml +0 -0
  93. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/config_test_download.yml +0 -0
  94. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/cosmos_table10.xls +0 -0
  95. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/cosmos_table4.xls +0 -0
  96. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/demo/ci38457511/raw/CICCC.RAW +0 -0
  97. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/demo/ci38457511/raw/CICLC.v1 +0 -0
  98. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/demo/ci38457511/raw/CITOW2.RAW +0 -0
  99. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/demo/nc72282711/workspace.h5 +0 -0
  100. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/fdsn_codes.csv +0 -0
  101. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/lme/SA_rotd50.0_2020.03.31.csv +0 -0
  102. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/modules.yml +0 -0
  103. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nga_w2_selected.csv +0 -0
  104. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_clipping/bias_1.csv +0 -0
  105. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_clipping/bias_output.csv +0 -0
  106. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_clipping/masterF.txt +0 -0
  107. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_clipping/weight_1.csv +0 -0
  108. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_clipping/weight_output.csv +0 -0
  109. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/M.csv +0 -0
  110. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/bias_1.csv +0 -0
  111. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/bias_2.csv +0 -0
  112. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/bias_output.csv +0 -0
  113. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/final_training.csv +0 -0
  114. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/masterF.txt +0 -0
  115. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/model_3.txt +0 -0
  116. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/model_5.txt +0 -0
  117. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/mu_sigma.csv +0 -0
  118. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/weight_1.csv +0 -0
  119. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/weight_2.csv +0 -0
  120. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/weight_output.csv +0 -0
  121. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/M.csv +0 -0
  122. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/bias_1.csv +0 -0
  123. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/bias_2.csv +0 -0
  124. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/bias_output.csv +0 -0
  125. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/final_training.csv +0 -0
  126. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/masterF.txt +0 -0
  127. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/model_0.txt +0 -0
  128. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/mu_sigma.csv +0 -0
  129. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/weight_1.csv +0 -0
  130. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/weight_2.csv +0 -0
  131. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/weight_output.csv +0 -0
  132. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/picker.yml +0 -0
  133. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/station_coordinates.xlsx +0 -0
  134. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/usgs_ids_nga_and_srcmod_cross_reference.xlsx +0 -0
  135. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/gui/__init__.py +0 -0
  136. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/gui/gui_ucla/Documentation.md +0 -0
  137. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/gui/gui_ucla/GUI_human_review.ipynb +0 -0
  138. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/gui/gui_ucla/HumanReviewGUI.py +0 -0
  139. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/gui/gui_ucla/__init__.py +0 -0
  140. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/__init__.py +0 -0
  141. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/__init__.py +0 -0
  142. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/base_metrics_xml.py +0 -0
  143. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/core.py +0 -0
  144. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/path_utils.py +0 -0
  145. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/rupture.py +0 -0
  146. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/station_metrics_xml.py +0 -0
  147. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/utils.py +0 -0
  148. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/waveform_metrics_xml.py +0 -0
  149. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/workspace_constants.py +0 -0
  150. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/bhrc/__init__.py +0 -0
  151. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/bhrc/core.py +0 -0
  152. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/cosmos/__init__.py +0 -0
  153. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/cosmos/cesmd_fetcher.py +0 -0
  154. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/cosmos/core.py +0 -0
  155. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/cosmos/cosmos_writer.py +0 -0
  156. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/cosmos/data_structures.py +0 -0
  157. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/cwb/__init__.py +0 -0
  158. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/dmg/__init__.py +0 -0
  159. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/esm/__init__.py +0 -0
  160. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/fetcher.py +0 -0
  161. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/geonet/__init__.py +0 -0
  162. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/global_fetcher.py +0 -0
  163. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/knet/__init__.py +0 -0
  164. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/nga.py +0 -0
  165. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/nsmn/__init__.py +0 -0
  166. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/nsmn/core.py +0 -0
  167. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/obspy/__init__.py +0 -0
  168. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/obspy/fdsn_fetcher.py +0 -0
  169. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/read.py +0 -0
  170. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/renadic/__init__.py +0 -0
  171. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/renadic/core.py +0 -0
  172. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/seedname.py +0 -0
  173. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/smc/__init__.py +0 -0
  174. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/unam/__init__.py +0 -0
  175. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/unam/core.py +0 -0
  176. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/usc/__init__.py +0 -0
  177. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/utils.py +0 -0
  178. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/__init__.py +0 -0
  179. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/combine.py +0 -0
  180. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/metric_collection_base.py +0 -0
  181. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/rotate.py +0 -0
  182. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/station_metric.py +0 -0
  183. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/station_metric_collection.py +0 -0
  184. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/utils.py +0 -0
  185. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/waveform_metric_calculator_component_base.py +0 -0
  186. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/waveform_metric_collection.py +0 -0
  187. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/waveform_metric_component.py +0 -0
  188. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/waveform_metric_list.py +0 -0
  189. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/__init__.py +0 -0
  190. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/arg_dicts.py +0 -0
  191. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/assemble.py +0 -0
  192. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/autoprocess.py +0 -0
  193. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/autoshakemap.py +0 -0
  194. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/base.py +0 -0
  195. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/clean.py +0 -0
  196. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/compute_station_metrics.py +0 -0
  197. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/compute_waveform_metrics.py +0 -0
  198. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/download.py +0 -0
  199. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/export_cosmos.py +0 -0
  200. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/export_failure_tables.py +0 -0
  201. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/export_gmpacket.py +0 -0
  202. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/export_metric_tables.py +0 -0
  203. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/export_provenance_tables.py +0 -0
  204. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/generate_regression_plot.py +0 -0
  205. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/generate_report.py +0 -0
  206. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/generate_station_maps.py +0 -0
  207. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/import_data.py +0 -0
  208. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/init.py +0 -0
  209. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/lazy_loader.py +0 -0
  210. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/processing_steps.py +0 -0
  211. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/projects.py +0 -0
  212. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/__init__.py +0 -0
  213. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/args.py +0 -0
  214. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/config_versioning.py +0 -0
  215. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/ground_motion_models.py +0 -0
  216. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/logging.py +0 -0
  217. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/misc.py +0 -0
  218. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/misc_plots.py +0 -0
  219. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/prompt.py +0 -0
  220. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/report_utils.py +0 -0
  221. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/rupture_utils.py +0 -0
  222. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/strec.py +0 -0
  223. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/tables.py +0 -0
  224. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/tests_utils.py +0 -0
  225. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/__init__.py +0 -0
  226. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/baseline_correction.py +0 -0
  227. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/clipping/clip_detection.py +0 -0
  228. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/clipping/clipping_ann.py +0 -0
  229. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/clipping/histogram.py +0 -0
  230. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/clipping/jerk.py +0 -0
  231. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/clipping/max_amp.py +0 -0
  232. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/clipping/ping.py +0 -0
  233. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/clipping/std_dev.py +0 -0
  234. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/integrate.py +0 -0
  235. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/phase.py +0 -0
  236. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/prism_adaptive_baseline.py +0 -0
  237. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/processing_step.py +0 -0
  238. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/resample.py +0 -0
  239. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/sanity_checks.py +0 -0
  240. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/taper.py +0 -0
  241. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/zero_crossings.py +0 -0
  242. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess.egg-info/dependency_links.txt +0 -0
  243. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess.egg-info/entry_points.txt +0 -0
  244. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess.egg-info/requires.txt +0 -0
  245. {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess.egg-info/top_level.txt +0 -0
  246. {gmprocess-2.2.0 → gmprocess-2.3.0}/tools/matlab/README.md +0 -0
  247. {gmprocess-2.2.0 → gmprocess-2.3.0}/tools/matlab/get_all_waveforms.m +0 -0
  248. {gmprocess-2.2.0 → gmprocess-2.3.0}/tools/matlab/get_events.m +0 -0
  249. {gmprocess-2.2.0 → gmprocess-2.3.0}/tools/matlab/get_waveform_metrics.m +0 -0
  250. {gmprocess-2.2.0 → gmprocess-2.3.0}/tools/matlab/waveform_plot.png +0 -0
@@ -1,5 +1,37 @@
1
1
  ## main
2
2
 
3
+
4
+ ## 2.3.0 / 2025-01-23
5
+
6
+ - Enhancements
7
+ - 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.
11
+ - 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
+ - Exclude network 7D, which is for ocean bottom stations.
13
+ - 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.
14
+ - Update summary plots so that the time axis is the same across raw, accel, vel, and disp plots.
15
+ - Update report to plot stations in order of epicentral distance.
16
+ - Update setup_env.sh to use miniforge rather than miniconda and renamed to install.sh to be consistent with other repos.
17
+ - Add taper before differentiation for velocity instruments.
18
+ - Expand instrument response QA to include consistency of units with instrument type.
19
+ - Set unit registry to treat "counts" as having a unique dimension, rather than being dimensionless.
20
+ - Simplify SNR failure message.
21
+ - Allow water_level to be specified as "None" for the instrument response in config file.
22
+ - Add QA check for inconsistency in sample rate reported in data and metadata.
23
+ - Increase `sec_before_split` default value for trimming the record.
24
+ - 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.
25
+ - Add `bandpass` processing step.
26
+ - Documentation
27
+ - Fix the description of the --textfile option for gmrecords.
28
+ - Bugfix
29
+ - Do not exit when event id not found in comcat while looking for a rupture file.
30
+ - Ensure fill value matches the data type of the trace.
31
+ - Add provenance entry for when the detrend method is "pre".
32
+ - Fix errors in some filtering provenance entries.
33
+ - Bugfix in normalizing pre-event noise spectra.
34
+
3
35
  ## 2.2.0 / 2024-12-23
4
36
  - Enhancements
5
37
  - Add the PRISM/Jones et al. (doi: 10.1785/0220160200) adaptive baseline correction step.
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: gmprocess
3
- Version: 2.2.0
3
+ Version: 2.3.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
@@ -1,4 +1,45 @@
1
1
  [
2
+ {
3
+ "name": "groundmotion-processing",
4
+ "description": "Read and process ground motion waveform data",
5
+ "version": "v2.3.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.3.0/groundmotion-processing-v2.3.0.zip",
12
+ "disclaimerURL": "https://code.usgs.gov/ghsc/esi/groundmotion-processing/-/raw/v2.3.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.3.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-01-23"
41
+ }
42
+ },
2
43
  {
3
44
  "name": "groundmotion-processing",
4
45
  "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
@@ -358,7 +358,8 @@ class GMrecordsApp(object):
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
360
  "latitutde (float, decimal degrees), longitude (float, decimal "
361
- "degrees), depth (float, km), magnitude (float)."
361
+ "degrees), depth (float, km), magnitude (float), and magnitude type "
362
+ "(string)."
362
363
  ),
363
364
  )
364
365
 
@@ -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(),
@@ -184,8 +184,6 @@ class StationStream(Stream):
184
184
 
185
185
  def validate(self):
186
186
  """Validation checks for Traces within a StationStream."""
187
- logging.debug(self)
188
-
189
187
  # Check that channel codes are unique_npts
190
188
  self.__check_channels()
191
189
 
@@ -520,7 +518,6 @@ def _channel_from_stats(stats):
520
518
  response = Response(instrument_sensitivity=sensitivity)
521
519
 
522
520
  comments = Comment(stats.standard.comments)
523
- logging.debug("channel: %s", stats.channel)
524
521
  channel = Channel(
525
522
  stats.channel,
526
523
  stats.location,
@@ -13,11 +13,11 @@ from obspy.core.trace import Trace
13
13
  from scipy.integrate import cumulative_trapezoid
14
14
 
15
15
  # local imports
16
- from gmprocess.utils.config import get_config
17
- from gmprocess.utils import constants
16
+ from gmprocess.core.provenance import TraceProvenance
18
17
  from gmprocess.io.cosmos.data_structures import BUILDING_TYPES
19
18
  from gmprocess.io.seedname import get_units_type
20
- from gmprocess.core.provenance import TraceProvenance
19
+ from gmprocess.utils.config import get_config
20
+ from gmprocess.utils import constants
21
21
 
22
22
 
23
23
  PROCESS_LEVELS = {
@@ -386,6 +386,7 @@ class StationTrace(Trace):
386
386
  "output_units": output_units,
387
387
  },
388
388
  )
389
+
389
390
  return self
390
391
 
391
392
  def zero_pad(self, length):
@@ -398,9 +399,18 @@ class StationTrace(Trace):
398
399
  length (float):
399
400
  The length (in sec) to padd with zeros before and after the trace.
400
401
  """
402
+ old_start_time = self.stats.starttime
403
+ old_end_time = self.stats.endtime
401
404
  start_time = self.stats.starttime - length
402
405
  end_time = self.stats.endtime + length
403
- self.trim(starttime=start_time, endtime=end_time, pad=True, fill_value=0.0)
406
+ fill_value = np.array(0, dtype=self.data.dtype)
407
+ self.trim(
408
+ starttime=start_time,
409
+ endtime=end_time,
410
+ pad=True,
411
+ fill_value=fill_value,
412
+ suppress_provenance=True,
413
+ )
404
414
 
405
415
  self.set_provenance(
406
416
  "pad",
@@ -408,10 +418,24 @@ class StationTrace(Trace):
408
418
  "fill_value": 0.0,
409
419
  "new_start_time": start_time,
410
420
  "new_end_time": end_time,
421
+ "old_start_time": old_start_time,
422
+ "old_end_time": old_end_time,
411
423
  },
412
424
  )
413
425
  return self
414
426
 
427
+ def strip_zero_pad(self):
428
+ """Remove zero pads from trace."""
429
+
430
+ pad_prov = self.get_provenance("pad")
431
+ if len(pad_prov) > 1:
432
+ raise ValueError("More than one 'pad' entry in provenance.")
433
+ start_time = pad_prov[0]["prov_attributes"].get("old_start_time")
434
+ end_time = pad_prov[0]["prov_attributes"].get("old_end_time")
435
+ self.trim(starttime=start_time, endtime=end_time)
436
+
437
+ return self
438
+
415
439
  def taper(self, max_percentage, type="hann", max_length=None, side="both"):
416
440
  """Taper trace and add entry to provenance.
417
441
 
@@ -472,6 +496,7 @@ class StationTrace(Trace):
472
496
  pad=False,
473
497
  nearest_sample=True,
474
498
  fill_value=None,
499
+ suppress_provenance=False,
475
500
  ):
476
501
  """Trim trace and add entry to provenance.
477
502
 
@@ -489,14 +514,15 @@ class StationTrace(Trace):
489
514
  See obspy docs.
490
515
  fill_value (int, float):
491
516
  Fill value for gaps.
517
+ suppress_provenance (bool):
518
+ Do not put a provenance entry. Useful becasue we need a custom
519
+ provenance entry for zero padding, which calls this method.
492
520
  """
493
- self.set_provenance(
494
- "cut",
495
- {
496
- "new_start_time": starttime,
497
- "new_end_time": endtime,
498
- },
499
- )
521
+ if not suppress_provenance:
522
+ prov_dict = {"new_start_time": starttime, "new_end_time": endtime}
523
+ if pad:
524
+ prov_dict["fill_value"] = fill_value
525
+ self.set_provenance("cut", prov_dict)
500
526
  return super().trim(starttime, endtime, pad, nearest_sample, fill_value)
501
527
 
502
528
  def integrate(
@@ -709,7 +735,6 @@ class StationTrace(Trace):
709
735
  self.set_provenance(
710
736
  "bandpass_filter",
711
737
  {
712
- "bandpass_filter": {"code": "bp", "label": "Bandpass Filter"},
713
738
  "filter_type": "Butterworth ObsPy",
714
739
  "filter_order": corners,
715
740
  "number_of_passes": number_of_passes,
@@ -740,7 +765,6 @@ class StationTrace(Trace):
740
765
  self.set_provenance(
741
766
  "bandpass_filter",
742
767
  {
743
- "bandpass_filter": {"code": "bp", "label": "Bandpass Filter"},
744
768
  "filter_type": "Butterworth gmrocess",
745
769
  "filter_order": corners,
746
770
  "number_of_passes": number_of_passes,
@@ -753,7 +777,6 @@ class StationTrace(Trace):
753
777
  self.set_provenance(
754
778
  "bandstop_filter",
755
779
  {
756
- "bandstop_filter": {"code": "bs", "label": "Bandstop Filter"},
757
780
  "filter_type": "Butterworth ObsPy",
758
781
  "filter_order": corners,
759
782
  "number_of_passes": number_of_passes,
@@ -786,7 +809,6 @@ class StationTrace(Trace):
786
809
  self.set_provenance(
787
810
  "bandstop_filter",
788
811
  {
789
- "bandstop_filter": {"code": "bs", "label": "Bandstop Filter"},
790
812
  "filter_type": "Butterworth gmprocess",
791
813
  "filter_order": corners,
792
814
  "number_of_passes": number_of_passes,
@@ -90,7 +90,6 @@ class StreamCollection(StreamArray):
90
90
  if not isinstance(st, StationStream):
91
91
  raise TypeError("streams must be a list of StationStream objects.")
92
92
 
93
- logging.debug(st.get_id())
94
93
  st.id = st.get_id()
95
94
  st.use_array = False
96
95
 
@@ -98,7 +97,7 @@ class StreamCollection(StreamArray):
98
97
  if st[0].free_field:
99
98
  newstreams.append(st)
100
99
  else:
101
- logging.debug(
100
+ logging.info(
102
101
  "Omitting station trace %s from stream collection "
103
102
  "because it is not free field.",
104
103
  st[0].id,
@@ -5,8 +5,12 @@ fetchers:
5
5
  enabled: True
6
6
  duration:
7
7
  # Duration is computed as c0 + c1 * magnitude, in minutes.
8
- c0: 0.0
8
+ c0: 4.5
9
9
  c1: 0.5
10
+ # Optionally, adjust values based on tectonic environment
11
+ Stable:
12
+ c0: 5.5
13
+ c1: 0.5
10
14
  distance:
11
15
  # The search radius uses a ground motion model, as specified in the
12
16
  # 'gmm_selection' section. If STREC is enabled, it will select the model
@@ -94,7 +98,7 @@ fetchers:
94
98
  # SY is a network for synthetic data
95
99
  # 'XO' is an assortment of temporary deployment networks for Alaska region
96
100
  # Other networks listed here are network codes known to be problematic.
97
- exclude_networks: ['SY', 'ZY', 'YH', 'YG', 'AM', 'PB', 'XO']
101
+ exclude_networks: ['SY', 'ZY', 'YH', 'YG', 'AM', 'PB', 'XO', '7D']
98
102
 
99
103
  # The minimum length of the data as a fraction of the requested time frame.
100
104
  # After a channel has been downloaded it will be checked that its total
@@ -348,26 +352,49 @@ windows:
348
352
  signal_end:
349
353
  # Options for setting the end of the signal window. Options are set with the key
350
354
  # "method":
351
- # - "velocity": Set the end of the signal can be set using a phase velocity;
352
- # this option makes use of the keys "vmin" and "floor".
353
355
  # - "model": Set the end of the signal window using a shaking duration model;
354
- # this options makes use of the keys "model" and "epsilon"
356
+ # this options makes use of the keys "model" and "epsilon". Duration is
357
+ # relative to split time.
358
+ # - "source_path": Compute the end of the signal using
359
+ # d0 + source_duration + epi_dist
360
+ # Duration is relative to split time.
355
361
  # - "magnitude": Use the magnitude-based signal end as defined by CISN, which
356
- # is magnitude/2 (units of minutes).
362
+ # is magnitude/2 (units of minutes). Duration is relative to origin time.
363
+ # - "velocity": Set the end of the signal can be set using a phase velocity;
364
+ # this option makes use of the keys "vmin" and "floor". Duration is
365
+ # relative to origin time.
357
366
  # - "none": Use the full available record; this is useful if the records
358
367
  # have already been trimmed to a resonable level and you do not wish to
359
368
  # further reduce trace duration.
360
369
 
361
- method: model
362
- vmin: 1.0
363
- # Minimum duration in sec for use with 'vmin' option.
364
- floor: 120.0
370
+ method: source_path
371
+
365
372
  # Duration model
366
373
  model: AS16
367
374
  # Number of standard deviations; if epsilon is 1.0, then the signal
368
375
  # window duration is the mean Ds + 1 standard deviation.
369
376
  epsilon: 3.0
370
377
 
378
+ # "velocity" method
379
+ vmin: 1.0
380
+ floor: 120.0
381
+
382
+ # Source-path model; stress_drop (bars) for source duration.
383
+ stress_drop: 10.0
384
+ dur0: 150.0
385
+ dur1: 0.6
386
+
387
+ Regions:
388
+ Stable:
389
+ method: source_path
390
+ model: AS16
391
+ epsilon: 3.0
392
+ vmin: 1.0
393
+ floor: 120.0
394
+ stress_drop: 100.0
395
+ dur0: 150.0
396
+ dur1: 0.6
397
+
371
398
  window_checks:
372
399
  # Minimum noise duration; can be zero but this will allow for errors
373
400
  # to occur if requesting signal-to-noise ratios.
@@ -408,41 +435,37 @@ processing:
408
435
  min_crossings: 0.1
409
436
 
410
437
  - remove_response:
438
+ pre_filt: False
439
+ output_as_acceleration: False
440
+ custom_pre_filt:
441
+ lp_factor: 0.8
442
+ hp_freq: 0.005
443
+ corners: 40
411
444
 
412
- - detrend:
413
- detrending_method: linear
445
+ - cut:
414
446
 
415
- - detrend:
416
- detrending_method: demean
447
+ - taper:
448
+
449
+ - convert_to_acceleration:
450
+ taper: False
417
451
 
418
452
  - compute_snr:
419
453
 
420
454
  - snr_check:
421
455
 
422
456
  - get_corner_frequencies:
423
- method: snr
424
- snr:
425
- same_horiz: False
426
457
 
427
458
  - lowpass_max_frequency:
428
459
 
429
- - cut:
430
-
431
- - taper:
432
-
433
460
  - ridder_fchp:
434
461
 
435
- - highpass_filter:
462
+ - bandpass_filter:
436
463
 
437
- - lowpass_filter:
438
-
439
464
  - detrend:
440
465
  detrending_method: pre
441
466
 
442
467
  - fit_spectra:
443
468
 
444
- - check_tail:
445
-
446
469
  colocated:
447
470
  # Enable the colocation algorithm?
448
471
  enabled: True
@@ -530,8 +553,8 @@ metrics:
530
553
  # Do *not* delete a key to remove a component, it will be replaced with the default.
531
554
  # To remove a component, set it's types as an empty list.
532
555
  components_and_types:
533
- channels: [pga, pgv, sa, duration, cav, arias]
534
- rotd: [pga, pgv, sa]
556
+ channels: [pga, pgv, psa, duration, cav, arias]
557
+ rotd: [pga, pgv, psa]
535
558
  geometric_mean: [duration]
536
559
  quadratic_mean: [fas]
537
560