- Nov 10, 2016
-
-
Marcus Herrmann authored
- using statsmodels for regression --> better statistical analysis --> enable Weighted LS (if desired) (plotted by scaling scatter plot size) - plotting confidence + prediction intervals - plot a line with slope = 1 - improve residual plot
-
Marcus Herrmann authored
- take binning as argument - visualize non-cumulative bins as bar histogram(s) - proper adjustment of non-cumulative bins
-
Marcus Herrmann authored
- if variant=='adaptive-interval', report about last (incomplete rate interval)
-
Marcus Herrmann authored
- more beautiful: - label doesn't overlap with waveform anymore - use transparencies - revamp setting of channel name - memory improvement - misc fixes
-
Marcus Herrmann authored
- plot blubbles correctly at the borders using gmtselect - one more time range category: "one month to 6 months" - misc fixes
-
Marcus Herrmann authored
-
Marcus Herrmann authored
- revamped FDSN settings - set FLOAT32 encoding correctly - revamped other/plot_waveform.py - update MPI readme
-
Marcus Herrmann authored
... which means that the config instance got smarter! Now making use of station meta: 1. config.load_station_info(): loads all available channels and their infos (sampling rate, active period, channel name, etc.) - either from FDSN, or from file if specified 2. config.set_channels() to set preferred channel group ... OR let it determine automatically with '*' (i.e. auto-select the channel group with the highest sampling rate - per active period) 3. config.set_resampling() to specify the ultimate (re)sampling rate. Either automatically or manually. Many outcomes are possible, which might depend on the actual case and the set upper BP filter limit. Esp. when the sampling rate changes over time, it tries to solve certain issues by making compromises; 7 cases are implemented (for certain periods under certain circumstances, it might result into UPSAMPLING). It always reports about the taken action and warns in one case (if BP limit is not appropriate for any period). All of these steps report the available/remaining channel groups to give the user an overview of the automatic (or his/her) actions. As a consequence, reorganized Setup class (and thus config instance) - e.g. no 'channel' parameter anymore since may vary in time. The channel at a certain time can be determined with config.get_channels_at_time() --> made use and replaced old style throughout the project - NEW: config.get_sensitivity_at_time() - NEW: config.select_fastest_approach() (moved from TM.utils module)
- Oct 20, 2016
-
-
Marcus Herrmann authored
allow upsampling in waveform_processing if resample parameter differs from the waveform stats + other minor things in TM.waveformops
-
Marcus Herrmann authored
Fixed: correctly set length of IFFT size: make dependent on FFT size (again) ... to not strech the resampled signal! New: - case separation: 1. if factor is an integer, resampling can be speed up for BOTH FFT and IFFT (optimized by 5-smooth number length padding) 2. if factor is non-integer, optimize the longer signal (input for downsampling) - also consider UPsampling - the above optimization applies as well: 1. optimize both FFT and IFFT length with optimal padding 2. if factor is non-integer, optimize the longer signal (the output) - use pyfftw for non-integer resampling to not get stuck infinitely - for the future: might woth exploring 'scipy.signal.resample_poly()'
-
- Oct 13, 2016
-
-
Marcus Herrmann authored
... to allow ANY resampling factor (even non-integer). tl;dr: resampling is now a lot faster than before. How did I advance: 1. I split the _process_mask() function into two separate functions (one for resampling, one for extending the chunks) 2. I updated my mask resampling approach. Idea: instead of mask[::factor] now do : np.interp(np.linspace(0, old_len, new_len), range(old_len), mask) Quite slow. 3. Discovered my old lines of code that made use of obspy's .merge(fill_value=None) function to generate a resampled mask (& merged trace) right away. But this approach seemed slower than mine before. While reviewing the _waveform_processing_trace() function, I reorganized it and made it more compact. 4. All in all, I compared speeds again and it's considerably FASTER now!
-
- Oct 12, 2016
-
-
Marcus Herrmann authored
(they are properly handled since 02aa2586)
-
Marcus Herrmann authored
-
Marcus Herrmann authored
- allow passing a title to the GMT script (Default: '') - if startdate/enddate defined, properly determine axis limits & ticks of histogram - better determine rate axis settings if binning <24h - upon calling the script, print the issued command with "" for arguments that have a space character - slighly rewrote the filename setting in plotTimeline() and making it possible to read files without "_Mag" in its name - script is now totally in GMT5 style (no GMT4 stuff anymore) - no legend for 'web' view
-
- Oct 11, 2016
-
-
Marcus Herrmann authored
-
Marcus Herrmann authored
-
- Oct 10, 2016
-
-
Marcus Herrmann authored
-
Marcus Herrmann authored
With numpy's FFT we can clean the cache in a convenient way. ... alltogether with with the fftconvolve(). Plus: numpy's approach is a lot cleaner (and thus shorter), but you can still go back to scipy... Plus: identified the common operations of down- and up-sampling Plus: More comments, infos & debug/inspection options
-
Marcus Herrmann authored
In main.py: always check if we are in 'auto' mode with no templateSet defined - even if the directory already exist. Just in case... Also: don't forget to mention zero-meaning when doing xcorr. But we will not use it since waveforms are already quasi zero-mean :-) Also: outsourced matplotlib.use('Agg') to script.py
-
Marcus Herrmann authored
- trim away filterMargin if procType='none' - readCatalog SEDDB now takes time & mag column specifications - in timeline, now default: print missed catalog events as gray bubbles - fixed some template preloading issues - possible to clean also scipy's FFT cache - print ALL gaps if present
-
Marcus Herrmann authored
-
Marcus Herrmann authored
isMaskedArray() instead of np.ma.is_masked(). The old check returned False if though an array had a mask (an "all-False-mask")
-
Marcus Herrmann authored
-
- Oct 06, 2016
-
-
Marcus Herrmann authored
-
Marcus Herrmann authored
- reworked usage of get_max_amp() - improved proper determination of template's rel. time of max. amp - other fixes & beautifications
-
Marcus Herrmann authored
more features & cleaned up GMT script
-
- Oct 04, 2016
-
-
Marcus Herrmann authored
- more comments + checks in main.py (non-MPI approach) - renaming getWaveform --> get_waveform - revising other/plot_waveform.py
-
Marcus Herrmann authored
... usable like a FDSN, but reads from a (local or mounted) SeisComP Data Structure (SDS) directory
-
Marcus Herrmann authored
Conflicts:Solved conflicts in - main.py - io.py - waveformops.py Plus: Functions that were outsourced in 'mpi' now got updated with changes that were made in the meantime on master) Also introduced further improvents: - concering template preloading and reading - revising do_xcorr_oneday() TM/eventops.py TM/io.py TM/main.py TM/setupclass.py TM/utils.py
-
- Oct 03, 2016
-
-
Marcus Herrmann authored
(there was an occurence where the desired waveform length was bigger (by one sample) than its padded version [num_padded]; this occured more likely for short waveforms)
-
Marcus Herrmann authored
-
Marcus Herrmann authored
-
Marcus Herrmann authored
-
Luca Scarabello authored
-
- Oct 01, 2016
-
-
Marcus Herrmann authored
... saving preprocessed waveforms next to raw ones (we only need the former)
-
- Sep 30, 2016
-
-
Luca Scarabello authored
-
Marcus Herrmann authored
(before, returned only the last element)
-
Marcus Herrmann authored
-