Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PySEP v0.4.0 #112

Merged
merged 73 commits into from
Jul 19, 2023
Merged

PySEP v0.4.0 #112

merged 73 commits into from
Jul 19, 2023

Conversation

bch0w
Copy link
Member

@bch0w bch0w commented Jul 19, 2023

PySEP official version release v0.4.0. This PR sets up the requirements for the latest official version release of PySEP, and also will acts as a requirement template for any future version pushes. For reference, devel updates are stopping at d1ca76e for this version.

  • Ensure devel is up to date with master
  • Bump version number in pyproject.toml
  • Bump version number in docs/conf.py
  • Bump version number in pysep/__init__.py
  • Ensure all tests still pass, fix broken tests
  • Update CHANGELOG to include all major changes since last version

Specific to this version bump, need to finish docs migration to readthedocs (from gh-pages)

  • Update all docs links to point to pysep.readthedocs.io
    • GitHub About,
    • README.md
    • docs/README.me
    • pyproject.toml
  • Update docs building section in docs/README.md
  • Disable GitHub Wiki tab
  • Delete branch gh-pages
  • Delete environments gh-pages and github-pages
  • Enable both master and devel branch docs in readthedocs

Once the PR is merged:

  • Create GitHub version release
  • Publish latest version on PyPi
  • Update PyPi badge in README.md
  • Post on adjTomo Discussion

bch0w added 30 commits December 7, 2022 19:46
* renamed specfem station writing function, and added an ordering component

* bumping version in setup and changing url and author

* small mt typo change

* added an example config that gathers a small amount of data for testing/dev purposes

* added a new kwarg 'order_stations_list_by' which sets the order of the output stations list, related to #36

* bugfix typo parameter call

* bugfix rotating was not actually rotating streams in place for arbitrary components ->ENZ

* bugfix fixed rotation testing, which was not actually evaluating as expected. some confusion about editing streams and inventories in place which was not actually happening. Fixed and now rotate test works as expected

* added 12Z test data for rotating 12Z -> ENZ which works now, added test to cover this case

* moved 2012 central alaska IU gather script (which gathers 12Z component) into examples

* bugfix pysep was not setting log level properly from the config file. now in the load() function, config log level is allowed to override logger level

* changed config examples dir name to test, to be used as a test bed for checking specific data gathering features such as data gap removal

* bugfix #57, reading event origin time from sac header was shifting times unexpectedly
* bugfix clipped amplitude check was not properly checking the data array

* added error catch and release during rotate code to avoid processing breakdown. also rotate now goes by channel rather than the entire stream at once

* rearranged rotation algorithm to be a bit cleaner, previously too many different streams floating around and being fed to one another.

* pysep rotation now has additional checks for station metadata and error catching to get around any rotation bugs that used to cause the rotation to fail
added new tests to cover rotation and fixed a rotation test that was failing due to change
added a config for testing the rotation bug, providing station info

* updating bug config file
* fixed exclude string making and added a bool check for deleting tmpdir in mass download function

* removed accidental debug statement
* moved llnl_db_client as a hard dep of pysep and moved it into an optional dependency
hid llnl_db_client import statement behind a try-except block and threw a check in the init of pysep only requiring this dep if the client choice is LLNL

* Added setup.py legacy file

* removed llnl dep from conda env yml file

* tested install with and without llnl dep and tested check statement for missing llnl import
* started adding declustering rewrite with test and test data

* finished cartesian gridding decluster script, added radial gridding decluster script, added tests to cover both and plotting

* decluster catalog added feature to threshold events by min magnitude and data availability separate from declustering
added plot feture to connect source receiver pairs based on data availability
added feature to allow sorting by data availability

* adjusting default figure names for declust plotting scripts

* cleaned up plotting functions into functions to avoid repeat plotting calls, added removed events to
plotting routines

* small typo updte declust

* moved some declustering functions into util

* declust started srcrcv weighting function

* individual source or receiver list weighting working with the smart scan feature
next up is to implement the entire weighting scheme with normalization and based on data availability

* declust slow progression

* finished srcrcv weighting scheme

* finished declustering and weighting algos with additional plotting and text file writing for weights

* added basic test for srcrcv weight calc
* reformatted PySEP init docstring, added missing parameters and categorized parameters to make things easier to find

* removed hard requirement that user provides event depth and magnitude if event selection is default

* added boolean flag to toggle insufficient length checker
bugfix: added remove_clipped boolean toggle on the actual processing step, which was not there before

* bugfix phase list passed from pysep into util function for phase getting

* last minute touch ups on docstring

* recsec removed unneeded myround function from top of script

* categorized recsec init docstring for easier readability
…as an empty list, but it was expected as NoneType within the main processing function. removed this type conversion
ign dummy values to cap header because these are required by record section
* moved docstring of pysep into class description for autoapi

* instantiated sphinx for doc creation and autoapi building,  reorganized pysep and recsec docstrings to be well formatted for autoapi

