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.
- {gmprocess-2.2.0 → gmprocess-2.3.0}/CHANGELOG.md +32 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/PKG-INFO +2 -2
- {gmprocess-2.2.0 → gmprocess-2.3.0}/code.json +41 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/setup_env.sh +33 -11
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/apps/gmrecords.py +2 -1
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/core/scalar_event.py +1 -1
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/core/stationstream.py +0 -3
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/core/stationtrace.py +37 -15
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/core/streamcollection.py +1 -2
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/config_production.yml +51 -28
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/config_test.yml +14 -209
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/flatfile.py +8 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/flatfile_constants.py +4 -2
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/stream_workspace.py +0 -2
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/cosmos/cesmd_search.py +0 -2
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/cwb/core.py +0 -4
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/dmg/core.py +0 -12
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/dynamic_search_parameters.py +9 -2
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/esm/core.py +0 -2
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/geonet/core.py +0 -7
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/knet/core.py +0 -4
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/knet/knet_fetcher.py +0 -4
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/obspy/core.py +22 -6
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/read_directory.py +0 -1
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/report.py +12 -3
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/smc/core.py +0 -5
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/usc/core.py +0 -7
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/containers.py +7 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/oscillator.py +2 -1
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/reduce.py +88 -1
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/transform.py +17 -4
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/waveform_metric_calculator.py +17 -1
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/waveform_metric_type.py +82 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/process_waveforms.py +3 -3
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/assemble_utils.py +0 -9
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/config.py +72 -3
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/constants.py +2 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/download_utils.py +7 -1
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/export_gmpacket_utils.py +1 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/summary_plots.py +11 -5
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/adjust_highpass.py +20 -11
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/adjust_highpass_ridder.py +4 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/clipping/clipping_check.py +0 -4
- gmprocess-2.3.0/src/gmprocess/waveform_processing/convert_units.py +30 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/corner_frequencies.py +0 -1
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/detrend.py +6 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/fft.py +8 -8
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/filtering.py +94 -0
- gmprocess-2.3.0/src/gmprocess/waveform_processing/instrument_response.py +499 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/nn_quality_assurance.py +0 -3
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/pretesting.py +1 -6
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/processing.py +19 -9
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/snr.py +16 -12
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/spectrum.py +4 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/windows.py +39 -21
- gmprocess-2.3.0/src/gmprocess/waveform_processing/zero_pad.py +90 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess.egg-info/PKG-INFO +2 -2
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess.egg-info/SOURCES.txt +1 -0
- gmprocess-2.2.0/src/gmprocess/waveform_processing/instrument_response.py +0 -253
- gmprocess-2.2.0/src/gmprocess/waveform_processing/zero_pad.py +0 -27
- {gmprocess-2.2.0 → gmprocess-2.3.0}/.coveragerc +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/.gitignore +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/.gitlab-ci.yml +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/CODE_OF_CONDUCT.md +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/CONTRIBUTING.md +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/DISCLAIMER.md +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/LICENSE.md +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/MANIFEST.in +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/README.md +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/pyproject.toml +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/pytest.ini +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/setup.cfg +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/setup.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/apps/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/bundle_datarelease.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/cwa_gather.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/fetch_orfeus.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/fix_inventory.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/gmconvert.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/gminfo.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/gmprocess_config.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/gmrecords.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/gmworkspace.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/bin/update_event_json.sh +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/core/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/core/provenance.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/core/streamarray.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/CESMD_NGA_ids.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/config_production_v1.yml +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/config_test_download.yml +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/cosmos_table10.xls +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/cosmos_table4.xls +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/demo/ci38457511/raw/CICCC.RAW +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/demo/ci38457511/raw/CICLC.v1 +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/demo/ci38457511/raw/CITOW2.RAW +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/demo/nc72282711/workspace.h5 +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/fdsn_codes.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/lme/SA_rotd50.0_2020.03.31.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/modules.yml +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nga_w2_selected.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_clipping/bias_1.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_clipping/bias_output.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_clipping/masterF.txt +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_clipping/weight_1.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_clipping/weight_output.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/M.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/bias_1.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/bias_2.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/bias_output.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/final_training.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/masterF.txt +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/model_3.txt +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/model_5.txt +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/mu_sigma.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/weight_1.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/weight_2.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/Cant/weight_output.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/M.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/bias_1.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/bias_2.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/bias_output.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/final_training.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/masterF.txt +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/model_0.txt +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/mu_sigma.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/weight_1.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/weight_2.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/nn_qa/CantWell/weight_output.csv +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/picker.yml +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/station_coordinates.xlsx +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/data/usgs_ids_nga_and_srcmod_cross_reference.xlsx +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/gui/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/gui/gui_ucla/Documentation.md +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/gui/gui_ucla/GUI_human_review.ipynb +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/gui/gui_ucla/HumanReviewGUI.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/gui/gui_ucla/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/base_metrics_xml.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/core.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/path_utils.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/rupture.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/station_metrics_xml.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/utils.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/waveform_metrics_xml.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/asdf/workspace_constants.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/bhrc/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/bhrc/core.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/cosmos/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/cosmos/cesmd_fetcher.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/cosmos/core.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/cosmos/cosmos_writer.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/cosmos/data_structures.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/cwb/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/dmg/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/esm/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/fetcher.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/geonet/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/global_fetcher.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/knet/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/nga.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/nsmn/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/nsmn/core.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/obspy/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/obspy/fdsn_fetcher.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/read.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/renadic/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/renadic/core.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/seedname.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/smc/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/unam/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/unam/core.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/usc/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/io/utils.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/combine.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/metric_collection_base.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/rotate.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/station_metric.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/station_metric_collection.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/utils.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/waveform_metric_calculator_component_base.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/waveform_metric_collection.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/waveform_metric_component.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/metrics/waveform_metric_list.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/arg_dicts.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/assemble.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/autoprocess.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/autoshakemap.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/base.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/clean.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/compute_station_metrics.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/compute_waveform_metrics.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/download.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/export_cosmos.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/export_failure_tables.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/export_gmpacket.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/export_metric_tables.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/export_provenance_tables.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/generate_regression_plot.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/generate_report.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/generate_station_maps.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/import_data.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/init.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/lazy_loader.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/processing_steps.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/subcommands/projects.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/args.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/config_versioning.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/ground_motion_models.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/logging.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/misc.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/misc_plots.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/prompt.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/report_utils.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/rupture_utils.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/strec.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/tables.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/utils/tests_utils.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/__init__.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/baseline_correction.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/clipping/clip_detection.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/clipping/clipping_ann.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/clipping/histogram.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/clipping/jerk.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/clipping/max_amp.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/clipping/ping.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/clipping/std_dev.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/integrate.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/phase.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/prism_adaptive_baseline.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/processing_step.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/resample.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/sanity_checks.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/taper.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess/waveform_processing/zero_crossings.py +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess.egg-info/dependency_links.txt +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess.egg-info/entry_points.txt +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess.egg-info/requires.txt +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/src/gmprocess.egg-info/top_level.txt +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/tools/matlab/README.md +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/tools/matlab/get_all_waveforms.m +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/tools/matlab/get_events.m +0 -0
- {gmprocess-2.2.0 → gmprocess-2.3.0}/tools/matlab/get_waveform_metrics.m +0 -0
- {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
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: gmprocess
|
|
3
|
-
Version: 2.
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
494
|
-
"
|
|
495
|
-
|
|
496
|
-
"
|
|
497
|
-
|
|
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.
|
|
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:
|
|
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:
|
|
362
|
-
|
|
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
|
-
-
|
|
413
|
-
detrending_method: linear
|
|
445
|
+
- cut:
|
|
414
446
|
|
|
415
|
-
-
|
|
416
|
-
|
|
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
|
-
-
|
|
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,
|
|
534
|
-
rotd: [pga, pgv,
|
|
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
|
|