gmprocess 2.0.0__tar.gz → 2.1.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 (231) hide show
  1. {gmprocess-2.0.0 → gmprocess-2.1.0}/MANIFEST.in +2 -0
  2. {gmprocess-2.0.0/src/gmprocess.egg-info → gmprocess-2.1.0}/PKG-INFO +3 -3
  3. {gmprocess-2.0.0 → gmprocess-2.1.0}/pyproject.toml +2 -2
  4. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/apps/gmrecords.py +68 -8
  5. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/core/scalar_event.py +4 -1
  6. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/config_production.yml +3 -3
  7. gmprocess-2.1.0/src/gmprocess/gui/gui_ucla/Documentation.md +88 -0
  8. gmprocess-2.1.0/src/gmprocess/gui/gui_ucla/GUI_human_review.ipynb +39 -0
  9. gmprocess-2.1.0/src/gmprocess/gui/gui_ucla/HumanReviewGUI.py +905 -0
  10. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/cosmos/cosmos_writer.py +288 -154
  11. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/report.py +1 -2
  12. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/metrics/station_metric_collection.py +2 -2
  13. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/autoshakemap.py +3 -3
  14. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/compute_station_metrics.py +23 -49
  15. gmprocess-2.1.0/src/gmprocess/subcommands/export_cosmos.py +137 -0
  16. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/projects.py +8 -2
  17. gmprocess-2.1.0/src/gmprocess/utils/__init__.py +0 -0
  18. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/summary_plots.py +9 -11
  19. gmprocess-2.1.0/src/gmprocess/waveform_processing/__init__.py +0 -0
  20. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/clipping/clipping_check.py +1 -1
  21. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/sanity_checks.py +1 -1
  22. {gmprocess-2.0.0 → gmprocess-2.1.0/src/gmprocess.egg-info}/PKG-INFO +3 -3
  23. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess.egg-info/SOURCES.txt +6 -1
  24. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess.egg-info/requires.txt +2 -2
  25. gmprocess-2.0.0/src/gmprocess/subcommands/export_shakemap.py +0 -77
  26. {gmprocess-2.0.0 → gmprocess-2.1.0}/LICENSE.md +0 -0
  27. {gmprocess-2.0.0 → gmprocess-2.1.0}/README.md +0 -0
  28. {gmprocess-2.0.0 → gmprocess-2.1.0}/setup.cfg +0 -0
  29. {gmprocess-2.0.0 → gmprocess-2.1.0}/setup.py +0 -0
  30. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/__init__.py +0 -0
  31. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/apps/__init__.py +0 -0
  32. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/bin/__init__.py +0 -0
  33. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/bin/bundle_datarelease.py +0 -0
  34. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/bin/cwa_gather.py +0 -0
  35. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/bin/fix_inventory.py +0 -0
  36. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/bin/gmconvert.py +0 -0
  37. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/bin/gminfo.py +0 -0
  38. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/bin/gmprocess_config.py +0 -0
  39. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/bin/gmrecords.py +0 -0
  40. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/bin/gmworkspace.py +0 -0
  41. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/bin/update_event_json.sh +0 -0
  42. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/core/__init__.py +0 -0
  43. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/core/provenance.py +0 -0
  44. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/core/stationstream.py +0 -0
  45. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/core/stationtrace.py +0 -0
  46. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/core/streamarray.py +0 -0
  47. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/core/streamcollection.py +0 -0
  48. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/CESMD_NGA_ids.csv +0 -0
  49. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/__init__.py +0 -0
  50. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/config_production_v1.yml +0 -0
  51. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/config_test.yml +0 -0
  52. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/cosmos_table10.xls +0 -0
  53. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/cosmos_table4.xls +0 -0
  54. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/demo/ci38457511/raw/CICCC.RAW +0 -0
  55. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/demo/ci38457511/raw/CICLC.v1 +0 -0
  56. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/demo/ci38457511/raw/CITOW2.RAW +0 -0
  57. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/demo/nc72282711/workspace.h5 +0 -0
  58. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/fdsn_codes.csv +0 -0
  59. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/lme/SA_rotd50.0_2020.03.31.csv +0 -0
  60. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/modules.yml +0 -0
  61. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nga_w2_selected.csv +0 -0
  62. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_clipping/bias_1.csv +0 -0
  63. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_clipping/bias_output.csv +0 -0
  64. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_clipping/masterF.txt +0 -0
  65. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_clipping/weight_1.csv +0 -0
  66. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_clipping/weight_output.csv +0 -0
  67. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/Cant/M.csv +0 -0
  68. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/Cant/bias_1.csv +0 -0
  69. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/Cant/bias_2.csv +0 -0
  70. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/Cant/bias_output.csv +0 -0
  71. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/Cant/final_training.csv +0 -0
  72. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/Cant/masterF.txt +0 -0
  73. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/Cant/model_3.txt +0 -0
  74. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/Cant/model_5.txt +0 -0
  75. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/Cant/mu_sigma.csv +0 -0
  76. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/Cant/weight_1.csv +0 -0
  77. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/Cant/weight_2.csv +0 -0
  78. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/Cant/weight_output.csv +0 -0
  79. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/CantWell/M.csv +0 -0
  80. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/CantWell/bias_1.csv +0 -0
  81. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/CantWell/bias_2.csv +0 -0
  82. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/CantWell/bias_output.csv +0 -0
  83. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/CantWell/final_training.csv +0 -0
  84. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/CantWell/masterF.txt +0 -0
  85. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/CantWell/model_0.txt +0 -0
  86. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/CantWell/mu_sigma.csv +0 -0
  87. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/CantWell/weight_1.csv +0 -0
  88. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/CantWell/weight_2.csv +0 -0
  89. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/nn_qa/CantWell/weight_output.csv +0 -0
  90. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/picker.yml +0 -0
  91. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/station_coordinates.xlsx +0 -0
  92. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/data/usgs_ids_nga_and_srcmod_cross_reference.xlsx +0 -0
  93. {gmprocess-2.0.0/src/gmprocess/io → gmprocess-2.1.0/src/gmprocess/gui}/__init__.py +0 -0
  94. {gmprocess-2.0.0/src/gmprocess/io/asdf → gmprocess-2.1.0/src/gmprocess/gui/gui_ucla}/__init__.py +0 -0
  95. {gmprocess-2.0.0/src/gmprocess/io/bhrc → gmprocess-2.1.0/src/gmprocess/io}/__init__.py +0 -0
  96. {gmprocess-2.0.0/src/gmprocess/io/cosmos → gmprocess-2.1.0/src/gmprocess/io/asdf}/__init__.py +0 -0
  97. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/asdf/base_metrics_xml.py +0 -0
  98. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/asdf/core.py +0 -0
  99. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/asdf/flatfile.py +0 -0
  100. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/asdf/flatfile_constants.py +0 -0
  101. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/asdf/path_utils.py +0 -0
  102. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/asdf/rupture.py +0 -0
  103. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/asdf/station_metrics_xml.py +0 -0
  104. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/asdf/stream_workspace.py +0 -0
  105. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/asdf/utils.py +0 -0
  106. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/asdf/waveform_metrics_xml.py +0 -0
  107. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/asdf/workspace_constants.py +0 -0
  108. {gmprocess-2.0.0/src/gmprocess/io/cwb → gmprocess-2.1.0/src/gmprocess/io/bhrc}/__init__.py +0 -0
  109. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/bhrc/core.py +0 -0
  110. {gmprocess-2.0.0/src/gmprocess/io/dmg → gmprocess-2.1.0/src/gmprocess/io/cosmos}/__init__.py +0 -0
  111. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/cosmos/cesmd_fetcher.py +0 -0
  112. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/cosmos/cesmd_search.py +0 -0
  113. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/cosmos/core.py +0 -0
  114. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/cosmos/data_structures.py +0 -0
  115. {gmprocess-2.0.0/src/gmprocess/io/esm → gmprocess-2.1.0/src/gmprocess/io/cwb}/__init__.py +0 -0
  116. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/cwb/core.py +0 -0
  117. {gmprocess-2.0.0/src/gmprocess/io/geonet → gmprocess-2.1.0/src/gmprocess/io/dmg}/__init__.py +0 -0
  118. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/dmg/core.py +0 -0
  119. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/dynamic_search_parameters.py +0 -0
  120. {gmprocess-2.0.0/src/gmprocess/io/knet → gmprocess-2.1.0/src/gmprocess/io/esm}/__init__.py +0 -0
  121. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/esm/core.py +0 -0
  122. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/fetcher.py +0 -0
  123. {gmprocess-2.0.0/src/gmprocess/io/nsmn → gmprocess-2.1.0/src/gmprocess/io/geonet}/__init__.py +0 -0
  124. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/geonet/core.py +0 -0
  125. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/global_fetcher.py +0 -0
  126. {gmprocess-2.0.0/src/gmprocess/io/obspy → gmprocess-2.1.0/src/gmprocess/io/knet}/__init__.py +0 -0
  127. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/knet/core.py +0 -0
  128. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/knet/knet_fetcher.py +0 -0
  129. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/nga.py +0 -0
  130. {gmprocess-2.0.0/src/gmprocess/io/renadic → gmprocess-2.1.0/src/gmprocess/io/nsmn}/__init__.py +0 -0
  131. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/nsmn/core.py +0 -0
  132. {gmprocess-2.0.0/src/gmprocess/io/smc → gmprocess-2.1.0/src/gmprocess/io/obspy}/__init__.py +0 -0
  133. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/obspy/core.py +0 -0
  134. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/obspy/fdsn_fetcher.py +0 -0
  135. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/read.py +0 -0
  136. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/read_directory.py +0 -0
  137. {gmprocess-2.0.0/src/gmprocess/io/unam → gmprocess-2.1.0/src/gmprocess/io/renadic}/__init__.py +0 -0
  138. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/renadic/core.py +0 -0
  139. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/seedname.py +0 -0
  140. {gmprocess-2.0.0/src/gmprocess/io/usc → gmprocess-2.1.0/src/gmprocess/io/smc}/__init__.py +0 -0
  141. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/smc/core.py +0 -0
  142. {gmprocess-2.0.0/src/gmprocess/metrics → gmprocess-2.1.0/src/gmprocess/io/unam}/__init__.py +0 -0
  143. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/unam/core.py +0 -0
  144. {gmprocess-2.0.0/src/gmprocess/subcommands → gmprocess-2.1.0/src/gmprocess/io/usc}/__init__.py +0 -0
  145. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/usc/core.py +0 -0
  146. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/io/utils.py +0 -0
  147. {gmprocess-2.0.0/src/gmprocess/utils → gmprocess-2.1.0/src/gmprocess/metrics}/__init__.py +0 -0
  148. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/metrics/combine.py +0 -0
  149. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/metrics/containers.py +0 -0
  150. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/metrics/metric_collection_base.py +0 -0
  151. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/metrics/oscillator.py +0 -0
  152. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/metrics/reduce.py +0 -0
  153. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/metrics/rotate.py +0 -0
  154. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/metrics/station_metric.py +0 -0
  155. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/metrics/transform.py +0 -0
  156. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/metrics/utils.py +0 -0
  157. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/metrics/waveform_metric_calculator.py +0 -0
  158. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/metrics/waveform_metric_calculator_component_base.py +0 -0
  159. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/metrics/waveform_metric_collection.py +0 -0
  160. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/metrics/waveform_metric_component.py +0 -0
  161. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/metrics/waveform_metric_list.py +0 -0
  162. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/metrics/waveform_metric_type.py +0 -0
  163. {gmprocess-2.0.0/src/gmprocess/waveform_processing → gmprocess-2.1.0/src/gmprocess/subcommands}/__init__.py +0 -0
  164. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/arg_dicts.py +0 -0
  165. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/assemble.py +0 -0
  166. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/autoprocess.py +0 -0
  167. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/base.py +0 -0
  168. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/clean.py +0 -0
  169. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/compute_waveform_metrics.py +0 -0
  170. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/download.py +0 -0
  171. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/export_failure_tables.py +0 -0
  172. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/export_gmpacket.py +0 -0
  173. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/export_metric_tables.py +0 -0
  174. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/export_provenance_tables.py +0 -0
  175. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/generate_regression_plot.py +0 -0
  176. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/generate_report.py +0 -0
  177. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/generate_station_maps.py +0 -0
  178. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/import_data.py +0 -0
  179. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/init.py +0 -0
  180. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/lazy_loader.py +0 -0
  181. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/process_waveforms.py +0 -0
  182. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/subcommands/processing_steps.py +0 -0
  183. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/args.py +0 -0
  184. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/assemble_utils.py +0 -0
  185. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/config.py +0 -0
  186. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/config_versioning.py +0 -0
  187. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/constants.py +0 -0
  188. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/download_utils.py +0 -0
  189. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/export_gmpacket_utils.py +0 -0
  190. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/export_shakemap_utils.py +0 -0
  191. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/ground_motion_models.py +0 -0
  192. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/logging.py +0 -0
  193. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/misc.py +0 -0
  194. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/misc_plots.py +0 -0
  195. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/prompt.py +0 -0
  196. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/report_utils.py +0 -0
  197. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/rupture_utils.py +0 -0
  198. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/stderr.py +0 -0
  199. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/strec.py +0 -0
  200. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/tables.py +0 -0
  201. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/utils/tests_utils.py +0 -0
  202. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/adjust_highpass.py +0 -0
  203. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/adjust_highpass_ridder.py +0 -0
  204. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/baseline_correction.py +0 -0
  205. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/clipping/clip_detection.py +0 -0
  206. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/clipping/clipping_ann.py +0 -0
  207. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/clipping/histogram.py +0 -0
  208. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/clipping/jerk.py +0 -0
  209. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/clipping/max_amp.py +0 -0
  210. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/clipping/ping.py +0 -0
  211. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/clipping/std_dev.py +0 -0
  212. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/corner_frequencies.py +0 -0
  213. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/detrend.py +0 -0
  214. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/fft.py +0 -0
  215. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/filtering.py +0 -0
  216. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/instrument_response.py +0 -0
  217. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/integrate.py +0 -0
  218. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/nn_quality_assurance.py +0 -0
  219. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/phase.py +0 -0
  220. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/pretesting.py +0 -0
  221. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/processing.py +0 -0
  222. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/processing_step.py +0 -0
  223. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/resample.py +0 -0
  224. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/snr.py +0 -0
  225. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/spectrum.py +0 -0
  226. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/taper.py +0 -0
  227. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/windows.py +0 -0
  228. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess/waveform_processing/zero_crossings.py +0 -0
  229. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess.egg-info/dependency_links.txt +0 -0
  230. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess.egg-info/entry_points.txt +0 -0
  231. {gmprocess-2.0.0 → gmprocess-2.1.0}/src/gmprocess.egg-info/top_level.txt +0 -0