* migrated wiki docs into docs directory
)

* allow taup arrival time get to be skipped if event depth not provided

* sac header functions that required 'evdp' are now skipped over if 'evdp' is not present in the sac header
bugfix: removing debug statement left in pysep
* replace plotw_rs with record section run command in pysep plotting,
sets default sorting to 'distance' and not 'distance_r' for pysep-generated record section

* working on ordering of multiple pages

* added feature tmark to add static lines at given time values, does not address time shifts or move out
* reformatting plotw_rs page separation logic

* sort order of multi-page record sections is now reversed to be more natural
* added a try-except block over trace merging to avoid errors caused by incompatible sampling rates

* re-ordered processing steps, resample now occurs before merge and start/endtime trims to avoid sampling rate inconsistency during merge process

* added comment for merge command
* pysep new parameter  which allows users to fill gappy data with a given value
process function 'merge_and_trim_start_end_times' now takes fill value in order to fill in gappy data
added test to test gap filling

* added gap_fraction parameter which allows selecting the overall percentage length of allowable data gaps. defaults to 1 (100%). added test to cover this

* added gap_fraction to pysep docstring and parameters

* cleaned up docstrings for new parameters

* split up processing function 'merge_and_trim...' into merge function and trim function
trim function now takes actual expected start and end times rather than inferring from the data
bugfix gap percentage not accurately determinig total trace length

* bugfix merge gapped data not returning any data

* remove debugger statement

* added a check in trim function for late starttimes and early endtimes which would create incomplete data

* changed default 'fill_data_gaps' value as False to be more intuitive

* added new hidden variable 'extra_download_pct' which allows downloading an additional x% of data from data center because downloading the exact time bounds may lead to shorter waveforms after resampling or preprocessing. the extra downloaded data is trimmed away before being saved

* fixing tests, trim start and end times ignored if no origin time given to allow for direct preprocessing of streams without event ifnormation
* bugfix: seconds before and after ref were allowed to be integers which caused floating point rounding errors when trimming start and end times
curtail remove for insufficient lenght now checks for streams with time less than the mode rather than no equal, to not kick out streams with sufficient data

* check statement forces time buggers to be floats
obspy trim function set nearest sample to False to ensure we are taking inner samples and getting same sampling rate

* remove last data gap check from merge gapped data

* allow user to fill boundary data gaps with parameter 'fill_data_gaps' which sidesteps rejection for late starttimes and early endtimes

* update changelog

* added another postprocessing check to remove masked data from array which has a flag toggle in PySEP to turn on or off, on by default

* fixed merging tests

* moved remove masked data check into end of preprocessing because it affects the rotation operations if not done prior to rotation.
fixed tests

* bugfix insufficient length check remove '=' which was causing all traces to be thrown out and not just ones with shorter lengths
bch0w added 29 commits March 8, 2023 11:14
…ude information provided. This was used in the title of the map, so added some if statements to avoid these quantities if they are nto rpesent
* API change, parameters 'mindistance' -> 'mindistance_km', 'maxdistance' -> 'maxdistance_km'

* related to #98 allow list of station ids as input
updated docs to reflect station id parameter
starting script to update example config files

* formatting

* moved default phase list value into init and out of hard set parameter since its a list (avoiding mutable input values)

* update all example config files with updated API

* bugfix recsec spines not showing by default and bugfix allow command line users ability to input spine flags which are input as strings

* typo incorrect default inventory name in cookbook docs
* #75 turn OFF azimuth bins when sorting by absolute (back)azimuth

* typo fixing, adding 'event_depth_km' and 'event_magnitude' to pysep docstring

* replaced 'stations_list' -> 'station_list' throughout package for consistentcy'

* one more stations -> station

* slightly modified how the plot and write functions check for validity of file selection, same outward behavior but internally a little cleaner

* removed unncessary 'cha' aprameter in RTZ rotation
updating rotation implementation

* updated write system to be able to write out individual channel SAC files
completed intermediate writing so that files are written as the program progresses

* overwrite_event_tag new behavior, allow users to dump files directly into output directory with no event tags'

* allow SAC sub directory bypass

* added file logger to pysep

* pysep added ability to write out specific components for SAC files
added docs page for explaining how to ignore event tag and sac sub directory

* fixing up docs page for output control

* cleanup docs
…and move created log to output directory after run has completed
…ied by the user but not already existing.

Bump devel version number for debug checking
…races to traverse through the list causing index errors
…and synthetics (st_syn) because originally all scaling was done w.r.t data array which would cause incorrect normalizations for per-trace normalizing
…y to ignore repeat stations even if they came from different networks, due to exclusion based on station name only. Now it excludes based on a NN.SSS (network + station), which is assumed to be unique for all seismic stations
… explicitely used by PySEP to help debug argument mispelling or future API changes not registering. Related to #110
@bch0w bch0w merged commit c6baec9 into master Jul 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant