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

EQcorrscan version 0.4.0 prep #328

Closed
13 of 14 tasks
calum-chamberlain opened this issue Sep 3, 2019 · 1 comment
Closed
13 of 14 tasks

EQcorrscan version 0.4.0 prep #328

calum-chamberlain opened this issue Sep 3, 2019 · 1 comment
Assignees
Labels
Projects
Milestone

Comments

@calum-chamberlain
Copy link
Member

calum-chamberlain commented Sep 3, 2019

Its time for a new version of EQcorrscan, first are there any open issues or pull-requests that need to be finished?

0.4.0 represents a fairly large update to much of the codebase. The current changelog is:

  • Refactor of catalog_to_dd functions:
    • Speed-ups, using new correlation functions and better resource management
    • Removed enforcement of seisan, arguments are now standard obspy objects.
  • Add plotdir to lag_calc.xcorr_pick_family
    • Use for save plot. Figures will save with name of events' id
  • Wholesale re-write of lag-calc function and methods. External interface is
    similar, but some arguments have been depreciated as they were unnecesary.
    • This was done to make use of the new internal correlation functions which
      are faster and more memory efficient.
    • Party.lag_calc and Family.lag_calc now work in-place on the events in
      the grouping.
    • Added relative_mags method to Party and Family; this can be called from
      lag-calc to avoid reprocessing data.
    • Added lag_calc.xcorr_pick_family as a public facing API to implement
      correlation re-picking of a group of events.
  • Renamed utils.clustering.cross_chan_coherence to
    utils.clustering.cross_chan_correlation to better reflect what it actually
    does.
  • Add --no-mkl flag for setup.py to force the FFTW correlation routines not
    to compile against intels mkl. On NeSI systems mkl is currently causing
    issues.
  • BUG-FIX: eqcorrscan.utils.mag_calc.dist_calc calculated the long-way round
    the Earth when changing hemispheres. We now use the Haversine formula, which
    should give better results at short distances, and does not use a flat-Earth
    approximation, so is better suited to larger distances as well.
  • Add C-openmp parallel distance-clustering (speed-ups of ~100 times).
  • Allow option to not stack correlations in correlation functions.
  • Use compiled correlation functions for correlation clustering (speed-up).
  • Add time-clustering for catalogs and change how space-time cluster works
    so that it uses the time-clustering, rather than just throwing out events
    outside the time-range.
  • Changed all prints to calls to logging, as a result, debug is no longer
    an argument for function calls.
  • find-peaks replaced by compiled peak finding routine - more efficient
    both in memory and time Find peaks speedup #249 - approx 50x faster
    • Note that the results of the C-func and the Python functions are slightly
      different. The C function (now the default) is more stable when peaks
      are small and close together (e.g. in noisy data).
  • multi-find peaks makes use of openMP parallelism for more efficient
    memory usage Find peaks speedup #249
  • enforce normalization of continuous data before correlation to avoid float32
    overflow errors that result in correlation errors (see pr Normalize data #292).
  • Add SEC-C style chunked cross-correlations. This is both faster and more
    memory efficient. This is now used by default with an fft length of
    2 ** 13. This was found to be consistently the fastest length in testing.
    This can be changed by the user by passing the fft_len keyword argument.
    See PR Implement SEC-C style internal chunking of frequency domain correlations #285.
  • Outer-loop parallelism has been disabled for all systems now. This was not
    useful in most situations and is hard to maintain.
  • Improved support for compilation on RedHat systems
  • Refactored match-filter into smaller files. Namespace remains the same.
    This was done to ease maintenance - the match_filter.py file had become
    massive and was slow to load and process in IDEs.
  • Refactored _prep_data_for_correlation to reduce looping for speed,
    now approximately six times faster than previously (minor speed-up)
    • Now explicitly doesn't allow templates with different length traces -
      previously this was ignored and templates with different length
      channels to other templates had their channels padded with zeros or
      trimmed.
  • Add skip_short_channels option to template generation. This allows users
    to provide data of unknown length and short channels will not be used, rather
    than generating an error. This is useful for downloading data from
    datacentres via the from_client method.
  • Remove pytest_namespace in conftest.py to support pytest 4.x
  • Add ignore_bad_data kwarg for all processing functions, if set to True
    (defaults to False for continuity) then any errors related to bad data at
    process-time will be supressed and empty traces returned. This is useful
    for downloading data from datacentres via the from_client method when
    data quality is not known.
  • Added relative amplitude measurements as
    utils.mag_calc.relative_amplitude.
  • Added relative magnitude calculation using relative amplitudes weighted by
    correlations to utils.mag_calc.relative_magnitude.
  • Added relative_magnitudes argument to
    eqcorrscan.core.match_filter.party.Party.lag_calc to provide an in-flow
    way to compute relative magnitudes for detected events.
  • Events constructed from detections now include estimated origins alongside
    the picks. These origins are time-shifted versions of the template origin and
    should be used with caution. They are corrected for prepick.
  • Picks in detection.event are now corrected for prepick if the template is
    given. This is now standard in all Tribe, Party and Family methods. Picks will
    not be corrected for prepick in match_filter.
  • Fix Detection.write adds header every time it writes #298 where the header was repeated in detection csv files. Also added
    a write_detections function to eqcorrscan.core.match_filter.detection
    to streamline writing detections.
  • Remove support for Python 2.7.
  • Add warning about unused data when using Tribe.detect methods with data that
    do not fit into chunks. Fixes Tribe.detect with overlap="calculate" doesn't get all the data #291.
  • Fix Match_filter potting should not always decimate to 10Hz #179 when decimating for cccsum_hist in _match_filter_plot
  • Removed depreciated template_gen functions and bright_lights and
    seismo_logs. See Remove depreciated functions #315

Open PRs that need to be completed:

To-do before release

  • Check docs;
  • Make sure changes are represented in CHANGES.md;
  • Bump version number;
  • Merge develop into master;
  • Release a release candidate on github;
  • Test release candidate on conda-forge: see pr 4; See this PR

If release candidate works on conda-forge then:

  • Generate full release on github;
  • Get DOI of new version from zenodo and update master README.md
  • Release on PyPi;
  • Generate PR for eqcorrscan-feedstock from PyPi release;
  • Email google-groups email list.
@calum-chamberlain calum-chamberlain added this to To do in 0.4.0 via automation Sep 3, 2019
@calum-chamberlain calum-chamberlain added this to the 0.4.0 milestone Sep 3, 2019
@calum-chamberlain calum-chamberlain self-assigned this Sep 3, 2019
@calum-chamberlain
Copy link
Member Author

Boom.

0.4.0 automation moved this from To do to Done Sep 7, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
No open projects
0.4.0
  
Done
Development

No branches or pull requests

1 participant