@@ -1,5 +1,7 @@
1
1
  recursive-include src/gmprocess/data *
2
2
  recursive-include src/gmprocess/bin *
3
+ include src/gmprocess/gui/gui_ucla/Documentation.md
4
+ include src/gmprocess/gui/gui_ucla/GUI_human_review.ipynb
3
5
  prune tests
4
6
  prune docs
5
7
  prune notebooks
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gmprocess
3
- Version: 2.0.0
3
+ Version: 2.1.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
@@ -64,7 +64,7 @@ Requires-Dist: lxml>=4.6.1
64
64
  Requires-Dist: matplotlib>=3.1.0
65
65
  Requires-Dist: numba>=0.58
66
66
  Requires-Dist: numpy<2.0,>=1.21
67
- Requires-Dist: obspy>=1.4.0
67
+ Requires-Dist: obspy>=1.4.1
68
68
  Requires-Dist: openpyxl>=3.0.8
69
69
  Requires-Dist: openquake.engine>=3.18
70
70
  Requires-Dist: pandas>=1.0
@@ -89,7 +89,7 @@ Requires-Dist: pylint>=2.17; extra == "dev"
89
89
  Provides-Extra: test
90
90
  Requires-Dist: pytest>=6.2; extra == "test"
91
91
  Requires-Dist: pytest-cov>=2.12; extra == "test"
