* Implement reading Party objects from multiple files, including wildcard
expansion. This will only read template information if it was not
previously read in (which is a little more efficient).
* Allow reading of Party objects without reading the catalog files.
* Check quality of downloaded data in `Tribe.client_detect()` and remove it if it
would otherwise result in errors.
* Add `process_cores` argument to `Tribe.client_detect()` and `Tribe.detect()`
to provide a separate number of cores for processing and peak-finding - both
functions are less memory efficient that fftw correlation and can result in
memory errors if using lots of cores.
* Allow passing of `cores_outer` kwarg through to fftw correlate functions to
control inner/outer thread numbers. If given, `cores` will define the number
of inner-cores (used for parallel fft calculation) and `cores_outer` sets
the number of channels to process in parallel (which results in increased
memory usage).
* Allow Tribe and Party IO to use QUAKEML or SC3ML format for catalogs (NORDIC
to come once obspy updates).
* Allow Party IO to not write detection catalogs if so desired, because
writing and reading large catalogs can be slow.
* If detection-catalogs are not read in, then the detection events will be
generated on the fly using `Detection._calculate_event`.
* BUG-FIX: When one template in a set of templates had a channel repeated,
all detections had an extra, spurious pick in their event object. This
should no-longer happen.
* Add `select` method to `Party` and `Tribe` to allow selection of a
specific family/template.
* Use a compiled C peak-finding function instead of scipy ndimage - speed-up
of about 2x in testing.
* BUG-FIX: When `full_peaks=True` for `find_peaks2_short` values that were not
above their neighbours were returned. Now only values greater than their two
neighbours are returned.
* Add ability to "retry" downloading in `Tribe.client_detect`.
* Change behaviour of template_gen for data that are daylong, but do not start
within 1 minute of a day-break - previous versions enforced padding to
start and end at day-breaks, which led to zeros in the data and undesirable
behaviour.
* BUG-FIX: Normalisation errors not properly passed back from internal fftw
correlation functions, gaps not always properly handled during long-period
trends - variance threshold is now raised, and Python checks for low-variance
and applies gain to stabilise correlations if needed.
* Plotting functions are now tested and have a more consistent interface:
* All plotting functions accept the keyword arguments `save`, `savefile`,
`show`, `return_figure` and `title`.
* All plotting functions return a figure.
* `SVD_plot` renamed to `svd_plot`
* Enforce pre-processing even when no filters or resampling is to be done
to ensure gaps are properly processed (when called from `Tribe.detect`,
`Template.detect` or `Tribe.client_detect`)
* BUG-FIX in `Tribe.client_detect` where data were processed from data
one sample too long resulting in minor differences in data processing
(due to difference in FFT length) and therefore minor differences
in resulting correlations (~0.07 per channel).
* Includes extra stability check in fftw_normxcorr which affects the
last sample before a gap when that sample is near-zero.
* BUG-FIX: fftw correlation dot product was not thread-safe on some systems.
The dot-product did not have the inner index protected as a private variable.
This did not appear to cause issues for Linux with Python 3.x or Windows, but
did cause issues for on Linux for Python 2.7 and Mac OS builds.
* KeyboardInterrupt (e.g. ctrl-c) should now be caught during python parallel
processes.
* Stopped allowing outer-threading on OSX, clang openMP is not thread-safe
for how we have this set-up. Inner threading is faster and more memory
efficient anyway.
* Added testing script (`test_eqcorrscan.py`, which will be installed to your
path on installation of EQcorrscan) that will download all the relevant
data and run the tests on the installed package - no need to clone
EQcorrscan to run tests!