92
- Requires-Dist: pytest-console-scripts>=1.2; extra == "test"
92
+ Requires-Dist: pytest-console-scripts>=1.4; extra == "test"
93
93
  Requires-Dist: vcrpy>=4.1; extra == "test"
94
94
  Provides-Extra: doc
95
95
  Requires-Dist: altair>=4.2.2; extra == "doc"
@@ -30,7 +30,7 @@ dependencies = [
30
30
  "matplotlib>=3.1.0",
31
31
  "numba>=0.58",
32
32
  "numpy>=1.21,<2.0",
33
- "obspy>=1.4.0",
33
+ "obspy>=1.4.1",
34
34
  "openpyxl>=3.0.8",
35
35
  "openquake.engine>=3.18",
36
36
  "pandas>=1.0",
@@ -59,7 +59,7 @@ dev = [
59
59
  test = [
60
60
  "pytest>=6.2",
61
61
  "pytest-cov>=2.12",
62
- "pytest-console-scripts>=1.2",
62
+ "pytest-console-scripts>=1.4",
63
63
  "vcrpy>=4.1",
64
64
  ]
65
65
  doc = [
@@ -84,17 +84,36 @@ class GMrecordsApp(object):
84
84
  self.parser.print_help()
85
85
  sys.exit()
86
86
  else:
87
+ if self.args.datadir is None and self.args.confdir is None:
88
+ self.use_projects = True
89
+ elif self.args.datadir is not None and self.args.confdir is not None:
90
+ self.use_projects = False
91
+ else:
92
+ raise ValueError(
93
+ "Arguments --datadir and --confdir both must be set or both must "
94
+ "not be set (and thus these paths will be taken from the "
95
+ "configured project)."
96
+ )
97
+
87
98
  subcmds_noinit = ["init", "processing_steps"]
88
99
  if self.args.subcommand not in subcmds_noinit:
89
100
  self._initialize()
90
101
 
91
102
  subcmds_quiet = ["init", "projects", "proj", "processing_steps"]
92
103
  if self.args.subcommand not in subcmds_quiet and not self.args.quiet:
93
- # Print the current project information to avoid confusion
94
- proj = Project.from_config(self.projects_conf, self.project_name)
104
+ if self.use_projects:
105
+ # Print the current project information to avoid confusion
106
+ proj = Project.from_config(self.projects_conf, self.project_name)
107
+ else:
108
+ proj_paths = {
109
+ "conf_path": self.args.confdir,
110
+ "data_path": self.args.datadir,
111
+ }
112
+ proj = Project("None", proj_paths, "None", True)
95
113
  print("-" * 80)
96
114
  print(proj)
97
115
  print("-" * 80)
116
+
98
117
  # -----------------------------------------------------------------
99
118
  # This calls the init method of the subcommand that was specified
100
119
  # at the command line and hands off the GmpApp object ("self") as
@@ -157,11 +176,17 @@ class GMrecordsApp(object):
157
176
 
158
177
  @property
159
178
  def conf_path(self):
160
- return (self.projects_path / self.current_project["conf_path"]).resolve()
179
+ if self.projects_path:
180
+ return (self.projects_path / self.current_project["conf_path"]).resolve()
181
+ else:
182
+ return Path(self.current_project["conf_path"]).resolve()
161
183
 
162
184
  @property
163
185
  def data_path(self):
164
- return (self.projects_path / self.current_project["data_path"]).resolve()
186
+ if self.projects_path:
187
+ return (self.projects_path / self.current_project["data_path"]).resolve()
188
+ else:
189
+ return Path(self.current_project["data_path"]).resolve()
165
190
 
166
191
  def _initialize(self):
167
192
  require_config = self.args.subcommand not in ["projects", "proj"]
@@ -183,7 +208,7 @@ class GMrecordsApp(object):
183
208
 
184
209
  def _load_config(self, require_config=True):
185
210
  self.projects_conf = None
186
- if not self.projects_file.is_file():
211
+ if (not self.projects_file.is_file()) and self.use_projects:
187
212
  if not require_config:
188
213
  return
189
214
 
@@ -211,9 +236,23 @@ class GMrecordsApp(object):
211
236
  else:
212
237
  sys.exit(0)
213
238
 
214
- self.projects_conf = configobj.ConfigObj(
215
- str(self.projects_file), encoding="utf-8"
216
- )
239
+ if not self.use_projects:
240
+ self.projects_path = None
241
+ self.projects_file = None
242
+ self.projects_conf = {
243
+ "project": "None",
244
+ "projects": {
245
+ "None": {
246
+ "conf_path": self.args.confdir,
247
+ "data_path": self.args.datadir,
248
+ }
249
+ },
250
+ }
251
+ else:
252
+ self.projects_conf = configobj.ConfigObj(
253
+ str(self.projects_file), encoding="utf-8"
254
+ )
255
+
217
256
  projmod.validate_projects_config(self.projects_conf, self.projects_path)
218
257
 
219
258
  if "CALLED_FROM_PYTEST" in os.environ:
@@ -338,6 +377,27 @@ class GMrecordsApp(object):
338
377
  action="store_true",
339
378
  )
340
379
 
380
+ parser.add_argument(
381
+ "--datadir",
382
+ type=str,
383
+ default=None,
384
+ help=(
385
+ "Path to data directory. "
386
+ "Setting this disables the use of projects. "
387
+ "Setting this also requires --confdir to be set. "
388
+ ),
389
+ )
390
+ parser.add_argument(
391
+ "--confdir",
392
+ type=str,
393
+ default=None,
394
+ help=(
395
+ "Path to directly containing config files. "
396
+ "Setting this disables the use of projects. "
397
+ "Setting this also requires --datadir to be set."
398
+ ),
399
+ )
400
+
341
401
  # Parsers for subcommands
342
402
  subparsers = parser.add_subparsers(
343
403
  title="Subcommands", dest="subcommand", metavar="<command> (<aliases>)"
@@ -323,7 +323,10 @@ def get_event_ids(ids=None, file_ids=None, data_dir=None):
323
323
  event_ids = ids or file_ids
324
324
  if event_ids:
325
325
  if isinstance(event_ids, str):
326
- event_ids = [event_ids]
326
+ if "," in event_ids:
327
+ event_ids = [eid.strip() for eid in event_ids.split(",")]
328
+ else:
329
+ event_ids = [event_ids]
327
330
  elif data_dir:
328
331
  event_ids = [ev_id.name for ev_id in data_dir.iterdir() if ev_id.is_dir()]
329
332
  event_ids = sorted(event_ids)
@@ -14,7 +14,7 @@ fetchers:
14
14
  # StableShallow GMM.
15
15
  # The distance will be the the distance at which the threshold PGA (in g) is
16
16
  # exceeded based on the GMM.
17
- pga: 0.001
17
+ pga: 0.0001
18
18
  # The maximum distance (in km) that can be returned.
19
19
  max_distance: 800.0
20
20
  # NOTE: the GMM is evaluated with a number of simplifications, including
@@ -526,7 +526,7 @@ metrics:
526
526
  # Do *not* delete a key to remove a component, it will be replaced with the default.
527
527
  # To remove a component, set it's types as an empty list.
528
528
  components_and_types:
529
- channels: [pga, pgv, sa, duration, cav]
529
+ channels: [pga, pgv, sa, duration, cav, arias]
530
530
  rotd: [pga, pgv, sa]
531
531
  geometric_mean: [duration]
532
532
  quadratic_mean: [fas]
@@ -547,7 +547,7 @@ metrics:
547
547
  # Additional parameters required for FAS
548
548
  fas:
549
549
  smoothing_method: konno_ohmachi
550
- smoothing_parameter: 20.0
550
+ smoothing_parameter: 188.5
551
551
  allow_nans: True
552
552
  frequencies:
553
553
  # Parameters defining an array of frequencies.
@@ -0,0 +1,88 @@
1
+ # Graphical User Interface (GUI) to aid human review of processed-ground-motions
2
+
3
+ ```{admonition} Authors
4
+ :class: note
5
+
6
+ Maria E. Ramos-Sepulveda, Scott J. Brandenberg, Tristan Buckreis, Meibai Li, Shako Ahmed, and Jonathan P. Stewart
7
+ ```
8
+
9
+ The UCLA geotechnical group prepared a graphical user interface (GUI) to facilitate a human review of records processed by gmprocess. The algorithms utilized by gmprocess to accept/reject, window, and filter records work well most of the time, but cannot account for all possible issues that might arise. For this reason, reviewing the processed records is prudent. The purpose of this GUI is to facilitate rapid review. Acceleration and displacement time series, as well as response spectra can be visually inspected to find any potential errors. The GUI utilizes Jupyter and allows the user to load an HDF5 file output from gmprocess, interact with the data by accepting or rejecting records, and adjusting high-pass and low-pass filter parameters. In the example below we describe the procedure to run and interact with the GUI.
10
+
11
+ ## Requirements
12
+ - A workspace.h5 file produced by gmprocess through the "process_waveforms" step. For example `gmrecords --eventid nc73291880 download`, `gmrecords assemble` and `gmrecords process_waveforms` must be run before going through this review step.
13
+ - The Python script named `HumanReviewGUI.py` that contains the class variable and function defintions that will be called by a Jupyter Notebook.
14
+ - A Jupyter Notebook that instantiates the HumanReviewGUI class.
15
+ - gmprocess
16
+ - obspy
17
+ - ipywidgets
18
+ - pandas
19
+ - numpy
20
+ - matplotlib
21
+ - ucla_geotech_tools.response_spectrum
22
+ - json
23
+ - prov
24
+ - ipympl
25
+
26
+ ## Jupyter notebook
27
+
28
+ Creating the GUI requires only three lines of code, shown below. Older versions of Jupyter might require %matplotlib notebook instead of %matplotlib widget. Running these three lines should produce plots like the ones shown in the sections that follow.
29
+
30
+ ```python
31
+ %matplotlib widget
32
+ import gmprocess.gui.gui_ucla.HumanReviewGUI as HRG
33
+ GUI = HRG.HumanReviewGUI()
34
+ ```
35
+
36
+ ## Plots description
37
+ The interface is shown in Figure 1, and consists of a control panel and four plots. The control panel contains a field where users input the filename and load the HDF5 file. The progress bar on top displays how many records have been loaded. Once the loading is done, the progress bar reflects how many records have been accepted. The toggle buttons next to the load button filter data by showing only data waveforms that have not been reviewed, those that have been accepted, and/or those that have been rejected. The third row of the control panel has buttons to browse to the previous or next record, along with a dropdown menu for selecting a specific record. Next to the right are the buttons for accepting or rejecting the record. A record should be accepted when the user considers it to have been processed correctly, and rejected when the user believes that the record should not be processed because it is too noisy or has other flaws. The bottom row of the control panel contains the name of the user who processed the record, the earthquake magnitude, and the epicentral distance. Users can also set the high-pass and low-pass corner frequencies (fchp and fclp respectively), and uncheck a box to control whether the fclp is not applied at all. The filters utilize the same order and filter type as specified by the user in gmprocess and are not configurable in the GUI. We found that these options do not require adjustment after processing in gmprocess.
38
+ <br/><br/>
39
+ The orange traces depict the unfiltered record. In this context, "unfiltered" refers to the trace that has not gone through the Butterworth filter, but is trimmed, demeaned and tapered. The blue trace ("filtered GUI") is filtered using the `apply_filter` function inside the python script and it will change if any of the corner frequencies are modified. The blue time series includes the minimum between 60 seconds of noise and the maximum noise length of a record while the traces called from gmprocess have 2 seconds (default in config file). The translucent red ("filtered gmprocess") is the record filtered inside gmprocess. This trace will not change if the corner frequencies are modified. The purpose of including both filtered traces (blue and red) is so the user can compare any improvements done in the GUI. The red trace was set to translucent to aid the visual comparison. As a result of superimposing the red over the blue, this trace will seem purple whenever "filtered GUI" overlaps "filtered gmprocess". The smoothed noise spectrum is shown in green and only for the Fourier transform spectra. The black dotted line is the theoretical acceleration decay at low frequency according to the $f^2$ model (Brune 1970; Boore and Bommer 2005), the user can use it as reference. The dashed-black lines depict corner frequencies in the Fourier transform spectra and the highest-usable period (factor of 0.8) in the response spectra. The grey solid and dashed lines are the signal-to-noise ratio (SNR) and SNR threshold, respectively. The ordinates on the the Fourier transform spectra are not meant to be used to read the SNR, the idea is to evaluate the SNR with respect to the SNR threshold, signal, and noise traces.
40
+
41
+ ```{figure} ../../_static/ucla_gui/interface3.png
42
+ *Figure 1: Interface of Graphic User Interface for human review*
43
+ ```
44
+
45
+ ## Procedure
46
+ Changes implemented in the GUI are recorded in the HDF5 file through an `auxiliary_data` folder named `review`. In the `review` section you can find which records were accepted or rejected and the corresponding corner frequency values. To integrate these changes into the `provenance` and update the `waveforms`, the user needs to run `gmrecords process -r`. The changes in the `auxiliary_data` folder will then be reflected in the `provenance` directory of the .h5 file.
47
+
48
+ The processing steps are listed below:
49
+ - Load workspace.h5
50
+ - Evaluate acceleration, displacement, amplitude and response plots.
51
+ - Increase values of fchp if necessary.
52
+ - Change and/or remove value of fclp if necessary.
53
+ - Accept or reject the record accordingly. The GUI will automatically proceed to the next trace.
54
+ - Run `gmrecords process -r` to overwrite the traces objects in the workspace.h5.
55
+
56
+ ### Changes in high-pass corner frequencies
57
+ The most common modification is an adjustment to the fchp. The automated selection of fchp is done using the `auto_fchp` package inside gmprocess, which fits a 6th order polynomial to the displacement trace and adjusts the fchp until the amplitude of the polynomial fit is a specified fraction of the amplitude of the displacement trace. Sometimes, the automated fchp value is not high enough to discard lingering long period noise (which can be observed as a wobbly displacement trace, shown in Figure 2). In this case, the fchp was increased to 0.19 Hz to render a displacement trace that is stable prior to the p-wave arrival, as shown in Figure 3.
58
+
59
+ ```{figure} ../../_static/ucla_gui/fchp_before3.png
60
+ *Figure 2: Example trace with an automated selected fchp resulting in an irregular displacement time series*
61
+ ```
62
+
63
+ ```{figure} ../../_static/ucla_gui/fchp_after3.png
64
+ *Figure 3: Example trace shown in Figure 2 with a modified fchp resulting in a regular displacement time series*
65
+ ```
66
+
67
+ ### Changes in low-pass corner frequencies
68
+ Depending on how the user configured their gmprocess, the fclp could be applied every time or never. In the GUI, by default, fclp is applied to the blue trace ("filtered GUI"). The value shown in the header of the plots is the fclp selected by gmprocess which is chosen to be the minimum between $0.7*Nyquist$ frequency and the highest frequency where SNR undergoes certain threshold. High amplitude short period noise could be reflected as an irregular peak in the response spectrum at short periods (Figure 4). The noise can be excluded from the trace by checking the box to the right and applying an fclp of the same value (Figure 5). In this case a low-pass filter at 14.6 Hz stabilized the short-period portion of the response spectrum.
69
+
70
+ ```{figure} ../../_static/ucla_gui/fclp_before3.png
71
+ *Figure 4: Example trace without fclp resulting in an irregular response spectra shape*
72
+ ```
73
+
74
+ ```{figure} ../../_static/ucla_gui/fclp_after3.png
75
+ *Figure 5: Example trace shown in Figure 4 with fclp resulting in a flat response spectra at short periods*
76
+ ```
77
+
78
+ ### Example of rejected record
79
+ Some records contaminated with significant noise might pass the "failing criteria" of gmprocess. We believe this may be the result of randomness in the pre-event noise window. Usually, these records are easy to spot in the acceleration time series. An example is shown in Figure 6. Although the earthquake trace is visible above the noise level, we consider this record to be too noisy and opted to reject it.
80
+
81
+ ```{figure} ../../_static/ucla_gui/rejected3.png
82
+ *Figure 6: Example trace with significant noise that should be rejected*
83
+ ```
84
+
85
+ ## Limitations
86
+ 1. Gmprocess might miscompute the location of the p-wave arrival or the coda. None of those issues could be further improved using the GUI.
87
+ 2. The GUI will not update the `provenance` folder in the workspace.h5. If the user wants to pass this information from the `auxiliary_data` folder to the `provenance` folder and recompute the `waveforms`, the user needs to run `gmrecords process -r`.
88
+ 3. The GUI will convert the units of unprocessed traces into $m/s^2$ if the raw data is in g units or in a mseed format. Otherwise, the traces in the plots will be offset and the user will have to go to the python code and apply the corresponding conversion.
@@ -0,0 +1,39 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 1,
6
+ "id": "893fe763",
7
+ "metadata": {},
8
+ "outputs": [],
9
+ "source": [
10
+ "%matplotlib widget\n",
11
+ "import gmprocess.gui.gui_ucla.HumanReviewGUI as HRG\n",
12
+ "GUI = HRG.HumanReviewGUI()"
13
+ ]
14
+ }
15
+ ],
16
+ "metadata": {
17
+ "IMAGE_NAME": "taccsciapps/ds-nb-img:base-0.1.3",
18
+ "UUID": "b10b61b0-984e-11ee-8eb8-86839c98a1b4",
19
+ "kernelspec": {
20
+ "display_name": "Python 3 (ipykernel)",
21
+ "language": "python",
22
+ "name": "python3"
23
+ },
24
+ "language_info": {
25
+ "codemirror_mode": {
26
+ "name": "ipython",
27
+ "version": 3
28
+ },
29
+ "file_extension": ".py",
30
+ "mimetype": "text/x-python",
31
+ "name": "python",
32
+ "nbconvert_exporter": "python",
33
+ "pygments_lexer": "ipython3",
34
+ "version": "3.9.10"
35
+ }
36
+ },
37
+ "nbformat": 4,
38
+ "nbformat_minor": 5
39
+ }