2894 Commits

Author SHA1 Message Date
6cce05b035 Merge branch 'feature/dae' into develop
# Conflicts:
#	pylot/core/io/data.py
#	pylot/core/util/widgets.py
2024-06-12 16:19:21 +02:00
7326f061e5 [minor] inform if station coordinates were not found in metadata 2024-06-12 16:11:53 +02:00
1a18401fe3 [bugfix] added missing Parameter object in call for picksdict_from_picks 2024-06-12 13:44:02 +02:00
ec930dbc12 [minor] removed unneeded imports 2024-06-07 15:56:05 +02:00
b991f771af [bugfix] removing redundancy and wrong bullsh.. try-except code 2024-06-07 15:04:16 +02:00
2c3b1876ab [minor] switch default cmap for array_map to 'viridis' 2024-06-07 14:34:27 +02:00
0acd23d4d0 [update] further improved Pickfile selection dialog, now providing methods "overwrite" or "merge" 2024-06-07 14:32:57 +02:00
f349c8bc7e [update] improve pickfile selection, give the ability to select only specific files 2024-06-07 13:09:34 +02:00
6688ef845d [bugfix] re-implement ability of get_bool to return unidentifiable input 2024-06-07 13:08:51 +02:00
5b18e9ab71 [merge] merge branch 'improve-util-utils' of pull request #35 into develop 2024-06-07 10:29:39 +02:00
c79e886d77 [minor] update default shell script for SGE 2024-06-06 15:55:47 +02:00
76f2d5d972 [update] improve SearchForFileExtensionDialog now proposing available file endings 2024-06-06 15:54:36 +02:00
2d08fd029d [hotfix] datetime formatting caused error when time not set 2024-06-06 13:55:11 +02:00
8f22d438d3 [update] changed eventbox overview to show P and S onsets separately 2024-06-05 16:18:25 +02:00
93b7de3baa [update] raising PickingFailedException when CF cannot be calculated due to missing signal (too short waveform)
[update] raising PickingFailedException when CF cannot be calculated due to missing signal (too short waveform)
2024-06-05 14:31:09 +02:00
05642e775b [minor] some tweaks (convenience)
[update] raising PickingFailedException when CF cannot be calculated due to missing signal (too short waveform)
2024-06-05 14:31:07 +02:00
47205ca493 [update] improved calculation of smoothed AIC. Old code always created an artificial value and a np.nan at the array start 2024-06-05 14:31:07 +02:00
5c7f0b56eb [update] improved SearchFileByExtensionDialog widget 2024-06-05 14:19:17 +02:00
c574031931 [bugfix] the implementation approach of STA/LTA inside characteristic function calculation (skewness/kurtosis) corrupted the old, working code due to a mistake in the logic 2024-06-05 14:17:57 +02:00
e1a0fde619 [update] improved array map to identify and display other phase names than P / S 2024-05-29 11:43:31 +02:00
48d196df11 [update] improved SearchFileByExtensionDialog widget (table, auto refresh) 2024-05-29 11:42:10 +02:00
6cc9cb4a96 [minor] reduced maxtasksperchild for multiprocessing 2024-05-29 11:40:34 +02:00
5eab686445 [bugfix] accidentally removed return value 2024-05-24 16:10:32 +02:00
b12e7937ac [update] added a widget for loading pick files that lists available files depending on chosen filemask 2024-05-22 10:58:07 +02:00
78f2dbcab2 [update] added check for nan values in waveforms which crashed obspy filter routines
[minor] some tweaks and optimisations
2024-04-30 15:48:54 +02:00
8b95c7a0fe [update] changed sorting of traces overview if all station names are numeric (e.g. active experiments) 2024-04-09 16:02:31 +02:00
65dbaad446 [update] adding possibility to display other waveform data (e.g. denoised/synthetic) together with genuine data for comparison 2024-03-22 17:12:04 +01:00
5b97d51517 [minor] mpl.figure.canvas.draw -> draw_idle 2024-03-22 17:12:04 +01:00
f03ace75e7 [bugfix] QWidget.show() killed figure axis dimensions creating unexpected error of fig.aspect=0 when creating colorbar inset_axes in Python 3.11 2024-03-22 17:10:04 +01:00
9c78471d20 [bugfix] header resize method renamed in QT5 2024-03-22 15:34:05 +01:00
09d2fb1022 [bugfix] pt2 of fmpicker fix, make sure to also copy stream in autoPyLoT
closes #24
2023-08-24 12:55:30 +02:00
3cae6d3a78 [bugfix] use copies of wfdata when calling fmpicker to prevent modification of actual data used inside GUI 2023-08-24 11:28:30 +02:00
2e85d083a3 [bugfix] do not call calcsourcespec if incidence angle is outside bounds (for whatever reason) 2023-08-24 11:27:30 +02:00
ba4e6cfe50 [bugfix] bin directory + /bin creates "/bin/bin". Also it is not taken care of os compatibility and also compatibility with existing code (line 86ff was useless after recent change in line 85) 2023-08-23 14:48:21 +02:00
1f16d01648 [minor] give more precise user warning if no pick channel was selected 2023-08-23 09:38:16 +02:00
3069e7d526 [minor] commented - possibly unnecessary - line of code that created an error when using old metadata Parser 2023-08-22 15:53:49 +02:00
a9aeb7aaa3 [bugfix] set simple phase hint (P or S) 2023-08-22 15:53:49 +02:00
b9adb182ad [bugfix] could not handle asterisk-marked events when opening tune-autopicker 2023-08-22 15:53:49 +02:00
a823eb2440 [workaround] using explicit Exception definition without a special handling does not make sense. Function broke on other errors in polyfit. Still might need fixes in the two lines above the "except" block(s). 2023-08-22 15:53:49 +02:00
486e3dc9c3 Merge pull request 'Disabled button in case flag is false' (#31) from disable-show-log-widget into develop
Reviewed-on: #31
2023-08-22 12:05:33 +02:00
8d356050d7 [update] corrected original authors of PILOT 2023-08-22 12:01:51 +02:00
43cab3767f [Bugfix] fixxed wrong check for taupymodel 2023-06-27 08:04:00 +02:00
b3fdbc811e Merge branch 'develop' into improve-util-utils 2023-06-23 09:37:54 +02:00
a1f6c5ffca Bugfixxes, spectogram tab wip 2023-06-14 13:11:54 +02:00
e4e7afa996 Minor changes to adjust to python 3. Temporary Fix for file exporting not working properly. WIP spectrogram view. 2023-04-27 10:24:55 +02:00
9fce4998d3 bugfix: remove unused functions; correct for wrong formatting (PEP) 2023-04-23 22:05:11 +02:00
c468bfbe84 feat: add type hints and tests for plot utils 2023-04-23 21:37:20 +02:00
4861d33e9a bugfix: add tests to key_for_set_value 2023-04-16 09:58:51 +02:00
f5f4635c3d bugfix: rename is_iterable and add doc tests 2023-04-16 09:50:42 +02:00
b12d92eebb bugfix: refactor get_owner and get_hash; add tests 2023-04-12 21:22:58 +02:00
e9da81376e bugfix: add new tests and refactor get_none 2023-04-12 20:32:44 +02:00
e68fc849f0 bugfix: correct erroneous and add new doctests 2023-04-10 19:14:23 +02:00
efb117177c bugfix: update check4rotate 2023-04-10 18:35:58 +02:00
0634d24814 fix: disabled button in case flag is false
The button was not disabled in case the flag variable was false. The get_Bool function was renamed and improved to also work in case in the input variable is of type int or float.

Additionally, the environment file was corrected to also work for macOS installations with ARM architecture.
2023-04-06 16:40:20 +02:00
43c2b97b3d Small changes 2023-01-24 11:45:12 +01:00
ann-christin
8d94440e77 [bugfix] logwidget always initiated 2022-11-14 14:14:59 +01:00
ann-christin
66b7dea706 [update] pylot.in no longer mandatory 2022-11-14 14:14:12 +01:00
ann-christin
ebf6d4806a [minor] reformating 2022-11-14 11:52:25 +01:00
ann-christin
207d0b3a6f [update] directly pass args from arg parser 2022-11-14 11:18:15 +01:00
ann-christin
3b3bbc29d1 Merge remote-tracking branch 'origin/develop' into develop 2022-11-14 10:30:38 +01:00
0c3fca9299 Re-Added local changes that had been lost due to technical problems ( no access to old machine ) 2022-10-04 11:44:31 +02:00
2d33a60421 [Bugfix] Multiple small bugfixxes keeping NLL from working in python3.+ 2022-09-15 14:31:13 +02:00
ann-christin
a8c6f4c972 [reformat] spell checking 2022-08-25 15:31:08 +02:00
ann-christin
0d91f9e3fe update github link 2022-08-25 14:03:05 +02:00
ann-christin
494d281d61 update github link 2022-08-25 14:00:37 +02:00
5ef427ec12 Merge branch 'develop' of git.geophysik.ruhr-uni-bochum.de:marcel/pylot into develop 2022-06-29 14:07:35 +02:00
29cf978782 minor bug fixes 2022-06-29 14:07:06 +02:00
091449819c [update] tau-p usage for s-picking 2022-05-31 18:16:02 +02:00
cd9c139349 [bugfix] mainly added missing taup model (lost in branch merging for python3), some smaller fixes for S picking 2022-05-31 12:45:22 +02:00
084fb10cea Merge remote-tracking branch 'origin/develop' into develop 2022-05-31 09:59:17 +02:00
dde9520879 [minor] deactivate logwidget by default as it seems to irregularly create segfaults 2022-05-31 09:40:15 +02:00
7847f40a35 [minor] added developers do README 2022-04-01 12:07:51 +02:00
2c188432a1 Merge branch 'develop' of https://git.geophysik.ruhr-uni-bochum.de/marcel/pylot into develop 2022-03-24 13:28:52 +01:00
86dc0f5436 [minor] small style changes 2022-03-22 11:26:29 +01:00
83ba63a3fd Merge pull request 'feature/port-to-py3' (#11) from feature/port-to-py3 into develop
Reviewed-on: #11
2022-03-21 15:30:05 +01:00
3392100206 Removed psd 2022-03-17 13:42:27 +01:00
401265eb3a [minor] added some comments 2022-03-16 16:03:54 +01:00
dd685d5d5e [refactor] rewrote/simplified getQualitiesfromxml code, used function already implemented in phases.py 2022-03-16 16:00:14 +01:00
3cd17ff364 [update] added xml file for unittest 2022-03-16 14:31:03 +01:00
d879aa1a8b [bugfix] small fix to get getQualitiesfromxml running, added unittest for function 2022-03-16 14:29:47 +01:00
445f1da5ac [bugfix] reset stdout to previously set one and not to default sys.__stdout__ 2022-03-16 09:25:28 +01:00
962cf4edac [minor] README.md 2022-03-15 11:14:08 +01:00
eb0dd87a9e [update] optimize requirements/yml file 2022-03-15 10:44:37 +01:00
e9cc579cf6 [minor] README.md 2022-03-15 10:41:48 +01:00
f1fd52b750 [bugfix] when closing mainwindow, also close logwidget 2022-03-15 10:41:29 +01:00
5449210797 [update] optimize requirements/yml file 2022-03-15 10:12:39 +01:00
0af948030b [bugfix] chooseArrival -> chooseArrivals, fixes #25 2022-03-15 09:42:25 +01:00
21b1be0e56 [update] updated README 2022-03-14 16:05:58 +01:00
58eee13b07 [update] removed setup.py (deprecated) 2022-03-14 15:53:42 +01:00
c57eb4f556 [update] added requirements, updated pylot.yml and setup.py 2022-03-14 15:33:33 +01:00
47bb8c4326 Merge branch 'develop' into feature/port-to-py3 2022-03-14 13:19:20 +01:00
29ffcf2e37 [bugfix] pick_r unreferenced, closes #26 2022-03-14 11:18:51 +01:00
e35d5d6df9 [refactor] automatic code reformatting (Pycharm) 2022-03-09 14:41:34 +01:00
79f3d40714 [refactor] code cleanup (WIP) 2022-03-09 14:28:30 +01:00
9cef22b74b [refactor] code cleanup (WIP), open issues #25 and #26 2022-03-09 14:08:04 +01:00
c254ee09b3 [bugfix] updated some window flags for PySide2 2022-03-09 10:43:16 +01:00
be32f4f61d [improvement] log can be opened from menu now (or focuses) 2022-03-09 10:42:52 +01:00
9036a9054e [new] log widget for PyLoT 2022-03-08 16:27:36 +01:00
dd02527c1d [bugfix] connected save figure button to a function that saves a figure 2022-03-08 15:07:18 +01:00
a383101d2c [minor] adjustments array map layout 2022-03-08 14:42:55 +01:00
Kaan Cökerim
7c926327dd Merge branch 'feature/port-to-py3' of git.geophysik.ruhr-uni-bochum.de:marcel/pylot into feature/port-to-py3 2022-03-08 12:45:49 +01:00
Kaan Cökerim
e9d3caafd3 [FOLDER RESTRUCTURING] Changed project structure from ROOT-DATA-DATABASE seperation into one path (DATA). Some ROOT and DATABASE variables still remain as unfunctional artefacts and need to be removed from the code 2022-03-08 12:30:43 +01:00
0b50a91f57 [bugfix] scrolling inhibited withing QSpin/QDoubleSpinBox 2022-03-07 15:32:29 +01:00
8725f5083c Merge branch 'develop' into feature/port-to-py3 2022-03-07 14:46:35 +01:00
13e0d8b106 Added second check to toggle locate button
When the User was using the continue to next station button the locate button did not get turned on every time while picking
2022-02-23 09:14:40 +01:00
a13defbe42 Added getQualitiesFromXML and EventlistFromXML scripts and respective buttons
Changed Icons for both Button - only temporary versions at the moment
2022-01-24 10:11:44 +01:00
0ee239f4a6 Added chooseArrivals Function to phases.py
Function takes dictionary with auto and manual picks and prefers the manual ones for saving data
2022-01-18 22:39:57 +01:00
131f6782af Temporary fix for Auto/Manual Pick Dictionary detection + fix for .pha files not getting saved 2021-11-21 13:04:25 +01:00
15cad42868 [Bugfix] Export of picks did not work because dictionary key pickmethod
was not taken into account.
2021-09-20 12:13:20 +02:00
Kaan Cökerim
0dc5aff3fc [FOLDER RESTURCTURING #22] some changes in path variables 2021-09-08 13:06:51 +02:00
7f9d240d02 Adding Bugfix from port-to-py3 port for incorrect picksdict to develop branch 2021-09-05 09:26:59 +02:00
Kaan Cökerim
7c5e16ecc6 [FOLDER RESTURCTURING #22] designated datapath as new single path variable and changed variable assignments accordingly for Project() and Event() classes and partially in MainWindow(). 2021-08-30 14:04:25 +02:00
Kaan Cökerim
321a871d62 Implemented merge suggestions #11 2021-08-12 15:43:23 +02:00
Kaan Cökerim
a738dc57ec Minor bug fixes. Fixes #16 2021-08-12 14:24:05 +02:00
ca56139922 [minor] corrected some coding mistakes, added some requirements 2021-08-12 09:42:18 +02:00
81240a8ffe [bugfix] also regarding #20 2021-08-11 16:18:41 +02:00
d236d3d80f Merge branch 'develop' into feature/port-to-py3 2021-08-11 15:16:19 +02:00
2dd48b4c62 [bugfix] picksdict was corrupted so that no manual picks could be loaded from .xml, fixes #20 2021-08-10 17:40:49 +02:00
Kaan Cökerim
e850e5d4fe Removed hard coded user specific data paths 2021-08-04 17:05:43 +02:00
Kaan Cökerim
4fd27994f6 Extern saving routine for map png 2021-08-04 16:58:14 +02:00
Kaan Cökerim
ca140d3fe1 Tabel now checks if magnitude object has any entries before trying to write to event table 2021-07-28 10:14:09 +02:00
Kaan Cökerim
60db23e83c Fixed minor plot bugs 2021-07-26 13:18:24 +02:00
b976ec6ab0 [minor] remove redundant code 2021-07-20 17:24:27 +02:00
702b7f3fb1 [minor] removed total number of picks which seems to be buggy (and also not explained) 2021-07-20 14:09:57 +02:00
320cb42390 [bugfixes] some more bugfixes 2021-07-16 10:15:40 +02:00
cc1139d2ca [bugfix] some (py3) related fixes in rotate station and minMax plotting 2021-07-15 12:04:34 +02:00
aa73bb0ae8 [bugfix] WIP, creating new issue: Could not save project after initializing Event table; PySide2.QTableWidgetItem cannot be pickled! 2021-07-09 15:31:12 +02:00
de11c3b611 [bugfix] added dummy argument for QAction trigger signal
fixes #14
2021-07-09 12:16:32 +02:00
92c328e3c6 [bugfix] closes #15 increased pointsize and moved station labels 2021-07-09 12:10:10 +02:00
819ea8bf00 [bugfix] Parameter window opening when loading events 2021-07-09 12:09:25 +02:00
Kaan Cökerim
bd9c1d0f73 Some Minor Fixes 2021-07-09 10:06:28 +02:00
30eb8fbbbd [Bugifx] Taup model was hard coded as iasp91. 2021-07-07 11:10:23 +02:00
8b03aab381 [Bugfix] Take into account if only local or moment magnitude has been
derived to write event list properly.
2021-07-05 11:29:44 +02:00
Kaan Cökerim
5efe75f4ea Minor bug fixes 2021-06-21 11:28:54 +02:00
Kaan Cökerim
7ccad4cb86 minor bug fixes 2021-06-18 19:21:43 +02:00
3af02bbbf7 Merge branch 'develop' of https://git.geophysik.ruhr-uni-bochum.de/marcel/pylot into develop 2021-06-18 13:01:43 +02:00
a6af015f05 For some data scopy is not working (??), captured that. 2021-06-18 12:59:38 +02:00
Kaan Cökerim
b4e72eafe7 Fixed another QtGui issue 2021-06-17 16:35:47 +02:00
Kaan Cökerim
fbeab85bb3 Fixed pgplot QtGui imports 2021-06-17 16:27:30 +02:00
Kaan Cökerim
0c43040faf Map finalized. Added evironment YML 2021-06-17 16:04:18 +02:00
6e40811b01 [minor] small bugfix 2021-06-17 15:34:55 +02:00
Kaan Cökerim
04067cac8e Map zoom and pan work. Interaction with station scatters broken. Map grid does not adjust to changed map scales 2021-06-16 16:02:35 +02:00
67e2ba3ad7 Additional screen output, temporarily comment amplitude info for
obs-file.
2021-06-15 11:18:24 +02:00
Kaan Cökerim
2ccdfb8470 Map is displayed correctly. Zoom/Pan does not work -> Structure needs rework 2021-06-02 21:04:51 +02:00
Kaan Cökerim
f502ac0a00 Array map is now setting up, though it does not display the map correctly. Issue with plotting axes or show command? 2021-05-26 14:08:02 +02:00
Kaan Cökerim
978bf42a3e Paramter window works again. TODO: find line that sets PyLot.get_Parameters(show=FALSE). At the moment it is hard coded to be always shown 2021-05-09 14:46:13 +02:00
5289be55dd Merge branch 'develop' of https://git.geophysik.ruhr-uni-bochum.de/marcel/pylot into develop 2021-05-06 13:49:12 +02:00
27c9bbb96a Manualy adding generic Amplitude to .obs files
Due to the obspy write function not including the generic Amplitude/A0 in the .obs file (NonLinLoc) even when the Event holds this Data. Obspy Team has been informed by opening an issue on Github
2021-05-06 13:48:44 +02:00
Kaan Cökerim
4451209907 GUI starts and most menus work. Some variables apperently got lost within various branches 2021-04-23 12:00:04 +02:00
Kaan Cökerim
ded46d45cc GUI starts successfully. Changed imports tu work with pyside2 2021-04-04 12:21:27 +02:00
c9bd0a147c Preparation of implementing pick-quality button. 2021-04-01 11:01:06 +02:00
07e7ef3efa [revision] cleaned up unclean code: tabs -> spaces 2021-03-30 16:39:44 +02:00
f11ffc67ff Merge branch 'develop' of https://git.geophysik.ruhr-uni-bochum.de/marcel/pylot into develop 2021-03-29 16:10:08 +02:00
217fa330c1 Fixed eventlist not working after locating twice
Changed exception when less then 2 horizontals are found to warning
2021-03-29 16:05:50 +02:00
bfec58cc24 [bugfix] entering if when len(mag) == 1 2021-02-01 16:03:23 +01:00
172786dc6d [Bugfix] Remove elements of shrinking list! 2021-01-14 14:04:50 +01:00
a9784d33e5 If events have been removed, project-event list is updated
automatically.
2021-01-14 10:13:51 +01:00
21453159b7 Started implementing saving peak-to-peak amplitude in .obs file 2020-12-10 12:50:33 +01:00
f40d22af33 FOCMEC needs suffix *.in for input file. 2020-10-15 10:02:02 +02:00
01fea084d5 [Bugfix] Avoid printing * in focmec-input file. 2020-10-15 09:43:25 +02:00
16f6e2d1fd [Bugfix] localmag and momentmag referenced before assignment. 2020-10-07 10:37:41 +02:00
49c747b638 Merge branch 'develop' of https://git.geophysik.ruhr-uni-bochum.de/marcel/pylot into develop 2020-10-06 11:26:37 +02:00
f8f4e6789c [new] add extent option "active" to pick high frequency active seismic data 2020-10-06 10:44:27 +02:00
08c2d7556f Implemented first-motion info into picking window. 2020-09-30 13:27:02 +02:00
7d77cb0b2f [Bugfix] Wrong syntax for multiple if statements. 2020-09-30 10:11:10 +02:00
6f70b2c0e2 Implemented first-motion picker within manual picking. 2020-09-29 16:48:38 +02:00
8f1ab87045 Started implementing automated first-motion picking within manual
picking.
2020-09-28 16:55:25 +02:00
5351043493 Local and moment magntiude occur on event list. 2020-09-28 15:11:23 +02:00
dccbaa357a Check if data directory exists to avoid program abortion. 2020-09-22 10:30:48 +02:00
37c8858096 Limit number of fft bins. 2020-09-21 17:01:06 +02:00
f93499da7d For unknown reasons sometimes station and network information are not
avaialble, avoid program failure.
2020-09-16 16:16:53 +02:00
e4cfebe989 Capture possible error occuring due to to incomplete dictonaries. 2020-07-30 15:21:26 +02:00
da360990f6 [Bugfix]: Capture error ocurring when writing output files without event
location.
2020-07-30 13:55:56 +02:00
e083e75d73 Make sure to load autoPyLoT-event information from xml file. 2020-07-30 13:27:38 +02:00
79192cda33 Distinguish between auto picks and manual picks in code. 2020-07-30 13:04:45 +02:00
066db3df53 Removed unnecassary print statements. 2020-07-30 10:40:34 +02:00
6d81e4a132 Speed up spectral fit; take into account that in seldom cases not all
pick information in pick dictionary are available.
2020-07-30 10:37:39 +02:00
f49b9054b0 [Bugfix]: Take into account onset time might be None. 2020-07-29 15:10:22 +02:00
82e2c325ae Return 'N' (noisy) for first motion instead None. 2020-07-29 14:51:23 +02:00
85ae05b580 Updated author information. 2020-07-29 13:55:54 +02:00
e64135c7a8 [Bugfix]: Check for key S and be sure to get element weight for pick
dictionary.
2020-07-29 12:14:42 +02:00
b7795ca562 Removed right-side picking to stabilize algorithm. 2020-07-29 10:10:18 +02:00
8066bd2f01 Avoid IOerror, relaxed to warning message to keep PyLoT running. 2020-07-28 17:16:48 +02:00
df6a6c1c71 Added output for hypoDD. 2020-07-28 13:08:25 +02:00
1f6a44eeef [Bugfix]: elif statement was not working. 2020-07-27 16:55:19 +02:00
2bab42a0dc [Bugfix] invlist is already inventory object! 2020-07-27 16:26:11 +02:00
c7d8569105 Enabled writing for FOCMEC output. 2020-07-23 16:51:05 +02:00
003ba76650 [Bugfix]: PyLoT is now able to write VELEST-input cnv-file. 2020-07-21 16:22:17 +02:00
7617958a1c Capture problems during data fitting. 2020-07-21 11:55:27 +02:00
32c95757c6 [minor] small changes to autopylot.sh script 2020-07-16 12:36:23 +02:00
dad383b197 [revert] reverted accidental changes to file PyLoT.py 2020-07-16 12:35:18 +02:00
707c596672 [Bugfix]: No scaling if 0.0! 2020-07-08 15:32:16 +02:00
075beb2db3 [Bugfix]: network magnitude has never been scaled! 2020-07-08 15:20:03 +02:00
7023bc4ce4 Bug workaround: sometimes rotate2zne fails resulting in an permanent
error
2020-07-08 14:57:43 +02:00
9486d7aced [changed] major change in QSettings behavior when saving channel order (alternative naming (ZNE -> 123)), RESET OF QSETTINGS MIGHT BE NECESSARY (PyLoT.py --reset_qsettings) 2020-06-16 15:06:51 +02:00
1a20d7fbcb [bugfix] workaround for MacOS, where SetChannelComponents class can not be saved using QSettings 2020-06-16 12:03:34 +02:00
fb6ba83cc5 [new] added --reset_qsettings option to PyLoT in case of corrupted QSettings 2020-06-16 11:09:50 +02:00
02083e2bf8 [change] magnitude calculation problem using evalresp in GUI, changed to usage of ObsPy intrinsic function 2020-06-08 17:42:05 +02:00
7187cb337b [various] fixes on array_map 2020-06-08 14:23:05 +02:00
fa093ccac6 Take into account that creation info sometimes is not available. 2020-06-03 13:19:31 +02:00
6ad187b7fa [update] added missing function for refactor commit 2020-01-14 14:03:13 +01:00
78eca1b222 [update] some smaller changes in GUI and array_map 2020-01-14 13:57:12 +01:00
492f5b96f2 [refactor] moved functions requiring QT import from util.utils to util.gui 2020-01-14 13:55:30 +01:00
be397edf1c [bugfix] same problem as prior commit 2019-12-17 17:04:08 +01:00
fa4423f65d [bugfix] transform to float for different python library versions 2019-12-17 16:54:07 +01:00
29440deb6f [new] set cuttimes for waveforms in properties tab to speedup reading and visualization
[improvements] only re-read/re-plot if needed after changing properties
2019-12-17 16:24:32 +01:00
aa38e2b851 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2019-12-17 13:51:44 +01:00
3a1c907043 [add] delete all autopicks button in GUI
[bugfix] small bugfix in case of problems with Stream String representation
2019-12-17 13:50:54 +01:00
3354e3980e [update] improved array map, point size showing pick error class now 2019-12-11 15:59:24 +01:00
a9135ec483 [bugfix] calculation of hybrid picks (auto+manual) for array_map called too often taking a lot of time 2019-11-27 10:56:40 +01:00
be1e49fa57 [updates] generate_array_maps multiprocessing, added extension '_autopylot' to picks generated by autopylot to prevent overwriting on auto-save 2019-11-26 11:11:25 +01:00
Ludger Küperkoch
3be78ec576 Some debugging. 2019-11-19 15:12:10 +01:00
ludger
5a2aeeb70d Re-implemented second option for calculating fit to source spectrum, take median of both options; some bug fixes 2019-11-15 15:09:25 +01:00
ludger
570e47f2df No changes!! 2019-11-15 11:36:26 +01:00
ludger
4a0759ee6e Replaced IOError with warning message, GUI keeps being alive, but still buggy with TauPy! 2019-11-15 09:57:31 +01:00
ludger
8419fc9681 Taper CF before calculating AIC. 2019-11-14 16:47:16 +01:00
Ludger Küperkoch
98e429d8fd Update moment magnitudes before calculating network magnitude. 2019-10-28 16:51:04 +01:00
Ludger Küperkoch
ceb33bf59e Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2019-10-28 16:43:11 +01:00
Ludger Küperkoch
f28ee2bb59 New default parameters (min-, max-values) for magnitude scaling. 2019-10-28 16:41:48 +01:00
8b741c9102 [bugfix] old parameter default values, especially min/max values remained from older pylot projects 2019-10-28 16:33:19 +01:00
Ludger Küperkoch
0ef2afa775 Update of event object for moment magntiude was missing. 2019-10-25 16:20:48 +02:00
Ludger Küperkoch
dd05d46be7 Added calulation of network moment magnitude, additional screen output of moment magnitude. 2019-10-25 16:16:07 +02:00
e6a326d437 [bugfixes] on GUI driven earthquake location/magnitude calculation 2019-10-24 10:12:00 +02:00
18aa67e5ba [update] some bugfixes relating array_maps, removed some unneccessary files 2019-10-23 11:34:50 +02:00
Ludger Küperkoch
e94129ec36 If several locations done, use the most recent one. 2019-09-13 12:29:42 +02:00
Ludger Küperkoch
813a2c989e Some cosmetics. 2019-09-11 12:22:11 +02:00
Ludger Küperkoch
f21973c7b6 Restitute and calculate magnitudes only on picked traces. 2019-09-11 12:13:53 +02:00
Ludger Küperkoch
2ecd7b1ec5 Removed deactivated code. 2019-09-11 11:30:39 +02:00
Ludger Küperkoch
929ddb0ab2 Activated magnitude calculation, removed typo (WAscaling), still buggy in applyEvent! 2019-09-09 16:23:34 +02:00
Ludger Küperkoch
b4eeef55a6 Bug: AxesSubplot object has no attribute set_facecolor. Deactivated that line. 2019-09-09 14:40:51 +02:00
cc8d301cff [new] small script to automatically generate array maps (maybe add this as a GUI option?) 2019-09-05 17:20:11 +02:00
b39489b253 [update] increased flexibility of ArrayMap class 2019-09-05 17:19:40 +02:00
7382ca5d47 [bugfix] start/endtimes modified for taupy were not used at all 2019-09-02 10:44:25 +02:00
34ca64ee17 [bugfix] old picks were not properly erased before loeading new picks 2019-08-23 11:30:16 +02:00
2963be5bba [bugfix] try and error reading did not work for StationXML files 2019-08-23 11:29:15 +02:00
c1cb0e4a37 [bugfix] gaps are now merged when data are loaded and not when plotting (could cause problems with data object being empty) 2019-08-14 14:52:56 +02:00
15882ed27e Merge branch 'feature/metadata_clean_inventory' into develop 2019-08-12 16:39:12 +02:00
b21b113edd [bugfix] dataprocessing, xml
[update] save images as svg/jpg
2019-08-12 11:58:04 +02:00
9764e12b19 [new] save event table as .csv file 2019-07-01 17:24:06 +02:00
8ae00529f0 [minor] modified status output (count events) 2019-06-26 12:00:55 +02:00
3c3fd00654 [minor] changed number of levels on array map 2019-06-26 11:58:03 +02:00
2d775fa1b9 [rename] real_Bool/real_None -> get_Bool/get_None 2019-06-24 15:05:04 +02:00
2687d6cdef [bugfix] get bool on 'use_taup' parameter in case it was a string 2019-06-24 15:05:03 +02:00
eaabdce47a [bugfix] on magnitudes 2019-06-24 15:05:02 +02:00
fe73d2e054 [minor] make safety copy of existing deleted picks file before overwriting 2019-06-24 15:05:02 +02:00
Ludger Küperkoch
6caa3ee9ce Additional screen output. 2019-06-19 17:32:57 +02:00
Ludger Küperkoch
bae20e7e7c [bugfix] Plot was not enabled, indentation correction (though uncomment) 2019-06-19 16:52:31 +02:00
Ludger Küperkoch
bf20ad92da [bugfix] Condition for using entire waveform (Ldiff<0) was too weak. 2019-06-19 14:41:45 +02:00
Ludger Küperkoch
bca4ce1c11 [bugfix] If getsignalwindow provided an empty array, checksignallength failed and lead to incomplete pick dictionaries. 2019-06-19 14:07:15 +02:00
e6f4545058 [remove] restflag (unused) 2019-06-18 15:38:05 +02:00
f51fdd01d5 [minor] typo 2019-06-18 14:34:16 +02:00
6f4378e4c2 [minor] updated .gitignore 2019-06-18 14:04:10 +02:00
2963587ea1 Revert "Take into account that for individual stations cut times are set to zero, which has then lead to wrong initial pick times."
This reverts commit 291db16e2b.
2019-06-18 14:01:05 +02:00
06235cc092 [bugfix] added check for length of data array, code was lost on refactoring 2019-06-18 13:58:35 +02:00
61b514fae1 [bugfix] on deleted picks 2019-06-18 11:35:43 +02:00
dcca731890 [bugfix] workaround for SPt in pick dictionary 2019-06-18 11:35:43 +02:00
508250f03f [minor] corrected time axes to correct endtime (was increased by one sample using npts*dt instead of npts-1*dt) 2019-06-18 11:35:42 +02:00
Ludger Küperkoch
291db16e2b Take into account that for individual stations cut times are set to zero, which has then lead to wrong initial pick times. 2019-06-17 20:48:01 +02:00
Ludger Küperkoch
d9777eaa05 Take into account seismograms too short for given cut times! 2019-06-17 17:26:23 +02:00
Ludger Küperkoch
0e65478645 Removed unnecessary pdb. 2019-06-14 18:49:53 +02:00
Ludger Küperkoch
2d7b7708a1 Variable pick referenced before assignment, cosmetics. 2019-06-14 12:50:16 +02:00
Ludger Küperkoch
025822c485 On the way to stable magnitude determination, still buggy! 2019-06-14 12:35:56 +02:00
Ludger Küperkoch
ed9a7c27aa Additional information on the screen. 2019-06-04 14:22:08 +02:00
Ludger Küperkoch
bb313f0f49 Re-implemented magnitude calculation within manual picking/location, yet on-going work 2019-06-04 12:29:53 +02:00
102b7eafe3 [new] log deleted picks in json file 2019-05-29 15:59:05 +02:00
Ludger Küperkoch
02a0abffd9 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2019-05-29 13:14:02 +02:00
Ludger Küperkoch
caf76fe94b Replaced ValueError with return, maybe this is only a bad workaround! 2019-05-29 13:12:39 +02:00
3ccf826f25 [new] FileExtensionDialog for load-picks (e.g. _correlatex.xml) 2019-05-29 10:37:16 +02:00
fdcd35186f [add] $NSLOTS variable to autopylot shell script 2019-05-29 10:36:52 +02:00
87bd46b535 [bugfix] Exception had no attribute message 2019-05-29 10:36:37 +02:00
8164710ea4 [bugfix] plotting map without picks lead to an exception 2019-05-28 12:20:29 +02:00
74c68d6a14 [hotfix] deepcopy of Pickparameter object 2019-05-28 11:23:47 +02:00
77eec8e94c [bugfix] some small fixes regarding plotting and reading notes.txt 2019-05-28 11:23:47 +02:00
20dc5a132a [minor] removed old unused code 2019-05-28 11:23:46 +02:00
Sally
8270bd4974 [change] delete old obspy dmt database files, current files unselectable
The metadata files that come from the obspy dmt database are saved in a list. When a new event is opened, the obspy dmt metadata files from the old event are deleted from the inventory (and the new ones are added). 
The metadata files from the obspy dmt database are now unselectable in the MetadataWidget. 
The clear inventory function is called when saving the project (otherwise the obspy dmt metadata gets saved and becomes editable). The update_obspy_dmt function is called after the save to get the obspy_dmt_metadata back to continue working after the save.
2019-05-17 11:20:12 +02:00
Sally
777981e8c6 Removal of Dead Code
Old Code that is not used any longer (was rewritten).
2019-04-30 09:09:14 +02:00
Sally
399bb722eb [bugfix] Sorting items before removing them from list
The selectedIndexes are now sorted before the are removed from the listView. Otherwise you get problems with indices that aren't in descending order.
2019-04-30 09:09:14 +02:00
b228467097 [bugfix] mixed up > and < 2019-04-12 15:30:00 +02:00
3806026438 [bugfix] import lost on merge 2019-04-12 15:29:45 +02:00
d0e6c2819c [bugfix] partial of old code remained after merge 2019-04-12 10:37:15 +02:00
1ee3e43451 [change] visual changes in array map (contourf->contour) 2019-04-12 10:35:16 +02:00
aca0cfcabc [minor] refactor comparison 2019-04-12 10:35:16 +02:00
98e9e786af [new] gain control for main plot window (hotkeys: +, - [amplified with Ctrl] and R [reset]) 2019-04-12 10:35:16 +02:00
6b9231abd3 [merge] feature/refactor into develop 2019-04-12 10:31:29 +02:00
b11b5c630b [change] pre-merge changes in develop that were made in parallel on refactor 2019-04-12 10:28:50 +02:00
Darius Arnold
dd2efe7514 Remove unused code of old PickingParameters 2019-04-09 22:13:49 +02:00
Darius Arnold
49f7ba3eab Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2019-04-09 20:41:08 +02:00
Darius Arnold
d4fa0a7697 Replace all usages of signal_length_params with corresponding pickparams 2019-04-09 20:34:06 +02:00
Darius Arnold
7b2973982d Replace all usages of first_motion_params with corresponding pickparams 2019-04-09 18:45:07 +02:00
Darius Arnold
dce00caf25 Replace all usages of s_params with corresponding pickparams 2019-04-09 18:41:41 +02:00
Darius Arnold
076c498fab Replace all usages of p_params with corresponding pickparams 2019-04-09 18:39:24 +02:00
Darius Arnold
281e92e2a9 Add init to AR3Ccf that extracts parameters from pickparam 2019-04-09 18:19:26 +02:00
Darius Arnold
cd63896060 Add init to ARHcf that extracts parameters from pickparam 2019-04-09 18:18:17 +02:00
Darius Arnold
790cf803d7 Add init to ARZcf that extracts parameters from pickparams
t1, t2 cant be extracted in the init function since they are not the same during the first and the second instantiation.
2019-04-09 17:43:30 +02:00
Darius Arnold
ab6e74c482 Add init to HOScf that extracts parameters from pickparams 2019-04-09 17:30:05 +02:00
Darius Arnold
d45a5ccf0d Change checkZ4S so it extracts the required parameters 2019-04-09 17:05:51 +02:00
Darius Arnold
c45f52510b Change checksignallength so it extracts the required parameters
from the PylotParameter instance itself. The function is only used in one place, so this change wont break anything else.
2019-04-09 17:00:43 +02:00
Darius Arnold
8a4be00ac6 Make correct_iplot use real_bool 2019-04-09 16:55:11 +02:00
Darius Arnold
242d8e3b1d Remove unwanted indentation in autopickstation test input file 2019-04-09 16:49:01 +02:00
Darius Arnold
531d33946f Remove needless bool checking
in Operator returns a bool that can directly be returned.
2019-04-09 16:46:20 +02:00
f21e5913bb Merge remote-tracking branch 'origin/feature/documentation' into develop 2019-04-09 13:36:17 +02:00
7be10a22b4 [bugfix] arrivals removed when filtering in 3comp window 2019-04-05 10:23:10 +02:00
912347beda [change] colormap can be adjusted in array_map 2019-04-05 10:23:10 +02:00
6d4610983d [minor] exclude folder "EVENTS-INFO" from possible event folders in dmt_structure 2019-04-03 15:08:36 +02:00
dfc9de69de [bugfix] small workaround, will still cause error in case Z-component ist tilted by more than 5deg
before: wfdat[0] was using HHE component of previously rotated stream, which could not be found in metadata (dataless fname still HH2)
2019-04-03 15:00:08 +02:00
0995350697 [bugfix] Thomas commit append an .in to every input file (e.g. pylot.in.in) 2019-04-01 15:54:58 +02:00
a90ef26344 [add] paramter taup_phases 2019-04-01 15:29:29 +02:00
9fd982b1ef Modified the Save settings widget for saving the input files such that the file extension .in is always added 2019-03-28 14:04:39 +01:00
Darius Arnold
af43d247c6 Bugfix #270: Create path for Symmetric picking error so it can be drawn
The function shape() will generate the missing path without side effects.
2019-03-22 10:42:16 +01:00
Sally
be71fc0298 Removal of Dead Code
Old Code that is not used any longer (was rewritten).
2019-03-21 12:40:35 +01:00
Sally
bcc5055ef3 [bugfix] Sorting items before removing them from list
The selectedIndexes are now sorted before the are removed from the listView. Otherwise you get problems with indices that aren't in descending order.
2019-03-21 12:37:09 +01:00
81c7ac2f6e [bugfix] split for dirty event (*) 2019-03-20 10:16:46 +01:00
0d07adeeae [bugfix] unhashable type "newstr" 2019-03-20 10:16:46 +01:00
106c6c3939 [new] array maps can now be refreshed on button click as well to spare
refresh time for large arrays
2019-03-12 15:19:24 +01:00
e8df5198ea [bugfix] missing split for * in dirty events 2019-03-12 15:19:24 +01:00
a8db13095e [update] merging picks in Data updated 2019-03-12 15:19:24 +01:00
ea07823a61 [change] imported pick/location data now completely overwrites current
data instead of "weirdly" merging everything
2019-03-12 15:19:23 +01:00
Sally
02900d8c9d Markierte Items/Dateipfade erscheinen im Lineedit
Ein in der Liste markiertes Item erscheint im Lineedit. Wenn mehrere ausgewählt sind, erscheint das zuletzt gewählte im Lineedit. Wenn kein Item ausgewählt ist, wird das Lineedit geleert.
2019-03-12 11:44:47 +01:00
Sally
545203f798 Entfernen von Dead Code
Struktur wurde geändert, sodass jetzt zwei verschiedenen Listen verwendet werden und kein Dictionary mehr aufgerufen wird.
2019-03-12 11:44:47 +01:00
Sally
685d68fd47 Einfügen eines LineEdits
Einfügen von einem LineEdit oben im Widget, in das ein Dateipfad geschrieben werden kann. Alternativ kann über den Browse Button ein File Explorer geöffnet werden und in diesem die Datei ausgewählt werden. Der ausgewählte Dateipfad erscheint im LineEdit. Der Dateipfad im LineEdit kann über den Add Button in die Liste eingefügt werden. Nach betätigen des Add Buttons (nach wie vor Überprüfung, ob Dateipfad existiert und eventuell schon in Liste ist) wird das LineEdit geleert.
2019-03-12 11:44:47 +01:00
Sally
15d294626f Filter von Übersicht auf einzelne Stationen übertragen
Vorher: Wenn man in der Übersicht einen Filter anwendet (P oder S) und dann eine Station öffnet ist dort immer der P-Filter aktiv.
Jetzt: Wenn man die Übersicht filtert und dann eine Station öffnet, wird derselbe Filter angewendet wie in der Übersicht. 
Disclaimer: Gibt vermutlich eine elegantere Lösung.
2019-03-12 11:44:47 +01:00
Sally
2e2924efa1 Update for changed button name 2019-03-12 11:44:47 +01:00
Sally
e9ee37f5f7 Aktualisierung der Zuweisung von Funktionen und Buttons 2019-03-12 11:44:00 +01:00
Sally
bae318520b Entfernen einer Funktion, die nie aufgerufen wurde 2019-03-12 11:44:00 +01:00
Sally
eedcd2aaa5 Anpassung der from_metadata Funktion an neue Programmstruktur 2019-03-12 11:44:00 +01:00
Sally
ff4755bc79 Änderungen am GUI-Aufbau, Initialisierung von allen Elementen 2019-03-12 11:44:00 +01:00
Sally
7d2e1e7df6 Hinzufuegen und loeschen von Metadaten (Pfaden dahin), Cancel-Option
Die hinzuzufügenden/zu löschenden Pfade werden erst in Listen gespeichert (bzw. aus diesen gelöscht). Sobald der Nutzer den Accept-Button drückt, werden die letzten aktuellen Änderungen beibehalten. Bei drücken des Cancel-Buttons werden alle Änderungen verworfen.
2019-03-12 11:44:00 +01:00
Sally
56919b7d8a Resize 2019-03-12 11:44:00 +01:00
d6381e80c1 [bugfix] cell changing did not set event/project dirty 2019-03-07 17:02:11 +01:00
6032018067 [bugfix] network/station interchanged leading to huge load times for
metatada
2019-03-07 17:02:11 +01:00
a9d92e70ce [bugfix] stations not updated when changing event 2019-03-07 17:01:45 +01:00
49bcdd2680 [bugfix] time axis for plots created with linspace instead of arange
[minor] enhanced error output
2019-03-07 16:31:41 +01:00
9583f9d351 [bugfix] make sure t and rms have same length by using np.linspace instead of np.arange 2019-03-07 16:31:41 +01:00
7bf3bb6835 [minor] various small fixes 2019-03-07 16:31:41 +01:00
9ae8e36061 [bugfix] taupy picks not initiated in array_map 2019-02-28 17:07:41 +01:00
4dfcdb41ec [bugfix] missing split for event dirty flag (*) in event_table 2019-02-28 16:39:53 +01:00
16b469ff67 [bugfix] information about deleted picks was not transferred to the
current event, thus not saved
2019-02-28 16:20:21 +01:00
Darius Arnold
f0e2fdb470 [bugfix]/[improvement] handle station id lacking location, related to #266
Unpack depending on length of station id after split, if something unexpected happens, initialise with default values.
This is related to https://ariadne.geophysik.ruhr-uni-bochum.de/trac/PyLoT/ticket/266. This should fix the missing station information in the title of the TuneAutopicker waveform plot.
2018-12-07 13:12:13 +01:00
Darius Arnold
f892225229 [bugfix] Strip star from event path when getting text from eventBox
See https://ariadne.geophysik.ruhr-uni-bochum.de/trac/PyLoT/ticket/264
2018-12-07 12:47:06 +01:00
Darius Arnold
2a22409145 Change "not a in b" to more readable "a not in b", add comments in Metadata class 2018-12-07 11:24:11 +01:00
Darius Arnold
45949afca6 [bugfix] #267 Remove stations from ArrayMap whose metadata files were removed
Fixes https://ariadne.geophysik.ruhr-uni-bochum.de/trac/PyLoT/ticket/267
2018-12-07 11:19:54 +01:00
Darius Arnold
f1690edf71 [Bugfix]: Fix stationlist in TuneAutopicker dialog, partial fix of #266
Remove the channel from the station id
2018-12-07 09:44:12 +01:00
Darius Arnold
6a0c1dda9d [Bugfix]: Fix plot title in TuneAutopicker, partial fix of #266
For some reason the network.station.location.channel string wasn't split.
2018-12-07 09:34:47 +01:00
Darius Arnold
3abeabc75c [bugfix] File wasn't closed explicitly, add implicit close by with statement 2018-11-30 11:20:47 +01:00
Darius Arnold
48d5406639 [Add] section describing the event info CSV file 2018-11-30 11:03:30 +01:00
Darius Arnold
0964139799 Merge branch 'develop' into feature/documentation 2018-11-30 10:27:42 +01:00
Darius Arnold
6afb61b666 [change] order to Day/Month/Year when reading csv file for event info 2018-11-30 10:26:57 +01:00
Darius Arnold
815a18f2f3 [bugfix] error in check during loading of event info csv file
Original condition didn't check for eventID in event.origins.
2018-11-30 10:21:54 +01:00
Darius Arnold
718172dcd1 [minor] change axis label for comparison dialog 2018-11-30 09:50:14 +01:00
Darius Arnold
5e6d2e7211 [Bugfix] Merge traces treating overlaps as data instead of gaps
Could not open the Pickwindow on some stations. 
Gaps were merged so that overlapping values were marked as gaps, which lead to an error when those traces were processed. Method 1 takes data from traces instead, see https://docs.obspy.org/packages/autogen/obspy.core.trace.Trace.__add__.html
2018-11-30 09:42:22 +01:00
Darius Arnold
b01c15d755 Fix errors, add picking window description 2018-10-23 11:47:02 +02:00
Darius Arnold
86035d3cd6 Add description of comparison options 2018-10-19 12:01:25 +02:00
Darius Arnold
4ab453899a Add linebreak that was missing in exported document 2018-10-15 14:38:07 +02:00
Darius Arnold
6c3998285b Add invisible character to increase size of column in table
Otherwise icons were squished when exporting
2018-10-15 14:37:39 +02:00
Darius Arnold
974be21a06 Correct some errors, add some information 2018-10-12 11:22:19 +02:00
Ludger Küperkoch
dfe3f9b32a [Bugfix]: There might be no network nor location information available, strange! 2018-10-10 11:40:11 +02:00
Ludger Küperkoch
cf7fafbe62 Additional possible suffix for metadata file. 2018-10-10 11:17:58 +02:00
Darius Arnold
637b821582 Add description of Waveform Plot buttons 2018-10-01 12:55:54 +02:00
Darius Arnold
d0503d4261 Add description of the tune autopicker window 2018-09-24 12:54:32 +02:00
Darius Arnold
18308a7168 Add description of jackknife and wadati check 2018-09-24 11:02:23 +02:00
Darius Arnold
f56087b68e More work on GUI.md 2018-09-17 12:00:55 +02:00
Darius Arnold
7dbc2cb334 Worked on GUI documenation, added images 2018-09-14 23:31:36 +02:00
Darius Arnold
2d233a7099 Merge branch 'develop' into feature/documentation 2018-09-14 21:46:29 +02:00
739a6e89f4 [pycharm] optimized imports 2018-08-16 17:34:05 +02:00
c23bbfae8a [bugfix] enhanced emergency reset loop for corrupted QSettings 2018-08-16 16:22:35 +02:00
6546f8f196 [update] warn user in case of low SNR for manual pick 2018-08-16 16:14:48 +02:00
ce1564c2f8 [minor] improved convenience, small bugfix 2018-08-15 15:51:41 +02:00
8a187905cb [update] finalized recent projects
[minor] some small fixes, improvements
2018-08-15 15:39:43 +02:00
402248f340 [new] minor, add recently used projects (WIP) 2018-08-14 14:21:32 +02:00
Darius Arnold
6936cfcfa6 [bugfix] Taupy didn't check return of get_coordinates
For a station not in the metadata, get_coordinates would return None which wasn't checked for.
This includes a test for a station which is not in metadata.
2018-08-13 22:42:19 +02:00
Darius Arnold
96adbddeba [remove] unused parameter in create_arrivals
The station id is no longer passed into the function and used to retrieve the station coordinates, but the id is taken from the vertical stream instead.
2018-08-13 22:37:48 +02:00
Darius Arnold
dcd0bc40d7 [remove] old autopickstation code 2018-08-13 22:35:38 +02:00
a82a1cddc8 [minor] changed message for pick deletion 2018-08-13 17:44:24 +02:00
f22f7845cb [new] remove picks on map with middle-click
[bugfix] remove old annotations
2018-08-13 12:49:48 +02:00
26a4cc568a [new] perform jackknife on gradient of stations in array map and highlight them in case of high std 2018-08-13 11:24:48 +02:00
a0f9561bcf [new] hybrid selection for array_map (plot automatic and manual picks, prefer manuals) 2018-08-09 11:16:20 +02:00
Darius Arnold
b7d3568498 [bugfix] Taupy used even if disabled when p start time > 0
If Taupy was disabled, but pstart was larger than zero, the and would lead to the function that modifies starttimes not exiting. This resulted in taupy being used even though it was disabled when the p starttime was above 0.
2018-08-09 10:03:25 +02:00
Darius Arnold
9929e3d441 [change] testPickingResults.py in accordance with bugfix 2018-08-08 19:25:41 +02:00
Darius Arnold
45370e2c67 [bugfix] PickingResults raised incorrect error on missing attribute
Accessing a non existing attribute raised a KeyError instead of an AttributeError, breaking methods that relied on the correct error type. Maybe this fixes the __setstate__ bug during event picking from GUI.
2018-08-08 19:25:11 +02:00
Darius Arnold
d4e2f4a070 [bugfix] maxDiff not correctly set in test_autopickstation 2018-08-08 09:11:34 +02:00
Darius Arnold
146da1d794 [change] Quality class determination documentation improvement
Also change order of expected/actual values in test assert methods to improve output of test function.
The first parameter is supposed to be the expected value, the second one the actual result.
2018-08-07 13:58:59 +02:00
677d3a200c [bugfix] return statement disappeared on merge in a45e817213 2018-08-07 10:33:57 +02:00
e46c0fb862 [minor] typos 2018-08-07 10:06:39 +02:00
a2af6b44f3 [bugfix] regard location ID in PyLoT! (WIP) 2018-08-06 16:03:54 +02:00
34891d3dc1 [minor] added verbosity flag for Metadata to reduce output in GUI 2018-08-06 09:19:30 +02:00
a85b79e432 [change] try to merge streams instead of deleting them when they have gaps 2018-08-06 09:02:05 +02:00
5f2848d584 [bugfix] do not read the same files multiple times for each channel 2018-08-03 14:03:27 +02:00
Darius Arnold
d3fee396b2 [modify] test_autopickstation to work with new return value 2018-08-03 13:50:41 +02:00
Darius Arnold
0c4085ed76 [bugfix] station name was in dictionary instead of a list item for autopickstations return value
Old implementation of autopickstation returned a list containing a dcitionary with results as a first value and a string with the station name as a second value. The new version used to return a single dict with a key/value station name pair, which the calling code could not unpack. The new implementation now also returns a list with picking results and station name.
2018-08-03 13:50:14 +02:00
Darius Arnold
2b9cf655ae [change] autopickstation works with new Metadata class 2018-08-03 13:47:46 +02:00
Darius Arnold
86f6584d91 Modify test_autopickstation's MockMetadata to work with the new Metadata class 2018-08-03 13:23:52 +02:00
Darius Arnold
a45e817213 Merge remote-tracking branch 'origin/develop' into feature/refactor 2018-08-03 11:55:13 +02:00
5c74160710 Merge branch 'feature/metadata_class' into develop 2018-08-03 11:18:34 +02:00
e75beff883 [minor] cosmetics on dataPlot bottom layout 2018-08-03 11:16:56 +02:00
d9a4c40d0b [minor] hide pick qualities histogram action (not implemented yet) 2018-08-03 11:16:08 +02:00
Darius Arnold
b9cf219b39 Adding/modifying documentation in autopick.py 2018-08-03 11:05:42 +02:00
Darius Arnold
7b2ae2fa8f Disable NonLinLoc in testing parameter file 2018-08-03 11:01:58 +02:00
Darius Arnold
108ba80b83 [minor] disable length limit when printing diff of picking results
By default the difference printed when two picking result dictionaries are compared is limited in length, this disables the limit.
2018-08-03 11:00:53 +02:00
Darius Arnold
8dcea2a8c3 [change] PickingResults now only stores actual results, PickingContainer stores intermediary values
PickingResults now stores only the actual results of picking, which are returned from the autopickstation function. 
To store intermediary results during picking, the new class PickingContainer is used.
2018-08-03 10:59:10 +02:00
e211a901ff [bugfix] could not init array map when loading project 2018-08-03 09:33:37 +02:00
393413d6fc [bugfix] closes #215 2018-08-02 15:42:34 +02:00
d5e9cd07d4 [revert] went back to old quality assessment without SNR 2018-08-02 14:18:20 +02:00
529939b4b8 [minor] removed unused object 2018-08-02 13:32:45 +02:00
7dae8e1107 [bugfix] not regarding possible * in eventpath in eventbox 2018-08-02 13:00:36 +02:00
017683806b [new] if QSettings fails, ask to reset!
[bugfix] checkBoxPG outdated in QSettings
[bugfix] moved SetChannelComponents to utils (produced circular imports)
2018-08-01 13:49:01 +02:00
c898f93293 [new] idea for new quality check using SNR 2018-08-01 13:25:27 +02:00
93bdaa8998 [bugfix] forgot to split * in getFromPath 2018-07-31 10:22:45 +02:00
e68b634f25 [new] event modification status saved with "dirty" attribute, only save event-XML when modified 2018-07-31 09:41:48 +02:00
cc9ae9c146 [bugfix] empty picks dictionary leading to KeyError 2018-07-31 09:24:43 +02:00
Darius Arnold
076115f7f5 [add] Station A106 to tests
This station has invalid values recorded on both N and E component, but a pick can still be found on Z
2018-07-30 14:32:32 +02:00
Darius Arnold
d14e789e97 Modify test to test that picking is possible for station with only vertical component 2018-07-30 14:31:56 +02:00
Darius Arnold
7bbcb489bf [refactor] add current_figure attribute
This instance attribute holds the current figure,which removes the need for an external function to extract the correct figure from the fig_dict and the need to pass the figure into instance methods (it can now be directly accessed by the attribute).
2018-07-30 14:28:21 +02:00
Darius Arnold
97458b5b42 [minor] small code changes 2018-07-30 14:08:49 +02:00
Darius Arnold
b4316ae717 [refactor] improving S pick code by extracting functions 2018-07-30 13:36:09 +02:00
Darius Arnold
c89e47ac43 [change] Extract function that calculates cuttimes 2018-07-30 12:43:56 +02:00
Darius Arnold
da2b1ed133 [change] Enable picking on traces with only one vertical component
Only the P pick will be calculated
2018-07-30 12:03:33 +02:00
db9a1371b1 [bugfix] closes #223 2018-07-25 15:16:14 +02:00
bf5c371459 [bugfix] various bugfixes originating from changes (more picks) in dictionary (refs #233 refs #234) 2018-07-25 14:05:15 +02:00
bfc745dd30 Merge branch 'develop'
Conflicts:
	pylot/core/pick/autopick.py
2018-07-25 10:53:08 +02:00
146ef7098c [bugfix] closes #233 closes #234
can cope with stations without horizontal components now, removed dangerous try/except construct
2018-07-25 10:48:43 +02:00
974ee12076 [update] closes #242 - dpi change added, figures using PylotCanvas can be saved with CTRL+S 2018-07-24 15:20:00 +02:00
37e2e39f3a Merge branch 'develop' into feature/metadata_class 2018-07-24 14:36:22 +02:00
f310afb4c6 [minor] renaming QtAction 2018-07-24 14:33:38 +02:00
6d6179bb55 [bugfix] closes #251 also fixed for histogram and locateAction 2018-07-24 14:32:15 +02:00
62287df1b4 [minor] removed "None" from filteroptions 2018-07-24 14:16:24 +02:00
b3524c562d [bugfix] closes #260 checking for filtertype first 2018-07-24 14:15:32 +02:00
9e75f8d4f2 [bugfix] closes #255 filtering should work as intended now 2018-07-24 13:54:40 +02:00
ef6e011d22 [update] slightly improved feasibility using obspy_dmt with metadata and array map 2018-07-23 16:03:15 +02:00
eb07c19c2e [update] metadata/inventory management
[bugfix] errors when there were no manual picks using array_map
2018-07-23 14:54:53 +02:00
Darius Arnold
09721c7bb9 [add] station CH.FIESA to test_autopickstation 2018-07-20 15:06:15 +02:00
Darius Arnold
653e7c9b9a [remove] unused function for creating an error message for autopickstation tests 2018-07-20 15:05:42 +02:00
Darius Arnold
1b815a27b8 [add] HidePrint can be configured to skip hiding for quick debugging of tests 2018-07-20 15:04:48 +02:00
Darius Arnold
7fe5d0f7a3 [remove] Redundant checks for missing waveform data
Missing waveform data is now handled before picking starts, so it is not necessary to check during picking.
2018-07-20 14:50:27 +02:00
Darius Arnold
61b14dc770 [change] Create clean PickingResults instance with only required values
During picking, intermediary values were saved in p_results or s_results PickingResults instance.
Additionally the PickingResults class contained members that were only used during picking but not when returning the results, thus wasting space after picking, because they stayed in the instance. 
Now autopickstation generates a clean PickingResults containing only the members that are expected in the results.
2018-07-20 14:49:10 +02:00
Darius Arnold
153beff663 [add] tests for picking with missing trace in stream 2018-07-20 13:02:57 +02:00
Darius Arnold
318ca25ef8 [add] handling missing traces
either a missing vertical or missing both vertical traces in the wfstream will fail picking and return None. This is the same behaviour as before refactoring.
2018-07-20 13:00:19 +02:00
f802f1db58 [new] working on metadata/inventory selection from GUI 2018-07-19 11:50:29 +02:00
b348117d5a [bugfix] tuneAutopicker not using new pb_widget 2018-07-18 15:04:07 +02:00
90e26cbd8f [bugfix] various, pick delete/plot behaviour 2018-07-18 14:12:59 +02:00
12082cb2a9 [minor] removed old code 2018-07-18 11:42:46 +02:00
ed654024b2 [update] reinstated check4rotated in autoPyLoT 2018-07-18 11:39:01 +02:00
17c27f9294 [bugfix] add time to metadata.get_coordinates in check4rotated 2018-07-18 11:38:33 +02:00
ed7ee5d944 [bugfix] progressText not updating in progressBar 2018-07-18 11:13:29 +02:00
37da7327d0 [bugfix] using Metadata class for pickDlg, not yet working for array_map (WIP!) 2018-07-17 16:04:20 +02:00
c172cfa892 Merge branch 'develop' into feature/metadata_class 2018-07-17 14:51:24 +02:00
1fc62a5e9d [bugfix] add trace starttime to metadata.get_coordinates call 2018-07-17 14:49:37 +02:00
cf34c9465c [minor] cosmetics 2018-07-17 14:49:37 +02:00
dda997e457 [update] autopick -> only export necessary XML (WIP) 2018-07-17 14:49:37 +02:00
fbc01290d5 [update] make PYQTGRAPH mandatory for PyLoT (stop maintaining unused stuff)! 2018-07-17 14:49:37 +02:00
64885db214 [update] no more replotting of whole data when pick is changed 2018-07-17 14:49:36 +02:00
5b48b744fd [update] plotting (added fill_between again now performance got increased) 2018-07-17 14:49:36 +02:00
469d91bfdc [cleanup] removed has_spe function, using dict.get method instead! 2018-07-17 14:49:36 +02:00
663d244f70 [cleanup] removed some parentheses 2018-07-17 14:49:35 +02:00
7a0d3486a6 [cleanup] code cleanup by PyCharm 2018-07-17 14:49:34 +02:00
754d42c8e3 [cleanup] add requirements to setup.py 2018-07-17 14:45:51 +02:00
415af11f63 [cleanup] add @staticmethod, some other stuff 2018-07-17 14:45:51 +02:00
d151cdbc6d [bugfix] added missing parameter "WAScaling" (not knowing what it does but it was missing!) 2018-07-17 14:45:50 +02:00
b22d04db47 [cleanup] replace equality by "is" 2018-07-17 14:45:50 +02:00
e210bd8793 [add] number of active picks (and total) 2018-07-17 14:45:48 +02:00
0e70520a78 [bugfix] Spick quality check doing random stuff caused by copy paste errors 2018-07-17 14:45:48 +02:00
ad686d42db [minor] update_status when loading multiple events 2018-07-17 14:45:48 +02:00
a9636caf73 [bugfix] picks for S and P were deleted when wadati check failed 2018-07-17 14:44:31 +02:00
Darius Arnold
27f5a0d50c [remove] unused function, check was moved to init method
In the init method of autopickstation the N trace will be copied to the E trace or reversed if one of them is missing, so checking for it during S picking has become redundant.
2018-07-17 14:01:23 +02:00
Darius Arnold
85b34177c4 [add] default values for parameters of AutoPickStation init method 2018-07-17 13:59:46 +02:00
Darius Arnold
775d3de46c Change whitespace, add comments/documentation 2018-07-17 13:59:13 +02:00
Darius Arnold
6d26338f2e Decrease indentation in pick_s_phase
Instead of checking if(condition){DoSomething()}; check if (!condition){ErrorOut()}; DoSomething();.
This allows to decrease the indentation of the potentially large codeblock DoSomething().
2018-07-17 13:56:25 +02:00
Darius Arnold
02873938cb [change] minSlope value decreased due to difference in slope calculation 2018-07-17 11:37:29 +02:00
Darius Arnold
d84be68694 [add] tests for file where metadata has changed due to changed instruments 2018-07-17 11:18:07 +02:00
Darius Arnold
787c46eeaf [add] tests for file where metadata is available at multiple time intervals 2018-07-17 11:17:23 +02:00
Darius Arnold
da29b286f1 [add] tests for read_single_file 2018-07-17 10:56:53 +02:00
Darius Arnold
7734650d2e Move the metadata files used ofr testing into own folder 2018-07-17 10:34:42 +02:00
Darius Arnold
f5c1fea159 [Change] use HidePrints to clean output of test results 2018-07-13 23:25:11 +02:00
Darius Arnold
6ae5a213d1 [update] Metadata docstrings improved 2018-07-13 23:10:47 +02:00
Darius Arnold
10aa0360bc [Add] Utility class to hide prints during testing
Provides with HidePrints context manager and @HidePrints.hide decorator
2018-07-13 21:33:45 +02:00
Darius Arnold
c308415aa5 Move test_autopickstation to subdirectory in pylot/tests 2018-07-13 09:45:57 +02:00
Darius Arnold
2c92f6f2fd Merge branch 'develop' into feature/refactor 2018-07-13 09:28:50 +02:00
3b52b7a28f [bugfix] fixed some bugs resulting from restructuring of serial/parallel picking 2018-07-12 15:56:34 +02:00
9f1672d793 [hotfix] something went wrong trying to merge/rebase develop 2018-07-12 14:17:06 +02:00
319343499b [bugfix] parallel picking called accidently 2018-07-12 14:14:22 +02:00
d360d9db92 [bugfix] raise Exception if no Z-component is found for Magnitude calculation 2018-07-12 14:13:34 +02:00
9a5624c951 [change] return values of autopickstation 2018-07-12 14:13:19 +02:00
1d215c181c [update] time optional for get_metadata/get_coordinates, if not time is specified use current UTCDateTime 2018-07-12 11:43:15 +02:00
84ed0b900f [update] unit test for Metadata class 2018-07-12 11:28:43 +02:00
1d571a0046 [add] Metadata class now requires time for get_metadata and get_coordinates as well 2018-07-12 11:27:20 +02:00
3bd5243f2a [minor] typo 2018-07-12 10:04:35 +02:00
6b28b9c9c6 Merge remote-tracking branch 'origin/feature/metadata_class' into feature/metadata_class 2018-07-12 09:47:40 +02:00
704a45f845 [minor] changes/testing threshfactor 2018-07-12 09:46:53 +02:00
Darius Arnold
869ede96a9 Rewrite check4rotated function to work with new Metadata class 2018-07-12 09:46:52 +02:00
6c162fc94a [new] first use of Metadata class in autoPyLoT, largely increasing read performance using obspyDMT (single DATALESS-Seed files) 2018-07-12 09:42:35 +02:00
27ea20fa47 [bugfix] NLLoc: take nlloc bin explicitly from PylotParameter and not (randomly) from default pylot.in file!! 2018-07-12 09:40:57 +02:00
c376364206 Merge branch 'develop' into feature/metadata_class 2018-07-11 14:02:53 +02:00
c3e8b2c03d /metadata_class: Auto stash before merge of "feature/metadata_class" and "develop" 2018-07-11 14:01:47 +02:00
afade77922 Merge branch 'develop' into feature/metadata_class 2018-07-11 09:48:28 +02:00
0cec2c81d3 Merge remote-tracking branch 'origin/develop' into develop 2018-07-11 09:42:43 +02:00
a0fcf03c1e [update] add try/except to autopickstation call 2018-07-11 09:42:28 +02:00
91959367d4 [minor] set DATASTRUCTURE correctly 2018-07-11 09:41:58 +02:00
Darius Arnold
82ac08157c [bugfix] azimuth <45° was misattributed as E instead of N trace in check4rotated 2018-07-10 21:41:07 +02:00
Darius Arnold
0dc4d64826 Rewrite check4rotated function to work with new Metadata class 2018-07-10 20:22:25 +02:00
Darius Arnold
51f2ded063 [add] basic unittests for Metadata class 2018-07-10 17:07:46 +02:00
b870b5378a [bugfix] setting Datastructure to obspydmt or None caused crash and corrupted QSettings 2018-07-10 14:20:31 +02:00
5f6f986e3e [update] removed read of pylot.in on start!!! Now using default params
from now on all input files should be saved in directory different to ~/.pylot
2018-07-10 14:16:36 +02:00
8d3bd88be9 [minor] gitignore update 2018-07-10 13:54:49 +02:00
e7284cba41 [bugfix] dictionary containing params not initiated in __init__ 2018-07-10 13:36:52 +02:00
6ab2609e8c [bugfix] default filename given for nlloc in default_parameters 2018-07-10 13:35:24 +02:00
47b045ad35 Merge branch 'develop' into feature/metadata_class 2018-07-10 11:49:48 +02:00
1de1dc71f8 [bugfix] reinstated ludgers changes, added bugfix for GUI 2018-07-10 11:47:45 +02:00
f6688b3a28 Merge branch 'develop' into feature/metadata_class 2018-07-10 11:38:10 +02:00
77dd0d4733 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2018-07-10 11:36:31 +02:00
3bc3d07793 [new] first use of Metadata class in autoPyLoT, largely increasing read performance using obspyDMT (single DATALESS-Seed files) 2018-07-10 11:35:13 +02:00
c46513a626 [bugfix] full_range called for each station when drawing picks, largely decreasing plot performance 2018-07-10 11:13:41 +02:00
b4516fb2cb [update] save automatic picks calculated inside GUI in XML files as well 2018-07-10 11:01:34 +02:00
9c119819a6 [bugfix] self.inventory_files initiated too late 2018-07-09 14:14:59 +02:00
0474e5fbe9 [minor] add progressbar to autopick widget 2018-07-09 13:32:44 +02:00
ccec76b8a1 [revert] iplot = iplot for wadati/jackknife not showing plots anymore in GUI
Note: Are not Wadati and Jackknife figures meant to be shown always? Independent of iplot flag?
2018-07-09 11:06:19 +02:00
Darius Arnold
1ff50c000e Decrease indentation by returning from error condition 2018-07-06 16:17:07 +02:00
689192b25d [bugfixes] in Metadata class (not fully tested yet) 2018-07-06 12:22:24 +02:00
Darius Arnold
71d8626fa3 [bugfix] parameters tpred2z and tdet2z were unused 2018-07-06 11:10:02 +02:00
d223011f90 [bugfix] Metadata class raised Exception using obspy get_coordinates 2018-07-06 11:03:21 +02:00
Darius Arnold
67cf1f9010 Change tests to work with updated AIC 2018-07-06 10:51:50 +02:00
Darius Arnold
b1a1e8924a Merging picker.py did not work correctly 2018-07-06 10:51:17 +02:00
1f2dd689ba [change] slope normalized to maximum y value, TESTING NEEDED 2018-07-06 10:36:38 +02:00
Darius Arnold
5258a7e9b4 Merge remote-tracking branch 'origin/develop' into feature/refactor 2018-07-06 09:49:52 +02:00
871fb685a4 [removed] amplification of cf by empirical values to account for restituted data 2018-07-05 15:30:40 +02:00
2c588c1c80 [change] initial pick now searches for latest local minimum instead of first increase in cf 2018-07-05 15:29:09 +02:00
df0f059ff3 [bugfix] parameters tpred2z and tdet2z were unused 2018-07-05 14:37:32 +02:00
b0ad99eced [minor] improved text output if wf data cannot be read 2018-07-04 17:25:11 +02:00
e05909b188 [minor] textobjects split into single lines before adding to log for convenience 2018-07-04 16:48:14 +02:00
27e425844a Merge branch 'develop' of ariadne:/data/git/pylot into develop 2018-07-04 10:56:44 +02:00
2379dee142 [hotfix] metadata could not be read (improve this) 2018-07-04 10:56:18 +02:00
Darius Arnold
4581025b4d Bugfix: typo l/1 in figure name 2018-07-03 13:56:29 +02:00
Darius Arnold
59e67b51d5 Bugfix where not giving origin with taupy would still use negative starttime 2018-07-03 13:55:51 +02:00
Darius Arnold
80835bc56e Transfer plotting of results in GUI after picking 2018-07-03 13:55:04 +02:00
Ludger Küperkoch
b6c682315d Allow negative saftey gap for slope determination, use only mean of noise window for SNR determination 2018-07-03 11:34:32 +02:00
Ludger Küperkoch
46d4ad7ea5 Some new parameter settings. 2018-07-03 10:35:09 +02:00
Ludger Küperkoch
854f5b8c7e [Bugfix] No network magnitude available for screen output while tuning 2018-07-03 10:34:43 +02:00
4896c1e1d8 [cleanup] removed redundancy 2018-07-02 13:34:30 +02:00
e3e420a94b Merge branch 'develop' of ariadne:/data/git/pylot into develop 2018-07-02 10:11:31 +02:00
Darius Arnold
86419220e2 Minor changes in autopick.py 2018-06-29 15:57:58 +02:00
Darius Arnold
68b2917e7f Refactor quality control of initial pick into own function 2018-06-29 15:56:32 +02:00
Ludger Küperkoch
d2ba8888d1 Reduced maximum number if iterations to two, some effort to avoid error for screen output if no magnitude scaling is applied. 2018-06-29 15:07:26 +02:00
Darius Arnold
d4e279aeba Refactor taupy usage 2018-06-29 14:21:03 +02:00
2c07dd63b8 [bugfix] save Event before tarting tuneAutopicker (else source information might not be accessible to autoPyLoT) 2018-06-29 14:19:09 +02:00
22e5de194e [bugfix] array map only checking for manual picks 2018-06-29 13:55:42 +02:00
9b63c1bb24 [bugfix] taupy phases lost on plot refresh 2018-06-29 10:13:58 +02:00
f4201c4e2f [bugfix] full path for ctrfile 2018-06-28 15:59:13 +02:00
4cb3f72ba8 [bugfixes] location/magnitude w ludger 2018-06-28 15:22:40 +02:00
5870843a03 [bugfix] event_datapath not set if not obspyDMT 2018-06-28 10:31:48 +02:00
4ed8e54822 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2018-06-27 14:21:35 +02:00
8ae0449c01 [new] metadata class (WIP) 2018-06-27 14:21:20 +02:00
3a66ec1c95 [bugfix] print a warning in case saveData fails 2018-06-27 14:20:11 +02:00
19f943627a [bugfixes] autopylot 2018-06-26 17:07:38 +02:00
Ludger Küperkoch
4d1c3985f4 [Bugfix] Input argument iplot was fixed to 1. 2018-06-26 12:25:03 +02:00
Ludger Küperkoch
f43478d0c0 Consistent calculation of SNR, using maximum (not mean) of signal window, more stable! 2018-06-26 11:58:08 +02:00
Ludger Küperkoch
88ddbc1efc [Bugfix] Time array improper calculated (rounding errors?) 2018-06-26 10:51:39 +02:00
Ludger Küperkoch
8487d696c6 Cosmetics 2018-06-25 15:59:52 +02:00
Ludger Küperkoch
3845e7291e Relaxed condition for slope determination, plot interims results even if picking failed. 2018-06-25 15:56:15 +02:00
Ludger Küperkoch
d4b76bdecb Cosmetics 2018-06-25 15:31:58 +02:00
Ludger Küperkoch
7d175a4bc9 Accidently screen output got lost. 2018-06-25 15:30:10 +02:00
Ludger Küperkoch
b18298c4db Additional screen output of derived onset time, [Bugfix] Use of argrelmax not reliable. 2018-06-25 15:24:36 +02:00
77b4458ab5 [idea] change read_metadata to also read files without specific file ending 2018-06-25 14:22:14 +02:00
04e75abcf5 [bugfix] read_metadata obspyDMT 2018-06-25 14:21:34 +02:00
Ludger Küperkoch
b607da7262 [Bugfix] it was not sure that enough waveform remains for processing after cutting with improper cut times 2018-06-25 10:30:36 +02:00
34508fc4a3 [bugfix] addressing PyLoTCanvas already deleted
setParent(None) -> del(widget), not fully working on autopickwidget
2018-06-21 15:04:58 +02:00
1b5f58bbbd [minor] prefer processed data on init 2018-06-21 14:24:15 +02:00
a5667c1e06 [bugfix] nextStation not working with deleted PickDlg 2018-06-21 14:23:52 +02:00
2a8efd0904 [bugfix] autoPyLoT <-> obspyDMT 2018-06-21 13:24:24 +02:00
7ad36c2305 [bugfix] take width of mainwindow for min/max plot estimation
before width was only 80px for initial plot
2018-06-20 13:55:59 +02:00
910ed66676 [new] only load relevant waveforms into TAP widget 2018-06-20 13:49:27 +02:00
08124174b1 [update] autopicker - obspyDMT (WIP) 2018-06-20 11:47:10 +02:00
Darius Arnold
fe1e76f53a Add correct way to put picking results even when picking fails, now passing all tests 2018-06-19 19:55:09 +02:00
Darius Arnold
f4750472c7 Change PickingResults to inherit from dict and add dot access methods 2018-06-19 19:44:26 +02:00
Darius Arnold
675052975a Add finish_picking which transfers all results into the correct format in PickingResults
This function is called whether picking succeeded or failed. If it failed, it will put the default initialized values into the result. If picking succeeded, the default values will have been overwritten with the results during picking.
2018-06-19 19:38:13 +02:00
Darius Arnold
e3f7840d9e Add S phase picking 2018-06-19 19:38:12 +02:00
Darius Arnold
d4033eca08 Add converting fig_dict and iplot to the correct types 2018-06-19 19:33:22 +02:00
Darius Arnold
5b5da2e40d Move Trace Extraction to __init__ and copy over existing hor. trace if one is missing 2018-06-19 18:42:32 +02:00
Darius Arnold
7b6f64b46a Bugfixes/typos fixed during picking 2018-06-19 11:39:00 +02:00
Darius Arnold
335f3c4150 Replace access to trace over Stream index by direct access to trace attribute 2018-06-19 11:36:30 +02:00
47d6aeabff [minor] used event highlighting of eventlist also for eventbox 2018-06-19 11:28:41 +02:00
Darius Arnold
0a1d15c429 Add PickingFailedException 2018-06-19 11:26:42 +02:00
Darius Arnold
accb3c5d51 Add unittests for PickingResults 2018-06-19 11:20:57 +02:00
Darius Arnold
075b6e26c7 Modify test assertion to use DictContainsSubset and look at P and S seperately
With AssertDictContainsSubset the resulting dict from the new code can have more key/value pairs than the one from the old code, but all key/value pairs that are in the results from the old code must exist and be the same.
2018-06-19 11:19:49 +02:00
7de8c2ee8b [minor] info on number of traces for main plot 2018-06-19 11:13:06 +02:00
ca886d4355 [update] on obspyDMT compatibility (WIP) 2018-06-19 10:35:34 +02:00
ec32981787 [minor] improve current event highlighting 2018-06-19 10:26:17 +02:00
7c0de44974 [update] array_map legend inaxes, add lat/lon status, some fixes and improvements 2018-06-15 14:49:26 +02:00
0168d8923d [minor] tighten PyLoT tabs layouts 2018-06-14 16:26:26 +02:00
46a6cdcc00 [bugfix] remove autopicks weight>3 2018-06-14 15:50:44 +02:00
fe0e4be43d [update] array_map uses PylotCanvas now, added grid and labels 2018-06-14 14:08:25 +02:00
06cacdd4cb [update] major improvements of array_map, code restyled, increased flexibility 2018-06-13 17:01:05 +02:00
f50e38241e [minor] tweaks and finalization of obspyDMT options 2018-06-08 15:01:05 +02:00
083e5c8fe9 [new] synthetics checkbox 2018-06-08 14:29:45 +02:00
8155389b3d [new] add qcombobox for raw/processed selection 2018-06-08 14:18:28 +02:00
5e161d308a [bugfix] trying to access station not in autopicks dictionary 2018-06-05 15:11:43 +02:00
9b5fe3baba [bugfix] saving xml when tuning autopicker unnecessary (and caused id mismatch) 2018-06-05 15:07:06 +02:00
d695c0016a [bugfix] delete_later not caused tuneAutoPicker to malfunction 2018-06-05 15:06:33 +02:00
cbba41f16a [bugfix] autoPickWidget not enabled again after Error 2018-06-05 14:24:00 +02:00
d57c193a0b Merge branch 'feature/obspy_dmt_interface' into develop 2018-06-05 13:48:53 +02:00
20eb54e9c5 [minor] gitignore modification 2018-06-05 13:47:00 +02:00
Darius Arnold
629bae63e2 [bugfix] wrong variable used during calculating length of waveform 2018-05-29 23:51:09 +02:00
Darius Arnold
b0749e0ddc remove all usage of checkwindowP/S and minfactorP/S
Those changes have their own branch now, the parameters were not used during picking on this branch.
2018-05-29 21:28:32 +02:00
Darius Arnold
8d931fa97a [refactor] remove unnecessary if/else for earllatepicker 2018-05-29 21:27:11 +02:00
Darius Arnold
ec9bce97ee [refactor] use existing functions to avoid repetition in autopickstation
DRY
2018-05-29 19:20:59 +02:00
Darius Arnold
b93407012e [refactor] remove positional None argument in AICPicker instantiation
Instead use keyword arguments
2018-05-29 19:18:36 +02:00
Darius Arnold
1ffe4dcbb2 [minor] correct typos, add to docs, remove unnecessary parentheses 2018-05-29 19:14:41 +02:00
Darius Arnold
a68cb9b0b7 [add] transfer P picking routine to new function 2018-05-29 19:08:06 +02:00
Darius Arnold
58191e2d8f [add] test for dot access in PickingParameter object 2018-05-29 19:04:51 +02:00
Darius Arnold
628f335b34 [refactor] get_quality_class uses generator expression
Can handy any size of list for weight_classes now
2018-05-29 19:02:58 +02:00
Darius Arnold
c38e3eb07a [refactor] rename getQualityFromUncertainty function to be more pythonic 2018-05-29 18:53:38 +02:00
Darius Arnold
7910df3cc9 [add] tests for getQualityFromUncertainty function
Testing uncertainty in classes, between classes and outside of upper/lower bound of quality classes
2018-05-29 18:43:59 +02:00
Darius Arnold
2d850b70db Merge branch 'develop' into feature/refactor 2018-05-29 18:28:24 +02:00
Darius Arnold
756b5d67da [bugfix] getQualityFromUncertainty giving worst quality for uncertainty values between two classes
Now the quality classes are exclusive lower bound and inclusive upper bound.
2018-05-29 18:27:15 +02:00
Darius Arnold
82c0b7837c Add tests for creating of PickingParameters object from *args and **kwargs 2018-05-25 18:00:06 +02:00
Darius Arnold
0230f0bf2e Add object based approach to autopickstation: preparing traces, modifying cuttimes with taupy 2018-05-25 17:59:30 +02:00
Darius Arnold
9b787ac4e8 Add functions for splitting and preparing wfstream 2018-05-25 17:55:00 +02:00
Darius Arnold
02b7fae3df Minor formatting and docstring changes 2018-05-25 17:50:45 +02:00
Darius Arnold
15722c436e Merge remote-tracking branch 'origin/develop' into feature/refactor 2018-05-25 17:14:02 +02:00
Darius Arnold
b220059e5b Move use_taupy and taupy_model from s_parameters to p_parameters 2018-05-25 12:28:15 +02:00
Darius Arnold
455733ea19 [Add] Unittest for autopickstation function picking with and without taupy 2018-05-22 19:21:29 +02:00
f49d323c13 [add] no data label 2018-04-27 10:45:20 +02:00
ae4c345fa7 [update] same functionality but within main thread 2018-04-26 16:40:46 +02:00
65f0d23f07 [revert] changes not working due to Thread 2018-04-26 16:37:57 +02:00
2554f6ca7e [new] dont show plot if no data 2018-04-26 16:32:05 +02:00
8073a872c1 [add] event colored grey if folder isEmpty 2018-04-26 16:26:03 +02:00
ea9939a0c0 Merge branch 'develop' into feature/obspy_dmt_interface 2018-04-26 16:19:30 +02:00
18926610cf [add] colorized table 2018-04-26 16:19:12 +02:00
3d1d97dd26 Merge branch 'develop' into feature/obspy_dmt_interface 2018-04-26 15:01:29 +02:00
b02a0e8f9a [bugfix] os.getlogin not working on all OS/python versions 2018-04-26 15:00:40 +02:00
4c42d34adc [bugfix] check for time_ax not working this way 2018-04-26 14:52:17 +02:00
c90a2f6ae1 [bugfix] forgot to replace PyQt4 with PySide 2018-04-26 14:50:18 +02:00
be82706413 [bugfix] event_path overwritten 2018-04-25 14:06:07 +02:00
644470f156 [bugfix] was only checking current data processing state 2018-04-25 14:01:05 +02:00
d6150c5d1a [new] disable event selection of folder is empty 2018-04-25 13:48:06 +02:00
073a71e150 [add] origin/mag to eventBox 2018-04-24 15:37:15 +02:00
d3de33a12b [add] lineEdit showing if using processed/raw data 2018-04-23 17:00:52 +02:00
e6648a3cec [add] read event info from obsDMT pickle file 2018-04-23 16:49:01 +02:00
36a4f0df8a [bugfix] error when there is nothing to plot 2018-04-23 13:33:05 +02:00
Darius Arnold
6e8ed7dad9 Add documentation for tuning parameters and wip of gui docs 2018-04-20 23:35:21 +02:00
0320ad67b9 [new] station highlighting by middle mouseclick 2018-04-20 14:53:15 +02:00
9b0ef55b70 [bugfix] wasnt using processed data 2018-04-20 13:51:21 +02:00
4d3b300e17 [removed] check4gaps/doubled, plotting merged instead 2018-04-19 17:03:11 +02:00
56295f0c81 Merge branch 'feature/obspy_dmt_interface' into develop 2018-04-19 13:44:42 +02:00
a876384338 [add] info for user on min/max plot 2018-04-19 13:38:17 +02:00
964aa9ce6c [change] set downsampling to false again (creating errors when plotting
picks)
2018-04-18 16:46:21 +02:00
af54cb0d4b [add] auto set plotmethod 'fast' for large dataset 2018-04-18 16:44:33 +02:00
349715d13c [removed] nth_sample dialog 2018-04-18 16:21:57 +02:00
726210daeb [add] plot-method = 'fast' for min/max plot 2018-04-18 16:21:27 +02:00
e72111a6fb [add] obspy-like min/max function, removed testing area 2018-04-18 16:17:54 +02:00
5fcb07e647 [change] prepTimeAxis using linspace (is that ok?) 2018-04-18 16:17:16 +02:00
f0b6897053 [bugfix] identity check of np.array 2018-04-18 16:01:39 +02:00
Darius Arnold
0366181532 [refactor] picking parameters into dictionaries 2018-04-17 11:53:47 +02:00
ba37d587a6 [update] testing min/max plot (WIP) 2018-04-13 10:56:52 +02:00
Darius Arnold
90e6c758d8 [bugfix] convert string response from qsettings to integer for calculation 2018-04-06 14:35:24 +02:00
Darius Arnold
1edc745903 Merge branch 'develop' into feature/refactor 2018-04-06 13:53:04 +02:00
10c26a8261 Merge branch 'develop' into feature/obspy_dmt_interface 2018-04-05 16:03:26 +02:00
b730b16ac6 [add] check for plot quantity 2018-04-05 16:02:53 +02:00
c655371bae [minor] add RELEASE-VERSION to gitignore 2018-04-05 15:34:49 +02:00
67ee544522 Merge branch 'develop' into feature/obspy_dmt_interface 2018-04-05 15:33:48 +02:00
4cf785a135 [add] synthetic data plot (not yet flexible) 2018-04-05 15:33:40 +02:00
f3627033b1 [bugfix] auto downsampling not working 2018-04-05 15:06:23 +02:00
bd086e6cd4 Merge branch 'develop' into feature/obspy_dmt_interface 2018-04-04 15:20:30 +02:00
a201b99c2e [bugfix] closes #256, not asking for filteroptions if no filterphase 2018-04-04 15:17:55 +02:00
889628ceee [remove] RELEASE VERSION!!! 2018-04-04 15:17:55 +02:00
366db9aef0 [initial] first changes to supply an interface to an obspyDMT database 2018-04-04 14:57:54 +02:00
79412c392d [add] gitignore 2018-04-03 16:04:29 +02:00
8f5292b957 [minor] added Error if phase can not be identified 2018-03-28 10:24:24 +02:00
4002ccfd1a [bugfix] pickdlg not deleted, consuming tons of memory 2018-03-28 10:24:24 +02:00
Darius Arnold
aba1a16f98 Merge branch 'feature/parameter_limits' into develop 2018-03-19 11:44:22 +01:00
Darius Arnold
8f78b6d8c8 [Add] Parameters clamped according to min/max values in default_parameters 2018-03-07 14:24:41 +01:00
Darius Arnold
a44ada9938 [minor] correct misspelling in min value key in default_parameters 2018-03-07 14:23:36 +01:00
Darius Arnold
ef8c19b747 Merge branch 'develop' into feature/parameter_limits 2018-03-07 11:16:37 +01:00
f9203d92e8 [bugfix] tuneAutopicker not working without 'P' and 'S' in picks 2018-03-05 17:49:40 +01:00
39f9238a06 [new] function to modify project/event rootpath (called on loading project) 2018-03-05 17:45:07 +01:00
8dabfb41d8 [add] check for event data 2018-03-05 16:51:06 +01:00
4918448d92 [bugfix] some fixes on hovering/renaming picks 2018-02-23 10:37:23 +01:00
9e74ff04c2 [add] linear detrend for manual picking... 2018-02-22 16:31:01 +01:00
39b925f475 [bugfix] init of Filteroptions class not working with kwargs 2018-02-22 16:26:46 +01:00
b076ee90fa [add] cb for overwriteFilter, else filter automatically again 2018-02-22 16:03:11 +01:00
bff888c98a [bugfix] emitted signal disturbing reset feature 2018-02-22 11:33:14 +01:00
2e5ed974f0 [bugfix] filteroptions were not loaded from project 2018-02-22 11:28:46 +01:00
90bc7642fd [update] default corners=4! 2018-02-22 11:19:24 +01:00
08b3c70497 [add] labels auto/manu 2018-02-22 11:16:56 +01:00
69955ff439 [add] reset (to auto settings) button 2018-02-22 10:51:26 +01:00
fa46385a52 [add] color representation of auto filter values 2018-02-22 10:05:57 +01:00
144ecda61e Merge branch 'feature/additional_channel_display' into develop 2018-02-21 13:39:49 +01:00
ff65fd2290 [minor] some updates 2018-02-21 13:36:43 +01:00
Ludger Küperkoch
f56d32b661 New button for showing pick qualities. Still work in progress. 2018-02-01 11:42:34 +01:00
Ludger Küperkoch
da06115886 New button for getting histogram of pick qualities, in progress. 2018-01-30 16:16:41 +01:00
Ludger Küperkoch
dc6c6445a9 Default for input parameter iplot. 2018-01-30 11:11:57 +01:00
Ludger Küperkoch
1b85625643 [Bugfix] Two times "def calPick(self)" (accidently?). 2018-01-30 10:06:22 +01:00
Ludger Küperkoch
af393d5118 Take into account that dip/azimut might be 0 when not available. 2018-01-25 11:34:37 +01:00
819e4d7076 [bugfix] skip unknown channels for everything but comparison option 2018-01-17 16:38:11 +01:00
60a2863629 [bugfix] copy/paste failure 2018-01-17 16:28:50 +01:00
c6cd6b2d69 [bugfix] use filter selected for ini pick not auto, save this filteropt. 2018-01-17 12:19:32 +01:00
0e057af39b [cleanup] simplifaction of setIniPickP/S functions, merge into one 2018-01-17 12:04:07 +01:00
473529961e [update] EVERY trace now scaled relative to its own noiselevel 2018-01-17 11:47:52 +01:00
d2437b5014 Merge branch 'develop' into feature/additional_channel_display 2018-01-17 10:31:40 +01:00
97de485c99 [bugfix] case pg=False: internal change of pylot canvas updated 2018-01-17 10:30:38 +01:00
98f7ff8406 [update] resetZoom after picking 2018-01-16 16:17:18 +01:00
f4632ac1f5 [update] enable/disable comboboxes in pick mode 2018-01-16 16:10:47 +01:00
c520c7c212 [new] HUGE rearrangement of initial pick behavior (untested)
- zooms on selected channels after initial pick
- ylims not relying on noiselevel anymore (better overview and not possible with more than one phase),
xlims now based on mean snr of all selected channels for initial pick instead of snr of one 'random' channel
2018-01-16 16:06:24 +01:00
ec394d447d [new] choose channels to pick on for each phase 2018-01-16 13:33:12 +01:00
a22e64889d [add] scaling by channel (untested) 2018-01-15 16:35:19 +01:00
4835c0ca8a [change] possible to select one of all available channels for comparison 2018-01-15 15:29:46 +01:00
975bd64266 Merge branch 'develop' into feature/additional_channel_display 2018-01-15 14:43:26 +01:00
de8886b73b [update] leave rename phase mode when picking initiated 2018-01-15 14:37:07 +01:00
f4839bb609 [bugfix] too many arguments in function (outdated) 2018-01-15 14:31:42 +01:00
5b5902a329 [update] keep filter corresponding to phase when refreshing plot 2018-01-15 14:28:08 +01:00
1c51ed12fc [bugfix] missing paranthesis 2018-01-15 14:21:10 +01:00
49de0fb22e [add] Hotkey for renaming 2018-01-15 14:20:48 +01:00
b191bd8cf4 [update] warn/do not save picks with unknown phase ID 2018-01-15 14:17:14 +01:00
4589f92a1a [new] renaming of phases (untested) 2018-01-15 13:52:31 +01:00
44f63f8163 [change] ax.vlines -> ax.axvline (infinite) 2018-01-15 11:38:07 +01:00
a1ee8d408c [add] user_help to status bar
[bugfix] missing change to mouseevent button
2018-01-15 11:32:02 +01:00
d6400562d6 [change] DELETE PICK WITH MIDDLE MOUSE BUTTON (else deleted using zoom) 2018-01-15 11:28:25 +01:00
0013d099f3 [new] tooltip for phases on mouseover (untested) 2018-01-15 11:21:43 +01:00
534222e241 [bugfix] Exception when pick.filter_id was None 2018-01-15 11:16:26 +01:00
796eea87a1 [new] show time and pick info on left click in 3 comp window! 2018-01-12 15:14:57 +01:00
bb395d2514 [new] preparation for pick info on click 2018-01-12 14:42:16 +01:00
5aef50f922 [new] save filteroptions as strings in XML (untested) 2018-01-12 14:07:36 +01:00
ffa30e92e9 [bugfix] tried to filter without active event 2018-01-12 10:15:30 +01:00
23ed5ceb5c [update] filter hotkeys changed to P, S, Ctrl+F 2018-01-12 10:10:51 +01:00
185cc14e38 [add] P and S Filter options for main window
[bugfix] wforiginal not pre-processed
2018-01-12 10:07:14 +01:00
80d2ff508b Merge branch 'develop' into feature/additional_channel_display 2018-01-11 10:56:14 +01:00
c7dc1481a1 [bugfix] wrong parent set for TuneAutoPicker 2018-01-10 16:59:34 +01:00
0ebc6e11f8 [add] prev/next event button (~~had to remove min button width) 2018-01-10 16:54:26 +01:00
78d5ee58b5 [update] apply new filter settings after selection 2018-01-10 16:08:28 +01:00
8d6de02afe [bugfix] filter settings will be retained when leaving picking mode etc 2018-01-10 16:00:34 +01:00
7ab13ebaad Merge branch 'develop' into feature/additional_channel_display 2018-01-10 14:50:46 +01:00
a76dd06497 [update] add detrend/taper to 3comp filter (better only one function!) 2018-01-10 14:50:37 +01:00
7c61c7c471 Merge branch 'develop' into feature/additional_channel_display 2018-01-09 15:37:01 +01:00
39e048cf2f [bugfix] rectangle zoom connection 2018-01-09 13:46:21 +01:00
440c2c7bf3 [bugfix] reconnect interactive zoom after rectangle zoom 2018-01-09 13:37:53 +01:00
7be9fc28fa [minor] beautification 2018-01-09 12:21:49 +01:00
a81c98c0b8 [update] pickdlg maximized by default 2018-01-09 12:18:47 +01:00
fe81bd9719 [bugfix] enable buttons when switching between P and S by hotkey 2018-01-09 12:15:55 +01:00
fde0de26f2 [update] added hotkeys for picking 2018-01-09 12:14:34 +01:00
acdcf74c63 [bugfix] corrected hotkey 2018-01-09 12:04:43 +01:00
1324bf3d7c [bugfix] retain filtering when switching events 2018-01-09 12:04:03 +01:00
00cdbb5052 [update] changed frame color to pick color on init pick 2018-01-09 11:54:46 +01:00
4150e7f7d4 [update/bugfix] big update on filter options:
- added toggle and QSetting for automatic filtering when picking
- filtering in 3comp window independent from main plot, current filter options are copied after 3comp. init though
- several bugfixes when activating/deactivating filter
2018-01-09 11:44:22 +01:00
8badba4a89 Merge branch 'develop' into feature/additional_channel_display 2018-01-09 09:55:09 +01:00
549700bf7a [update] changed plot/filter behavior for 3comp window 2018-01-09 09:54:39 +01:00
c39303042f Merge branch 'develop' into feature/additional_channel_display 2018-01-08 14:46:58 +01:00
fb4753ca83 [add] improved filteroptions and fixed some bugs 2018-01-08 14:45:29 +01:00
08703bf691 [add] some hacks to display air pressure in plot 2018-01-08 13:47:40 +01:00
8c9fded873 [update] working on filter bugs WIP 2017-12-21 13:13:44 +01:00
1296e914c3 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-12-06 14:53:18 +01:00
e0e106d898 [bugfix] no more zoom reset entering picking mode 2017-12-06 14:52:31 +01:00
151900753a [update] improve help for event folder structure 2017-11-23 11:37:04 +01:00
aada482b19 [add] some fancy color stuff for picking 2017-11-22 14:25:42 +01:00
Darius Arnold
b6fddaf208 [add] docstrings for event.py 2017-11-15 11:37:13 +01:00
Darius Arnold
fc3a825e73 Merge remote-tracking branch 'origin/feature/refactor' into feature/refactor 2017-11-15 11:36:14 +01:00
Darius Arnold
983e4c25a3 [add] docstrings in pylot/core/loc 2017-11-13 11:45:25 +01:00
Darius Arnold
6aacd2dd55 [add] docstrings in pylot/core/io 2017-11-13 11:44:57 +01:00
Darius Arnold
b2f211516a [change] docstrings in picker.py 2017-11-13 09:49:44 +01:00
Darius Arnold
16a8170e49 [add] an exception if unable to find minimum in AIC cf 2017-11-13 09:32:39 +01:00
Darius Arnold
8280a5043c [bugfix] snr calculation takes offset from cutting into account 2017-11-10 10:23:50 +01:00
Ludger Küperkoch
55101c9e9e Reset some former changes, net_magnitude still buggy, as it returns Nonetype if no reliable picks are available! 2017-11-09 14:58:06 +01:00
Ludger Küperkoch
615ca54640 Make sure calculating Ml only from reliable onset times. 2017-11-09 10:30:01 +01:00
Ludger Küperkoch
f01860b6f1 Calculate Mo only from reliable onset times. 2017-11-09 10:15:58 +01:00
Ludger Küperkoch
3f50dae2de [Bugfix]Wrong application of title, wrong onset plotting, removed obsolete intrinsic ObsPy-plot. 2017-11-07 15:15:23 +01:00
Darius Arnold
887eeba6ec [minor] small docstring changes 2017-10-25 21:55:19 +02:00
Darius Arnold
8f721da643 refactoring picker.py (AICPicker and PragPicker) 2017-10-25 21:54:25 +02:00
deaa67bb30 [bugfix] wront parent used for style 2017-10-20 11:04:03 +02:00
f01868bc36 [bugfix] missing parameter ax for getXLims (mpl) 2017-10-20 11:00:52 +02:00
36e68ee1ed [bugfix] getAxes missing in PylotCanvas for mpl 2017-10-20 10:57:00 +02:00
Darius Arnold
149fe3f74d [change] docstrings in util/utils.py 2017-10-16 21:55:24 +02:00
Darius Arnold
7086d43076 [change] cleanup in pick/utils.py 2017-10-16 21:10:21 +02:00
Darius Arnold
a5b3c5da1b [change] docstrings in pick/utils.py 2017-10-16 21:04:37 +02:00
Darius Arnold
fab1f53a41 [change] docstrings in compare.py 2017-10-16 21:02:04 +02:00
4d37abc7d8 [update] flexibility for full_range
teach PyLoT to cope with future (synthetic) events as well
2017-10-11 11:52:51 +02:00
Ludger Küperkoch
7d3196bf21 [Bugfix] argrelmax not working if array contains only one element. 2017-10-09 14:40:26 +02:00
Darius Arnold
f1cd250cb1 [minor] one min/max key was forgotten in previous commit 2017-10-05 18:25:00 +02:00
Darius Arnold
da6f35d76b [change] some tooltips for the picking parameters 2017-10-05 18:23:47 +02:00
Darius Arnold
b10432f3bf [add] min/max values for most keys in default_parameters 2017-10-05 18:22:13 +02:00
Darius Arnold
9491a28710 [cleanup] of autoPyLoT.py 2017-10-05 17:26:18 +02:00
Darius Arnold
3dde42e639 [change] improved docstring for autopylot.py 2017-10-05 17:19:00 +02:00
Darius Arnold
87b4ce1345 [cleanup] in charfuns.py using code inspection 2017-10-05 16:52:36 +02:00
Darius Arnold
9a8d7da0e6 [change] docstrings for functions in charfuns.py 2017-10-05 16:50:53 +02:00
Darius Arnold
5931331b1d [cleanup] code cleanup in autopick.py using code inspection 2017-10-05 16:07:29 +02:00
Darius Arnold
6f65789844 [change] docstrings for functions in autopick.py 2017-10-05 16:06:11 +02:00
Darius Arnold
c61277f429 [bugfix] pciking dialog initiated in arrayMap had no _style attribute 2017-10-04 16:52:18 +02:00
846da4cab7 [minor] version number changed to 0.2 2017-09-21 15:59:34 +02:00
c8adc24c67 [minor] README update 2017-09-21 15:58:52 +02:00
255eca3c05 [update] rename QtPylot -> PyLoT (suggestion) 2017-09-21 15:36:17 +02:00
af5953b053 [update] README.md 2017-09-21 15:34:29 +02:00
c19f057abf [update] default pylot.in file updates 2017-09-21 15:20:05 +02:00
1f2b3147fd [cleanup] remove old files pt.2 2017-09-21 15:03:14 +02:00
43930a07cb [minor] remove navigation toolbar for tap 2017-09-21 14:42:19 +02:00
2a987cbdfa [cleanup] removed unused old code and output 2017-09-21 14:38:56 +02:00
238998e626 [cleanup] removed old unused class 2017-09-21 14:27:42 +02:00
b465ba2111 [minor] color for qstatusbar missing 2017-09-21 14:26:35 +02:00
370e8a7074 [update] make HELP work again 2017-09-21 13:31:45 +02:00
259538f0b0 [minor] add some description to exp. histograms 2017-09-21 10:54:34 +02:00
3096ee4573 [bugfix] usage of unordered dict for comparison
implicit extraction of pdf names (auto, manu) for comparison from a list generated within dict iteration lead to possible flipping (auto - manu .or. manu - auto) of compared pdfs (and with that histograms)
2017-09-21 10:34:21 +02:00
92b12537eb [update] small improvements on comparison figures 2017-09-21 10:31:29 +02:00
e9ce9635e0 [update] tuneAutoPicker color/pick visualisation 2017-09-20 11:03:30 +02:00
c70222972c [update] small change in comparison figures 2017-09-19 16:08:04 +02:00
8397856213 [refs #247] array map initiation when loading project 2017-09-18 16:12:02 +02:00
961be8ccbc [bugfix] ibad referenced before assignment 2017-09-18 15:10:52 +02:00
7522201e06 [minor] beautiful progressbar 2017-09-18 15:06:50 +02:00
69ad0bf23b [bugfix] self.pdlg_widget not initiated 2017-09-18 15:06:33 +02:00
5bb55a8181 [update] move progressbar to bottom of mainwindow 2017-09-18 14:57:48 +02:00
eab416df3f [bugfix] reset stdout in Worker 2017-09-18 14:46:29 +02:00
0949a6deac [update] apw saved, proper deletion of figures 2017-09-18 14:44:18 +02:00
6acb0ad580 [minor] wadata/jk improvements 2017-09-18 12:20:48 +02:00
316d19ba9e [bugfix] one replacement of i -> index missing 2017-09-18 11:39:27 +02:00
8a2bb65581 Merge remote-tracking branch 'origin/develop' into develop 2017-09-18 11:24:57 +02:00
330e15441e [bugfix] fig._tight=True tried to be set on None type 2017-09-18 11:23:52 +02:00
365657064f [cleanup] pycharm code inspection 2017-09-18 10:41:27 +02:00
a5d863bf95 [cleanup] method without usage 2017-09-18 10:15:07 +02:00
Darius Arnold
6d0083040c Merge branch 'feature/fix-tuneautopicker_stationlist' into develop 2017-09-15 20:49:38 +02:00
Darius Arnold
586abea874 [bugfix] same treatment of waveform data in tune autopicker and load waveform
fixes #217. While generating the station list for the tune autopicker dialog, waveform data was loaded and some traces were removed (gaps, doubled, rotated). However, not all the functions were called on wfdat, so some stations would be unavailable in the general waveform overview for the event, but could be selected in the tune autopicker.
2017-09-15 20:48:22 +02:00
Darius Arnold
2ee3c9a304 [change] show more stations in stationbox of tune autopicker dialog 2017-09-15 18:59:17 +02:00
Darius Arnold
2e6c33de45 [bugfix] allow picking of S phase in lower area of waveform plot
Fixes bug report #211
2017-09-15 18:56:04 +02:00
Darius Arnold
864f035456 Merge branch 'improve_jackwada_plots' into develop 2017-09-15 18:32:26 +02:00
Darius Arnold
27a6af6636 improved jackknife/median plot
added different colors to markers for accepted picks, jackknife reject picks and median rejected picks, added lines indicating median tolerance
2017-09-15 18:31:20 +02:00
Darius Arnold
62625d6941 improved wadati plot
added names of stations, added lines indicating wadati tolerance
2017-09-15 18:28:33 +02:00
Darius Arnold
7c528a4bfd [change] jackknife and wadati plot show one instead of two points in legend 2017-09-15 16:48:08 +02:00
Darius Arnold
8dc5be8e49 [bugfix] removed unneccessary command added during tight layout change 2017-09-15 16:47:12 +02:00
Darius Arnold
a7fd239574 [bugfix] improvements to removal of NaNs during Cf calculation 2017-09-15 16:28:27 +02:00
6a40eef3fc Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-09-15 14:47:44 +02:00
183f9e77c0 [fixes #249] stylesheet path relative to style_settings 2017-09-15 14:47:05 +02:00
Darius Arnold
c8affae0c2 Merge branch 'tightlayout_tuneauto' into develop 2017-09-15 14:12:33 +02:00
Darius Arnold
ec8d471ce1 [change] enabled tight layout for tune autopicker plots 2017-09-15 14:11:28 +02:00
Darius Arnold
a96f8dcb7d [add] wadati, jackknife and median test print excluded stations 2017-09-15 13:24:13 +02:00
Darius Arnold
c65d6b8376 [bugfix] catch empty pickdics during comparison
Only the P phase might be picked by purpose, or the autopicker might not find any valid S onsets
2017-09-15 13:17:40 +02:00
Darius Arnold
ff891cacdc add tight layout to overview plots of tune autopicker dialog 2017-09-15 13:15:30 +02:00
Darius Arnold
00df77e723 [add] remove mean from traces to avoid filtering artifact
Traces with constant offset (mean != 0) produce a large, low period artifact when filtered, even with tapering.
2017-09-15 12:09:56 +02:00
Darius Arnold
219d2d0e5a Merge remote-tracking branch 'origin/develop' into develop 2017-09-15 11:38:06 +02:00
7496025137 [rename] Ref Button -> Tune Button 2017-09-13 14:44:56 +02:00
4269256469 [update] make PyLoT icon great again
(bugfix and color change for visibility on dark system background)
2017-09-12 16:37:26 +02:00
f2f908f8b5 [bugfix] missing parameter in getGlobalLimits 2017-09-12 15:31:02 +02:00
8381782194 [bugfix] missing third value (color) in tuple for autopicker 2017-09-12 14:10:15 +02:00
518019322d [minor] add event name to Histogram Window 2017-09-12 13:30:51 +02:00
4bf03ef0d9 [minor] update radioButton StyleSheet 2017-09-12 13:30:38 +02:00
cc0281f9dc [add] color for tune/test events on MultiEventWidget 2017-09-12 12:09:59 +02:00
1d253b5ee5 [minor] text color changed in stylesheet 2017-09-12 11:58:24 +02:00
0eeb07583b [change] major change: wadati/JK checked picks REMOVED from autopicks
before, all picks were saved as XML automatically by autoPyLoT (also weight 8, 9), maybe change this to a more convenient way in the futur (e.g. add pick weight as ObsPy.Pick.comment ?)
2017-09-12 11:50:26 +02:00
0cf46a0cc3 [minor] improve user output on used CPU cores 2017-09-12 11:02:08 +02:00
7027f9ca58 [update] stylename active used to init combobox 2017-09-11 16:06:25 +02:00
c23fc0f303 [minor] stylesheet changes 2017-09-11 16:01:03 +02:00
ed915f29df Merge branch 'style_options' into develop 2017-09-11 15:53:49 +02:00
0418acf472 [minor] embellish autoPyLoT button 2017-09-11 15:52:01 +02:00
e333ae0ece [revert] accidently added line for local testing 2017-09-11 15:16:42 +02:00
197164f849 [issue] trying to solve FigureCanvas already deleted exception WIP 2017-09-11 15:15:33 +02:00
a4c697d250 [minor] solving some parental issues 2017-09-11 14:39:46 +02:00
bed5c8ffcf [minor] stylesheet changes 2017-09-11 14:23:42 +02:00
330ab9b823 Merge branch 'develop' into style_options 2017-09-11 13:29:22 +02:00
b1a12bf666 [bugfix] workaround: if datastructure not set 2017-09-11 13:28:39 +02:00
f0e4ba5ab2 [add] style settings option 2017-09-11 13:27:32 +02:00
d93a571a51 Merge branch 'develop' into style_options 2017-09-11 12:23:40 +02:00
1862b6d6e1 [bugfix] QSettings not loaded on setupUI because
application/organization name were not set
2017-09-11 12:18:30 +02:00
6e43e67172 [minor] stylesheet modifications 2017-09-11 10:24:22 +02:00
e5b0210c27 [update] bright stylesheet 2017-09-08 17:25:29 +02:00
78ba5484c6 [bugfix] old usage of _parent 2017-09-08 17:19:34 +02:00
f1fdd3b17b [update] bright stylesheet 2017-09-08 17:19:18 +02:00
104a8dda64 [update] add linecolor settings to autoPyLoT figs 2017-09-08 17:01:36 +02:00
7ef784f2d2 [minor] color changes 2017-09-08 15:50:08 +02:00
d15828a058 [add] pick trace button color 2017-09-08 12:25:30 +02:00
51fe48553d [update] bright stylesheet 2017-09-08 12:21:56 +02:00
a97258513e [bugfix] missing variable name change 2017-09-08 10:28:54 +02:00
e310e1b6a6 Merge branch 'develop' into style_options 2017-09-08 09:39:47 +02:00
38a071ac5b [minor] suppress rotation warning in GUI 2017-09-08 09:36:34 +02:00
8717df836a [add] bright stylesheet 2017-09-08 09:27:47 +02:00
9d540fdd9b Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-09-07 16:57:34 +02:00
91340b66e9 [minor] add window title to pickDlg 2017-09-07 16:57:10 +02:00
cacfb37468 [minor] some updates, added bright style sheet 2017-09-07 16:51:56 +02:00
Darius Arnold
49adc5418f [bugfix] calculate slope up to first local maximum only
before it was calculated to global maximum in slope window
2017-09-07 16:47:42 +02:00
Darius Arnold
8a600e1bfa Merge remote-tracking branch 'origin/develop' into develop 2017-09-07 16:43:21 +02:00
9c63621ba4 [update] style_settings 2017-09-07 16:07:43 +02:00
bab34a23c4 [add] settings for styles 2017-09-07 10:59:09 +02:00
7e39593b05 [change] dark stylesheet update 2017-09-07 10:52:22 +02:00
7ecf976401 [add] dark stylesheet 2017-09-06 18:34:59 +02:00
7f0d3c2ab4 [new] missing parents added, some preperations 2017-09-06 18:02:09 +02:00
bf36e5e6a5 [bugfix] shift traces on wfPG plot 2017-09-05 15:31:02 +02:00
88bf4c8f67 [bugfix] delete picks after jk/wadati not working 2017-09-05 15:03:03 +02:00
c6105330e0 [add] Ctrl+S to save fig (has to be clicked firsts) 2017-09-04 15:03:30 +02:00
16997ff49b Merge branch 'update_waveformwidget' into develop 2017-09-01 15:47:17 +02:00
39b450b005 [add] panZoom implemented 2017-09-01 15:44:42 +02:00
Darius Arnold
e6d5dccb74 [bugfix] add default values when wadaticheck fails
Else plotting crashes due to unset variables
2017-08-31 21:58:13 +02:00
9a61a7f27d [change] fix legend locations to prevent them from bouncing on zoom 2017-08-31 15:41:59 +02:00
8e59845558 Merge branch 'develop' into update_waveformwidget 2017-08-31 15:28:07 +02:00
699575f9d5 Merge branch 'compare_events' into develop 2017-08-31 15:02:27 +02:00
33bc4e060f [minor] change layout and add groupbox 2017-08-31 15:01:48 +02:00
9eea1e9b14 Merge remote-tracking branch 'origin/develop' into develop 2017-08-31 14:32:12 +02:00
79cbaf3397 [update] working version to compare several events 2017-08-31 14:31:33 +02:00
eaa7a993af [add] compare widget for multiple events added 2017-08-31 11:16:38 +02:00
ba001fb53d [change] restructured comparison widget 2017-08-31 09:49:09 +02:00
Darius Arnold
9e1af65af7 [bugfix] AIC-CF was smoothed using wrong parameter
aictsmooth was unused in pylot, instead the tsmoothP parameter was used two times. 
aictsmooth should smooth the AIC-CF during the determination of the preliminary onset. tsmoothP is used to smooth the HOS-CF during pragmatic picking.
2017-08-31 00:07:38 +02:00
f4fc067f16 Merge branch 'develop' into compare_events 2017-08-30 14:54:24 +02:00
ca5167cb04 [bugfix] check type(picks) in dict/Attribdict 2017-08-30 14:45:20 +02:00
aea58b3c11 [update] made autopickwidget concept more flexible 2017-08-30 14:44:39 +02:00
f21fc7bb37 [fixes #244] parameters passed to pickDlg explicit 2017-08-30 10:51:20 +02:00
34ae5dddd2 [update] phaseText refreshing working (maybe slow)
if replotting slows down user interaction too much, change replot to pan-release instead of -move action, or add refresh timer
2017-08-29 16:32:42 +02:00
e2b69d043c Merge branch 'develop' into update_waveformwidget 2017-08-29 15:57:04 +02:00
21f02bf675 [minor] add absolute time to WfWidgetPG 2017-08-29 15:55:36 +02:00
881cc39e0e [bugfix] add default value to jackfactor
if not done, autoPyLoT will raise an error on old pylot.in files (or projects with old parameter obj.)
2017-08-29 15:23:25 +02:00
89dc390125 [minor] readd taupy tooltip 2017-08-29 15:08:28 +02:00
Darius Arnold
1ceb347602 [bugfix] avoid indexing an empty array when there are no NaNs at start of CF 2017-08-29 15:05:34 +02:00
Darius Arnold
bac6d6f5ec [add] jackknife safety factor no longer hardcoded, GUI parameter added 2017-08-29 15:05:10 +02:00
Darius Arnold
71973a5348 [bugfix] Earllate-Picker would use wrong timearray for plotting
signal-timearray gets doubled if not enough zero crossings are found to calculate valid signal period. Plotting would then use the old "single" timearray.
2017-08-29 14:58:20 +02:00
Darius Arnold
b232a2a194 [bugfix] check4rotated unable to access metadata in TuneAutopicker 2017-08-29 14:40:26 +02:00
Darius Arnold
5648fc1870 [change] replace NaN's in HOScf by first NaN value instead of zero 2017-08-29 14:40:05 +02:00
Darius Arnold
0852bf0f80 [bugfix] handle to short zero crossings window 2017-08-29 14:39:30 +02:00
Darius Arnold
afd03da178 [change] more readable indexing during slope determination 2017-08-29 14:39:09 +02:00
Darius Arnold
8ce9e40d49 [bugfix] catch empty index array during slope determination 2017-08-29 14:38:57 +02:00
Darius Arnold
19566715a7 [add] tune autopicker displays picked onset time and error in seconds 2017-08-29 14:38:36 +02:00
8e4fa5edca [cherrypick] from darius: rotate and taupy tooltip 2017-08-29 14:37:05 +02:00
726544bf3b [update] canvas finally working again 2017-08-24 17:16:21 +02:00
c83671f140 [update] canvas used for tune-fig, not yet pan 2017-08-24 11:35:53 +02:00
070c32e007 [change] disable multicursor by default 2017-08-23 15:18:24 +02:00
2ce609a19c [bugfix] tuneAutopicker not working cause of wadatijack 2017-08-23 14:46:30 +02:00
1bbb686778 [updates] first usage of PylotCanvas for other fig 2017-08-23 14:45:46 +02:00
3cfd2371fc [change] scroll zoom now part of WFwidget 2017-08-23 12:17:51 +02:00
47a79c7660 [add] wadaticheck added to widget (problem:
picking weights showing wadati/jk check
will be lost on saving/loading XML)
2017-08-23 11:51:59 +02:00
0e650dfb75 [update] working version of autopickwidget 2017-08-23 10:25:46 +02:00
9a5196c33f [minor] cosmetics 2017-08-23 09:20:59 +02:00
62610cd592 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-22 16:43:57 +02:00
c6c13f85bc [new] first working version of jackknife plots for multiple events (WIP) 2017-08-22 16:43:09 +02:00
d818e6aef9 [new] widget for picking interactive inside GUI 2017-08-22 13:21:06 +02:00
0f2660e20b [change] number of picks regards pick quality 2017-08-22 11:53:19 +02:00
Ludger Küperkoch
f7cada6d09 [Bugfix] Some typo. 2017-08-22 10:34:58 +02:00
a5097e1da6 [add] updates to jackknife from GUI (WIP, experimental) 2017-08-21 17:19:08 +02:00
Ludger Küperkoch
6722024749 Take renaming of existing function into account. 2017-08-21 16:16:09 +02:00
Ludger Küperkoch
dabd7f463c Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2017-08-21 16:11:41 +02:00
Ludger Küperkoch
75d206b9b1 Revised function using already existing functions. 2017-08-21 16:11:10 +02:00
ed994e987f [change] ComparisonDlg -> ComparisonWidget 2017-08-21 16:07:57 +02:00
b185ce72b1 [add] exclude quality class 4 from comparison 2017-08-21 15:33:19 +02:00
b30ab69ad2 [bugfix] teach comparison to cope without pick 2017-08-21 15:33:00 +02:00
50e7b83812 [new] new function to exclude picks by quality 2017-08-21 15:11:07 +02:00
2b0aa38b37 [change] restructure identifyPhase functions 2017-08-21 14:59:28 +02:00
55a54ae154 [rename] getQualityFromUncertainty 2017-08-21 14:50:18 +02:00
e9dd34eca7 [change] py3 histogram changes merged to develop 2017-08-21 14:11:41 +02:00
a75c16b2cd Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-21 13:56:40 +02:00
b9bdaa391b [change] use timedelta if (epick or lpick)=mpick 2017-08-21 13:51:54 +02:00
bdcb0ba649 [change] islope calculation with 2 samples 2017-08-21 13:38:50 +02:00
Ludger Küperkoch
f6225f8176 [Bugfix] Strange bug, happened only in multiple-event processing, key error. 2017-08-21 13:20:15 +02:00
Darius Arnold
09374f8242 [bugfix] compare now shows histogram for all stations 2017-08-21 12:19:23 +02:00
e0e0be48c7 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-21 10:30:10 +02:00
a9f05d3572 [fixes #238] missing parenthesis in if statement 2017-08-21 10:28:47 +02:00
Ludger Küperkoch
2cbecfd54e [Bugfix] "locflag" was overwritten within event loop. 2017-08-18 16:52:39 +02:00
Ludger Küperkoch
6ba7fd8874 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2017-08-18 15:40:30 +02:00
Ludger Küperkoch
6729256087 [Bugfix] changed name of keys in loops, which might overwrite equal named input argument, reversed double fix of bug. 2017-08-18 15:38:01 +02:00
8fb6a4ea19 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-18 14:54:02 +02:00
9c12dde741 [change] simplified toolbars, disabled dragging 2017-08-18 14:53:35 +02:00
Ludger Küperkoch
13f7976e53 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2017-08-18 14:05:11 +02:00
Ludger Küperkoch
2460d3e9d6 [Bugfix] "savepath" remained the same within multiple event processing, even if set to None (set savepath automatically to event path).
station looses its attribute 'all'.
2017-08-18 14:03:25 +02:00
4faf007e0b [change] try set ncores flag explicitly (WIP) 2017-08-18 13:18:21 +02:00
8a024b66e0 [bugfix] checked identity of 'None' in autoPyLoT 2017-08-18 11:44:55 +02:00
53aa02669c [bugfix] savepath overwritten after first occurrence in for loop 2017-08-18 11:36:58 +02:00
4c859eae1b [cosmetics] added/changed some icons 2017-08-18 11:32:45 +02:00
4b01c7a28b Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-17 15:50:18 +02:00
2b942338b0 [bugfix] merge_picks not checking for method_id
[cleanup] removed unnecessary Data()
2017-08-17 15:47:42 +02:00
Ludger Küperkoch
641a3a09e9 [Bugfix] Attribute path got lost during export in loop over output formats, fixed! 2017-08-17 15:38:13 +02:00
Ludger Küperkoch
3369fb6382 [Bugfix] Attribute path got lost during xml-check. 2017-08-17 15:21:39 +02:00
Ludger Küperkoch
76144252ea Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2017-08-17 12:32:54 +02:00
Ludger Küperkoch
24ded1cf2b Reversed changes made in previous commit, initialize ObsPy-event object including path. 2017-08-17 12:31:42 +02:00
d067d4787e [bugfix] doubled picks saving XML files 2017-08-17 11:54:01 +02:00
ea7b609091 [change] restructure setupUi and init map/inventory 2017-08-17 10:46:06 +02:00
Ludger Küperkoch
5920c64ec5 Reversed some changes of former commit accidently made. 2017-08-16 16:49:47 +02:00
Ludger Küperkoch
b64009e525 [Bugfix] It might happen, that Lc is negative and/or pstop smaller than pstart! 2017-08-16 16:48:04 +02:00
Ludger Küperkoch
9f48b23d88 Use writephases for exporting to VELEST-input file, as VELEST can handle only 4-string station IDs which is already implemented in source code. 2017-08-16 16:24:35 +02:00
Ludger Küperkoch
db628a5228 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2017-08-16 15:33:16 +02:00
Ludger Küperkoch
606dc6a596 Enable compare button only if automatic as well as manual picks are available for same stations. 2017-08-16 15:32:25 +02:00
17f94228ab Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-16 15:14:15 +02:00
879282657a [change] get comparison working with alparray/py3 2017-08-16 15:13:55 +02:00
8e6237a08d [add]function to check for doubled channels in stream 2017-08-16 15:13:28 +02:00
ec095c572d [bugfix] if no cuttimes are set for h-comp skip S 2017-08-16 13:23:40 +02:00
Ludger Küperkoch
5d076511ec [Bugfix] Input are already picks, no more event object. 2017-08-16 12:12:04 +02:00
4b6b3de547 [change] check for real bool 2017-08-16 11:19:25 +02:00
Ludger Küperkoch
8d36393e36 [Bugfix] Enable compare button only, if manual as well as automatic picks are available. 2017-08-16 10:52:46 +02:00
Ludger Küperkoch
e3f758fa63 [Bugfix] get_evt_data().path no more existent. 2017-08-16 10:43:05 +02:00
c6fa6d8ff8 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-16 10:04:23 +02:00
256f3b6838 [closes #232] load autopicks automatically 2017-08-16 10:03:10 +02:00
2c054161c1 [refs #229] same issue found in islope calculation 2017-08-16 09:56:41 +02:00
Ludger Küperkoch
95a2f21675 Removed hard coded station name introduced for bug fixing. 2017-08-15 17:02:50 +02:00
Ludger Küperkoch
cc25a8e6cf Rearranged changes accidently got lost by former commit. 2017-08-15 17:01:27 +02:00
Ludger Küperkoch
fe8128a61a Use mean for noise level determination instead of max. 2017-08-15 16:57:52 +02:00
Ludger Küperkoch
4d8dc912ac Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2017-08-15 16:56:17 +02:00
Ludger Küperkoch
1dacc08b26 Leave picking parameters for onsets with small residuum unchanged. 2017-08-15 16:55:20 +02:00
ff6f2ed2d9 [minor] rearrange menu items 2017-08-15 16:36:14 +02:00
92e083770e [bugfix] accidently swapped pick menus 2017-08-15 16:32:02 +02:00
81f3758414 [change] rearranged menu (pick para, preferences) 2017-08-15 16:28:38 +02:00
9bfba65aee [bugfix] station names in pgplot 2017-08-15 16:15:49 +02:00
8f1943b48f Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-15 15:49:22 +02:00
15e76e4932 [refs #229] use last item in t instead of len(t) 2017-08-15 15:47:59 +02:00
Ludger Küperkoch
43cf9c4e3d Remove possible underscores in station names. 2017-08-15 15:22:10 +02:00
Ludger Küperkoch
b211294b94 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2017-08-15 15:10:58 +02:00
Ludger Küperkoch
2e24c406ac Use abs instead of RMS. 2017-08-15 15:10:36 +02:00
f6774cb592 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-15 15:03:41 +02:00
90dae62922 [bugfix] pickDlg manipulate pick copy, rba error 2017-08-15 15:02:45 +02:00
3c7b9eb8ea [change] code cleanup on setPicks from pickDlg 2017-08-15 14:54:13 +02:00
Ludger Küperkoch
503f72d6b0 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2017-08-15 14:49:11 +02:00
Ludger Küperkoch
f1d2467780 Smaller CF-recalculation window for iterative picking. 2017-08-15 14:48:19 +02:00
c7e4cd0c8b [bugfix] savepath might be None as well! 2017-08-15 14:16:34 +02:00
a23af62d23 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-15 14:15:18 +02:00
604edea95a [change] pick plot style (spe->fill_between) 2017-08-15 14:14:39 +02:00
c45b997aec [add] phase text color sync to phase marker color 2017-08-15 14:00:16 +02:00
67b3f4f363 [bugfix] TypeError has no attr. 'message' 2017-08-15 13:52:26 +02:00
8ce4f05a05 [bugfix] manual phase text not shown 2017-08-15 13:46:05 +02:00
Ludger Küperkoch
b542a99293 Relaxed checkZ4S, vertical component RMS must exceed average RMS of both horizontal components. 2017-08-15 13:06:26 +02:00
Ludger Küperkoch
ec1f9bc3f2 Calculate SNR from HOS/AR-CF instead of AIC-CF. 2017-08-15 12:43:09 +02:00
Ludger Küperkoch
66da4bd442 [Bugfix] Take into account None for Perror, removed needles parameters. 2017-08-15 12:02:46 +02:00
Ludger Küperkoch
cb38651898 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2017-08-15 10:17:58 +02:00
Ludger Küperkoch
4a2d118191 [Bugfix] savepath might be 'None', not None. 2017-08-15 10:17:08 +02:00
4bb616492c [bugfix] use identifyPhase instead of phase[0] 2017-08-15 10:02:46 +02:00
ff1ab722df [minor] code cleanup 2017-08-15 09:49:10 +02:00
a9d06790d2 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-14 17:00:15 +02:00
0f61799024 [add] new colors appl. to matplot, added quality 2017-08-14 16:59:39 +02:00
37373864ce [add] new flexible linestyles and colors pyqtgraph 2017-08-14 16:15:42 +02:00
Ludger Küperkoch
fd3305c694 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2017-08-14 15:10:57 +02:00
Ludger Küperkoch
eb66c381cd [Bugfix] Wrong commit of observation-file directory. 2017-08-14 15:09:49 +02:00
9edabc6aef Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-14 14:29:45 +02:00
7ec2006967 [workaround] python 3 raw_input 2017-08-14 14:29:31 +02:00
Ludger Küperkoch
9f955f4f5f [Bugfix] Typo, and list of output formats extended for NLLoc-obs files. 2017-08-14 14:17:37 +02:00
07c16695ba [minor] bugfix in unused function 2017-08-14 14:13:35 +02:00
100a39afd9 [bugfix] prevent error on mousewheel zoom outside axis 2017-08-14 13:56:08 +02:00
fda9de5738 [idea] copy pick not event and add to blank event 2017-08-14 13:44:38 +02:00
3cd64d09de [add] parameter savexml added to autoPyLoT 2017-08-14 13:30:27 +02:00
0a8f6f8a39 [bugfix] regard uncertainty == None 2017-08-14 11:43:09 +02:00
e0077524f4 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-14 11:40:48 +02:00
b585f571da [bugfix] no quality set if else was hit 2017-08-14 11:40:22 +02:00
c20ea78e52 [bugfix] check for station in picks before plot 2017-08-14 11:38:31 +02:00
3c8ed2e44e [add] traceback for error in Thread 2017-08-14 11:29:32 +02:00
Ludger Küperkoch
f1f6082cd8 Enabled terminal based plotting. 2017-08-11 17:33:41 +02:00
Ludger Küperkoch
df2d5929d3 [Bugfix] If Sweight >= 4, SNR and/or slope might be None. 2017-08-11 17:32:59 +02:00
Ludger Küperkoch
a48bb60809 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2017-08-11 16:59:26 +02:00
Ludger Küperkoch
537b7cb4a3 [Bugfix] Take into account different formats of input arguments iplot and fig. 2017-08-11 16:57:10 +02:00
b3b3dca41a Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-11 16:07:43 +02:00
2554534759 [bugfix] a lot of different bugfixes 2017-08-11 16:07:23 +02:00
Ludger Küperkoch
f393585831 New function to get quality classes from uncertainties, plot only automatic picks, if pick qualities are less than 4. 2017-08-11 16:04:18 +02:00
bd37b60dcb [reset] changes in QtPyLoT 2017-08-11 15:15:58 +02:00
Ludger Küperkoch
fe2957f76d Cosmetics 2017-08-11 15:02:47 +02:00
039f98a811 [add] check for nsamples and negative slope of cf 2017-08-11 15:01:32 +02:00
e6aa1ad031 [add] continue if no station coords
[bugfix] return if no isignal window
2017-08-11 14:50:12 +02:00
Ludger Küperkoch
571b90e5b7 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2017-08-11 12:49:18 +02:00
Ludger Küperkoch
e9a0be347c [Bugfix] Take into account different formats of input argument iplot. 2017-08-11 12:48:43 +02:00
fe2a2a9714 [add] trim_station_comp also for tuneAutopicker 2017-08-11 10:28:35 +02:00
7846e1303a [bugfix] in tuneautopicker 2017-08-11 10:24:25 +02:00
9b97937049 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-11 10:15:42 +02:00
942b606fca [change] workaround reinit tuneAutopicker widget 2017-08-11 10:14:47 +02:00
Ludger Küperkoch
b36f20ff59 [Bugfix] Take into account that initial pick might be very close to start of CF. 2017-08-10 17:54:50 +02:00
Ludger Küperkoch
526cd4303e [Bugfix] Still unclear, sometimes time array larger than data array. 2017-08-10 17:23:08 +02:00
874fdd730a [add] check for gaps and trim traces for one station
[change] restitute data only if necessary!
2017-08-10 16:25:32 +02:00
Ludger Küperkoch
42dcf7576b Deleted annotated line. 2017-08-10 15:11:14 +02:00
Ludger Küperkoch
8023ba2993 [Bugfix] Wrong use of indices. 2017-08-10 15:10:15 +02:00
Ludger Küperkoch
55c1a38f29 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2017-08-10 14:06:59 +02:00
Ludger Küperkoch
7ae8f651d3 [Bugfix] Slope must be counts/s! 2017-08-10 14:06:33 +02:00
fd2b82e978 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-10 14:01:55 +02:00
4e6a6dc2a8 [bugfix] self used in function (not method) 2017-08-10 14:01:25 +02:00
Ludger Küperkoch
726c823646 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2017-08-10 12:47:08 +02:00
Ludger Küperkoch
071c18f649 Take into account very small prediction errors (synthetics!), [Bugfix] take into account very close zero crossings 2017-08-10 12:44:28 +02:00
460af0e094 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-10 12:25:42 +02:00
2cc05329f9 [bugfix] huge bug in slope calculation 2017-08-10 12:25:03 +02:00
8a80af78cf [bugfix] use z-trace starttime instead of full_range 2017-08-10 12:00:43 +02:00
1ed4f73e5c [bugfix] darius: comparison of P-pick slope to minAIC-S-slope instead of S-pick slope 2017-08-10 11:04:46 +02:00
Ludger Küperkoch
a450189ba2 Take empty trace into account. 2017-08-09 17:37:11 +02:00
fd9e4f0c05 [add] remove automatic phases possible from pickDlg 2017-08-09 15:10:36 +02:00
5c6f1eb564 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-09 14:16:45 +02:00
acaf7f5172 [add] differentiation between automatic and manual picks imported from new
style XML file
2017-08-09 14:15:50 +02:00
Ludger Küperkoch
1b16c13525 [Bugfix] autoPyLoT was running always non-parallel due to iplot argument. 2017-08-09 13:28:00 +02:00
Ludger Küperkoch
87b617b924 [Bugfix] Control figure output of autoPyLoT via optional input argument iplot. 2017-08-09 13:17:54 +02:00
Ludger Küperkoch
de5392ac33 Some more cosmetics. 2017-08-09 12:25:21 +02:00
Ludger Küperkoch
f6ecc57d26 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2017-08-09 12:14:46 +02:00
Ludger Küperkoch
9662827273 Cosmetics 2017-08-09 12:14:24 +02:00
29165aadc7 [bugfix] fixed former bugfix 2017-08-09 09:44:01 +02:00
Ludger Küperkoch
a7b02c68de Re-introduced multicore processing, temporarly disabled for bug fixing. 2017-08-08 17:09:17 +02:00
Ludger Küperkoch
9e48bb1fa4 Removed hard coded, unnecessary saftey gap. 2017-08-08 17:06:41 +02:00
Ludger Küperkoch
811f52c95c Enabled plotting of figures when called from terminal. 2017-08-08 16:38:29 +02:00
Ludger Küperkoch
ab410b790c If one horizontal component is missing, AR prediction is calculated on original trace and copy of it. 2017-08-08 14:19:13 +02:00
Ludger Küperkoch
cc2da4fc41 [Bugfix] 'NoneType' object has no attribute 'axes'. 2017-08-08 11:53:21 +02:00
Ludger Küperkoch
6891591ae9 [Bugfix] Wrong use of boolean variable. 2017-08-08 11:26:40 +02:00
Ludger Küperkoch
7d5bfe8107 ilen was referenced before assignment. 2017-08-08 10:24:12 +02:00
863718a3f8 [add] support str as outformat 2017-08-07 16:53:21 +02:00
aa954dcd52 [add] current event saved as XML before picking in GUI 2017-08-07 16:49:56 +02:00
0692569056 [change] removed .obs from default export formats which is causing
problems
2017-08-07 16:45:20 +02:00
b260c23deb [change] behavior of saveEvent button changed 2017-08-07 16:44:45 +02:00
2fa9a60023 [rename] functions renamed 2017-08-07 16:41:50 +02:00
014152e30e [add] saveAllEvents now connected to export for Autopick process and saveProject 2017-08-07 16:33:45 +02:00
6042b38ee9 [change] completely restructured saveData method (testing needed)
[add] method to export all events of current project
2017-08-07 16:25:48 +02:00
4f1541ce4e [change] autoPyLoT output folder automatically set to event folder 2017-08-07 13:35:05 +02:00
57295c4a17 [minor] removed prompt 2017-08-07 12:17:18 +02:00
d310cf3ff7 [bugfix] For some unknown reason QPushButtons in event table caused
segmentation fault
2017-08-07 12:14:54 +02:00
0018ae10d0 [bugfix] wrong index used 2017-08-07 12:03:15 +02:00
17a93cf62f [add] for global seismology CF pick windows will now be calculated
relative to estimated tt from TauPy, metadata and source location (in XML
file) needed
[TO DO]: automatic export of XML (esp. source loc) before autopicking
2017-08-07 11:21:20 +02:00
60ebaa6528 [bugfix] few typos 2017-08-04 11:05:52 +02:00
9499688887 [add] parameter taup_model 2017-08-04 11:03:10 +02:00
41e5c004b2 [add] new parameter use_taup 2017-08-04 10:28:00 +02:00
04bf655cf1 [bugfix] init Checkbox if parameter is not found 2017-08-04 10:27:23 +02:00
924eb8aae6 [cosmetics] rearranged autopick menu 2017-08-03 15:33:28 +02:00
ddb1fb8b97 [add] multiple eventIDs possible as eventID pylot_parameter (testing needed) 2017-08-03 14:49:32 +02:00
cab9061030 [change] abortButton for Thread removed by default, cause it was not
working properly
2017-08-03 14:39:58 +02:00
125b72a582 [bugfix] autoPyLoT crashed when getSlope() method of AICPicker returned
None (comparing None to float), workaround: if not slope: slope=0
2017-08-03 12:05:19 +02:00
154e7b459f [add] --ncores flag added to autoPyLoT call, also enabled in GUI widget 2017-08-03 11:49:15 +02:00
90006809a5 [add] new autopick options added to file menu 2017-08-03 11:10:26 +02:00
e8a0a87dad [change] removed __del__ method reimplementation from thread objects
causing problems (no idea why it is there at all)
2017-08-03 11:09:50 +02:00
85a01fb0f1 [minor] cosmetics in print 2017-08-03 10:33:58 +02:00
5e2dc6c9f9 [add] improved submit functions 2017-08-03 10:15:54 +02:00
20b31a1c5c [reformat] code reformatting with PyCharm 2017-08-03 09:41:54 +02:00
4107f0249d [add] widgets for GUI independent spawning of autoPyLoT processes, WIP 2017-08-02 15:20:32 +02:00
482ae112e8 [bugfix] missing string emitting signal 2017-08-02 13:19:09 +02:00
dfa04f7b0a [add] change seperator for event initiation from system specific to '/' 2017-08-02 11:37:17 +02:00
d5645cf979 [bugfix] string transformation of None values 2017-08-02 11:02:24 +02:00
a5a3087283 [add] system specific path SEPERATOR 2017-08-02 10:47:41 +02:00
c60c659608 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-07-31 17:00:55 +02:00
aa5d11d735 [WIP] changed multiThread structure to QThreadPool 2017-07-31 17:00:19 +02:00
b084490f74 [bugfix] updated syntax to python 3 2017-07-31 15:52:09 +02:00
Ludger Küperkoch
8b7496a2fb Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop
Conflicts:
	pylot/RELEASE-VERSION
2017-07-31 15:40:11 +02:00
c353c24283 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-07-31 14:57:36 +02:00
7ca6509611 [bugfix] has_keys not a method of dict in python3 2017-07-31 14:56:59 +02:00
bd62115e5d Merge remote-tracking branch 'origin/develop' into develop 2017-07-31 14:56:31 +02:00
Ludger Küperkoch
290a623664 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2017-07-31 14:18:40 +02:00
Ludger Küperkoch
7009983925 [Bugfix] Wrong derivation of method_id. 2017-07-31 14:17:06 +02:00
17e6169cee [bugfix] untabify code 2017-07-31 13:52:57 +02:00
06b8c8413f merge release version 2017-07-31 13:44:37 +02:00
121ef4357f [WIP] using multiThread to call autopylot 2017-07-31 13:43:06 +02:00
Ludger Küperkoch
4244c4209b New function to derive onset quality classes and to plot them if desired. 2017-07-31 12:04:03 +02:00
f13542840f [add] MultiThread class added 2017-07-31 10:40:03 +02:00
f86f33b22f [minor] removed output 2017-07-20 16:18:00 +02:00
04d43f67c5 [bugfix] default phases from obspy not unique
[add] toggle button for checking phases
2017-07-20 15:11:07 +02:00
f93713fdad [bugfixes] filtering should be possible for all recognized phases now 2017-07-20 14:09:35 +02:00
d48d29f7ec [change] code restructured for flexibility 2017-07-20 11:50:57 +02:00
9c089329f3 [bugfix] string changed by accident 2017-07-20 11:42:31 +02:00
389965e573 [add] plot arrivals option added
[change] code reformated by PyCharm
2017-07-20 11:33:01 +02:00
c644095b5a [add] phase defaults for phasesTab 2017-07-19 15:12:01 +02:00
7748a39a72 [bugfix] checked for attribute invPath instead of inv_path 2017-07-19 10:11:26 +02:00
548c863f10 [minor] tight_layout for waveformwidget figure 2017-07-18 16:17:04 +02:00
d21afcf31a [minor] changed linewidth of wf plot slightly 2017-07-18 16:12:33 +02:00
be588252cf [add] events can be removed by clicking a button in event_table 2017-07-18 16:07:08 +02:00
60594c97cf [bugfix] wrong if cause in for loop in read_eventfile_info
[add] function to remove events from project
2017-07-18 15:27:52 +02:00
37875d5c87 [add] finished remove picks feature, testing needed 2017-07-18 14:34:09 +02:00
dbb3fab6d0 [add] possibility to remove picks added to pickDlg 2017-07-18 13:54:47 +02:00
1918c11b42 [bugfix/improvement] checkZ4s independent of different trace starttimes and sampling rates 2017-07-17 18:02:29 +02:00
176f13db09 [bugfix] slope window was used for calculation of checkz4s leading to huge problems 2017-07-17 16:58:40 +02:00
547355fbdf [change] updated parameters of function call exportEvent in autoPyLoT 2017-07-17 13:44:38 +02:00
52f9e61c9f [bugfix] locflag was set active when initialized in tune mode without metadata 2017-07-17 13:40:35 +02:00
f41a330606 [add] default event output name += .xml 2017-07-17 13:10:02 +02:00
2633f4b9cf [bugfix] error-prone check for method_id.id 2017-07-17 11:58:32 +02:00
7e0f4efbcc [bugfix] wrong usage of instrinsic function list() 2017-07-17 11:50:51 +02:00
7f0ab4dd94 [merge] merged changes in QtPyLoT manually 2017-07-17 11:38:50 +02:00
e5f5ab8412 [change] improved code behavior; exportEvent now checks for magnitudes and origins as well 2017-07-17 11:32:38 +02:00
b286290797 [change] exportEvent now checks for existing picks of type 'fcheck' in xml file and replaces them with new picks 2017-07-17 10:55:02 +02:00
Ludger Küperkoch
cf5cae0ad4 [Bugfix] fname referenced before assignment. 2017-07-17 10:04:57 +02:00
897b915eff [bugfix] origins object will be created independent to notes.txt,
[update] pycharm code restructuring (accidently)
2017-07-14 16:25:59 +02:00
90e27f1d08 [WIP] autopicks -> update xml file 2017-07-14 16:24:37 +02:00
a017c4deb4 [bugfix] various bugfixes while testing on Windows with py3 2017-07-14 15:26:39 +02:00
3869922378 [bugfix] typo in variable name 2017-07-14 14:16:12 +02:00
227112cbac [change] parameter evtdata of class Data has to be called as str object
(instead of outdated basestring) to make the class python 3 compatible
2017-07-14 13:30:54 +02:00
20e86cee5a Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-07-14 11:11:49 +02:00
68f864e93a [bugfixes] changed iplot flag default to 0, intercept Exception on false
filter settings
2017-07-14 11:09:18 +02:00
Ludger Küperkoch
01fe32c9b2 [Bugfix] Reversed change of a former commit supposed to make it compatible to Python3. 2017-07-14 11:05:09 +02:00
a560f4140b [update] icons will be imported depending on python version 2017-07-14 09:51:43 +02:00
Sebastian Wehling-Benatelli
e46f9066d9 [change] increased inter platform compatibility 2017-07-13 17:40:21 +02:00
f57aa37d99 [change] changed some functions to work with Python 3 and Windows 2017-07-13 17:27:48 +02:00
ac25f9cacb [bugfix] set locflag = 2 if traces could not be corrected 2017-07-13 11:23:51 +02:00
154f802f27 [bugfix] removed useless prompt 2017-07-12 16:56:39 +02:00
721874dbb7 [change] layout of sub-parameters of PylotParameter changed back to vertical alignment to save horizontal space in tuneautopick window 2017-07-12 16:49:11 +02:00
aa6f4324d0 Merge branch 'filterOptions' into develop 2017-07-12 16:33:14 +02:00
818fb7a296 [change] final adjustments made to filteroptionsdialog and parabox, ready for testing 2017-07-12 16:24:50 +02:00
Ludger Küperkoch
4b67481ffa Removed unwanted screen output. 2017-07-12 15:27:36 +02:00
Ludger Küperkoch
76a99005ec [Change] Save picks in cnv-, xml, and obs-format simultaneously. cnv not working! 2017-07-12 15:24:55 +02:00
Ludger Küperkoch
351d473cbf [Bugfix] Wrong format of nested if conditions. 2017-07-12 13:05:43 +02:00
Ludger Küperkoch
da372b435c [Bugfix] Wrong processing flow for checking picks. 2017-07-12 12:09:08 +02:00
Ludger Küperkoch
9ee32ee95e [Bugfix] Save only real determined onsets. 2017-07-12 10:45:22 +02:00
Ludger Küperkoch
2a0cb9f6c8 Additional screen output to inform the user about pick saving details. 2017-07-12 09:58:19 +02:00
Ludger Küperkoch
6e2861fe24 Cosmetics. 2017-07-12 08:59:43 +02:00
Ludger Küperkoch
34d5f9bf7d Additional screen output when saving picks. 2017-07-11 20:43:28 +02:00
Ludger Küperkoch
49092a928e Save only picks for NLLoc, VELEST, etc. that not exceed adjusted uncertainties. 2017-07-11 16:23:23 +02:00
43116ec2c6 [add] filtering in pickDlg will not be done by default anymore, changes in pushing filter in main traces window, still WIP (not going back to original wf after first filtering?) 2017-07-11 16:22:22 +02:00
1d9e52f577 [change] several updates updates to filterOptions, FILTERDEFAULTS now loaded from pylot.in, filterOptions should be 'shared' between filterOptionsDialog and pylotParameter 2017-07-11 16:03:24 +02:00
e3a4a2861d [bugfix/test] idea to fix problem with different ressource_id's on autoPyLoT 2017-07-10 17:37:54 +02:00
0e566f9748 [add] latest pylot.in file added to inputs! 2017-07-10 15:49:15 +02:00
e0926c6b20 [change] phase/expected phase arrivals text position now stays readable around pickDlg axes 2017-07-10 15:39:44 +02:00
d966b87eba Merge branch 'taup' into develop 2017-07-10 11:32:51 +02:00
bd4da2cc84 Merge branch 'master' into develop 2017-07-10 11:31:04 +02:00
8dcff4a467 Merge branch 'master' into taup 2017-07-10 11:30:37 +02:00
d0b5626c91 Merge branch 'master' into filterOptions 2017-07-10 11:29:16 +02:00
fedb7c2c0d [hotfix refs #220] Missmatching ressource_id's only produced warning on exporting picks, but did not prevent event mixing 2017-07-07 13:15:20 +02:00
a9334372e8 [add] working version of expected arrivals of chosen phases 2017-07-07 12:16:38 +02:00
138aeebf2c [bugfix] metadata not loaded from default value (TO DO: still not loading automatically from project file) 2017-07-07 11:43:58 +02:00
f7e54275c3 [change] structural changes to filteroptions WIP 2017-07-06 17:22:23 +02:00
09b2dfa5d1 [hotfix] could not load multiple parameters from pylot.in if values are type==string 2017-07-06 09:53:13 +02:00
dbc38385b5 [add] semi working version of filterOption dialog, WIP 2017-07-04 16:37:05 +02:00
097222a43d [add] namestrings for default parameters, filteroptions connected to parameters (WIP)
[change] layout of pylotparabox
2017-07-04 14:39:10 +02:00
1b3c29c47e [bugfix] missing comma in dictionary definition, also corrected misspelling 2017-07-04 10:31:23 +02:00
5bc9f14074 Merge branch 'develop' into filterOptions 2017-07-04 10:19:42 +02:00
Ludger Küperkoch
532a90a61f [Bugfix, not fixed completly] Locating event possible now out of GUI, class export obsolete? updateEvent still buggy! 2017-06-30 17:20:18 +02:00
74393432da [bugfix] do not show file menu when embedded, stretch changed (still problems on ludgers machine) 2017-06-30 15:06:17 +02:00
8e12bb1bc6 [bugfix] when no settings are given for phases use empty list 2017-06-30 14:43:06 +02:00
1c610d22f0 [add] restore default options for some tabs 2017-06-30 14:29:37 +02:00
beed46229a [add] plot phase name in pickDlg, also plot network code 2017-06-30 13:56:59 +02:00
533f7ea353 merge origin/develop into develop 2017-06-30 13:31:19 +02:00
3c0db3efa4 [add] different phases can now be selected in picks_menu on pickDlg depending on phases set in preferences 2017-06-30 13:26:46 +02:00
Ludger Küperkoch
13666312fa [Bugfix] Enable locate button as soon as manual picks are available. 2017-06-30 11:04:49 +02:00
Ludger Küperkoch
92f4ae3923 [Bugfix] One argument for export was missing. 2017-06-30 10:41:47 +02:00
a61eebba29 [proposal] use checkable QPushButtons for phases instead of QLineEdit, as line edit is highly vulnerable to incorrect user input 2017-06-30 09:42:36 +02:00
Ludger Küperkoch
9b22d0f8d6 Started activating PhasesTab for phase declaration. 2017-06-29 17:20:36 +02:00
3931f13fbe Merge branch 'develop' 2017-06-29 17:05:02 +02:00
9e6b376c62 [bugfix] reintroduced previous bugfix 2017-06-29 17:02:05 +02:00
marcel
5fc83459e2 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-06-29 16:50:00 +02:00
marcel
2da1d81d3d [change] icons edited again 2017-06-29 16:49:21 +02:00
Ludger Küperkoch
647cb1e32b Reintroduced changes of MP spuriously removed by previous commit. 2017-06-29 16:41:09 +02:00
Ludger Küperkoch
1e99ae8272 File extention for output taken from preferences OutputsTab. 2017-06-29 16:35:52 +02:00
583f39dd17 Merge branch 'develop' 2017-06-29 15:18:38 +02:00
marcel
fc0934ba1d [change] updated icons after jour fixe survey 2017-06-29 15:02:50 +02:00
574704cc49 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-06-29 10:24:27 +02:00
3ae166b147 [bugfix] picks not plotted in PickDlg if type(picks .or. picksdict) was AttribDict instead of dict 2017-06-29 10:23:45 +02:00
Ludger Küperkoch
5564fb54dc Additional screen output to inform the user about status of saving picks. 2017-06-29 09:51:24 +02:00
marcel
0691992850 [add] deleted icons added again... 2017-06-29 09:18:42 +02:00
Ludger Küperkoch
12e383738d Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop
Conflicts:
	icons/Matlab_PILOT_icon.png
2017-06-28 23:11:16 +02:00
marcel
aff08d3a9c [add] some more icons added, hopefully fixed problem on ludgers commit deleting icons (changes in data.py should be correct as well) 2017-06-28 17:20:02 +02:00
Ludger Küperkoch
e7bd1c8d31 Export for VELEST-cnv format. 2017-06-28 16:55:12 +02:00
4f8631e829 [revert] changes of previous commit reverted as problems with QDialog seem to be caused by windows XServer 2017-06-28 16:40:44 +02:00
marcel
9b7b22c305 [bugfix] one icon misplaced 2017-06-28 16:35:54 +02:00
marcel
afd7a94852 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-06-28 16:26:16 +02:00
marcel
cb5f7b6946 [new/change] updated PyLoT icons to a more homogeneous icon set 2017-06-28 16:25:14 +02:00
marcel
2f7033329b [bugfix] possible that dialog was hidden behind other windows 2017-06-28 16:24:24 +02:00
Ludger Küperkoch
d31fec8781 Before exporting phases, check for manual picks and export them instead of automatic picks. 2017-06-28 14:23:24 +02:00
Ludger Küperkoch
f52b42f009 [Bugfix] Write header only, if export has been successfull. 2017-06-28 12:40:03 +02:00
Ludger Küperkoch
85829b22eb Write header in ObsPy-generated NLLoc-observation file. 2017-06-28 12:38:21 +02:00
marcel
b140dd4f53 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-06-28 09:27:21 +02:00
795733cc5f Merge branch 'develop' 2017-06-27 15:30:18 +02:00
cb1fb60eec Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-06-27 15:11:06 +02:00
f1f9295370 [add] user prompt when event_id not matching on load_data 2017-06-27 15:08:19 +02:00
Ludger Küperkoch
96ce713337 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2017-06-27 14:00:00 +02:00
Ludger Küperkoch
a3487b66ea [Bugfix] Take care that chosen window lengths fit to length of time series. 2017-06-27 13:59:00 +02:00
f1a9726f91 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-06-27 13:54:51 +02:00
02da277f04 [bugfix] loading data from XML used same event multiple times as it was still part of current data object 2017-06-27 13:54:13 +02:00
Ludger Küperkoch
68ef127617 [Bugfix] Network code was missing. 2017-06-27 11:46:21 +02:00
a90e0bd78b [change] data._new moved to applyEVTData 2017-06-27 10:49:11 +02:00
ab260e45f2 [add/bugfix] data._new = False after first picks application 2017-06-27 10:39:44 +02:00
Ludger Küperkoch
987f5c4d62 Additional info for user. 2017-06-27 10:11:11 +02:00
Ludger Küperkoch
4e735b3672 [Bugfix] If too few onsets are available, no export of phases (except xml). 2017-06-27 09:57:00 +02:00
Ludger Küperkoch
a8bfc3c68f Parameter eventID uses wildcard (*) if all events of database supposed to be processed. 2017-06-27 09:44:38 +02:00
53089a3279 [add] rootpath will be applied to QSettings as well 2017-06-26 18:02:07 +02:00
30e2e1df84 [bugfix] query for data flag/attribute isNew changed 2017-06-26 17:41:08 +02:00
71da6ded2b [bugfix] Error when getEventFromPath returned None 2017-06-26 17:40:36 +02:00
Ludger Küperkoch
a0633cafa4 Prevent export of phases when tuning picker. 2017-06-26 16:19:57 +02:00
Ludger Küperkoch
c56a11634a Uncomment setNew, though still not sure, what its all about. 2017-06-26 16:10:18 +02:00
Ludger Küperkoch
bec8604904 autoPyLoT appends manual picks to xml-file, and manualPyLoT appends automatic picks to xml-file. 2017-06-26 14:47:36 +02:00
b0405cf213 [change] load AUTO picks button will be reused now (old function deprecated as there is only one file for both types of picks) to automatically load all event information for all events given (TODO: currently only XML files!) 2017-06-26 14:22:00 +02:00
42c288ad82 [bugfix] return when no file is selected on load_data 2017-06-26 14:10:40 +02:00
c07642653d [change] default open path for load_data is event folder 2017-06-26 14:08:17 +02:00
581a85b81f [bugfix] missing network code in picksdict_from_picks triggered silent Exception using picks generated by picks_from_picksdict 2017-06-26 13:58:26 +02:00
b10b79ea79 [change] renamed picks attribute for pylot to pylot_picks, picks attribute of events will now be used exclusively for ObsPy picks 2017-06-26 12:19:06 +02:00
d08bd4cc9e [move] class Event finally moved to new module event 2017-06-26 12:03:04 +02:00
acaf592590 [move] class Event moved to pylot.core.util.utils 2017-06-26 10:47:40 +02:00
Ludger Küperkoch
0f05be6a50 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop
Conflicts:
	pylot/RELEASE-VERSION
2017-06-23 15:47:09 +02:00
Ludger Küperkoch
9746913f8b Consistent prefix for all PyLoT-output. 2017-06-23 15:45:45 +02:00
8e6c4d06ce [add] array_map now plotting event location if given 2017-06-23 15:40:13 +02:00
ed4c112e99 [add] additional event information will be displayed in eventlist tab
[bugfix] project.search_eventfile_info was using relative path for filename
2017-06-23 14:56:56 +02:00
f409861d10 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-06-23 14:16:06 +02:00
103ae716a2 [add] additional event information can now be read by project from a simple textfile and added to each event (time, location, magnitude) 2017-06-23 14:14:42 +02:00
Ludger Küperkoch
c9f0b126df Equal xml-file name for both automatic and manual picks, i.e. PyLoT_evID.xml. 2017-06-23 14:11:35 +02:00
929f58b942 merge origin/develop into develop 2017-06-23 12:12:55 +02:00
7bb2d54f6e [change] Event class now bases on ObsPy Event class which should be more efficient in future, origin time will be read from notes file if possible 2017-06-23 12:04:26 +02:00
Ludger Küperkoch
27597e6b4b Take into account parameter extent when writing header for PyLoT-input file. 2017-06-23 11:32:08 +02:00
Ludger Küperkoch
5958e05f3b Cosmetics. 2017-06-23 10:26:49 +02:00
Ludger Küperkoch
6ebad273a9 Improved screen output. 2017-06-23 10:10:45 +02:00
410fe18390 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-06-22 16:32:31 +02:00
c44f351636 [add] new method to load multiple XML files at once for all events, WIP: picks loaded from XML files cannot be saved afterwards 2017-06-22 16:30:22 +02:00
8e60268fc5 [hotfix] output XML name clipped 2017-06-22 15:52:28 +02:00
Ludger Küperkoch
33d81eb538 Bugfix: Wrong naming of module in previous commit: PyLoTParameter - PylotParameter. 2017-06-22 15:18:19 +02:00
Ludger Küperkoch
9f9d492b8b Restored former changes of Marcel (AutoPickParameter - PyLoTParameter). 2017-06-22 15:09:40 +02:00
Ludger Küperkoch
71876638c8 Flexible calculation of local magnitude including station magntiude scaling as well as network magnitude scaling.
auoPyLot-output-file names have prefix event ID.
2017-06-22 15:04:16 +02:00
2b6297859b Merge branch 'develop' 2017-06-22 13:28:34 +02:00
ca1d3dca38 [add] filter parameters added to default parameters 2017-06-22 12:01:22 +02:00
97ee03b443 Merge branch 'develop' into filterOptions 2017-06-22 11:26:02 +02:00
8e8b3e0462 [rename] AutoPickPara ---> PylotPara 2017-06-22 11:22:17 +02:00
f91e1cde6f [change] structure changed to make parabox more flexible 2017-06-22 11:03:24 +02:00
203974cd83 [bugfix] parameters interchanged 2017-06-22 10:54:17 +02:00
f6a20c4ea2 [bugfix] advanced_cb acciddently pushed to bottom of layout 2017-06-22 10:53:56 +02:00
9dc472f907 Merge branch 'develop' 2017-06-22 10:28:15 +02:00
Ludger Küperkoch
9f164fc075 Still in progress: flexible local magnitude estimation. 2017-06-21 16:42:26 +02:00
Ludger Küperkoch
477aacbb4a Preparation of flexible local magnitude estimation. 2017-06-21 15:43:12 +02:00
Ludger Küperkoch
cf200e1425 Preparation of flexible local magnitude estimation, renamed module. 2017-06-21 15:41:12 +02:00
5928967e28 [closes #212] tuneAutopicker always tries to load current event in mainwindow 2017-06-21 15:33:49 +02:00
6feffaeadb [closes #209] spacebar can now be used to accept pickDlg, also added a checkbox to automatically open next station (experimental) 2017-06-21 15:20:36 +02:00
b0dcf5ff4b [change] local magnitude section added 2017-06-21 14:20:22 +02:00
d77abdc1d0 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-06-21 14:10:24 +02:00
5214d31908 [add] space hotkey to close window 2017-06-21 14:09:39 +02:00
Ludger Küperkoch
b96af41324 In progress: new parametters for magnitude estimation 2017-06-21 13:53:53 +02:00
c10639b49c [merge] manual merging to new function structure (widget insertion with position) 2017-06-21 13:28:44 +02:00
43c314a1f8 [add/change] dataroot added to project file, improvements in behavior of create/save project 2017-06-21 13:24:45 +02:00
Ludger Küperkoch
9dc1545b63 Renamed/added new main parameter sequence Seismic Moment and Local Magnitude. 2017-06-21 13:03:17 +02:00
Ludger Küperkoch
51be558560 New parameters added for local magnitude estimation and scaling. 2017-06-21 13:01:14 +02:00
0a6ad8b663 [add] folder structure automatically recognized when adding events 2017-06-21 11:45:35 +02:00
be463c2adf [add] functionality to display one groupbox of AutoPickParaBox exclusively 2017-06-21 10:36:22 +02:00
6daccad341 [add] testing: saveProjectAs option 'always' enabled when project is active 2017-06-20 16:30:13 +02:00
d5a7e1f35f Merge branch 'develop' 2017-06-20 16:26:32 +02:00
1b512a0864 [closes #207, closes #208] when supressing user prompt, applyEVTData to data object was accidently removed 2017-06-20 16:23:54 +02:00
ab979e9b10 [bugfix] events not properly provided to autoPyLoT by TuneAutopicker, wrong parameter name in plotting routine 2017-06-20 14:32:21 +02:00
0be5c4b694 [add] verbosity on import pyqtgraph exception 2017-06-20 13:22:29 +02:00
0ff6f78a6c [add] parameter localMag added 2017-06-20 12:10:56 +02:00
62a7d94816 [bugfix] expecting deprecated return parameter of autoPyLoT 2017-06-20 12:10:17 +02:00
a8544dfb93 [bugfix] save XML does not set project clean 2017-06-20 10:35:31 +02:00
d293a5d9e1 Merge branch 'develop' 2017-06-20 10:29:50 +02:00
718879fad0 merge origin/develop into develop 2017-06-20 09:57:52 +02:00
300ff9215b [fixes #210] missing paranthesis in function call 2017-06-20 09:54:23 +02:00
Ludger Küperkoch
16003b6353 Bugfix: Different number of elements in used arrays. 2017-06-19 18:21:38 +02:00
Ludger Küperkoch
2601ec2865 Bugfix: Empty polyfit-object is avoided. 2017-06-19 16:35:51 +02:00
1b17842f63 [fixes #201] test events will be skipped when using TuneAutopicker 2017-06-19 16:30:39 +02:00
0717f491aa [closes #203] events can be saved as pickle now, not intended to save back event notes to notes.txt file as it is only used for automatically generated event folders 2017-06-19 13:54:43 +02:00
0d5c0e5bd2 Merge branch 'develop' 2017-06-19 11:38:34 +02:00
Ludger Küperkoch
9aba69686d Richter magnitude scaling is hard-wired, should not be handled internal. First step to flexible local-
magnitude estimation.
2017-06-19 11:37:08 +02:00
08b9cec674 [refs #206] savepicks XML now opens current event folder by default, also gives default filename
[bugfix] could not save XML files with . in name
[change] removed user prompt when changing picks on different event (redundant)
2017-06-19 11:28:11 +02:00
053caa5cf6 [change] replot after manual picking only if necessary (picks changed) 2017-06-19 10:37:24 +02:00
aea77cd49c [change] removed redundant propmpt because new picks have to be accepted in the first place when closing PickDlg 2017-06-19 10:30:08 +02:00
7257d43155 [fixes #205] call replot thread after manual picking 2017-06-19 10:23:39 +02:00
754883c5c9 [refs #204] adding application name/organisation/domain when building app before calling settings 2017-06-14 16:22:26 +02:00
15799feee7 Merge branch 'develop' 2017-06-14 10:20:41 +02:00
d2d8498739 [bugfix] stream oabject overwritten when using alter_comp causing traces to disappear in plot 2017-06-12 14:36:38 +02:00
5412de8249 [add] notes can be read from event folders 2017-06-12 11:34:45 +02:00
ddedd3ed7a [hotfix] ignoring error when mouseclick signal cannot be disconnected 2017-06-12 10:42:44 +02:00
a2c73f7726 Merge branch 'pyqtgraph' into develop 2017-06-09 14:01:31 +02:00
marcel
01c556562e [bugfix] newer version of pyqtgraph could not cope with UTCDatetime, now min/max_range for axes working 2017-06-09 13:51:20 +02:00
8e839df718 [add] pyqtgraph now part of Settings object; if installed will be used by default but can be deactivated 2017-06-09 13:23:16 +02:00
b061c81b2c [change] removed axes on startup 2017-06-08 16:58:44 +02:00
d6dd8bfaa8 [bugfix] several bugfixes mostly refering to plotting from plotWaveformDataThread, now only plot data are generated from within thread 2017-06-08 16:36:47 +02:00
909e2241a7 [change] working version of pyqtgraph for dataPlot, WIP: fill not working on versions lower 0.9.9 2017-06-08 14:09:01 +02:00
a07162d668 first semi-working plot of all traces 2017-06-07 17:05:48 +02:00
marcel
abfb8c86e7 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-06-07 11:31:37 +02:00
be8035e118 [bugfix] update to previous commit 2017-06-07 11:31:03 +02:00
9e85a9df47 [bugfix] using default channel components in case QSettings is not working with OS 2017-06-07 11:29:38 +02:00
50750fc4e0 [bugfix] using default channel components in case QSettings is not working with OS 2017-06-07 11:22:00 +02:00
66c5142cb9 [change] major changes in AutoPickParaBox layout, now structured as groupboxes that can be hidden individually 2017-06-07 10:30:15 +02:00
0af795969b [add] parameters now changed as part of project, some small fixes 2017-06-06 16:30:27 +02:00
f7d0e49458 [change] some updates of main window title changed to new QtPyLoT 2017-06-06 15:51:06 +02:00
20300daecf [change] metadata not saved as part of project file anymore (files might get really big), still possible to load same project, idea: add QSetting whether to save or not to PyLoTprefs 2017-06-06 15:28:43 +02:00
bdc85fa56a [bugfix] channel order mixed 2017-06-06 14:43:36 +02:00
9007197786 [add] network code added to station map 2017-06-06 14:08:19 +02:00
4077ec207c [bugfix] contourf plot not shown in station map. min() max() was not working when nan in list 2017-06-06 13:49:40 +02:00
86c76c6f61 [bugfix] 3 comp. window, time correction for trace overdone 2017-06-06 11:16:57 +02:00
530a629d15 [bugfix] changed code order for QSettings 2017-06-02 14:02:08 +02:00
f7af1d0b1b Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-06-02 11:52:39 +02:00
6434366e55 [bugfixes] several fixes relating to Channel Components, main issue: SetChannelComponents object was newly initated every time. Now: One object saved inside global QSettings. Testing needed. 2017-06-02 11:51:00 +02:00
Ludger Küperkoch
1e03541d6d Stabilized slope calculation for quality control. 2017-06-02 11:41:52 +02:00
Ludger Küperkoch
e2c1b8501e Exception for ValueError, if autoPyLoT has been started from terminal.
Raise SacIOError if obspy.read spuriously wants to read SAC data.
2017-06-02 11:09:32 +02:00
0fb6e5d4df [bugfix] pickDlg takes into account timeshift of trace.starttime for different components
[add] initial pick displayed in pickDlg
2017-06-01 15:25:43 +02:00
04304d3db8 [hotfix] adding decimals to AutopickParaBox 2017-06-01 14:01:43 +02:00
eaa4849a20 added network code to TuneAutopicker, small bugfix 2017-05-31 17:31:58 +02:00
cf399ed747 added parameter selection with ParameterBox to QtPyLoT Mainwindow 2017-05-31 17:12:34 +02:00
7d736823b1 [bugfix] min/max values of automatically generated spinboxes changed to -10e7 to 10e7 2017-05-31 16:28:05 +02:00
cd612def81 WIP: working on saving filter options as part of project 2017-05-31 16:25:46 +02:00
62fa3ad8b1 several updates to internal refreshing of widgets when manual picks are set 2017-05-31 15:41:25 +02:00
02a59f46a9 [bugfix] fixed filter settings for pylot.in file on open/save action in AutoPickParaBox 2017-05-31 14:35:52 +02:00
5897113140 [bugfix] fixed behavior of createNewProject, changed some hotkeys and renamed actions in file tools
[new] added saveAs button for prject, TO DO: possibly change saveAs icon slightly from save icon
2017-05-31 14:30:06 +02:00
eb5cf08d58 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-05-31 13:46:37 +02:00
16c2ecb82f added main window zoom with [STRG] and [SHIFT] + mousewheel 2017-05-31 13:45:48 +02:00
Ludger Küperkoch
33e34ef194 Removed former changes, made it worse! 2017-05-31 12:21:40 +02:00
c540cd0f81 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-05-31 11:48:51 +02:00
17cdffe735 some updates on saving/closing and user interaction 2017-05-31 11:48:16 +02:00
Ludger Küperkoch
d7abd3bef9 Stabilized slope determination. 2017-05-31 11:41:24 +02:00
1ff3b845bb some changes on dirty flag, added keyPress/release Events for Ctrl-Key 2017-05-31 10:56:45 +02:00
60c882fe04 [bugfix] changes in default_parameters not applied 2017-05-31 10:33:45 +02:00
396555b4b4 changes in resolution window (added parameter for extent), TRIAL: changes in YLims of pickwindow after init Pick 2017-05-31 10:28:31 +02:00
f493359c26 [bugfix] fixes and modifications for (inhomogeneous) global datasets, WIP 2017-05-30 16:27:38 +02:00
ceed165307 [bugfix] accidential function rename in code fixed 2017-05-30 11:45:53 +02:00
a745381e8e some changes in propertiesDlg 2017-05-30 10:17:07 +02:00
395295a295 changed some things in properties dialog to keep settings when opened again. added settings 'nth_sample' to speed up plotting a little bit 2017-05-29 18:03:31 +02:00
0f1292e9f2 [bugfix] setValue not working when type(item) in QLineEdit was 'int' instead of 'str'(i.e. 'unicode') 2017-05-29 16:24:44 +02:00
41a870d720 some changes in dataPlot resizing/height adjustments 2017-05-29 16:21:36 +02:00
5115705c4e Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-05-29 13:50:30 +02:00
a2ca96ae57 wfDataPlot stations now sorted by network and then by name 2017-05-29 13:49:34 +02:00
Ludger Küperkoch
b542f83201 Bugfix, sligthly changed SNR and noise-level calculation. 2017-05-29 12:02:56 +02:00
cb91911313 Merge remote-tracking branch 'origin/develop' into develop 2017-05-29 11:57:14 +02:00
b2d48cd523 changed some dirty things 2017-05-29 11:56:22 +02:00
3ad82c0c9e small fix on saving back loaded project 2017-05-29 11:34:22 +02:00
8975913143 added load project option from command line (QtPyLoT.py -p) 2017-05-29 11:31:09 +02:00
Ludger Küperkoch
5e593fc932 New class for getting/setting channel order, replaces old globals COMPNAME_MAP and COMPPOS_MAP. 2017-05-29 11:23:39 +02:00
b3a4470910 slightly changed qtpylot to call it from console 2017-05-24 15:28:52 +02:00
69b2daaab8 Merge remote-tracking branch 'origin/develop' into develop 2017-05-24 14:13:43 +02:00
50129fc8d9 [fix] some small fixes, new QtPylot functions commented 2017-05-24 14:12:41 +02:00
Ludger Küperkoch
9bc6f601a1 A littlebit more pythonic. 2017-05-24 11:23:35 +02:00
Ludger Küperkoch
c954614544 Bugfix: PyLoT can now cope with databases named with number (e.g. year). 2017-05-24 10:19:50 +02:00
Ludger Küperkoch
74b19ac094 Bugfix: PyLoT could not cope with input file if not called pylot.in. 2017-05-24 10:12:12 +02:00
Ludger Küperkoch
92525732a3 Cosmetics. 2017-05-23 16:36:02 +02:00
Ludger Küperkoch
3da76e9f1c Connected new ChannelOrderTab to component positions and names. 2017-05-23 16:13:58 +02:00
Ludger Küperkoch
36b4a2a05f Removed needless print output. 2017-05-23 15:33:19 +02:00
Ludger Küperkoch
4b3687fd2b New preferences tap ChannelOrderTab for assigning channel numbers to components. 2017-05-23 15:31:13 +02:00
840610cb18 [new] added some mousewheel zooming for array map 2017-05-23 13:34:39 +02:00
83fd0efd83 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-05-22 15:36:35 +02:00
22eb46999c map beautification 2017-05-22 15:34:07 +02:00
Ludger Küperkoch
eb0cb7d5ab Cosmetics: Reasonable name for autopick-tune tap. 2017-05-22 14:59:48 +02:00
Ludger Küperkoch
cf4615a438 Removed obsolete class ParametersTab (Now done in class TuneAutopicker). 2017-05-22 14:38:48 +02:00
ba56bfbd25 added scroll functionality when mouse inside dataPlot canvas 2017-05-22 10:53:20 +02:00
Ludger Küperkoch
a3fbeafeac TuneAutopicker now gets event id independent from input of pylot.in. 2017-05-19 15:39:43 +02:00
Ludger Küperkoch
2a054f75f5 autoPyLoT working properly now, incl. getting right event id and data path. 2017-05-19 14:25:24 +02:00
5a3b77dc7b Merge remote-tracking branch 'origin/develop' into develop 2017-05-19 13:54:33 +02:00
f3a96ae200 small bugfix 2017-05-19 13:53:58 +02:00
Ludger Küperkoch
092aeb4cec autoPyLoT button works nearly properly now. 2017-05-19 13:22:04 +02:00
Ludger Küperkoch
4767add68f Re-initialized autoPyLoT from GUI, new input parameter eventid to make sure processing the right event. Buggy! 2017-05-19 12:30:03 +02:00
e911262c3e added some buttons for setting current event to ref/test, made ref/test color settings 'global', some fixes 2017-05-19 10:56:27 +02:00
cf971d6a87 Mainwindow plotWidget size fix 2017-05-19 09:23:02 +02:00
1143d97f36 added manual picks to tune autopick figures 2017-05-18 15:24:30 +02:00
Ludger Küperkoch
f814ec8656 Bugfix: if no plotflag set, fig was not assigned. 2017-05-18 13:53:22 +02:00
77153bc8e9 Merge remote-tracking branch 'origin/develop' into develop 2017-05-18 13:22:13 +02:00
a8861dfdab [bugfix] multiprocessing problem fixed, caused by a general bug passing wrong argument [fig_dict] to AIC instead of [fig_dict[key]]; also iplot flag is correctly read from parameter file now 2017-05-18 13:16:53 +02:00
Ludger Küperkoch
d9f087cb72 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop
Conflicts:
	pylot/RELEASE-VERSION
2017-05-18 12:02:07 +02:00
Ludger Küperkoch
72f5f160c2 Tried to fix bug when calling autoPyLoT from GUI, still not working ... 2017-05-18 11:58:12 +02:00
46236eeb55 changed PyQt import to PySide import! 2017-05-18 11:44:51 +02:00
0a911154ca Merge remote-tracking branch 'origin/develop' into develop 2017-05-18 11:42:42 +02:00
11a7f17655 small fix preventing eventID from being changed in TuneAutopick when parameters are loaded 2017-05-18 11:41:14 +02:00
Ludger Küperkoch
6405350dcc Introduced new button for autoPyLoT. 2017-05-18 11:02:20 +02:00
Ludger Küperkoch
b979649e82 Cosmetics. 2017-05-18 10:31:59 +02:00
Ludger Küperkoch
45ff145616 Take into account, that input_dict is not available when calling from terminal. 2017-05-18 10:09:51 +02:00
Ludger Küperkoch
f4f7615bf8 Take into account, that key eventID is not always available. 2017-05-18 09:55:07 +02:00
fa2b65ea3d removed focmec parameter 2017-05-17 14:52:50 +02:00
b97f79c31d Merge branch 'tap_thread' into develop 2017-05-17 13:27:03 +02:00
d81fb3e2e9 several bugfixes, mainly on map_projection with updated pick structure as part of event class 2017-05-17 13:25:41 +02:00
55bc0de036 working on connection between picks/autopicks of different tools [WIP], to do: fix array map number of picks/points mismatch in map 2017-05-16 17:26:42 +02:00
ba58cb548b bugfix iterating over same index as eventBox index 2017-05-16 14:20:32 +02:00
f43611aeda added pickdlg to tune autopick, small fixes; to do: add manual picks 2017-05-16 13:41:35 +02:00
c9d872d52b added load/save buttons for parameters 2017-05-15 18:12:26 +02:00
cae5c961b0 some fixes calling autopylot (figures=None), added log for autoTuner 2017-05-15 17:21:22 +02:00
a2ab98c202 added station list to TuneAutopicker 2017-05-15 12:03:53 +02:00
4d9c7b02cf autoPyLoT: figure beautification
also added nav toolbar to TuneAutopicker
2017-05-15 11:21:45 +02:00
77b076d560 threading for tuneAutopicker working now, to do: change figures (vfill), tight layout? 2017-05-12 15:40:19 +02:00
12e6106227 first working version of threaded tuneAutopicker 2017-05-12 13:58:05 +02:00
184983bc87 WIP: figure generating in threads partly working 2017-05-12 11:03:41 +02:00
f58d17be14 WIP restructuring fig_dict to be created inside Qt Main Thread 2017-05-11 17:15:20 +02:00
Ludger Küperkoch
d1354a33b1 Reintroduced activation of compare_button, spuriously removed formerly. 2017-05-11 08:33:08 +02:00
6847bfe8c4 WIP autopick parameters
to do: save/load/station+trace selection
2017-05-10 16:28:07 +02:00
dc656e5c57 merge origin develop into develop 2017-05-10 15:48:02 +02:00
862fb3240a added parameters tab to TuneAutopicker widget. Enabled direct call of autoPyLoT with AP-Settings object 2017-05-10 15:46:08 +02:00
d96bc3c621 updated autopick parameter writing routine 2017-05-10 14:56:29 +02:00
7d56e15ccf WIP autopicker tuning
added default parameters and widget to show/edit them
2017-05-10 13:17:58 +02:00
aeaa13e277 WIP on autopick settings widget 2017-05-10 11:06:55 +02:00
Ludger Küperkoch
89a70aae0b Enabled comparison button if manual and automatic picks are available. 2017-05-09 18:22:23 +02:00
Ludger Küperkoch
141dd3c9e6 Bugfix: wrong parameter naming 2017-05-09 18:12:00 +02:00
29915f3669 added first small qwidget for later tuning of autopicker with figures (tight_layout not working?) 2017-05-08 17:48:59 +02:00
3090d5fca0 added two missing figures 2017-05-08 16:23:10 +02:00
a8577ac80a Merge remote-tracking branch 'origin/develop' into develop 2017-05-08 15:43:09 +02:00
c784d46521 changed whole autoPyLoT figure structure to fig/ax structure to keep connections to figures in memory, iPlot now part of autoPyLoT function call parameters (not yet in argparser) 2017-05-08 15:38:41 +02:00
Ludger Küperkoch
2ef647251e Modified plot output. 2017-05-05 14:07:35 +02:00
Ludger Küperkoch
f4a76680ad Use maximum of HOS/AR-CF instead of AIC-CF to start searching for global minimum in AIC function. 2017-05-05 14:06:58 +02:00
6563b01293 bugfix self._inputs not assigned 2017-05-04 11:50:28 +02:00
Ludger Küperkoch
2628e9d568 Partly fixed bug when plotting corrupted trace, formerly killed by ValueError. 2017-05-03 16:19:08 +02:00
Ludger Küperkoch
e9660eea9c Exchanged Reference Set with Tuning Set to be consistent to reference picking cook book. 2017-05-03 15:38:54 +02:00
50ee351995 added scrollbar vor main wf plot for huge datasets, some changes in basemap figure size 2017-05-03 15:16:48 +02:00
efe47d7a20 fix for station scatter error 2017-05-03 12:00:34 +02:00
413a921e5d small fixes 2017-05-03 11:28:43 +02:00
fce0c98a89 Merge remote-tracking branch 'origin/develop' into develop 2017-05-02 12:19:16 +02:00
b0c80075fa small fix, preventing access to drag and drop in open folders dialog 2017-05-02 12:13:55 +02:00
Ludger Küperkoch
e5189fd3aa Disable additional buttons when overview plot is cleared 2017-04-28 16:01:31 +02:00
Ludger Küperkoch
94bf08df60 Disabled/enabled locationInfo button. 2017-04-28 13:56:28 +02:00
Ludger Küperkoch
312932ce5e Disabled/enabled saveProject button. 2017-04-28 13:47:24 +02:00
Ludger Küperkoch
39a7ce2d89 New project icon. 2017-04-28 13:42:57 +02:00
Ludger Küperkoch
62254e8af0 methodID also taken into account for automatic picks. 2017-04-28 11:47:56 +02:00
Ludger Küperkoch
1b3fc717a6 Not really fixed, but bypassed bug occuring when saving picks and no channel nor station coding is available. 2017-04-27 15:50:08 +02:00
Ludger Küperkoch
d4dea0d356 Compiled new, smaller versions of pick icons. 2017-04-27 10:44:41 +02:00
Ludger Küperkoch
8f92b4ec25 Implemented new, smaller versions of pick icons. 2017-04-27 10:42:31 +02:00
Ludger Küperkoch
d1cb6fe41f Detrend of waveforms for overview plot. 2017-04-26 15:59:29 +02:00
686ca4489c Merge branch 'project_events' into develop 2017-04-21 15:50:10 +02:00
08dfe35620 final commit of first project/event branch, ready for merging to develop [open issues: no differentiation between auto and manual picks mainly for map (internal structure change incoming), new icon integration failed...] 2017-04-21 15:46:57 +02:00
6b7dbe3f9a some bugfixes 2017-04-20 17:06:36 +02:00
b23228253a [bugfix] plotting pick of lower most channel 2017-04-20 15:28:43 +02:00
29701ea68b plotting picks problem was no bug, but resulted from a high sensitivity of the code to random files or folders in the event directory causing HUGE problems... [fix this] 2017-04-20 15:08:36 +02:00
bcc58e4937 changed eventlist string and coloring, [bug]: picks not displayed 2017-04-20 14:03:26 +02:00
f5dcfc654d added eventlist, some changes in tab structure (layouts for each tab to keep tabs when refreshing) 2017-04-20 12:05:34 +02:00
227faf14c2 saving picks in events as part of project 2017-04-19 16:51:19 +02:00
f935da8296 few bugfixes 2017-04-19 16:05:45 +02:00
80577dcfc7 added map_projection plot 2017-04-19 15:40:22 +02:00
fd70ef2251 adding some tabs for map_projection, WIP 2017-04-18 17:17:46 +02:00
62876dd01d added first project structure and event lists (testing needed) 2017-04-18 16:24:26 +02:00
3092b4f657 Merge branch 'map_projection' into develop 2017-04-18 09:48:00 +02:00
486aadd791 color change in map projection 2017-04-13 15:51:58 +02:00
22ced8c07c [fix] parameters tab window flag for new qwidget window with parent 2017-04-13 11:55:09 +02:00
de38b60893 qlineedit for autopylot parameter settings 2017-04-13 11:26:01 +02:00
54222b7f11 added method for array plotting to QtPyLoT, to do: button to call array plot 2017-04-12 16:43:29 +02:00
50f6d7d987 Merge branch 'develop' into map_projection 2017-04-12 15:21:58 +02:00
e75c34afeb button color changed, 3 comp. window 2017-04-12 15:20:06 +02:00
6c214bbc77 changed structure to class with PyLoT mainwindow as input 2017-04-12 15:07:13 +02:00
488068105b Merge branch 'develop' into map_projection 2017-04-12 12:18:16 +02:00
bb60093657 changed PickDlg layout to simpler button layout with hotkeys 2017-04-12 12:14:01 +02:00
786879d4ad Merge branch 'develop' into map_projection 2017-04-12 10:22:39 +02:00
Ludger Küperkoch
79163206f8 First step to realize GUI based setting of picking parameters in pylot.in-file. 2017-04-11 16:55:07 +02:00
76d4d59ed9 added PickDlg testwise for onpicked traces 2017-04-11 15:41:41 +02:00
d037e0a1f2 Merge branch 'develop' into map_projection 2017-04-11 15:17:48 +02:00
2e6d39c52e small bugfixes and widget added 2017-04-11 15:16:53 +02:00
bf63348151 first working version of basemap plot 2017-04-11 14:32:29 +02:00
Ludger Küperkoch
b3a4928a9c Implemented push buttons for selecting parameters to change within the PyLoT.in file. Work in progress. 2017-04-11 11:41:54 +02:00
Ludger Küperkoch
640ed1acda Removed location tool popup from Preferences GUI, as there is yet only NonLonLoc as location routine available. Changed size of GUI. Implemented additional diaolg for picking parameters, yet not finished. 2017-04-11 10:55:29 +02:00
f1e3720a0e gathering some ideas for map projection 2017-04-10 17:06:39 +02:00
d370ef67c0 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-04-10 15:07:48 +02:00
085eee7d75 added autopicks in 3 component windows, also added vertical dashed lines for autopicks for better visibility 2017-04-10 15:06:30 +02:00
Ludger Küperkoch
2dda4d8e04 First action is to ask for PyLoT.in file. 2017-04-10 14:54:47 +02:00
Ludger Küperkoch
43eecfe78b Locate button is initialized as soon as number of picks is equal/greater 4. 2017-04-10 14:43:11 +02:00
Ludger Küperkoch
95dce91ada Major changes: PyLoT GUI opens immediately when calling PyLoT, buttons are deactivated and reactivated as soon as waveforms are loaded. 2017-04-10 14:24:39 +02:00
0656a571cd now returning pylot_form to have access to GUI modules in ipython 2017-04-10 14:01:08 +02:00
50d3c5f235 added ipython support for developing 2017-04-10 13:32:53 +02:00
3f7a61736a changed PyQT import to PySide import 2017-04-10 13:22:56 +02:00
Ludger Küperkoch
49a4cccc92 Bug fix: PyLoT displays warning message end terminates if no PyLoT-input file or autoPyLoT-output file is declared. 2017-04-10 09:50:53 +02:00
35705f1f1d Merge branch 'develop' 2017-04-07 13:58:07 +02:00
8bc390fb74 small bugfix 2017-04-06 16:18:08 +02:00
393289245f multiprocessing implemented for restitution and autopicker 2017-04-06 15:37:54 +02:00
ef1755a80f added new files as well 2017-04-06 13:17:06 +02:00
c90b061de9 coppied files from Ludgers Laptop 2017-04-06 13:16:28 +02:00
Ludger Küperkoch
9122d8debf Marginal changes. 2017-04-05 14:26:38 +02:00
Ludger Küperkoch
6c149b7119 Removed (temporary?) one function of two for estimating source spectrum to speed up code. 2017-04-05 11:41:29 +02:00
Ludger Küperkoch
3f027bedf5 Exchanged autopick with autoPyLoT to get full accees to entire autoPyLoT procederes within GUI. 2017-04-05 11:40:24 +02:00
Ludger Küperkoch
94c1e85484 Implented GUI dialog to select directory for autoPyLoT output. 2017-04-05 11:38:43 +02:00
Ludger Küperkoch
4244047096 Implented GUI dialog to select directory for autoPyLoT output. 2017-04-05 11:38:02 +02:00
Ludger Küperkoch
6269632875 Exchanged external function autopick with autoPyLoT to enable iterative picking also from GUI. Furthermore, implemented QDialog to search for PyLoT.in-file via pop-up windows. 2017-04-05 11:26:10 +02:00
Ludger Küperkoch
3d5cce9e7a Removed double read in of input file. 2017-04-03 11:54:41 +02:00
Ludger Küperkoch
43a7da41f2 Removed obsolete AUTOMATIC_DEFAULTS, as they are read in from pylot.in. 2017-04-03 11:54:09 +02:00
Ludger Küperkoch
1266f08da8 Additional restore button in preferences-dialog box to reset preferences. Gets values from infile (e.g. pylot.in) assumed as default values. 2017-03-31 11:26:42 +02:00
Ludger Küperkoch
4ca8b2b86c Minor changes for extended preferences dialog box. 2017-03-31 11:24:40 +02:00
Ludger Küperkoch
4ae19675f1 Marginal changes. 2017-03-29 10:03:42 +02:00
Ludger Küperkoch
b233d80cb4 Removed hard coded parameters for earllatepicker, takes paramters now from pylot.in-file. 2017-03-29 09:58:30 +02:00
Ludger Küperkoch
fa7a0e9c10 Minor changes 2017-03-28 16:51:45 +02:00
Ludger Küperkoch
f51761146b Minor changes 2017-03-28 16:51:35 +02:00
Ludger Küperkoch
4b6eac5e52 Minor changes 2017-03-28 16:51:26 +02:00
Ludger Küperkoch
2dd815fb2b Minor changes 2017-03-28 16:51:10 +02:00
Ludger Küperkoch
fe7bae50e6 Fixed some minor bugs. 2017-03-28 09:47:01 +02:00
Ludger Küperkoch
af7b0e1887 Fixed some minor bugs. 2017-03-28 09:46:40 +02:00
Ludger Küperkoch
b235733d2b Real user info in manual pick dictionary. Additional information in manual pick dictionary. 2017-03-27 16:03:15 +02:00
Ludger Küperkoch
ea4cc6a1a3 Implemented Qt4-dialogue box for input-file name. 2017-03-27 14:15:50 +02:00
Ludger Küperkoch
fced74473f Cleaned. 2017-03-27 11:34:53 +02:00
Ludger Küperkoch
842de86544 Flexible handling of individual input-file names. 2017-03-27 11:32:24 +02:00
Ludger Küperkoch
39748ca7c2 Finished flexible handling of different input file names. 2017-03-27 11:31:58 +02:00
Ludger Küperkoch
fcfa2e9edc Cosemtics and first steps to make PyLoT more flexible to different input-file names. 2017-03-27 10:25:19 +02:00
Ludger Küperkoch
ce341dc6e0 Removed temporary module import of pdb. 2017-03-22 12:03:27 +01:00
Ludger Küperkoch
15fd175813 Export of phases for VELEST, hypoDD and HASH only possible if event location is available. 2017-03-22 12:02:01 +01:00
Ludger Küperkoch
92a1c77f9c Finished phases output for HASH. 2017-03-21 17:53:41 +01:00
Ludger Küperkoch
a01b6f6db5 Minor changes. 2017-03-21 17:53:15 +01:00
Ludger Küperkoch
6d5e9fdfcd Additional item network in pick dictionary. 2017-03-21 17:52:16 +01:00
Ludger Küperkoch
380c96e5a5 Removed inconsistencies. 2017-03-16 11:47:01 +01:00
Ludger Küperkoch
fcd977c9bc Additional screen output. 2017-03-16 11:28:13 +01:00
Ludger Küperkoch
181a87facb Additional export of phases for FOCMEC. 2017-03-16 11:27:48 +01:00
Ludger Küperkoch
f6bf551187 Additional export of phases for FOCMEC. 2017-03-16 11:27:20 +01:00
Ludger Küperkoch
368994a28f Removed pdb. 2017-03-15 14:19:37 +01:00
Ludger Küperkoch
e2ec6b3574 Flexible input-file naming possible now. 2017-03-15 14:19:17 +01:00
Ludger Küperkoch
305122d02b Default is now pylot.in even for autoPyLoT. 2017-03-15 14:18:28 +01:00
Ludger Küperkoch
55c5291121 Flexibel for input-file naming, default is pylot.in. 2017-03-15 14:17:56 +01:00
Ludger Küperkoch
47b41a1296 Flexibel for input-file naming now. 2017-03-15 14:17:02 +01:00
Ludger Küperkoch
a95120ba5e In writephases: export of phase information for focmec. Still under construction. 2017-03-14 10:35:33 +01:00
Ludger Küperkoch
2fc1c7031d Export of phases for focmec. Yet not finished. 2017-03-14 10:33:56 +01:00
Ludger Küperkoch
c74205c46f In setIniPickP and setIniPickS: get parameters from pylot.in instead of hard programmed values. 2017-03-14 10:32:43 +01:00
Ludger Küperkoch
f0c1ec14f2 Cosmetics. 2017-03-02 11:44:32 +01:00
Ludger Küperkoch
d57cfa0085 Export of phases formated for focmec. 2017-03-02 11:44:03 +01:00
Ludger Küperkoch
b5d081841b Updated for additional phase export for hypoDD. 2017-03-02 11:13:14 +01:00
Ludger Küperkoch
2c3ad881f1 Updated for additional phase export. 2017-03-02 11:11:38 +01:00
Ludger Küperkoch
5a87d0d3b3 Additional phase export formated for hypoDD. 2017-03-02 11:11:00 +01:00
Ludger Küperkoch
749e42b778 Implemented additional phase output formated for hypoDD. 2017-03-02 11:10:28 +01:00
Ludger Küperkoch
bb48946fe2 Cosmetics. 2017-03-02 09:31:30 +01:00
Ludger Küperkoch
4435d8d855 Cosmetics. 2017-03-02 09:31:21 +01:00
Ludger Küperkoch
3bb7156e65 Cosmetics 2017-03-02 09:30:08 +01:00
Ludger Küperkoch
cf1ed748d2 Additional phases output for further VELEST processing. 2017-03-02 09:20:17 +01:00
Ludger Küperkoch
008d730609 Implemented output formated for further VELEST processing. 2017-03-02 09:19:42 +01:00
Ludger Küperkoch
44d2acf331 Output formated for further VELEST processing. 2017-03-02 09:19:11 +01:00
Ludger Küperkoch
7b22eb1620 Additional phase output formated for HYPOSAT, additional header information for HYPO71- and NLLoc-phase files. 2017-02-28 15:02:39 +01:00
Ludger Küperkoch
4c82f29b1a Phase output formated for HYPO71, replaces old hsat.py. 2017-02-28 15:01:52 +01:00
Ludger Küperkoch
8bb5d9dd2c Additional header information. 2017-02-28 14:59:21 +01:00
Ludger Küperkoch
7671b76f2f Phase output for HYPOSAT, additional header information for NLLoc and HYPO71 output. 2017-02-28 14:57:25 +01:00
Ludger Küperkoch
11a3839cff Additional phase output formated for HYPOSAT. 2017-02-28 14:56:09 +01:00
Ludger Küperkoch
8ffa37eea6 In plotcomparison: Better readable legends now. 2017-02-23 15:43:55 +01:00
Ludger Küperkoch
b4c463b16f Bugfix in from_pick: Something was wrong with calculation of expectation value. However, this might still not be fully correctly! 2017-02-23 15:43:05 +01:00
Ludger Küperkoch
1b92d88403 Re-introduced barycentre in pdf object. 2017-02-22 16:23:19 +01:00
Ludger Küperkoch
6ff8069fe0 Bugfix in from_pick: type must be exp to be consistent! 2017-02-22 16:20:47 +01:00
Ludger Küperkoch
919f4dd2d6 Cosmetics 2017-02-22 16:19:37 +01:00
Ludger Küperkoch
21e068ec24 Bugfix in exp_parameter: If resulting sigmas are infinite, values are set to finite values. Leads then to a symmetric distribution. 2017-02-22 12:34:05 +01:00
Ludger Küperkoch
fab785d164 Bugfix in plotcomparison: pdf was provided as method instead of data. Enabled plot_pdf to deal with method as well as with pdf-data. 2017-02-22 12:31:20 +01:00
Ludger Küperkoch
5d35fb419d Cosmetics. 2017-02-21 14:07:21 +01:00
Ludger Küperkoch
049b2b6991 Cosmetics. 2017-02-21 14:05:41 +01:00
Ludger Küperkoch
f1f54bf7b5 Additional new icon design. 2017-02-20 14:32:12 +01:00
Ludger Küperkoch
ef2db012be Additional new icon design. 2017-02-20 14:32:06 +01:00
Ludger Küperkoch
2b926c4466 Additional new icon design. 2017-02-20 14:31:59 +01:00
Ludger Küperkoch
01d90b715b New icon design. 2017-02-20 11:41:13 +01:00
Ludger Küperkoch
a9e70adbcd New button designed. 2017-02-17 17:46:52 +01:00
Ludger Küperkoch
8dbb19380f Additional new icon design. 2017-02-17 17:46:22 +01:00
Ludger Küperkoch
653ab1ad4d Additional new icon design. 2017-02-17 17:46:04 +01:00
Ludger Küperkoch
7559f45b5b Additional new icon design. 2017-02-17 15:21:15 +01:00
Ludger Küperkoch
f959e5f9f3 Additional new icon design. 2017-02-17 15:21:02 +01:00
Ludger Küperkoch
58bdf3b147 Additional new icon design. 2017-02-17 15:20:45 +01:00
Ludger Küperkoch
e306a60b27 New icon design. 2017-02-17 12:09:14 +01:00
Ludger Küperkoch
3949c6b3f1 New icon design. 2017-02-17 12:09:02 +01:00
Ludger Küperkoch
2d8bb0b700 New icon design. 2017-02-17 12:08:18 +01:00
Ludger Küperkoch
a9c9e45942 New compiled via pyrcc4. 2017-02-16 16:37:38 +01:00
Ludger Küperkoch
75d2d79ee5 New locate button. 2017-02-16 16:36:38 +01:00
Ludger Küperkoch
0a54e627eb Implemented new locate button. 2017-02-16 16:35:54 +01:00
Ludger Küperkoch
17e9f8b5fe New designed locate button. 2017-02-16 16:35:33 +01:00
Ludger Küperkoch
2954e5acea Reversed former changes, no need for math module. 2017-02-09 17:15:00 +01:00
Ludger Küperkoch
af555ab1ee Marginal changes 2017-02-09 17:09:21 +01:00
Ludger Küperkoch
200695e7ca Fixed bug in plot_pdf: wrong input for _axes.plot, method instead of values of method! 2017-02-09 16:59:47 +01:00
Ludger Küperkoch
a3d3c02773 Bugfix: Wrong use of MessageBox.question. 2017-01-26 16:24:07 +01:00
Ludger Küperkoch
41ca6114b1 Additional print output. 2017-01-25 14:46:54 +01:00
Ludger Küperkoch
86819f6b4a In read_metadata: Removed raise IOError if no station-meta info are available, instead print info and leave parameters as None. In restitute_data: break if no station-meta info are available. 2017-01-25 14:02:14 +01:00
Ludger Küperkoch
c502f26c88 Cleaned up. 2016-10-28 16:34:31 +02:00
Ludger Küperkoch
52e481abc5 Accelerated calculations in fitSourceModel. 2016-10-28 16:33:44 +02:00
Ludger Küperkoch
b69387e49f Replaced fixed plotting advice with iplot parameter. 2016-10-28 14:54:55 +02:00
Ludger Küperkoch
c2c2047dcf Fixed oversight: if automatic picks have been processed, picks of dictionary were not written to picks list. 2016-10-28 13:40:14 +02:00
Ludger Küperkoch
236a1a43f8 Bugfix in applyPicks: If there are automatic picks, OverwriteError is suppressed. 2016-10-28 11:04:56 +02:00
Ludger Küperkoch
61e4aa98c6 Marginal changes. 2016-10-27 16:26:06 +02:00
Ludger Küperkoch
d7418d2b30 Fixed oversight 2016-10-27 16:17:21 +02:00
Ludger Küperkoch
0318fe7c32 Bugfix in calcsourcespec: take into account special case of components 1, 2, and Z. 2016-10-27 16:15:38 +02:00
Ludger Küperkoch
9e5b3f6916 Bugfix in fitSourceModel: Be sure, to set trial window aroun initial corner frequency within available data. 2016-10-27 16:06:45 +02:00
Ludger Küperkoch
41eebfbcda Bugfix in calcsourcespec: If no rotation of traces is possible, use component 3 instead of component z. 2016-10-27 15:50:24 +02:00
Ludger Küperkoch
42268cd3e9 Optimized and cleaned fitSourceModel to speed it up. 2016-10-27 14:55:03 +02:00
Ludger Küperkoch
bcde390d42 Bugfix in class MomentMagnitude: calcsourcespec was feeded with 1 component only, thus rotation of traces was no more possible. 2016-10-27 09:07:08 +02:00
Ludger Küperkoch
c055b52325 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2016-10-26 11:37:39 +02:00
Ludger Küperkoch
877bd69b59 Cosmetics. 2016-10-25 16:26:13 +02:00
Ludger Küperkoch
064c9fb919 More detailed output on screen. 2016-10-25 16:24:25 +02:00
Ludger Küperkoch
4beae3bb2b Implemented try-except in restitute_data to capture failed instrument correction. Additional output on screen. 2016-10-25 16:21:48 +02:00
Ludger Küperkoch
b11a03af58 Bugfix: corrected key search in dictionary. 2016-10-25 10:26:32 +02:00
Ludger Küperkoch
0ce8b7afb3 Additional screen output in verbose mode. 2016-10-24 13:58:34 +02:00
Ludger Küperkoch
d578b0f0dc Bug fix: import of find_horizontals was missing. 2016-10-24 13:56:51 +02:00
Ludger Küperkoch
18d2654029 Additional screen output in verbose mode. 2016-10-21 14:16:45 +02:00
Ludger Küperkoch
cb0b8c5735 Some cosmetics. 2016-10-21 14:16:20 +02:00
Marc S. Boxberg
8e54594260 Corrected Markdown-Syntax in README.md. 2016-10-04 11:35:37 +02:00
d668a483fc Merge tag '0.1a' into develop
First release of PyLoT
2016-10-04 06:42:34 +02:00
f5c06cd6b7 Merge branch 'release/0.1a' 2016-10-04 06:41:54 +02:00
b8840dff13 [version] edited release version 2016-10-04 06:40:48 +02:00
91c181ef2d [README] added some necessary information to the README for first release; renamed pylot_sample.in for convenience and removed an obsolete import 2016-10-04 06:32:10 +02:00
ae0cc5e160 [remove] moved correlation code from PyLoT to the seisobs utils scope 2016-10-03 08:56:23 +02:00
45184fd888 [move] acitveSeismoPick3D removed from PyLoT project
will be under version control on its own
2016-10-03 08:20:54 +02:00
75a8397b21 [release] edit to README and deleted duplicate LICENSE file 2016-09-30 16:32:34 +02:00
96124537cd Merge branch 'master' into develop 2016-09-29 14:18:39 +02:00
ad909804d1 Merge branch 'master'
Conflicts:
	pylot/core/analysis/magnitude.py
	pylot/core/pick/autopick.py
	pylot/core/util/dataprocessing.py
2016-09-29 14:01:15 +02:00
04da34deec Merge branch 'feature/magnitude4QtPyLoT' into develop
Conflicts:
	pylot/core/analysis/magnitude.py
	pylot/core/util/widgets.py
2016-09-29 13:54:18 +02:00
2e840cdfeb [fix] reformatted code and fixed magnitude_type bug 2016-09-29 12:44:37 +02:00
dfefd8af87 [enhancement] make use of new Magnitude method in QtPyLoT 2016-09-29 12:08:59 +02:00
34c1e80e78 [enhancement] make use of the new methods introduced in [900c7af931] 2016-09-29 11:55:08 +02:00
900c7af931 [new] added referenced information on Magnitude properties to the recently introduced Magnitude objects 2016-09-29 11:53:25 +02:00
010963dcd1 [bugfix] not all processing entries have to contain remove but at least one of them 2016-09-28 15:07:49 +02:00
d68a1bcf0e [fix] some bugs found and fixed 2016-09-28 14:58:27 +02:00
019a3ae0f3 [new] added origin information to the net_magnitude 2016-09-28 14:58:27 +02:00
d093349b50 changed function position 2016-09-28 14:38:16 +02:00
be2bacf5e8 bugfix: metadata not read from default file 2016-09-28 14:37:24 +02:00
5f92d1f0db [refactor] major refactoring of autoPyLoT and making use of the newly introduced Magnitude objects 2016-09-28 11:03:53 +02:00
231e7dafa9 [new] added a function to easily add amplitude information to a given Obspy event object 2016-09-28 11:01:09 +02:00
4e520df145 [new] added Wood-Anderson amplitude output for further analysis 2016-09-28 10:59:50 +02:00
ae967b3429 [remove] removed Wood-Anderson peak-to-peak amplitude reading from autopick.py; newly introduced in autoPyLoT in a future commit 2016-09-28 10:57:52 +02:00
c1bddd5c0b [change] improved verbosity and plotting control for Magnitude objects 2016-09-28 10:56:05 +02:00
72d15e1fc5 [new] implemented new magnitude concept into QtPyLoT 2016-09-27 15:15:53 +02:00
699ba6f122 [new] added a new Error -> ProcessingError raised in case of failed restitution 2016-09-27 15:14:48 +02:00
cf514ae024 [change] traces that could not be restituted are now removed from trace 2016-09-27 15:13:51 +02:00
28a5cedbc6 [refactor] further refactoring done -> obsolete functions deleted, imports optimized, output suppressed and calculation done in __init__ 2016-09-27 15:12:14 +02:00
405402ffdc [refactor] major refactoring of Magnitude objects finished
now the changed usage of the Magnitude object has to be implemented into autoPyLoT and QtPyLoT (pending)
2016-09-27 13:57:14 +02:00
d4481e4acd [new] added peak_to_peak, get and net_magnitude giving Wood-Anderson simulated peak amplitude, single station magnitudes and network magnitude for a given event, respectively 2016-09-26 16:04:09 +02:00
c52277e4a2 [new] added attributes, properties and special method __str__ to the Magnitude superclass -> improves significantly convenience of sub-class programming 2016-09-26 15:56:40 +02:00
9288a169a4 [change] if folder selection is canceled do not empty editable text 2016-09-26 14:49:29 +02:00
dc38bd6e79 [fix, refactor] started major refactoring of magnitude.py and fixed some smaller bugs 2016-09-26 14:47:50 +02:00
eaa3c2e75d [change] do some major refactoring on Magnitude and subclasses to be more efficient and clean 2016-09-26 10:49:02 +02:00
51f4082e04 [fix] imported Magnitude overwrite prevented by renamed import; changed wrong function call 2016-09-23 15:21:34 +02:00
0dffe37d3b [namefix] rename data file and corresponding function 2016-09-23 15:12:43 +02:00
bfa7ffc960 [move] moving functions for Richter and moment magnitude calculation to magnitude module for re-use in autoPyLoT 2016-09-23 15:12:04 +02:00
65740e6cff [namefix] rename data file and corresponding function 2016-09-23 14:28:02 +02:00
Ludger Küperkoch
d0a46eb2bb Changed iplot flag. 2016-09-23 10:31:42 +02:00
Ludger Küperkoch
dc677062f4 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop
Something unholy happend!
2016-09-23 10:25:52 +02:00
Ludger Küperkoch
18f8fc25a8 Marginal changes. 2016-09-23 10:25:48 +02:00
04ec43c699 [fix] restitute waveform data prior to Wood-Anderson simulation 2016-09-22 14:12:24 +02:00
8307974edf [new] added richter magnitude calculation (to be tested) 2016-09-22 11:39:07 +02:00
bcb3eca8b2 [new] added data file and a function that evaluates the Gutenberg-Richter relation for a given distance 2016-09-22 10:54:37 +02:00
f35559e7c0 [new] added data file and a function that evaluates the Gutenberg-Richter relation for a given distance 2016-09-22 10:53:09 +02:00
Ludger Küperkoch
180cd25b51 Fixed bug in read_metadata.py: path to inventory file was not taken into account. 2016-09-21 14:36:25 +02:00
80e0ca99d7 [new] added function to calculate symmetrized pickerror on the fly 2016-09-21 14:12:58 +02:00
a215ba35b1 Merge branch 'feature/magnitude4QtPyLoT'
Conflicts:
	pylot/core/analysis/magnitude.py
2016-09-21 10:41:38 +02:00
ca7ce5f13c [change] signature of calcMoMw changed; renamed getinvdir to get_metadata
removed an unused remnant parameter invdir from definition of calcMoMw; method getinvdir from Magnitude class has been renamed and modified and returns now the metadata information and not only the inventory directory
2016-09-21 10:27:47 +02:00
777941b669 [fix] corrected docstring for new signature 2016-09-21 10:13:25 +02:00
Ludger Küperkoch
db3347b17c Removed pdb. 2016-09-20 15:29:45 +02:00
Ludger Küperkoch
a95a33abc9 Implemented read_metadata.py in calcsourcespec.py (was this intended?). 2016-09-20 15:26:55 +02:00
Ludger Küperkoch
e4c1912896 Additional screen output for read_metadata.py. 2016-09-20 15:25:26 +02:00
Ludger Küperkoch
ee2f462c92 Fixed bug in read_metadata.py: path to inventory file was not taken into account. 2016-09-20 14:30:24 +02:00
a54ffe01f8 [new, bugfix] use new metadata concept in the scope of QtPyLoT; consistent use of input variables
input variables should always be used; avoid hard-coded parameters
2016-09-20 13:45:49 +02:00
21042bc071 Merge branch 'feature/magnitude4QtPyLoT'
Conflicts:
	pylot/core/util/dataprocessing.py
	pylot/core/util/widgets.py
2016-09-20 13:24:37 +02:00
Ludger Küperkoch
6a2bbe3f91 Stabilized zero-crosings determination for source spectrum estimation from P pulse. 2016-09-20 13:22:05 +02:00
Ludger Küperkoch
f46c618748 Stabilized zero-crosings determination for source spectrum estimation from P pulse. 2016-09-20 10:40:21 +02:00
df002ce9ac [change] use read in metadata information instead of reading metadata each time invoked 2016-09-20 09:58:33 +02:00
7e76bf7577 [change] make use of new metadata reading utility function to improve performance 2016-09-20 09:57:09 +02:00
4a6b653a72 [new] added new function to read metadata from disk
this new function prevents multiple reading of large dataless seed volume to enhance overall performance
2016-09-20 09:55:54 +02:00
c73435dec3 [fix] do not calculate moment magnitude for S phases 2016-09-20 09:54:14 +02:00
Ludger Küperkoch
b3edeca81d Changed input for P-quality factor. 2016-09-19 16:10:57 +02:00
Ludger Küperkoch
c60689c8ad Removed import pdb 2016-09-19 13:35:35 +02:00
Ludger Küperkoch
aacfbf3bbb Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2016-09-19 13:22:50 +02:00
Ludger Küperkoch
93f9070396 Fixed bug: path seperator was not taken inot account. 2016-09-19 13:22:46 +02:00
84739ed8ab [new] added new function to find common time window within a stream 2016-09-19 11:43:16 +02:00
420f382051 [cherry-pick] merged conflicts after cherry-pick of commit [17585f9381] 2016-09-19 11:42:52 +02:00
f34262d931 [enhancement] catch possible exceptions during restitution process without losing code's verbosity 2016-09-19 11:39:15 +02:00
ce4ac4fd04 [pep8] use naming and style conventions 2016-09-19 11:36:51 +02:00
fa19ae9b9c [bugfix] only try to calculate moment magnitude given w0 and fc 2016-09-19 11:35:59 +02:00
8ee515e79f [bugfix] do not continue calculation without given data 2016-09-19 11:34:03 +02:00
5155efc710 [bugfix] do not try to give a full filepath for searching issue 2016-09-19 11:33:08 +02:00
8d37e9299c [new] added new function to find common time window within a stream 2016-09-19 11:32:00 +02:00
17585f9381 [rename] renaming getGlobalTimes for consistency and introduction of similar new function in future commit 2016-09-19 11:29:33 +02:00
c8d8525c11 [bugs fixed and found] dataprocessing doesn't work as expected, np.bool_ substituted by bool 2016-09-15 14:51:11 +02:00
1e4b1d691a [bugfix] using get method and account for not existing autopylot input file 2016-09-15 12:14:43 +02:00
4233af55c6 [bugfix] which now also uses the nllocbin parameter from the input file 2016-09-15 12:11:24 +02:00
fa42134a00 [modified] use os.path to create path strings for reading data 2016-09-15 11:41:30 +02:00
Ludger Küperkoch
d099e4b466 Bug fixed: Parser could not find dless-file as path was not given. 2016-09-14 13:43:10 +02:00
d7680f8ae3 Merge branch 'feature/magnitude4QtPyLoT'
Conflicts:
	pylot/core/util/utils.py
2016-09-13 12:02:21 +02:00
15700b074d [major, refs #200] major change for the magnitude estimation from GUI
restitution of waveform data has been moved to dataprocessing; the routines have been cleaned up and work in changed order now:
new function restitute_data is a wrapper function in order to restitute seismic data with the most popular kinds of station metadata
2016-09-13 12:00:37 +02:00
8a5fcf05bf [move] pseudo method restituteWFData changed to function restitute_data and moved to dataprocessing 2016-09-10 13:24:42 +02:00
7c5b8cb646 [move] pseudo method restituteWFData changed to function restitute_data and moved to dataprocessing 2016-09-10 13:24:12 +02:00
8866d54428 [bugfix] now plotting of picks works also if less data than picks are available 2016-09-09 06:31:30 +02:00
94236190ba [bugfix] cancelling localization now works and gives information about the localization state 2016-09-09 06:31:04 +02:00
3d41e0abcd [refs #200] take advantage of the newly imported input file for magnitude calculation 2016-09-08 15:31:23 +02:00
6e6b3570a8 [bugfix] now plotting of picks works also if less data than picks are available 2016-09-08 15:29:37 +02:00
a2ddd04b2f [bugfix] cancelling localization now works and gives information about the localization state 2016-09-08 15:28:40 +02:00
cbbe019475 [new] read generalized parameter input file 2016-09-08 14:02:21 +02:00
7d5b8db232 [new] pylot.in which will substitute other input files later
a more general input file might help prevent ambiguity among use cases
2016-09-08 13:45:16 +02:00
fd8abd18b5 Merge branch 'develop'
[bugfixes] bringing bugfixes into master
2016-09-08 09:56:57 +02:00
49b07163ad [bugfix] saving data did not work properly due to changed variable signature; picking on just one horizontal component now possible, crash was caused by mismatching component labels -> new function added to find these labels from the available data 2016-09-08 09:54:43 +02:00
d953609419 [bugfix] just parse filter options if available 2016-09-07 12:17:51 +02:00
9632ecf41f [bugfix] cover all possible cases (some correct components have been dropped before) 2016-09-07 11:10:51 +02:00
f6d05dd2cc [refs #200] use distance in kilometres
ObsPy provides the epicentral distance in degree if the event information are read from a NLLoc hyp-file. To calculate the correct moment magnitude values it is essential to have the distance in kilometres instead.
2016-09-07 11:05:10 +02:00
12641f8d52 [refs #200] fixing some minor bugs during processing of magnitude 2016-09-05 15:00:08 +02:00
e1e3d54f8e [refs #200] corrected call to QFileDialog 2016-09-05 10:16:12 +02:00
e6b788d423 Merge branch 'develop'
Conflicts:
	QtPyLoT.py
	pylot/core/io/data.py
2016-09-02 14:24:34 +02:00
76a856aa11 [clean-up] some code cosmetics and started to implement eventinformation 2016-09-02 14:21:59 +02:00
9f13f8db49 [refs #200] finished magnitude calculation (to be tested) 2016-09-02 09:03:51 +02:00
d98ecea18a [refs #200] now merging picks without destroyed reference resource IDs 2016-09-01 14:21:25 +02:00
81640d30f9 [refs #200] ongoing work on parameter derivation 2016-08-31 13:41:18 +02:00
facffa1bf2 [refs #200] started to implement magnitude determination from QtPyLoT 2016-08-31 12:16:48 +02:00
f1d806c154 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-08-30 15:00:34 +02:00
a8e56dba8b added repicking layout UI 2016-08-30 14:59:38 +02:00
bcff0b74fe Merged feature/NLL4QtPylLoT into develop 2016-08-30 14:54:23 +02:00
280e954cac [closes #137] location out of QtPyLoT now possible 2016-08-30 14:53:58 +02:00
a4c2666584 adding repicking qt layout 2016-08-30 11:54:38 +02:00
ad91504211 [ref #137] removing last bugs before closing feature 2016-08-29 15:52:58 +02:00
060bc1d0c8 [refs #137] bugfix value now is specified by user on demand 2016-08-26 14:36:33 +02:00
eb1d7c07a0 preparations for QT repicking interface 2016-08-26 14:31:09 +02:00
30ccd331d4 [refs #137] bugfix in widgets.py badly formatted string corrupted load of settings; added a functionality to utils' which function to also look for NLLoc installation in the settings' binary path 2016-08-26 10:48:16 +02:00
b29c7068e3 [refs #137] some improvements in autoPyLoT and ongoing work in the QtPyLoT NLL implementation 2016-08-25 21:32:41 +02:00
e53dd99d75 [refs #137] implementation of GUI driven NonLinLoc location started 2016-08-25 13:31:51 +02:00
135ac0ef80 successfully implemented a working version of QT postprocessing interface 2016-08-24 14:58:51 +02:00
e51704f2b7 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-08-24 13:13:41 +02:00
9c3770ea9f working on postprocessing GUI 2016-08-24 13:13:24 +02:00
74d31afa3d Merged branch develop into develop 2016-08-19 16:32:41 +02:00
f428a72e86 [enhancement] improved functionality and flexibility of PDFstatistics class 2016-08-19 16:32:31 +02:00
c500f1b8bb [add] added new utility function to find a substring in a list of strings 2016-08-19 16:09:29 +02:00
f9d40439a9 [change] oversampling reduced to avoid computational overhead 2016-08-19 16:08:18 +02:00
71f59b3c64 [change] extracted plotting and started new module for plotting; improved docstring quality 2016-08-18 10:22:30 +02:00
sebastianp
08749840ba resetting oversampling to 1 "one" 2016-08-16 09:14:56 +02:00
5228657a60 small changes for synthetic tests 2016-08-15 13:35:01 +02:00
7921d12c80 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop
Conflicts:
	pylot/core/util/utils.py
2016-08-12 19:57:11 +02:00
49727b25df [change] improved docstrings and testing of utils.py 2016-08-12 09:50:36 +02:00
sebastianp
36e7bc1bb2 [documentation] adding docstring to all the methods. 2016-08-11 16:13:53 +02:00
a6ce93cd9f [modification] added missing docstring content 2016-08-10 16:30:28 +02:00
c72ed1e169 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-08-10 14:24:40 +02:00
7b9d1f172a semi working QT interface for postprocessing 2016-08-10 14:24:07 +02:00
sebastianp
dd6bce89fb Merge remote-tracking branch 'origin/develop' into develop 2016-08-10 10:06:48 +02:00
sebastianp
14c22d73b7 [enhancement] adding a save option for plotting 2016-08-10 10:06:34 +02:00
94782f6758 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-08-09 13:10:49 +02:00
f8623fc454 [enhancement] added capability of searching for files in subdirectories 2016-08-09 13:10:25 +02:00
sebastianp
37ed561f73 removing unnecessary code 2016-08-09 12:21:00 +02:00
28d2464aee got working window layout for postprocessing (no functions yet) 2016-08-09 11:48:37 +02:00
sebastianp
a4c7e61e1a Merge remote-tracking branch 'origin/develop' into develop 2016-08-09 11:07:26 +02:00
sebastianp
7c8a437dd8 [task] additional changes for phase separation 2016-08-09 11:07:18 +02:00
9f15376fd8 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-08-09 10:38:19 +02:00
9d51339268 start of improving postprocessing ui 2016-08-09 10:37:26 +02:00
sebastianp
f4bdb38e16 [task] PDFStatistics object is now far more flexible 2016-08-09 10:07:27 +02:00
sebastianp
b72e16aaed Merge remote-tracking branch 'origin/develop' into develop 2016-08-04 16:07:47 +02:00
sebastianp
87f87ffb95 [task] rewriting some functions to make them more flexible 2016-08-04 16:07:01 +02:00
4c42e9ceb5 bugfixes, added fullscreen mode 2016-08-04 14:17:22 +02:00
30049baf94 added constant SNR possibility (plotting), changed replotting structure 2016-08-04 12:16:25 +02:00
3efb237452 fix: wait for process obsdata (p.wait()) 2016-08-04 10:35:09 +02:00
471cfe755b [fix] be sure to start the external programs in the right directory 2016-08-03 13:28:54 +02:00
c13bdd2cf2 code cleanup 2016-08-02 12:21:25 +02:00
a8522d0fae pre code cleanup 2016-08-02 11:54:28 +02:00
sebastianp
2a798a554b [task] read statistics from file 2016-07-29 12:01:34 +02:00
sebastianp
10fbfe5554 Merge remote-tracking branch 'origin/develop' into develop 2016-07-28 13:43:23 +02:00
sebastianp
19ced8b8c5 [task] plot routine for quantile distance quotients 2016-07-28 13:42:50 +02:00
638f552d6d changed structure of callFMTOMO to class 2016-07-27 14:42:11 +02:00
adfe9cc027 bugfixes 2016-07-27 13:46:42 +02:00
8bd9f7debc rename 2016-07-27 11:13:20 +02:00
987ee597fd Release version modified!?!? 2016-07-27 11:12:27 +02:00
48c0dbacfb changed structure of active GUI code, autopicker window changed to class 2016-07-26 14:48:08 +02:00
3273709b54 code for first three windows changed to class structure 2016-07-19 15:19:03 +02:00
05cc8e52b9 last commit before structural changes (classes for each window) 2016-07-19 12:16:37 +02:00
c7f7d9785b Rearranged Main Layout (buttons to top menu), several tweaks for plotDynSNR 2016-07-18 11:54:29 +02:00
fb8d888845 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-07-18 11:12:43 +02:00
8ee075c2b1 added SNR modification/plot 2016-07-14 13:59:52 +02:00
sebastianp
1ed83d786d implementen some new functions to PDFStatistics 2016-07-13 15:26:36 +02:00
8433767b22 [change] consequently use new pdf evaluation concept throughout the entire code 2016-07-13 14:37:12 +02:00
sebastianp
d4fd93ed8f Merge remote-tracking branch 'origin/develop' into develop 2016-07-13 14:15:50 +02:00
sebastianp
c7d8d0ecf5 undid earlier changes in PDFStatistics 2016-07-13 14:15:44 +02:00
6ad78acc85 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-07-13 14:15:30 +02:00
63ff8e48c5 changed generateFMTOMOinput from z, y, x to x, y, z 2016-07-13 14:15:01 +02:00
sebastianp
6fd1f9e2cc Merge remote-tracking branch 'origin/develop' into develop 2016-07-13 11:00:51 +02:00
sebastianp
38d225fbcf undid earlier changes in PDFStatistics 2016-07-13 11:00:30 +02:00
fd569823f8 bugfix typo 2016-07-13 10:58:39 +02:00
288bbe13d7 bugfix fstart before path 2016-07-13 10:52:42 +02:00
5890e905fc Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-07-13 10:04:48 +02:00
e3100562da pseudo 2D model generation working after some fixes (+2 cushion for propgrid) 2016-07-13 10:04:13 +02:00
8cef8ff2db [bugfix] due to changes in the usage of ProbabiltyDensityFunction.data expectation and standard deviation were wrongly calculated 2016-07-12 16:19:27 +02:00
39184ef150 [change] new concept for evaluation of the pdf instead of holding a sampled array works now also for difference pdfs using a scipy's spline interpolation capabilities 2016-07-12 15:31:59 +02:00
ed85d0ef12 added minimum cushion for 2D case (for input file generation) 2016-07-12 14:39:28 +02:00
546dfad722 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-07-12 14:09:50 +02:00
c47bf7911a GUI refinements, added 2D structure for plots, adde input filename specifications 2016-07-12 14:09:08 +02:00
ef613e48a4 [change] pdf for difference of picks estimated via curve_fit (to be tested) 2016-07-11 14:15:41 +02:00
08fc5d554b [change] introducing a whole new concept of handling pdfs; evaluating function on demand rather than holding a sampled array 2016-07-11 10:42:04 +02:00
950696053c [fixed] pdf values are now evaluated on demand not stored in an array in advance 2016-07-08 14:16:48 +02:00
sebastianp
7eded42142 [bugfixing] quantile function loops inifinte for small epsilon. See docstring. 2016-07-07 15:30:05 +02:00
55a589b525 Added Surface plots, text windows and plotting of single shots. 2016-07-07 14:25:37 +02:00
5293bb6ec7 activating vtk_tools widget, bugfix on merging rays.dat (too many linebreaks) 2016-07-06 11:40:08 +02:00
0be69de6f7 busy adding VTK tools to main UI 2016-07-05 13:59:01 +02:00
5c7123af66 added a feature to generate a survey object from a SeisArray 2016-07-05 10:38:28 +02:00
e8cbc2f377 [change] implementation of quantile calculation corrected 2016-06-30 13:14:38 +02:00
sebastianp
4f47f9f343 Merge remote-tracking branch 'origin/develop' into develop 2016-06-29 15:31:00 +02:00
sebastianp
a8b7eff561 [task] implementing new methods for pdf comparison. 2016-06-29 15:29:58 +02:00
9e3f3b29d2 changed general structure of seisarray and survey. survey object can now be generated by using a seismic array (also in GUI). 2016-06-28 14:57:48 +02:00
8714616d1b Working on input file format (SEG2/SEGY) etc. 2016-06-27 15:20:17 +02:00
253e9f4b1e Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-06-27 14:47:44 +02:00
a813eb462f adding tooltips 2016-06-27 14:47:34 +02:00
4591b7b1d9 [bugfix] changed the order of trying to read seismic data for reassessment 2016-06-27 10:59:50 +02:00
4bbb40c8b7 window resizing pt.3 2016-06-23 12:06:59 +02:00
3bec20bd45 window resizing pt.2 2016-06-23 11:59:12 +02:00
30d911b5cc window resizing 2016-06-23 11:55:54 +02:00
47bd7384f8 bugfixes, replotting of SeisArray figure 2016-06-23 11:42:09 +02:00
0abbb79e64 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-06-21 13:29:28 +02:00
806b974011 further GUI implementations, plot of seismic array in main window 2016-06-21 13:29:10 +02:00
043f60dc2a [change] make Python 3 compatible calls to print 2016-06-21 09:32:37 +02:00
952a2ea535 make use of formerly implemented subprocess call routine 2016-06-21 09:31:26 +02:00
8393f283c7 GUI changes and updates 2016-06-17 13:14:20 +02:00
f01187615b fix 2016-06-16 14:00:04 +02:00
579461f7b4 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-06-16 13:57:50 +02:00
9f71bf8082 restructured GUI and added first Seismic Array options 2016-06-16 13:57:15 +02:00
b3acef0bcd [closes #198] comparison dialog now available from QtPyLoT 2016-06-15 14:52:42 +02:00
c3d134e6ca changed GUI organization (single files for each window) 2016-06-15 12:19:11 +02:00
1ec468a586 bugfix, boxes clickable 2016-06-15 10:01:28 +02:00
3583f70e2b [CAUTION] this rev is not working, implementation of the individaul pdf plots for the picks pending 2016-06-14 15:26:16 +02:00
e554330154 [change] now the station selector entries are sorted for convience 2016-06-14 15:03:13 +02:00
3c4cbff9f3 [fix] do not try to add a Layout to a QWidget which already has one 2016-06-14 14:56:15 +02:00
78ebb1f8db [change] decreased verbosity 2016-06-14 14:55:18 +02:00
073ed658b3 [edit] changed calculation of difference pdf to include large differences also 2016-06-14 14:28:46 +02:00
4093dd0ce7 name change 2016-06-13 14:37:56 +02:00
410b3c2f55 added GUI 2016-06-13 14:37:12 +02:00
d02bb369ec Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-06-13 14:35:47 +02:00
69b5b410f0 minor changes for GUI 2016-06-13 14:35:29 +02:00
3cee0e6df9 [change] added plots for debugging 2016-06-13 14:23:42 +02:00
79f0982558 [bugfix] use only vaild values for plotting 2016-06-13 11:27:16 +02:00
3568a8a59a [bugfix] changed the way the the expectation and the std array are calculated; not sure how to deal with values 'inf' 2016-06-11 08:03:16 +02:00
a3deb2a9d3 Merged 195 into develop 2016-06-10 14:37:40 +02:00
467f0ae79b [new] histogram plot added; debugging in progress 2016-06-10 14:37:33 +02:00
280f8544e4 [prepare] starting implementation of a histogram overview plot from pick comparison dialog 2016-06-10 09:04:10 +02:00
be326cba7b [bugfix] automatic data with the S-P time saved in the pickdict caused Exception in the ProbabilityDensityFunction constructor 2016-06-10 09:03:16 +02:00
14cd175297 [bugfix] it was not possible to pick the very first station manually 2016-06-10 09:01:37 +02:00
b5d94eed61 [closes #195] implementation of comparison within GUI ready for testing 2016-06-08 15:00:47 +02:00
b96366e321 [ref #195] implementation done; some bugs have to be fixed 2016-06-08 13:14:38 +02:00
e6d8701411 Merged branch 195 into develop 2016-06-07 14:09:41 +02:00
8e09fd7c42 [refs #195] pushing GUI element implementation forward 2016-06-07 13:51:03 +02:00
661b4d11c0 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-06-07 13:39:34 +02:00
f3769846ba GUI testing 2016-06-07 13:39:21 +02:00
7e33502824 GUI tests 2016-06-07 13:38:35 +02:00
dd668b90d6 Merged branch 195 into develop 2016-06-06 14:12:18 +02:00
536019259e [adresses 195] preparing GUI elements for a new dialog widget for interactive comparison 2016-06-06 14:10:46 +02:00
de89fc83ce moved widget to utils widgets for consistency and reusability
additionally the filter for PHASES and LOC files has been modified to avoid false selection
2016-06-02 09:39:01 +02:00
2395c12b26 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-06-01 14:15:14 +02:00
a255718f59 added script to VC 2016-06-01 14:14:57 +02:00
9c8c5bb842 - 2016-06-01 14:14:12 +02:00
02117399b5 output change 2016-06-01 14:13:15 +02:00
9996033ca5 cleanup (worker) 2016-06-01 14:12:49 +02:00
0d7ee9d779 [fixed] loading of automatic picks did not plot any result (fixed in this rev) 2016-06-01 08:55:43 +02:00
62b1a4e670 making widget reusable 2016-05-31 17:36:00 +02:00
73c49d8291 improved plotting performance especially for large data sets 2016-05-31 17:27:59 +02:00
7965239a92 [closes #124] PILOT event data can be loaded now 2016-05-31 15:53:23 +02:00
724032b3f6 capturing multiply stored station labels 2016-05-31 13:12:42 +02:00
e341994825 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-05-31 11:15:38 +02:00
0520df5963 bugfix 2016-05-31 11:15:30 +02:00
ae2fc73d89 parallelization 2016-05-31 11:14:51 +02:00
51aa949b56 debugging in progress 2016-05-30 17:08:35 +02:00
36b0aea86c [edit] fixing bugs (in progress) 2016-05-27 12:53:34 +02:00
618dd10c23 [task] further steps to implement pick comparison from QtPyLoT 2016-05-27 11:25:47 +02:00
a1d29a45cb Merge branch 'develop' 2016-05-27 07:45:04 +02:00
163a501ae9 introducing automatic data into QtPyLoT 2016-05-27 07:43:54 +02:00
53614bb5b9 [fix] fixing a bug introduced accidently by merge 2016-05-27 06:49:20 +02:00
0dd69a0e19 added default value for cores 2016-05-25 14:28:25 +02:00
ecf4a7ced7 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-05-25 14:24:51 +02:00
5057664b1d code changes for parallelization 2016-05-25 14:24:19 +02:00
e46e8cb71b [reformat] corrected formatting after merge 2016-05-25 14:22:08 +02:00
f8db6b1d9f [merge] resolved conflicts in utils due to two-sided coding 2016-05-25 14:05:25 +02:00
8ca87bc777 changes while testing parallelization of autopicker 2016-05-24 14:20:59 +02:00
a6eaac6c33 Changes during parallelization tests of autopicker 2016-05-24 14:19:37 +02:00
sebastianp
d49c90026d Merge branch 'master' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot 2016-05-24 13:23:08 +02:00
sebastianp
4962561d6c changes made to have better control of the output directory 2016-05-24 13:21:38 +02:00
46ccd44e16 changed to generation of reference grids 2016-05-23 14:25:24 +02:00
d9844fff17 added worker 2016-05-23 14:25:06 +02:00
42cbfeb787 temporary retaining of parallel tests 2016-05-23 14:24:02 +02:00
25ca11f572 minor tweaks 2016-05-23 14:22:52 +02:00
093f750aa1 tried worker function 2016-05-23 12:06:55 +02:00
41b7ca6968 [task] reformatting activeSeismoPick and editing pool mapping to work properly 2016-05-23 11:53:22 +02:00
3cc77f4868 bugfixes 2016-05-23 11:24:01 +02:00
73d71a61d5 restructuring for parallization 2016-05-23 11:23:23 +02:00
1f47f3dd85 parallization of picking algorithm 2016-05-23 11:22:39 +02:00
392a556ac4 [restructure] Wall-E wasting time 2016-05-20 14:46:10 +02:00
08df7c3304 [edit] decreased unwanted verbosity 2016-05-20 10:11:40 +02:00
54b557930f [edit] inserted verbosity option to control the amount of output 2016-05-20 09:58:10 +02:00
sebastianp
9b7db91037 [task] started to implement data processing step for checking corrupted GSE files 2016-05-19 15:35:11 +02:00
db17cb4f8d code cleanup 2016-05-19 14:24:48 +02:00
4edd5f8e52 code cleanup 2016-05-19 11:21:24 +02:00
5f740783f0 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-05-19 11:20:47 +02:00
3138bbfa93 code cleanup and commenting 2016-05-19 11:20:37 +02:00
7c5aff0a27 [fix] correctly formatting the timestring now 2016-05-19 11:16:28 +02:00
731acc7117 [double-checked] code has been double checked before running on data 2016-05-19 10:51:37 +02:00
sebastianp
521de9ee89 Merge branch 'master' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot 2016-05-19 10:25:19 +02:00
dc5d76efb8 [fix] fixing docstring problem caused by merge of conflicting files 2016-05-18 13:17:05 +02:00
eb5f028a47 Merge branch 'develop'
Conflicts:
	pylot/core/io/phases.py
2016-05-18 13:02:51 +02:00
c315b917b8 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-05-18 12:55:43 +02:00
e62ff9d68c [fix] returning variables now, docstrings corrected to be able to use single quotes in docstrings 2016-05-18 12:55:04 +02:00
dbaead4754 code cleanup + commenting 2016-05-18 12:00:45 +02:00
30e8f0c96a code cleanup and commenting 2016-05-17 16:19:44 +02:00
ca77b06293 Code cleanup 2016-05-17 11:53:32 +02:00
sebastianp
c84632fb27 Merge remote-tracking branch 'origin/master'
Conflicts:
	pylot/core/util/dataprocessing.py
2016-05-13 14:57:27 +02:00
4a836fd1f7 [task] started to implement data processing step for checking corrupted GSE files 2016-05-13 14:56:42 +02:00
019b801603 code rearrange and minor processing changes 2016-05-12 14:01:18 +02:00
f09af16120 [task] started to implement data processing step for checking corrupted GSE files 2016-05-12 10:08:29 +02:00
a2b0854345 Merged branch develop into master 2016-05-11 14:51:30 +02:00
79e429db8d [edit] rearrangement fastens up a bit 2016-05-11 14:50:52 +02:00
Ludger Küperkoch
2bb2ddbc7b Cleaned input file 2016-05-11 13:44:26 +02:00
Ludger Küperkoch
1cb86d7b47 Cleaned input file, additional parameter apverbose 2016-05-11 13:42:51 +02:00
8a79addb4e Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-05-11 12:02:43 +02:00
67c11558f3 Merged branch develop into master 2016-05-11 12:02:37 +02:00
46c152b7a1 improved speed on writing to file (write instead of writelines) 2016-05-11 12:02:09 +02:00
f7e1247060 [fix] make all scripts executable
new script for pilot data base reassessmant
2016-05-11 12:01:10 +02:00
Ludger Küperkoch
c34fbe1228 Removed needless terminal output 2016-05-11 10:51:33 +02:00
Ludger Küperkoch
97ca69a07d Modified for controlling amount of terminal output using new input parameter apverbose 2016-05-11 09:54:33 +02:00
Ludger Küperkoch
366ac29481 Additional input parameter apverbose to control terminal output 2016-05-11 09:52:59 +02:00
f8807a7ea6 [edit] docstring added and returning the figure instead of showing the plot
additionally hide_labels is now defined only once before going into the loop
2016-05-11 09:49:19 +02:00
63ac0107d0 [edit] implemented a plotting method for pdf dictionaries 2016-05-11 06:01:26 +02:00
c7d7acd7e3 [edit] implemented loop over PILOT database for reassessment
additionally the output of reassess_pilot_event is more verbose now
2016-05-10 09:54:21 +02:00
3705eb567b [fix] overcome numerical instabilities
due to the usage of large absolute values (timestamp) on time axis the estimation of the expectation value gets instable
2016-05-09 12:06:47 +02:00
4480854ee5 [workaround] set minimum difference of mpp with lpp and epp
this workaround elevates the difference between the uncertainty-picks and the mpp to a minimum value of three samples (needed for a reasonable pdf represetation of the pick)
2016-05-06 12:04:27 +02:00
d8a764db31 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-05-04 10:22:06 +02:00
f58c5a5f9d merge correction 2016-05-04 10:21:39 +02:00
fd27a43110 fixing import problems 2016-05-03 15:09:51 +02:00
41991c5d81 [edit] further restructuring and bugfixing 2016-05-03 13:54:59 +02:00
a82c1d39c6 [fix] fixing obvious problems in advance 2016-05-03 09:35:31 +02:00
ecb3670aeb Merge branch 'master' into develop
Conflicts:
	scripts/pylot-reasses-pilot-event.py
2016-05-03 08:58:33 +02:00
210d39882d further development on the reassessment routines for PILOT data 2016-05-03 08:46:13 +02:00
ae0c08eeb2 Merge branch 'master' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot 2016-05-02 14:10:41 +02:00
8cb4f11bf8 [edit] implementing reassessment functions 2016-05-02 14:10:11 +02:00
ec42e1bd15 added first version of fmtomo_parallel script 2016-05-02 12:08:58 +02:00
dbe47690eb Merged branch develop into master 2016-05-02 11:31:17 +02:00
ddb1ad4a15 Resolved conflicts fmtomoUtils 2016-05-02 11:28:56 +02:00
Marcel Paffrath
f906211064 fmtomo2vtk merged with fmtomoUtils 2016-05-02 11:19:06 +02:00
edd8920d54 WALL-E --- Small robot, big job! Restructuring the code and preparing implementation of a re-assessment tool for PILOT phases. 2016-05-01 21:10:30 +02:00
72fa9e8feb [install] did some work on the implementation of an installation script 2016-04-29 11:50:28 +02:00
28fc226750 [update] update installation script in order to distribute current version 2016-04-28 15:20:46 +02:00
df44979337 [reorganize] some reorganization done to hand program to partner 2016-04-28 14:18:42 +02:00
37f9292c39 renamed class method 2016-04-28 14:03:32 +02:00
c489fad6ba [bugfix] comparison should not through an KeyError due to missing picks 2016-04-12 14:50:21 +02:00
416f4c7aa7 [bugfix] special method __nonzero__ should always return type bool 2016-04-12 14:48:57 +02:00
6181829ef6 [bugfix] make uncertainties from autoPyLoT may be corrupted
consequently there is minimum uncertainty gap between mpp and lpp/epp
2016-04-12 14:47:49 +02:00
4a9c02e1d1 [closes 195] in principle comparing automatic and manual picks works 2016-04-12 04:55:04 +02:00
9359338e81 [refs #195] make autoPyLoT export automatic picks in QuakeML format 2016-04-11 13:59:32 +02:00
9519372247 [bugfix] autopick accidently interchanged latest and earliest possible pick 2016-04-11 13:57:59 +02:00
2139674afa [bugfix] guessed that checking the same variable twice was not intended
instead of checking for mpickX's twice it was probably meant to check for lpickX's value
2016-04-11 12:39:46 +02:00
a9cd53886b [enhancement, task] there was no routine to read obs pick files available; default values for autopicking should be the same for all parts of PyLoT, thus defaults should be defined only once 2016-04-11 05:47:38 +02:00
2a8729c39b [refs #195] changed some default parameters for plotting the histograms 2016-04-08 14:35:20 +02:00
f15e27e81d [refs #195] hitsogram plots implemented for expectation and standard deviation 2016-04-07 16:29:29 +02:00
b5345bb5d3 [refs #195] implementation of histogram plots 2016-04-07 15:47:11 +02:00
27e334609c [refs #195] plotting method for Comparison object implemented 2016-04-06 11:27:09 +02:00
5f9a9242d1 [refs #195] realized an object oriented implementation of comparison
comparing pdf represented picks should be easy, thus objects returning everything needed are implemented; histograms and other plots are planned next
2016-04-05 22:19:55 +02:00
a475b366d4 [adresses #195] comparison dictionaries can now be compiled from QuakeML files 2016-03-31 14:29:29 +02:00
5fcaddb028 [adresses #195] started to implement comparison function 2016-03-31 09:00:49 +02:00
1fecec1696 [adresses #195] read_data now working correctly on QuakeML data 2016-03-31 08:50:09 +02:00
bd2bad7367 [adresses #195] task related new function introduced 2016-03-30 15:25:06 +02:00
76788c0223 [refs #195] initial import of new interfaces module 2016-03-30 11:45:49 +02:00
7a712ca37c [fixes #194] automatic filtering works also when switching phase selection
Switching the phase selection without picking the last onset did not filter according to the selected phase filter parameter. With this revision a displaying bug showing muliple '( filtered, filtered, filtered)' statements due to switching the phases is fixed as well.
2016-03-30 09:12:56 +02:00
d7cfd0d176 WALL-E: Einmal aufräumen und zurück! 2016-03-30 08:14:58 +02:00
a2640e3126 reformatting code 2016-03-30 07:00:31 +02:00
320b7b7219 [bugfix] pick blocker was not reset after phase was picked 2016-03-29 14:42:51 +02:00
2d66248cf9 [fixes #172] now also in overview all horizontals are plotted 2016-03-29 14:06:57 +02:00
4409a9c3ce [fixes #179] plotting of picks preserved after filtering 2016-03-29 12:09:26 +02:00
fef1a95391 [fixes #193] fixed bug introduced by component mapping
fixes a bug which was introduced in revision b8d680f54f
2016-03-29 11:40:16 +02:00
7b22bce2b0 [close #190] pick handling is now consistent for manual and automatic picks
manual and automatic picks are now treated in the same way but separately; implementation of comparison routines should be much more easy now
2016-03-29 11:26:08 +02:00
14048d6784 [edit] reformat string only if certain prefix is found 2016-03-29 11:00:31 +02:00
f075970f5e [adresses #190] autopicks in QtPyLoT can now also be updated
this change is necessary to be able to load autopickdata from storage independently
2016-03-29 10:30:45 +02:00
e164b1f168 Merged branch develop into 190 2016-03-29 08:47:20 +02:00
040c21dc13 [adresses #190] read information on the picker if available 2016-03-29 08:47:03 +02:00
4c5b58dbf1 [addresses #190, closes #192] handles unknown picker information
pick tag is set to 'Unknown' for loaded data that do not provide picker information when saved with PyLoT prior to revision 06576586c6
2016-03-29 08:24:32 +02:00
cee48146d0 [closes #178] makes use of the new status variable pick_block introduced as filter_block to solve #174 2016-03-29 07:58:20 +02:00
a1c79b554a Merge branch '174' into develop 2016-03-25 05:08:09 +01:00
65df2c7dde [closes #174] now the filter button in the picking window is no toggle button anymore and has no effect when in picking mode 2016-03-25 05:07:18 +01:00
c1c2aa4b7c [bugfix] value has to be returned in either case 2016-03-23 12:01:46 +01:00
06576586c6 [edit] make use of new pick tag
find out the person's name for tagging the picks set within PyLoT
2016-03-23 12:00:54 +01:00
722e21f582 [edit] avoid catching unspecified Exceptions
specific Exception catchment is better than general; additionally errors are raised for better debugging control
2016-03-23 11:57:07 +01:00
31d56cb287 [edit] introducing picker tag
New tag introduced to distinguish between pickers (either person's or programs name)
2016-03-23 11:48:58 +01:00
438b2706b7 [edit] removed calls to names marked as deprecated
with the last update of obspy some modules and functions names will be removed in future releases and consequently have been marked as deprecated; PyLoT now uses the desired names
2016-03-22 10:52:20 +01:00
cad6ed2274 [edit] exit if no waveform files are selected
PyLoT will only start if waveformfiles are selected
2016-03-22 10:49:06 +01:00
7225da87db [edit] reformatted code
Code indentation and PEP 8 violations automatically reduced with IDE tool
2016-03-22 08:42:09 +01:00
fa6626d62a [edit] catch reference before assignment
charactersitic function variable might be referenced before they are assigned; now they are assigned as None and calls to assert help finding wrong definitions if not assigned correctly within if clause
2016-03-21 12:06:11 +01:00
d954c3bbe8 [edit] restructuring autopicking module
renamed several function and classes, moved script files to scripts
2016-03-21 11:14:16 +01:00
b8d680f54f 189 Channels shown in wrong order. 2016-03-18 15:35:12 +01:00
15080f1699 [fix] fixed the nonzero test for pdf definition that all values have to be greater than zero and the integration over the whole interval has to evaluate to 1 with given precision 2016-03-09 11:21:33 +01:00
a5fe838514 added a str representation for the pdf class 2016-03-09 06:22:26 +01:00
f3467221cc finished implementation of summation of two independent variables represented by a pdf 2016-03-09 06:21:48 +01:00
2de79eac77 [change] moved recursive function for broadcasting pdf in a new shape into the class' body 2016-03-09 06:19:41 +01:00
c651b5ca78 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-03-08 20:36:12 +01:00
db4dd47daa [bugfixes] made some fixes to the subtraction method; in some cases ValueErrors are raised which are now handled but raised as Warning 2016-03-08 20:35:56 +01:00
e6f404a219 [closes #188] picks are set correctly now
earliest and latest possible picks are now derived from the actually displayed (in some cases filtered) waveforms
2016-03-07 10:15:42 +01:00
9f7f00314a [closes #187] pdf methods for some values like expectation and plotting ready 2016-03-04 14:13:44 +01:00
e6b5848f36 [add] untested implementations of standard deviation and probability value determination methods to class ProbabilityDensityFunction 2016-03-04 06:27:11 +01:00
78a5a5117a [add] new function added which return the index of the value of an array which is nearest to a desired value 2016-03-04 06:25:17 +01:00
4606f84809 [new] implementing comparison methods into pdf class 2016-03-03 15:14:17 +01:00
18785edf68 [fixes #186] filteroptions are only parsed if they are not NoneType 2016-03-03 14:02:49 +01:00
6f26ab07b7 [closes #184] saving picks works
saving now works without openening the filename prompt  twice or more often
2016-03-03 13:17:10 +01:00
c2168dbef3 [fixes #185] filtering of waveforms now conserved for picking 2016-03-03 11:12:27 +01:00
6108519acb [closes #182]
noiselevel now determined as the maximum of the absolute values of the noisewindow (holds also for signallevel); now the SNR and noiselevel is determined from the filtered waveform
2016-03-03 10:40:20 +01:00
848d11270b [fixes #181] now picking on horizontal components 1, 2 and N,E is possible 2016-03-02 13:37:40 +01:00
827a0da210 [fix] imports to obspy's read_events changed due to deprecated naming of function readEvents 2016-03-02 13:36:18 +01:00
c14650d33c [change] changed filter settings for local seismic data 2016-03-02 13:34:24 +01:00
c09a3271f9 make use of new option to getSNR 2016-03-02 11:08:14 +01:00
8c7a2af2db [fix] do not try to proceed if no picks are available 2016-03-02 11:07:32 +01:00
5e26519d66 [fix] avoid usage of hardly programmed indices 2016-03-02 11:06:31 +01:00
ddc682de95 [bugfix] selected file filter should be evaluated 2016-03-02 11:04:11 +01:00
96ea0d7ac3 improved readability of formula 2016-03-01 12:26:56 +01:00
e7b454bae8 [edit] just style related changes 2016-02-16 08:47:42 +01:00
3ee221b8eb [edit] implementation of difference of two independent random variable as the correlation of the PDFs completed; summation pending due to unclear axis determination of the resultant PDF 2016-02-15 20:15:54 +01:00
f2cad2e151 [edit] changed implementation name from findlimits to commonlimits which is probably more intuitive for the user along with a new signature using other instead of giving the limits in advance 2016-02-15 20:15:54 +01:00
d5e16d64da [edit] implemented method to derive limits for the special methods for addition and subtraction 2016-02-15 20:15:54 +01:00
2956f3b733 [edit] subclassing has been substituted by classmethod fromPick opportunity for creating a PDF object 2016-02-15 20:15:54 +01:00
e7a5e388f6 [edit] implementation of probability density function interface ready for testing 2016-02-15 20:15:54 +01:00
303a5f9cf0 [edit] probability density function superclass implemented due to the different character of these functions 2016-02-15 20:15:54 +01:00
ada9f4e780 [new] started implementation of probability density representation routines 2016-02-15 20:15:54 +01:00
sebastianp
0d0b43103b editing of Docstring 2016-02-03 14:49:16 +01:00
sebastianp
8f6f6cf8b6 completition of Docstring 2016-02-03 14:35:07 +01:00
Marcel Paffrath
8893a8ec6b statistic plots added 2016-02-01 11:18:42 +01:00
5170a0b1c6 [new] implementation of a probability density function representation of the pick (untested) 2016-02-01 06:13:17 +01:00
70f2761003 [reformat] reformatted indentation 2016-02-01 06:11:25 +01:00
3cbb6138e0 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-01-29 07:24:45 +01:00
f01c6109a8 [reformat] reformatted imports and parentheses indentation 2016-01-29 07:21:17 +01:00
Marcel Paffrath
ce705888f1 bugfixes and other not further specified changes 2016-01-19 10:31:06 +01:00
Marcel Paffrath
7edee1266a Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop
Conflicts:
	pylot/core/active/activeSeismoPick.py
2016-01-19 10:29:45 +01:00
Marcel Paffrath
acd9e942f9 improved SNR plots 2016-01-04 15:47:46 +01:00
Marcel Paffrath
3c1be950b9 removed most of the folm = 0.6 default values 2016-01-04 15:47:05 +01:00
Marcel Paffrath
3b4e1dcd1e added changes for manual picks 2016-01-04 15:46:24 +01:00
Ludger Küperkoch
5f0e59d95a Additional comments to make the code clearer. 2015-12-14 09:34:56 +01:00
Ludger Küperkoch
f6930618f2 calcMoMw: modified for calculating Mo and Mw using metric units. calcsourcespec: modified correction for attenutation using an exponential including Q(f). 2015-12-11 15:53:35 +01:00
Marcel Paffrath
0b1f16866b added plotHist 2015-12-11 11:08:06 +01:00
Ludger Küperkoch
f29d285910 Relaxed some quality-control parameters in order to increase quantity of picks. 2015-12-10 15:52:30 +01:00
Ludger Küperkoch
534718aadf Improved figure caption, shows vertical trace including station ID and channel even if no or only bad pick is available. 2015-12-10 15:50:36 +01:00
Ludger Küperkoch
d2b39ff078 Improved some print output, bugfix: avoids getting negative value for pstart when iterative re-picking. 2015-12-10 14:30:38 +01:00
44f19f02d8 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-12-10 13:17:23 +01:00
537b18774a [fix] fixed multiple calls to print by print one formatted message 2015-12-10 13:16:44 +01:00
Ludger Küperkoch
2bb99a6f2e bugfix: Even if no location is possible, autoPyLoT can handle finalpicks. 2015-12-10 12:02:32 +01:00
Marcel Paffrath
17c3dd4f69 plot2dttc textposition changes etc 2015-12-09 14:03:20 +01:00
Marcel Paffrath
29c14fb512 added plot2dttc mode to plotAllShots 2015-12-09 14:02:58 +01:00
Marcel Paffrath
943432dfb3 updated plot of 2d ttcs 2015-12-09 13:39:58 +01:00
Marcel Paffrath
a866bf5228 added methods for auto to manual comparisons 2015-12-09 12:01:41 +01:00
Marcel Paffrath
490ad0f0c2 bugfix: setParameters for shot not working, because survey needed parameters on init 2015-12-09 11:18:49 +01:00
Marcel Paffrath
ee16cef901 renaming 2015-12-08 13:50:19 +01:00
Marcel Paffrath
c9a75ca2d0 renaming 2015-12-08 13:50:08 +01:00
Marcel Paffrath
feab50af28 bugfixes + renaming 2015-12-08 13:49:47 +01:00
Marcel Paffrath
cb3f9804f9 implemented setting manual picks from file 2015-12-08 11:34:55 +01:00
Marcel Paffrath
cdf924e8c2 bugfix: earliest and latest pp not changed when repicking manually 2015-12-07 11:47:57 +01:00
Marcel Paffrath
5083c5a876 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-12-07 11:21:50 +01:00
Marcel Paffrath
1a9f68f741 bugfixes (minSNR was 1, problem in for loop with break?) 2015-12-07 11:21:11 +01:00
Marcel Paffrath
d5b277db99 implemented cleanBySPE and plotSPE 2015-12-07 11:20:30 +01:00
Ludger Küperkoch
0d18e35f6a New parameter Qp to correct for attenuation, i.e. frequency dependent Q value. 2015-12-04 16:08:49 +01:00
Ludger Küperkoch
1312d06ccf Corrected for modified class MoMw, which needs additional parameter Qp. 2015-12-04 16:07:36 +01:00
Ludger Küperkoch
0c7c5645b6 Implemented correction for attenuation in calcsourcespek. 2015-12-04 16:05:53 +01:00
Ludger Küperkoch
28276d1f8c Set default path for autoPyLoT_local.in to /home/user/.pylot using os.expanduser("~"). 2015-12-04 14:39:17 +01:00
sebastianp
686002567c Merge remote-tracking branch 'origin/develop' into develop 2015-12-03 17:20:43 +01:00
sebastianp
74794061f6 alphabetical sorting of functions and editing docstring 2015-12-03 17:20:05 +01:00
Ludger Küperkoch
7c490d5e1f Little changes. 2015-12-03 16:15:26 +01:00
Ludger Küperkoch
5f8018a8dc Modified some parameters. 2015-12-03 16:02:41 +01:00
79829706be Merge commit 'a9d5f74a032bfa63ac167f5cc4c1d8772126a3ff' into develop
Conflicts:
	pylot/core/util/utils.py
2015-12-03 15:28:34 +01:00
0d8324a4ae Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-12-03 15:25:24 +01:00
2b90c73f9f changed quotes for consistency 2015-12-03 15:25:04 +01:00
Ludger Küperkoch
67e37fe530 Initialization of picks dictionary including Mo, Mw, w0 and fc. 2015-12-03 14:59:39 +01:00
Ludger Küperkoch
d6ae82e070 Included rotation of seismograms using Obspys stream.rotation for a more reliable estimation of source spectra. 2015-12-03 14:57:44 +01:00
Ludger Küperkoch
77ad274f8f Some bugs fixed, implemented calculation of network moment magnitude. 2015-12-03 14:55:07 +01:00
Marcel Paffrath
df5f0f41b4 comment 2015-12-03 12:21:18 +01:00
Marcel Paffrath
69d3f43db9 code commenting 2015-12-03 12:19:34 +01:00
1a5eed5559 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop
Conflicts:
	pylot/core/pick/autopick.py
2015-12-02 22:05:47 +01:00
f3ba22b235 [new] introduced verbose flag to suppress to much output during auto picking (slows down especially to GUI triggered auto picking process) 2015-12-02 19:17:04 +01:00
Ludger Küperkoch
c227b6499e Modified for extended class MoMw of object magntitude. MoMw returns pick dictionary containing individual corner frequencies, w0-values, seismic moments and moment magnitudes. 2015-12-02 10:15:05 +01:00
Ludger Küperkoch
46cbe96a43 Extended class MoMw for calculating source spectrum. New functions calcsourcespec, calcMoMw and run_calcMoMw implemented. 2015-12-02 10:12:37 +01:00
Ludger Küperkoch
40f38ebf84 Removed calculation of source spectrum from autopick, as azimuth and angle of incidence are necessary and thus a location is needed for a reliable calculation of the source spectrum. Source spectrum is now calculated after locating the event. 2015-12-02 10:09:17 +01:00
Ludger Küperkoch
30970b8451 Modified class MoMw: new functio run_calcMoMw using subfunction calcMoMw, gets hypocentral distances from NLLoc-location file. Returns modified pick dictionary including individual seismic moments and corresponding moment magnitudes. 2015-12-01 15:41:37 +01:00
Ludger Küperkoch
c3d7581f94 Implemented modified class MoMw of object magnitude. 2015-12-01 15:39:28 +01:00
sebastianp
a9d5f74a03 minor change at createResourceID 2015-12-01 12:30:24 +01:00
sebastianp
d4bb265c37 first time commiting, please rectify and tell me what is wrong. 2015-12-01 11:12:45 +01:00
ed7a323c50 [new] reverting stdout redirection after auto picking is done; added method finalizeAutoPick for purposes to be done after the auto picking thread has finished 2015-12-01 05:04:26 +01:00
Ludger Küperkoch
41a495371d Changed average radiation pattern for P-waves to exact definition in Aki and Richards, 1980. 2015-11-30 16:45:29 +01:00
Ludger Küperkoch
f7a84233bf Changed some parameters, esspecially for seismic moment estimation. 2015-11-30 16:38:09 +01:00
Ludger Küperkoch
2e8926ea5b Implemented new class M0Mw of object magnitude. 2015-11-30 16:37:28 +01:00
Ludger Küperkoch
23b9fda5e4 New class M0Mw for calculating seismic moment and moment magnitude. 2015-11-30 16:35:58 +01:00
Ludger Küperkoch
9f93c25aa8 Put additional parameters w0 and fc to picks dictionary. 2015-11-30 14:41:59 +01:00
Ludger Küperkoch
466e0020a6 w0fc: Plateau omega0 and corner frequency are are now taken as the median of previously calculated values from different functions synthsourcespek and fitSourceModel. 2015-11-30 13:27:08 +01:00
Ludger Küperkoch
957d2ccfe7 New function to derive plateau and corner frequency of observed source spectrum. Additional to scipys implicit function curve_fit, as seismic moment is sensitive to estimated plateau of source spectrum, which in turn is sensitivec to estimated corner frequency. 2015-11-30 13:14:23 +01:00
d29c57ab4b [bugfix] AutoPickLog is now directly attached to the MainWindow on the LeftDockWidgetArea and autoscrolls to the bottom 2015-11-30 09:55:33 +01:00
5f8569c7d9 [bugfix] now catching all cases 2015-11-30 09:53:55 +01:00
d67556796c [bugfix] plotting autopicks has to be done within thread because code outside the threads scope is executed in parallel 2015-11-30 09:52:31 +01:00
3f91fddd3e [new] added attribute autopicks to and modified corresponding handling methods in class MainWindow 2015-11-30 09:50:47 +01:00
ae21c9a149 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-26 05:18:10 +01:00
50a5586355 [bugfix] autoPickListWidget is directly attached to the main window and autoScrolls to the latest entry 2015-11-26 05:17:26 +01:00
Ludger Küperkoch
43646e8e63 Marginal changes. 2015-11-24 14:23:18 +01:00
Ludger Küperkoch
021cb873ae Optimized some parameters. 2015-11-24 13:37:47 +01:00
Ludger Küperkoch
7e76b30460 Marginal changes. 2015-11-24 13:37:11 +01:00
Ludger Küperkoch
7f05568f65 Bugfix: Captured error, if earllatepicker returns None for lpickS1/2, epickS1/2, and Serror1/2. 2015-11-24 13:35:23 +01:00
Ludger Küperkoch
ab8775c58d PragPicker: Upweight of left pick. 2015-11-24 13:31:14 +01:00
Marcel Paffrath
a2eb5868a7 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-24 12:38:16 +01:00
Marcel Paffrath
b310062687 changed SNR threshold (scaled by exp function) 2015-11-24 12:37:53 +01:00
f1cee0cbfd [fixes #168] now any TypeError is handled by try ... except clause 2015-11-24 11:30:58 +01:00
7a9c44198f [bugfix] currently set data structure now selected in QComboBox widget 2015-11-24 11:05:19 +01:00
69efd4d411 finished implementation of location tool tab in properties window (used to modify settings from the GUI) 2015-11-24 10:27:35 +01:00
Ludger Küperkoch
0a1d177d60 Additional picking parameters to be temporary modified for iterative picking. 2015-11-23 16:40:24 +01:00
Ludger Küperkoch
e5bddab2be Finished iterative picking: If bad picks are found, autoPyLoT iteratively re-picks these traces with modified picking parameters at maximum three times, if the former runs still leave bad picks. 2015-11-23 16:38:52 +01:00
Ludger Küperkoch
574c26c3ec Modified some parameters. 2015-11-23 16:36:43 +01:00
cffca858aa Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-23 15:07:50 +01:00
8a4ac82c3a [new] added a new location tools tab to the properties widget (not working yet) 2015-11-23 15:07:43 +01:00
Marcel Paffrath
fdd7ff003b [bugfix] SNR minimum for setFittedSNR is now 1 2015-11-23 13:01:36 +01:00
4fdcf1cf60 [bugsearch] trying to fix UnpicklingError by clearing GUI element containing attributes 2015-11-23 12:11:04 +01:00
1f1d0aa118 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-23 11:41:14 +01:00
851da7eb15 re-design of the properties tabbed window 2015-11-23 11:41:04 +01:00
Marcel Paffrath
56a89ae386 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-23 11:38:36 +01:00
Marcel Paffrath
bd0d96c2ff changed input for generateFMTOMOinpu 2015-11-23 11:35:15 +01:00
Ludger Küperkoch
8173e44b04 Matginal changes. 2015-11-20 16:02:54 +01:00
Ludger Küperkoch
8a16643bd8 Marginal changes. 2015-11-20 16:02:25 +01:00
Ludger Küperkoch
67ac580778 Suppressed print output in setParam. 2015-11-20 15:53:25 +01:00
Ludger Küperkoch
8197d8f3d5 Some input parameters changed from integers to floats. 2015-11-20 15:52:14 +01:00
Ludger Küperkoch
07bbc2926e New function iteratepicker for iterative picking. 2015-11-20 15:51:22 +01:00
Ludger Küperkoch
734eca30db Implementation of new function iteratepicker of module autopick. 2015-11-20 15:49:34 +01:00
386131e9f3 started implementation of NLLoc properties selection into manualPyLoT; new utility routine to find indices throughout QComboBox' items 2015-11-20 09:06:52 +01:00
Marcel Paffrath
7f85ed99c0 bugfix textoutput 2015-11-19 11:38:54 +01:00
Marcel Paffrath
82089a6490 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-18 17:22:51 +01:00
Marcel Paffrath
657472f576 added shifting of SNR threshold along y axis 2015-11-18 17:22:18 +01:00
Marcel Paffrath
0a00aab3ba changed pickerror to SPE for exportFMTOMO
minor additions
2015-11-18 17:21:29 +01:00
Marcel Paffrath
abc45a4c8f bugfix: getPickError (/2)
added earliest and latest to plot_traces
2015-11-18 17:20:46 +01:00
Ludger Küperkoch
96fcc2470b Modified pick dictionary: writes dummy onset times (start of seismic trace) into dictionary in order to derive theoretical onset times later needed for iterative picking. 2015-11-18 11:12:53 +01:00
Ludger Küperkoch
e1c2629f97 Modified writephases for NLLoc: writes dummy onset times (start of seismic trace) into phase file in order to derive theoretical onset times later needed for iterative picking. 2015-11-18 11:11:10 +01:00
Ludger Küperkoch
8592557613 Minor changes 2015-11-18 10:28:46 +01:00
Ludger Küperkoch
8a84342883 Implementation of module /loc/nll finished, running for single and multiple event processing. 2015-11-18 10:27:42 +01:00
c51ba1bd56 [bugfix] trying to figure out cause of segmentation fault 2015-11-18 09:30:32 +01:00
Ludger Küperkoch
1d6d786dbb Modyfied picksExport: additional parameter locrt to choose location routine, i.e. phase-file format. 2015-11-17 17:05:36 +01:00
Ludger Küperkoch
19e60e5f0c Replaced writephases with new function picskExport from module nll. 2015-11-17 17:03:59 +01:00
Marcel Paffrath
f192a72ad7 slimmed down the code 2015-11-17 10:29:32 +01:00
Marcel Paffrath
b700940f54 bugfix: seismicshot dictionary for repick button was overwritten 2015-11-17 10:28:18 +01:00
Marcel Paffrath
2e45456a6e Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-16 12:12:11 +01:00
Marcel Paffrath
160ee81c44 improved and fixed delete button 2015-11-16 12:11:42 +01:00
Marcel Paffrath
647fddb904 bugfix: could not highlight pick after it was deleted in plot_traces 2015-11-16 12:09:00 +01:00
Marcel Paffrath
0f1427a9f0 first try of shot.plot_traces delete button 2015-11-16 11:50:09 +01:00
Marcel Paffrath
78d61a9822 added writeVTK files 2015-11-16 11:49:57 +01:00
Marcel Paffrath
0a0ab4bfa9 added checkerboard to fmtomo utils and added different checkerboard ampl. functions 2015-11-16 11:48:45 +01:00
ed17272999 [bugfix] attribute was unset before using property setter 2015-11-14 11:46:46 +01:00
bb3e068232 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-13 14:05:39 +01:00
69011f13ac [new] started to incorporate NLLoc into manualPyLoT 2015-11-13 14:05:29 +01:00
Marcel Paffrath
165419cb88 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-12 19:09:08 +01:00
Marcel Paffrath
db3429e780 improved text output and fixed some bugs 2015-11-12 19:08:33 +01:00
Ludger Küperkoch
6177c6292c Cosmetics, focused on python-3 compatibility of print statements. 2015-11-12 17:21:04 +01:00
Marcel Paffrath
d53e4b7c0c implemented a function that generates all grids for FMTOMO 2015-11-12 13:24:48 +01:00
Marcel Paffrath
d611b8606e finished generatePropgrid, changed getThetaPhiFromArray output to the right order 2015-11-12 11:25:51 +01:00
d933c30148 [bugfix] now the whole line containing LOCFILES is replaced with a modified string using the getPatternLine utility function 2015-11-12 09:25:33 +01:00
1f383579b4 [new] added a new utility function to find a pattern in a text file and returning the particular line as a string or None if not found 2015-11-12 09:23:28 +01:00
Ludger Küperkoch
a1fbea98be Debuged: checks minimum number of zero crossings before calculating source spectrum from P pulse. 2015-11-11 16:11:25 +01:00
Marcel Paffrath
39a12bd1d1 bugfix: rays2vtk last point not displayed 2015-11-11 15:45:56 +01:00
Ludger Küperkoch
dc088509d4 For multiple event processing eventID has to be derived out of event string. Uses module string. 2015-11-11 15:45:07 +01:00
Marcel Paffrath
54cb6d2f9a added interfaces generation for FMTOMO from SeisArray
still working on propgrid generation for FMTOMO from SeisArray
2015-11-11 15:36:43 +01:00
Ludger Küperkoch
b5b7453214 Debuged writephases: if first motion (fm) is None, ? is written to NLLoc-phase file. 2015-11-11 15:09:50 +01:00
Ludger Küperkoch
2ea2db0791 Debuged: Calculates real onset times for pick dictionary only, if earliest and latest possible pick are not None. 2015-11-11 14:53:50 +01:00
Ludger Küperkoch
c01c88b657 earllatepicker: take half wavelength for getting earliest possible pick as suggested by Diehl et al.. 2015-11-11 14:51:14 +01:00
Ludger Küperkoch
cd26d85f7c Debuged: Checks additionally for component 3 if component Z not available. 2015-11-11 14:10:44 +01:00
Ludger Küperkoch
7ed1ad2983 Debuged indentation error at lines 341 to 345. 2015-11-11 14:04:06 +01:00
Ludger Küperkoch
4f67e3e31a Debuged: Checks additionally for component 3 if component Z not available. 2015-11-11 13:58:25 +01:00
Marcel Paffrath
02dbca06f2 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-09 16:12:45 +01:00
Marcel Paffrath
7aedc35c16 first implementation of a checkerboard modification for a given vgrids.in file 2015-11-09 16:12:12 +01:00
8ae692db70 [new] added a locate button to the toolbar in the GUI (not working yet) 2015-11-09 08:53:26 +01:00
9c7fbc4725 [new] introduced new attribute loc in order to control localization relevant GUI elements depending on the number of available phase onsets 2015-11-06 15:40:21 +01:00
21bb39d528 [new] preparing MainWindow for location button 2015-11-06 08:20:08 +01:00
Marcel Paffrath
2a15ec75d2 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-05 12:20:12 +01:00
Marcel Paffrath
c28e2bda2a added surface2VTK 2015-11-05 12:19:56 +01:00
06337b4d66 [bugsearch] tried to figure out why topography correction did not work for fmtomo model output 2015-11-05 12:16:08 +01:00
Marcel Paffrath
5d378f9f0f Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-05 10:14:34 +01:00
Marcel Paffrath
f2fc5e5071 working on implementing of gradients for different layers 2015-11-05 10:13:04 +01:00
5ee85d89a3 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-05 09:17:29 +01:00
afb7a189ad [new] preparing new modules for location routines planned to be implemented 2015-11-05 09:17:20 +01:00
0f8b228931 [new] module "nll" containing utility function to handle NonLinLoc input and output as well as execution of the external program from python 2015-11-05 09:16:11 +01:00
d69db63132 [new] started to implement a new package containing modules for location purposes featuring different external location programs like NonLinLoc 2015-11-05 09:14:36 +01:00
Ludger Küperkoch
d74aeb237c Implemented phase writing in multiple event processing mode. 2015-11-05 08:51:50 +01:00
Ludger Küperkoch
686395defc Marginal changes 2015-11-05 08:49:44 +01:00
Ludger Küperkoch
f738160a8b Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop
Conflicts:
	autoPyLoT.py
2015-11-05 08:47:06 +01:00
Ludger Küperkoch
3fa4a31978 Extended function writephases for writing phases to HYPO71-input phase file. 2015-11-04 16:53:03 +01:00
Ludger Küperkoch
b8c26a6588 Implemented extended function writephases for writing phases to HYPO71-input phase file. 2015-11-04 16:52:39 +01:00
223902f2d4 reformatted the file to avoid usage of tabs and spaces and made a more pythonic splash message than multiple calls to print 2015-11-04 13:11:48 +01:00
Marcel Paffrath
d8a59ac81d bugfix: not yet done: problem with cusioning around topography 2015-11-04 10:13:52 +01:00
Marcel Paffrath
dc4d19ba88 bugfixes: formula for gradients in multiple layers for vgrid corrected, fixed issue with integer division that would lead to a wrong spacing 2015-11-04 10:04:05 +01:00
Marcel Paffrath
c5fc9ee89c Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-03 10:31:18 +01:00
Marcel Paffrath
c28641d629 changed plot traces for presentation (SNR, _drawStream etc.) 2015-11-03 10:29:09 +01:00
Marcel Paffrath
1c08152e65 vkt file "rel" changed to changes in percent 2015-11-03 10:27:06 +01:00
Marcel Paffrath
bcc6c8a73d enabled use of parameter file "mygrid.in" for generation of a starting model, prepared generation of vgrid model from array dimensions 2015-11-03 10:25:52 +01:00
a31e1a21f0 [bugfix] now filtering in the main window works; filter parameters are not stored -> has to be checked again 2015-10-31 00:07:24 +01:00
Marcel Paffrath
1b95ed0da7 relative velocities in percent 2015-10-30 12:37:41 +01:00
Marcel Paffrath
422a76012e vert. exag for surface plot 2015-10-30 12:00:03 +01:00
Marcel Paffrath
84f1639e59 added transformation to vgrids vtk with relative values using vgrids.in and vgridsref.in from FMTOMO 2015-10-30 11:56:45 +01:00
2201c3ea4d [modified] restructured filterWaveformData method in order to make the GUI more intuitive 2015-10-30 08:39:51 +01:00
a2047aa37b [disabled] P and S buttons preliminary removed due to unclear functionality 2015-10-30 08:37:00 +01:00
809b6bea61 make use of the new __nonzero__ method 2015-10-30 08:33:05 +01:00
0cd427486c [modified] updateUi method for the FilterOptionsDlg has been restructured and simplified 2015-10-30 06:16:00 +01:00
9b1f7541fd [added] isSorted function for iterables 2015-10-30 06:12:23 +01:00
43f9e6fe0d [added] __nonzero__ method for boolean tests on FilterOptions object 2015-10-30 06:11:15 +01:00
Ludger Küperkoch
94448297bb Marginal changes. 2015-10-28 09:13:30 +01:00
Ludger Küperkoch
fc319f7162 Introduced option for running autoPyLoT without location routine, if parameter nllocbin in autoPyLoT.in is not set. 2015-10-28 09:13:13 +01:00
Ludger Küperkoch
43d243e0a1 Same for multiple event processing. 2015-10-27 16:53:11 +01:00
Ludger Küperkoch
6676484a61 Debuged: Avoids writing multiple LOCFILES-command lines if same event is processed several times. 2015-10-27 16:51:42 +01:00
Ludger Küperkoch
d5b3a7d40f Marginal changes. 2015-10-27 16:26:40 +01:00
Ludger Küperkoch
f13dda9a0f Cosmetics. 2015-10-27 15:50:37 +01:00
Ludger Küperkoch
fbaaac8435 New parameters for default location routine NLLoc. 2015-10-27 15:26:55 +01:00
Ludger Küperkoch
f8cbdf7ff0 Implemented location routine NLLoc. 2015-10-27 15:26:25 +01:00
Ludger Küperkoch
55d3692f33 New parameters phasefile, locfile and ttpattern for auomatic modifying NLLoc-control file. 2015-10-27 10:03:40 +01:00
Ludger Küperkoch
a315384417 New function writephases.py for writing phases files for various kinds of location routines. Started with NLLoc-phase file. 2015-10-27 10:01:07 +01:00
Ludger Küperkoch
7029c0b576 Implemted writephases.py. 2015-10-27 10:00:16 +01:00
Ludger Küperkoch
c0ca788c5c Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop
Conflicts:
	autoPyLoT.py
	pylot/core/analysis/magnitude.py
	pylot/core/pick/utils.py
2015-10-27 09:25:29 +01:00
Ludger Küperkoch
b96f81553d Implemented new function for writing phase files for various kinds of location tools. 2015-10-26 09:42:25 +01:00
Ludger Küperkoch
69a023e048 Introduced new function for writing phases files for various kinds of location tools. 2015-10-26 09:41:02 +01:00
Ludger Küperkoch
158da88523 Marginal changes only. 2015-10-26 09:40:07 +01:00
Marcel Paffrath
30680a7820 cosmetics for array plots (title, legend) 2015-10-22 10:54:24 +02:00
Marcel Paffrath
0223869df6 commit after recover of scripts from .pyc:
implementation of buttons for plotAllPicks/region object, printOutput to figure window, refreshing now with SNR, PE, SPE
2015-10-21 13:35:02 +02:00
Marcel Paffrath
eb873fd69f commit after recover of scripts from .pyc:
code cleanup after transfer of functions to survey methods
2015-10-21 13:33:47 +02:00
Marcel Paffrath
52e304b0af commit after recover of scripts from .pyc:
repick button for .plot_traces implemented
2015-10-21 13:33:11 +02:00
Marcel Paffrath
2b3e40b3b6 commit after recover of scripts from .pyc:
figure refreshing of plotAllPicks, cbar, survey.recover()
2015-10-21 13:30:55 +02:00
0064ff1889 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-10-20 12:02:01 +02:00
Marcel Paffrath
21ffbcabc8 deleted obsolete files 2015-10-20 10:52:05 +02:00
Marcel Paffrath
2dd36379a8 prepared application of stealth mode 2015-10-20 10:38:00 +02:00
Marcel Paffrath
195352a7ca merged 3 files
Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop

Conflicts:
	pylot/core/active/activeSeismoPick.py
	pylot/core/active/seismicshot.py
	pylot/core/active/surveyPlotTools.py
2015-10-19 13:15:28 +02:00
0a7b02c04a general clean-up 2.0 even more checks made and issues resolved 2015-10-19 11:25:15 +02:00
Marcel Paffrath
793e09910c *** empty log message *** 2015-10-19 10:34:45 +02:00
Marcel Paffrath
4498c72c90 repick button for plot_traces 2015-10-19 10:33:51 +02:00
0fa701a878 general code clean-up 2015-10-19 05:32:10 +02:00
b49206407a Merge using remote to resolve conflicts 2015-10-18 21:23:09 +02:00
Marcel Paffrath
d78b0f1cff added polygon selection!! 2015-10-13 18:41:55 +02:00
Marcel Paffrath
07395802b7 minor changes (plotAllPicks: inkByVal) 2015-10-12 15:13:08 +02:00
Marcel Paffrath
ddbfb03f27 *** empty log message *** 2015-10-12 15:10:53 +02:00
Marcel Paffrath
cdd33d7e2f improvements, refreshFigure() now possible and done automatically after deleting of picks 2015-10-12 14:40:29 +02:00
Marcel Paffrath
34abad46e2 refresh plot for plotAllPicks by replotting 2015-10-12 14:39:40 +02:00
Marcel Paffrath
a19cdc4fee implied stealth mode 2015-10-12 13:00:09 +02:00
Marcel Paffrath
0adc890aef implied stealth mode to suppress huge amounts of text output 2015-10-12 12:59:53 +02:00
Marcel Paffrath
5bb50d5be4 added captions for shotnumbers in plotArray2D 2015-10-08 12:16:03 +02:00
Marcel Paffrath
8e7b2e5b8a removed pick_backup. implied flag for each pick instead 2015-10-07 14:53:10 +02:00
Marcel Paffrath
c71e28ecb7 shots no longer None if they are removed, but flag = 0 2015-10-07 14:51:20 +02:00
Marcel Paffrath
09f0cd3e71 shots no longer None if they are deleted, but flag = 0 2015-10-07 14:51:00 +02:00
Marcel Paffrath
cfbcc9d362 bugfix: if invalid ray is generated by FMTOMO it will be skipped 2015-10-06 11:42:33 +02:00
4109696800 meet style conventions 2015-10-02 06:06:26 +02:00
Marcel Paffrath
7120a20499 changed vtk file structure for vgrids, making it way faster and smaller and enabling paraview to display surfaces instead of points 2015-10-01 17:30:57 +02:00
Marcel Paffrath
3d3cac7085 cosmetics 2015-10-01 17:21:18 +02:00
Marcel Paffrath
9faf42fd79 bugfix: import numpy missing 2015-10-01 17:20:01 +02:00
Marcel Paffrath
376d1cc6f8 name change 2015-10-01 13:14:44 +02:00
Marcel Paffrath
c58bb53002 output cosmetics 2015-10-01 11:33:39 +02:00
Marcel Paffrath
4399004277 cleaned up surveyUtils 2015-10-01 11:32:28 +02:00
Marcel Paffrath
3e7e693a66 changed structure: plot option -> survey method 2015-10-01 11:30:46 +02:00
Marcel Paffrath
2c1e9c63d8 changed structure: added plot option to survey methods 2015-10-01 11:30:16 +02:00
Marcel Paffrath
dd5523b2ac *** empty log message *** 2015-10-01 10:35:47 +02:00
Marcel Paffrath
e41b1436f9 *** empty log message *** 2015-09-30 14:32:08 +02:00
Marcel Paffrath
e78314461b *** empty log message *** 2015-09-30 14:31:55 +02:00
Marcel Paffrath
03eac54ced added new files to pylot active 2015-09-30 13:58:13 +02:00
Marcel Paffrath
2308695fa8 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-09-30 13:55:01 +02:00
Marcel Paffrath
3473ce732c changed structure -> all FMTOMO to vtk functions to one module 2015-09-30 13:06:51 +02:00
Ludger Küperkoch
708f0a1f1a Some cosmetics on DCfc of class magnitude. 2015-09-29 14:55:15 +02:00
Ludger Küperkoch
f4b905c2e6 Removed inserted plot command for debugging purposes. 2015-09-29 11:19:25 +02:00
Ludger Küperkoch
ce57f184e7 In order to calculate DC value and corner frequency of source spectrum a synthetic spectrum is calculated and optimized using scipys curve_fit. 2015-09-29 11:17:47 +02:00
Ludger Küperkoch
8035903fa5 Zero crossings are calculated to derive only P pulse for calculating source spectrum. 2015-09-29 11:15:51 +02:00
Marcel Paffrath
5b8e2da59e *** empty log message *** 2015-09-28 12:24:28 +02:00
Marcel Paffrath
48c889129a Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-09-28 12:22:09 +02:00
4bd92565b9 reformat code (fix indentation and python 3.x issues) 2015-09-28 10:57:48 +02:00
Marcel Paffrath
fd3d4cc476 -> import numpy 2015-09-28 10:23:41 +02:00
Marcel Paffrath
f7878cdb4a implemented vgrids2VTK to surveyUtils 2015-09-28 10:20:26 +02:00
3dc9bb3d06 some pick plotting issues solved; replotting main window if picks have been changed, otherwise just plot additional/deleted picks 2015-09-25 15:06:59 +02:00
33164d4d1f corrected for some python 3 compatibility issues; added a new delete picks button to the picking window 2015-09-25 09:03:59 +02:00
Marcel Paffrath
98df4db95d cosmetics 2015-09-24 10:14:39 +02:00
Ludger Küperkoch
b391f5e082 Modified class DCfc: calculation of fft bins after Bath. 2015-09-23 17:02:27 +02:00
Ludger Küperkoch
c790b4f353 Implemented new class DCfc. 2015-09-23 16:32:18 +02:00
Ludger Küperkoch
30ee81a39d New class DCfc of object Magnitude for calculating source spectrum and to derive DC value and corner frequency. 2015-09-23 16:31:48 +02:00
Marcel Paffrath
d38adb75b2 deleted import * from pylab 2015-09-23 14:11:24 +02:00
Marcel Paffrath
9d5b7ad5ae name change 2015-09-22 14:38:27 +02:00
Marcel Paffrath
19e4435497 name change 2015-09-22 14:36:19 +02:00
Marcel Paffrath
bb97df6179 name change 2015-09-22 14:35:04 +02:00
Marcel Paffrath
217db9bbdd [bugfix] updated EPick nan fix 2015-09-22 13:41:19 +02:00
844708bbac [hotfix] earllatepicker recursively modifies isignal to obtain zero-crossing also for low frequency onsets 2015-09-22 12:29:42 +02:00
Marcel Paffrath
dedf6eff00 Changed earllatepicker. If EPick = Nan, signal window is doubled. 2015-09-22 11:58:43 +02:00
130dc8db4e [bugfix] wrong functions import fixed 2015-09-22 10:31:37 +02:00
d1f1fb42f3 [fixes #176] event files are now opened and loaded correctly and picks are plotted in place 2015-09-21 08:48:29 +02:00
34d31a1aa8 Merge branch 'develop' 2015-09-18 09:54:43 +02:00
ff2b50f615 made some changes to make the code more idiomatic and renamed method convertPicks4PyLoT to updatePicks 2015-09-18 09:54:29 +02:00
2b42583999 debugged some code fragments while trying to solve the load event data problem 2015-09-17 17:55:40 +02:00
7a47594614 debugged some code fragments while trying to solve the load event data problem 2015-09-17 17:45:10 +02:00
Marcel Paffrath
26c958b421 initial import of new modules working on active seismic data 2015-09-17 11:09:30 +02:00
Marcel Paffrath
61c7e9f417 removed stashed changes 2015-09-17 11:07:22 +02:00
Marcel Paffrath
57a9444478 commiting changes to suppress output; necessary for fast calculation in active mode 2015-09-14 11:01:23 +02:00
f5fa4f4faf Python 3 compatibility 2015-09-07 10:03:12 +02:00
efd8f1f0c6 Merge branch 'develop' of ariadne:/data/git/pylot into 176 2015-09-05 09:46:05 +02:00
e9c4987ca0 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2015-09-05 09:41:52 +02:00
49cbfd92e5 Merge branch 'develop' of ariadne:/data/git/pylot into 176 2015-09-05 09:40:52 +02:00
Ludger Küperkoch
70b3f031f8 Optimized some parameters. 2015-09-04 15:29:04 +02:00
Ludger Küperkoch
5d8346b1ca Optimized some parameters. 2015-09-04 15:28:57 +02:00
Ludger Küperkoch
cfca52e576 Debuged slope determination [counts/s] within AICPicker. 2015-09-04 15:28:37 +02:00
4eef4d238b 176 open event failure 2015-09-04 15:01:59 +02:00
Ludger Küperkoch
ac7d239b40 Optimized parameter pstop, as this is a cruicial parameter for stable AIC-CF calculation. 2015-09-04 12:09:17 +02:00
Ludger Küperkoch
0753071cfb Removed import of scipy as this is no more necessary. 2015-09-04 11:23:59 +02:00
Ludger Küperkoch
254c745f25 Marginal changes. 2015-09-04 11:19:57 +02:00
Ludger Küperkoch
956e16fdca Modified parameter minsiglength for modified routine checksignallength. 2015-09-04 11:17:56 +02:00
Ludger Küperkoch
1001da728e Modified parameter minsiglength for modified routine checksignallength. 2015-09-04 11:17:46 +02:00
Ludger Küperkoch
23430c9d90 Modofied checksignallength: uses RMS trace of all components (if available) to check signal length. This avoids skipping of P pick, if P coda is very weak. If only vertical trace is available, rms of vertical trace is used instead with smaller required minimum signal length. 2015-09-04 11:16:34 +02:00
Ludger Küperkoch
de608798b9 Modified checking of signal length, uses RMS trace of all components now (if available). 2015-09-04 11:13:52 +02:00
Ludger Küperkoch
0dc1091078 restituteWFData: introduced return flag restflag to indicate whether restitution could be performed or not. 2015-09-04 11:12:25 +02:00
Ludger Küperkoch
ab1d27747a Some reformating. 2015-09-03 15:42:20 +02:00
Ludger Küperkoch
60b9f176f0 Cosmetics, changed print commands to keep compatibility to Python 3. 2015-09-03 14:55:25 +02:00
cc0b1e0a5b 176 open event failure 2015-09-03 13:21:46 +02:00
81b95e6a22 [addresses #167] started fixing the multiple phase saving issue 2015-09-03 09:15:31 +02:00
Ludger Küperkoch
bf1194ec3b Changed?? 2015-09-01 14:32:36 +02:00
Ludger Küperkoch
3ba57cfc56 Introduced new class DCfc for calculating the source spectrum and to derive the DC-value and the corner frquency of the source spectrum. Just at the beginning! 2015-09-01 14:32:09 +02:00
Ludger Küperkoch
258b8b1ff4 Marginal changes only. 2015-09-01 14:30:54 +02:00
Ludger Küperkoch
de5c65bc1d Wood-Anderson peak-to-peak amplitude is now calculated even if S weight is 4. At least P pick must be confident, if S weight > 3 a larger window for getting maximum peak-to-peak amplitude is used. 2015-09-01 14:25:48 +02:00
c940b092d0 Merge branch 'master' into develop 2015-08-31 13:47:22 +02:00
7588ad3c5b resolved conflicts 2015-08-31 13:45:25 +02:00
623f5d7b7e [addresses #167] started fixing the multiple phase saving issue 2015-08-31 13:37:18 +02:00
Ludger Küperkoch
fb3b599f50 restituteWFData: If input streams is None, a copy of streams derived by self.getWFData() is used for further processing. 2015-08-31 10:24:17 +02:00
Ludger Küperkoch
d756f5d2e1 Replaced hard coded window length for getting Wood-Anderson peak-to-peak amplitude with formerly set window length for calculating CF for S-picking. 2015-08-31 10:10:42 +02:00
Ludger Küperkoch
d0d38b81cb Removed indentation error. 2015-08-31 09:38:18 +02:00
Ludger Küperkoch
69c17f9fdb Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2015-08-31 09:02:16 +02:00
1f7049691c [addresses #167] started fixing the multiple phase saving issue 2015-08-28 16:01:42 +02:00
Ludger Küperkoch
eb592a3426 Claculation of Wood-Anderson amplitude only, if S-weight < 4. 2015-08-28 11:39:39 +02:00
Ludger Küperkoch
827a07a7ef Skipped restitution of entire traces at the beginning of processing as this is too time consuming. Instead, only traces are corrected within autopickstation, where at least automatically a P pick has been set. 2015-08-28 11:31:19 +02:00
Ludger Küperkoch
533ccc7b5c Implemented new class wapp to calculate Wood-Anderson amplitudes for local magnitude calculation. Before calculating Wood-Anderson amplitude the certain traces are instrument corrected. 2015-08-28 11:29:00 +02:00
Ludger Küperkoch
ef8ebc300e New object to calculate magnitude. Finished class wapp to calculate amplitude as seen on Wood-Anderson seismograph. 2015-08-28 11:27:09 +02:00
497ca39c91 reformatted data.py to meet coding conventions 2015-08-28 10:15:28 +02:00
038caf4d54 reformat code 2015-08-28 09:05:50 +02:00
6597c881a6 reformatting code 2015-08-27 15:42:51 +02:00
779b9e7313 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop
Conflicts:
	pylot/core/read/data.py
2015-08-27 15:42:01 +02:00
7785bd1900 Merge branch 'master' into develop
Conflicts:
	pylot/core/read/data.py
2015-08-27 15:28:54 +02:00
Ludger Küperkoch
ee777b4beb Removed import pdb. 2015-08-27 14:26:15 +02:00
Ludger Küperkoch
3e164fd0c6 restituteWFData: More output for user. 2015-08-27 14:24:52 +02:00
3dd65b9cc3 [addresses #167] started fixing the multiple phase saving issue 2015-08-27 12:55:34 +02:00
Ludger Küperkoch
96395f6a1a restituteWFData: searches now for keyword processing to check, whether this trace has already been corrected or not. 2015-08-27 11:40:42 +02:00
Ludger Küperkoch
845fd6a7b3 restituteWFData: able to handle several dataless-, inventory- or resp-files, calculates prefiltering from sampling rate of trace. Processing with inventory- or resp-file has yet not been checked! 2015-08-27 11:04:46 +02:00
Ludger Küperkoch
834e836a3d Removed parameter prefilt, no more necessary. 2015-08-27 11:01:59 +02:00
Ludger Küperkoch
4bfe4ce047 Marginal changes. 2015-08-27 09:53:05 +02:00
Ludger Küperkoch
0f4d13b8a5 Changed permissions. 2015-08-27 09:46:35 +02:00
2dc7819a84 restitute seismometer response 2015-08-27 05:51:03 +02:00
Ludger Küperkoch
8af4f8ad1e Finished (temporary!) new function restitueWFData. 2015-08-26 17:00:17 +02:00
Ludger Küperkoch
6719939a66 New parmater prefilt for filtering traces before restitution. 2015-08-26 16:45:19 +02:00
5d970fde1e [closes #164] test 2015-08-18 11:28:38 +02:00
b1736358b7 [closes #164] test 2015-08-18 11:23:04 +02:00
70d9389f4b [closes #164] test 2015-08-18 11:13:16 +02:00
f844f7b316 [closes #164] test 2015-08-18 11:09:34 +02:00
8c8ef7bb2a [closes #164] test 2015-08-18 10:39:58 +02:00
Ludger Küperkoch
def9760f4b Cosmetics. 2015-08-13 11:02:07 +02:00
Ludger Küperkoch
ceed663a77 AICPicker: if iplot > 1, figure with waveform and CF is raised, even when slope is calculation failed. 2015-08-13 10:57:46 +02:00
Ludger Küperkoch
64b8e1a9e8 checksignallength: Added more detailed information for user. 2015-08-13 10:54:17 +02:00
Ludger Küperkoch
fba2aad664 Added more detailed information for user about skipped picks. 2015-08-13 10:52:07 +02:00
Ludger Küperkoch
2668f4435c Removed unsused import-pdb command. 2015-08-13 09:01:47 +02:00
Ludger Küperkoch
4f634cc43a Debuged getDataArray: Reliable cutting of waveforms independetn from actual waveform lengths. 2015-08-12 16:48:55 +02:00
d9cb3517cc [closes #160] the picking window has now a home button for easy reset of zoom 2015-07-21 08:10:15 +02:00
0e3576d193 [closes #157] filter defaults are now read from text file like the sample filter.in coming with this commit simply copy to .pylot folder in your home directory (this is preliminary because the filter parameters should be settable project wide by one responsible person) 2015-07-21 07:41:41 +02:00
0b02e8c213 Merge branch 'export-and-save-picks' into develop 2015-07-18 16:13:37 +02:00
0b6fbd22c5 reformatting code to meet coding conventions 2015-07-18 16:13:11 +02:00
f4f744e22c export and save picks implemented successfully 2015-07-18 16:11:20 +02:00
fc86179c39 [closes #145], [addresses #146] this commit introduces the handling of picks as obspy event objects 2015-07-18 16:09:50 +02:00
17933c75f0 file format for exporting event data is controlled by the extension used; this behavior is more convenient for a GUI driven file selection 2015-07-18 15:59:42 +02:00
2115864d5c revert RELEASE-VERSION manually 2015-07-14 08:32:05 +02:00
1e58a86110 [bugfix] forgot to commit changed imports due to class naming changes in [49bf0ecd3c] 2015-07-14 08:10:49 +02:00
49bf0ecd3c make the naming of the Thread self explaining 2015-07-14 08:08:02 +02:00
092852d745 fix import error on debian machine 2015-07-13 15:15:37 +02:00
8802267628 fix zooming issue after S Pick is set 2015-07-13 10:03:43 +02:00
e31890d8fc export and save picks to hard drive 2015-07-13 09:24:16 +02:00
108d6c75d6 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-07-13 06:41:02 +02:00
da22dcce90 renaming run_autopicking to autopickstation 2015-07-13 06:40:51 +02:00
d79165a9f2 [bugfix] pick times are absolute times, thus for plotting the start time has to be subtracted 2015-07-13 06:40:10 +02:00
641cb498f0 make labeling the trace slightly more efficient 2015-07-13 06:36:33 +02:00
Ludger Küperkoch
707618c6b1 Found bug in fmpicker, copy-and-paste error. 2015-07-10 15:23:48 +02:00
ae563454af Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-07-10 09:23:05 +02:00
ea976295d0 huge structural rearrangement to resolve circular import problems
[add] new feature added to QtPyLoT capable of automatically picking an event from overview window
2015-07-10 09:22:58 +02:00
Ludger Küperkoch
2bd31f433b Changed labeling within overview window, station IDs are shown instead of running number. 2015-07-09 15:50:29 +02:00
f704d8b258 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-07-09 11:37:11 +02:00
398a25f902 non-working commit of autoPyLoT functionality in overview window 2015-07-09 11:37:03 +02:00
120f2743d2 preparing call to autoPyLoT from QtPyLoT 2015-07-09 11:34:41 +02:00
Ludger Küperkoch
dde7d73d2a Improved text output on stdout for some control routines. 2015-07-09 09:17:10 +02:00
1bee360bbb use get methods rather than directly access attributes 2015-07-08 15:14:05 +02:00
591e5a7110 standard output format should be QuakeML for saving the event relevant data, moreover the other formats should only be written temporarily for processing purposes 2015-07-08 15:12:35 +02:00
0236a19db1 [bugfix] the type of obspy.core.event.Event objects resource_id attribute is of type obspy.core.event.ResourceID but must be of type str; simple conversion fixed this 2015-07-08 15:00:51 +02:00
ec9840839e preserve the occurrence of the authority id in the filenames for write support of event information 2015-07-08 14:58:42 +02:00
05d38f583f corrected names for the output format to write event information on disk 2015-07-08 14:57:22 +02:00
173724ee5a make use of the __version__ variable other than updating the RELEASE_VERSION file 2015-07-07 14:27:29 +02:00
3320cd64a4 switching components enabled in overview window 2015-07-07 14:21:11 +02:00
6078338757 added a splash screen 2015-07-07 12:14:18 +02:00
cf944358dd removed unnecessary apply button 2015-07-07 11:23:29 +02:00
ca1b41511c draw picks from main window to the picking window 2015-07-07 11:23:01 +02:00
d53a3dad04 make the test work again 2015-07-07 11:22:19 +02:00
960f9ca71a use only the high resolution icon 2015-07-07 11:21:06 +02:00
b8c92ed551 preparing to parse the picks to the picking window 2015-07-07 11:02:46 +02:00
b8aabfce99 implement changes proposed by deprecation warning from matplotlib 2015-07-07 10:49:42 +02:00
a8fe4b7419 give variable declaration a sense 2015-07-07 10:47:55 +02:00
5507a22865 actually draw picks into the overview window 2015-07-07 10:46:27 +02:00
e051be8a06 code cosmetics and give some hint on the usage of the overview window in the status bar 2015-07-07 10:45:42 +02:00
3dd02d7f0c do not print information to standard out but into the status bar (recognizable for the user) 2015-07-07 10:44:06 +02:00
dd8766277a last four commits might not work without the imports coming with this one 2015-07-07 10:39:51 +02:00
5d2900510e added methods for drawing picks to the main window 2015-07-07 10:39:01 +02:00
06d6060a9f added method to add picks to the picks dictionary and warn the user if he/she is about to overwrite pick information 2015-07-07 10:37:54 +02:00
4990e33d27 added utility functions for pick handling 2015-07-07 10:33:14 +02:00
f99f5dbc8f unified icon set used for PyLoT in order to match the license restriction 2015-07-07 10:31:39 +02:00
Ludger Küperkoch
b5e279a318 removed fixed iplot flag. 2015-07-06 15:53:56 +02:00
Ludger Küperkoch
8463a87507 Introduced saftey factor for jackknife test to be less conservative. 2015-07-06 15:52:25 +02:00
29de650b4e reformatting code to avoid mixing up whitespace and tabulator characters 2015-07-06 10:57:34 +02:00
76f04bec6f [task] starting method to make PyLoT capable of restituting waveform data with given inventory xml files 2015-07-06 10:20:25 +02:00
a08c9e91e0 Ludger reported a Qt Problem that the MPLWidget was not recognized as an PySide.QtGui.QWidget; the problem was not reproducible on my system; maybe the problem was caused because getnoisewin is now imported from pick/utils and there matplotlib is imported for plotting reasons but to clarify the Qt backend used by matplotlib, it should not be imported before 2015-07-06 09:51:59 +02:00
Ludger Küperkoch
b73f9fab45 Cosmetics. 2015-07-02 15:26:48 +02:00
97aaa0b0d3 convenience imports and implementation of initial pick set for S phases (including zooming to re-scaled horizontal data) 2015-07-02 10:40:01 +02:00
a5c1f68f03 [bugfix] draw all picked phases not only the actually picked one 2015-07-02 10:37:31 +02:00
5e6173b351 [bugfix] fixes an issue where the zoom action is not reset when setting the initial pick 2015-07-02 10:36:33 +02:00
d05e9320e5 make MPLWidget able to distinguish scaled and unscaled data; additionally make plotting noise levels more convenient 2015-07-02 10:35:36 +02:00
a46b0db583 new method to return the traceID for given channel names 2015-07-02 10:32:35 +02:00
f77ba344c3 make the implementation of the picking dialog widget initialization method better readable 2015-07-02 10:31:39 +02:00
e99d2630a1 moved static methods as functions to the util package for flexibility reasons 2015-07-02 10:29:50 +02:00
Ludger Küperkoch
a32f6fc037 Marginal changes. 2015-07-02 09:27:11 +02:00
Ludger Küperkoch
0d8b6b4446 New key in pick dictionary: marker, indicating if pick has been rejected by checksignallength or checkZ4S. 2015-07-02 09:26:05 +02:00
Ludger Küperkoch
8282a7aa12 Marginal changes. 2015-07-02 09:23:51 +02:00
Ludger Küperkoch
82d9d45abf Marginal changes. 2015-07-01 15:37:07 +02:00
Ludger Küperkoch
3e81adfec6 Marginal changes. 2015-07-01 15:31:50 +02:00
Ludger Küperkoch
5bb616ffc5 Marginal changes. 2015-07-01 15:31:02 +02:00
Ludger Küperkoch
fb956f381a Implmented new quality control function checkZ4S. 2015-07-01 15:30:13 +02:00
Ludger Küperkoch
489199af10 New parameters for new quality control function checkZ4S. 2015-07-01 15:23:37 +02:00
Ludger Küperkoch
69b345c96b New parameters for new quality control function checkZ4S. 2015-07-01 15:23:21 +02:00
1af88fbe85 default values changed to the defaults from autopylot 2015-06-29 16:23:46 +02:00
327a22818a added static method demeanWFData which simply returns the demeaned waveform stream object while the individual trace data are decreased by the average value of the waveform in a given window 2015-06-29 16:21:17 +02:00
9aa8a5bf13 function getSNR re-implemented in order to allow SNR calculation for stream object with more than one trace; the resulting SNR is the maximum SNR found over all traces in the stream object 2015-06-29 16:16:59 +02:00
0fcd6fab9d clean-up to meet coding conventions 2015-06-29 16:14:11 +02:00
a46fb88282 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-06-28 19:35:08 +02:00
a854cf2762 use default filter options for all expected phases set up by the project leader 2015-06-28 19:35:01 +02:00
Ludger Küperkoch
90bf6cb99e Modified parameters for checkPonset. 2015-06-26 16:01:43 +02:00
Ludger Küperkoch
9e124436e3 Modified parameters for checkPonset. 2015-06-26 16:01:17 +02:00
Ludger Küperkoch
27155ad816 Marginal changes. 2015-06-26 16:00:20 +02:00
Ludger Küperkoch
99adb5ce9c Finialized new function checkPonset. 2015-06-26 15:59:50 +02:00
Ludger Küperkoch
0789f51d69 Implemented additional quality control function checkPonsets, using subfunction jackknife to skip misspicks. Yet not entirely finished. 2015-06-26 08:48:24 +02:00
Ludger Küperkoch
ab840fbcf1 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop
Try to solve conflict, only marginal changes.
Conflicts:
	pylot/core/pick/utils.py
2015-06-25 11:17:32 +02:00
Ludger Küperkoch
edd925af99 Some cosmetics. 2015-06-25 11:11:19 +02:00
e542aa70d9 doctesting added without having doctests inserted (pending) 2015-06-25 10:36:45 +02:00
4292197818 [bugfix] switching between zooming types now does not cause weird mouse event behavior anymore 2015-06-25 10:35:58 +02:00
ec3ecd04bb pick colors now depend on the type of phase picked; blueish colors for compressional wave (p) phases and reddish colors for shear wave (s) phases 2015-06-25 10:34:15 +02:00
a383f8c769 [bugfix] labels are now drawn correctly after picking an onset 2015-06-25 10:31:55 +02:00
cb5bd7dc09 differentiate between initial picks for p and s phases as they are picked from different components; zoom window determination for s phases not implemented yet 2015-06-25 10:30:59 +02:00
bb52f8ac83 moved the determination of the time resolution window to the utils module within the pick package 2015-06-25 10:27:00 +02:00
b42f88605b the main application window now opens in fullscreen mode 2015-06-25 10:25:08 +02:00
7635f790fd [bugfix] one filter parameter was type string and caused problems when parsing the parameters to the filter function of an obspy object 2015-06-25 10:24:17 +02:00
7ec28664b4 new function getResolutionWindow and doc testing added 2015-06-25 10:21:52 +02:00
Ludger Küperkoch
c9f07b6540 getSNR: demean using only mean determined from noise window. 2015-06-25 10:07:35 +02:00
Ludger Küperkoch
2cd7572ee4 Removed fixed plotting flag. 2015-06-24 16:44:15 +02:00
Ludger Küperkoch
7281220b55 wadaticheck: bug fixed, initialization of running index at wrong place. 2015-06-24 16:42:50 +02:00
Ludger Küperkoch
1abcb9d9a9 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2015-06-24 15:47:14 +02:00
Ludger Küperkoch
c68597ce62 Debugging. 2015-06-24 15:43:59 +02:00
311b3f1de1 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-06-24 14:33:30 +02:00
c840e07635 filtering of the waveform in the picking window implemented (work in progress, still bugs inside which have to be located and fixed) 2015-06-24 14:33:19 +02:00
0d3fb8be93 [bugfix] false indentation corrected (broken program logic fixed) 2015-06-24 14:31:43 +02:00
8dd100792e [bugfix] obspy filter function do not use order but corners as parameter name (keyword changed for argument parser) 2015-06-24 14:30:48 +02:00
Ludger Küperkoch
0cc29802a4 Added/modified parameters for new function checksignallength. 2015-06-24 14:25:18 +02:00
Ludger Küperkoch
a6d19eae7d Added/modified parameters for new function checksignallength. 2015-06-24 14:25:09 +02:00
4548f361e4 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-06-24 14:24:20 +02:00
Ludger Küperkoch
017532272f Modified: new function checksignallength added. 2015-06-24 14:17:43 +02:00
Ludger Küperkoch
68bbea9854 Implemented new function for quality control: checksignallength, checks signal length in order to detect spuriously picked noise peaks. 2015-06-24 14:15:54 +02:00
Ludger Küperkoch
b44fbe0b02 Some Cosmetics. 2015-06-24 10:23:24 +02:00
Ludger Küperkoch
61c745cd79 Modified parameters. 2015-06-24 09:31:18 +02:00
Ludger Küperkoch
7ede5a7859 Modified parameters. 2015-06-24 09:31:01 +02:00
Ludger Küperkoch
728cf15f19 Demean: Mean to be subtracted from time series is now calculated from noise part only. 2015-06-24 09:29:59 +02:00
ac99ec8a76 added static method to the FilterOptionsDialog in order to be able to directly get an filter object without having to create an dialog object in advance explicitly 2015-06-24 09:24:21 +02:00
Ludger Küperkoch
123634924b Removed fix iplot flag. 2015-06-23 16:27:28 +02:00
Ludger Küperkoch
8f0c1fb8ec Debugging. 2015-06-23 16:24:10 +02:00
Ludger Küperkoch
5410b4481a Debugging. 2015-06-23 16:23:18 +02:00
Ludger Küperkoch
54fd3004b4 Debugging. 2015-06-23 16:22:21 +02:00
2c9ad97a4a avoid weird behavior of the picking window 2015-06-23 13:26:37 +02:00
37e50b12e6 use more reliable hard coded sample phase names 2015-06-23 13:25:27 +02:00
03219e69d6 substract the mean of the waveform data within the noise window prior to picking 2015-06-23 13:24:47 +02:00
dec3e733a2 use settings and defaults rather than hard coded parameters 2015-06-23 13:23:31 +02:00
ca4c5edb18 make the code more readable 2015-06-23 13:22:30 +02:00
b1990e6e1c filter waveform with default parameter for selected phase prior to initial phase identification 2015-06-23 13:22:01 +02:00
2393b88f05 rearranged filter waveform data method to match signature of the parseFilterOptions method of the FilterOptions object which will be used to hold filter information which can be defined by the project leader in advance 2015-06-23 13:15:39 +02:00
f1c7f00193 new local variable reused in plotting command for noise level positioning while plotting 2015-06-23 13:12:20 +02:00
c1818622de [bugfix] obsolete plotting command causing the plot to appear differently than desired 2015-06-23 13:09:03 +02:00
c94c569fcb closes ticket #151 : in the picking window always the entire waveform data is plotted with varying zoom window sizes 2015-06-23 13:07:24 +02:00
c851fa6901 avoid direct manipulation of attributes of an object; use get and set methods instead; new methods added to feature the desired behavior 2015-06-23 12:57:36 +02:00
6d8a17b7e2 deleting obsolete class definition 2015-06-23 12:51:27 +02:00
Ludger Küperkoch
1c749dd9a8 Debugging. 2015-06-23 12:24:13 +02:00
Ludger Küperkoch
c54ba04ae2 Marginal changes. 2015-06-23 12:19:16 +02:00
Ludger Küperkoch
add4944c05 Marginal changes. 2015-06-23 12:18:45 +02:00
Ludger Küperkoch
c35dd456fe Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop
Merge necessary after commit before pull.
2015-06-23 12:02:51 +02:00
Ludger Küperkoch
44050564b8 Debugging. 2015-06-23 12:02:04 +02:00
Ludger Küperkoch
931853016a Debugging. 2015-06-23 12:01:36 +02:00
231a8b0244 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-06-23 08:49:34 +02:00
8d4aaab92a [bugfix] return value of getnoisewin and getsignalwin should be of expected type numpy.ndarray (was tuple) 2015-06-23 08:49:10 +02:00
a2ca6fd66f [bugfix] return value of getnoisewin and getsignalwin should be of expected type numpy.ndarray (was tuple) 2015-06-23 08:48:14 +02:00
dc281c6c0e [bugfix] determine the SNR according to the demeaned waveform between the beginning of the noise window and the end of the signal window 2015-06-23 08:24:21 +02:00
bb6ebc7ee1 reformatting code for reasons of coding conventions 2015-06-23 08:22:59 +02:00
Ludger Küperkoch
9ec7da7e4e Example of autoPyLoT.in for regional data set. 2015-06-22 16:28:35 +02:00
Ludger Küperkoch
cab58a10aa Example of autoPyLoT.in for local data set. 2015-06-22 16:28:21 +02:00
Ludger Küperkoch
d25e791bb8 Debugging. 2015-06-22 16:01:25 +02:00
Ludger Küperkoch
833b29a488 Debugging. 2015-06-22 16:01:16 +02:00
Ludger Küperkoch
f2510ff400 Switched off warnings. 2015-06-22 15:35:16 +02:00
Ludger Küperkoch
4a911a4ac9 Marginal changes only. 2015-06-22 15:20:03 +02:00
Ludger Küperkoch
ab53a72c57 Debugging: If not enough S-P times are available, the plotting is modified. 2015-06-22 15:07:54 +02:00
Ludger Küperkoch
99a5a4499a Debugging: If no P-Pick was determined, no plot of of horizontal data comes up. 2015-06-22 14:59:57 +02:00
Ludger Küperkoch
eb153679ba Removed axis limits from plotting part. 2015-06-22 14:37:47 +02:00
Ludger Küperkoch
aba3997b20 Modified earllatepicker: Mean is removed from trace calculated from noise + signal window. 2015-06-22 12:39:29 +02:00
Ludger Küperkoch
635ac1686b Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop
Conflicts:
	pylot/core/pick/utils.py
2015-06-22 11:27:01 +02:00
Ludger Küperkoch
fd6e4cb02a Uses now UTCDateTime.timestamp as this is more efficient and shorter. 2015-06-22 11:07:22 +02:00
30bc8ccd82 reformatting code to avoid indentation inconsistencies 2015-06-22 11:06:53 +02:00
245a7455ff FilterOptions class has new method parseFilterOptions which establishes a valid keyword arguments dictionary to be parsed to the obspy.core.stream.Stream 's filter method 2015-06-22 10:59:14 +02:00
ff52ec5410 started implementation of running of external programs (work in progress, pending until release of picking window) 2015-06-22 10:56:16 +02:00
6b14c452e2 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop
Conflicts:
	pylot/core/pick/utils.py
2015-06-22 10:54:30 +02:00
864ef6c64d [bugfix] determination of zero crossings breaks down if data is not demeaned in the signal window (explicitly demeaning data in the signal window when determining the zero crossings) 2015-06-22 10:52:26 +02:00
Ludger Küperkoch
3330a3ae35 Corrected calculation of Vp/Vs ratio in wadaticheck, now determined from slope of trend as it should be. 2015-06-22 09:32:33 +02:00
Ludger Küperkoch
a95caa5efc Weight 9 now for skiped S onsets, turned rank warning off. 2015-06-19 15:48:04 +02:00
Ludger Küperkoch
aa624c0358 Added new function wadaticheck to test certainty of S-onsets using Wadati diagram. 2015-06-19 15:28:53 +02:00
Ludger Küperkoch
b91f4c9619 Implemented new function wadaticheck. 2015-06-19 15:27:24 +02:00
Ludger Küperkoch
613bef1678 Implmented dictionary containing onset parameters. 2015-06-19 09:09:22 +02:00
Ludger Küperkoch
fd796ba6e1 Implemented dictionary containing onset parameters. 2015-06-19 09:08:28 +02:00
57dfb86819 [bugfix] importing of run_autopicking.py was inhibited by badly indented call to raw_input() (fixed) 2015-06-18 10:55:26 +02:00
04b6c53ec0 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop
Conflicts:
	pylot/core/pick/Picker.py
2015-06-12 09:38:19 +02:00
883fdf6bf5 just cleaning up the code to meet coding conventions 2015-06-12 09:36:52 +02:00
c5ce958a41 just cleaning up the code to meet coding conventions 2015-06-12 09:31:58 +02:00
c5da8fd994 changed usage signature of some function from module utils and the corresponding calls 2015-06-11 10:12:50 +02:00
546e919dc9 code clean-up following several conventions 2015-06-11 10:07:21 +02:00
3d8bea8f7e deleted obsolete module 2015-06-11 10:02:44 +02:00
63849177be package active will provide capabilities for processing reflection seismic surveys automatically 2015-06-11 05:36:56 +02:00
77b7d26902 selectable phases should be edited elsewhere not in the combobox itself 2015-06-11 05:34:07 +02:00
e6e38dbb95 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-06-10 15:49:15 +02:00
93dfe76b7e fixed some bugs concerning plotting and implemented a more flexible way of drawing the picks including error plotting 2015-06-10 15:49:06 +02:00
864cb112bc usage changed due to release [1d70a23] 2015-06-10 15:47:40 +02:00
b3ea4229a4 implement opportunity to apply different kind of event data to the data object 2015-06-10 15:46:37 +02:00
1d70a236d1 [bugfix] avoid forming invalid pickID strings (line 194)
do not use altered resource identifier for all kinds of event  objects
2015-06-10 15:45:49 +02:00
ba7ab07473 catch non string type input for filename construction 2015-06-10 15:43:43 +02:00
3cb73fb948 alternative for storing event data (discussable) 2015-06-10 15:41:37 +02:00
0721e225a7 never return values for without a meaning 2015-06-10 15:40:36 +02:00
e6b0c2b470 zero xings are now be derived from demeaned data 2015-06-10 15:37:58 +02:00
e0568e3849 write picks into data object (work in progress) 2015-06-10 15:36:37 +02:00
Ludger Küperkoch
b0acee7136 Added component splitting also for channels 1 and 2. 2015-06-02 13:46:10 +02:00
Ludger Küperkoch
0dce58ede4 Marginal changes. 2015-06-02 13:43:39 +02:00
Ludger Küperkoch
ce75a82f5b Some cosmetics. 2015-06-02 13:42:44 +02:00
Ludger Küperkoch
15b245c2e8 Debuging, temporary solved problems occuring when reading channels of not oriented sondes (channels 1/2). 2015-06-01 16:30:22 +02:00
Ludger Küperkoch
5488d4e0fc Debuged loop, seperate loops for single event or complete data structure processing, respectively. 2015-06-01 16:28:27 +02:00
Ludger Küperkoch
85f0717f10 Implemented first-motion picker, some debugging. 2015-06-01 14:18:18 +02:00
Ludger Küperkoch
ab9a49a727 Additional parameters for first-motion picker. 2015-06-01 14:16:52 +02:00
Ludger Küperkoch
c676fc5762 Modified loop over all available stations to prevent processing of one station several times. 2015-06-01 14:15:37 +02:00
Ludger Küperkoch
74682952e7 New function invoked by autoPyLoT for automated picking of onset times. Main tool for automatic picking! 2015-05-29 16:48:58 +02:00
Ludger Küperkoch
5be662524f Debuged AIC picker for plotting smoothed CF instead of unsmoothed CF, implemented quick and dirty a temporary solution to process restituted data in order to calculate apropriate slope (line 204). 2015-05-29 16:43:32 +02:00
Ludger Küperkoch
6e51c05c94 Running indicies changed after kai Olbert to calculate equal CF as done in MatLab, implemented some tools to compensate numerical artefacts. 2015-05-29 16:35:00 +02:00
Ludger Küperkoch
1c71286fd8 Modified picking parameter input file for new function run_autopicking. 2015-05-29 16:30:12 +02:00
Ludger Küperkoch
0b6b7a7aed Marginal changes only. 2015-05-29 16:28:50 +02:00
Ludger Küperkoch
6c73e30754 Modified to run new function run_autopicking. 2015-05-29 16:26:31 +02:00
0c76c496fb Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-05-28 12:14:29 +02:00
c86adb4e6e preparing storing the picks and making the GUI work more intuitively 2015-05-28 12:14:16 +02:00
2da7861b6f todo mark deleted 2015-05-28 11:54:16 +02:00
Ludger Küperkoch
c04235dffc Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2015-05-27 09:36:21 +02:00
Ludger Küperkoch
caa0dce637 Adopted zero-crossing plotting to output of new function for calculating zero-crossings. 2015-05-27 09:36:12 +02:00
a239de26e8 bugfix: eventID is now appended to the path in autoPyLoT if eventID is given in autoPyLoT.in 2015-05-27 08:48:07 +02:00
b9ce5b4f41 try to read lists of files not wildcards 2015-05-20 11:29:55 +02:00
6dc0b206e9 changed string representation of data object 2015-05-20 11:20:37 +02:00
0a6cff5f23 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop
Conflicts:
	autoPyLoT.py
2015-05-20 11:05:53 +02:00
bd10f7b61e bugfix: searching event directory 2015-05-20 10:58:48 +02:00
Ludger Küperkoch
b588c29513 Dirty revision 2015-05-20 10:56:53 +02:00
9a4677c794 bugfix: deleted default value for suffix 2015-05-20 10:33:59 +02:00
5f8b6de1ec bugfix: method hasParam did not return any value 2015-05-20 10:23:47 +02:00
82540c50af changed argument parser and glob call to search directory 2015-05-20 10:01:19 +02:00
b46f085a74 added option to process single event 2015-05-20 09:59:06 +02:00
4994168247 number of arguments changed, filenames not necessary for starting 2015-05-20 09:43:32 +02:00
5badf2ba34 implementation of different data structure type handling 2015-05-20 09:38:25 +02:00
56a0563709 implementation of PilotDataStructure as subclass to GenericDataStructure 2015-05-18 13:12:12 +02:00
f177901883 rearranging methods to provide a superclass to all other structure classes 2015-05-11 13:41:08 +02:00
Ludger Küperkoch
c4b6b4c648 Changed permitions. 2015-05-04 12:11:32 +02:00
Ludger Küperkoch
6ee3a1b0b4 Pulling latest release from server ariadne.
Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop
2015-05-04 12:07:17 +02:00
7cab62b97e release version committed to avoid conflicting files while update 2015-05-04 12:05:14 +02:00
15bdc47f84 data reading interface not clear yet, major changes have to be done to the data structure and the data reading part of PyLoT (DataStructure superclass is needed providing generalized methods to use by the Data object) 2015-05-04 05:31:10 +02:00
367610d032 made AutoPickParameter class more flexible in reading and handling parameters; export routine defined: exports in the new autoPyLoT.in format (see docstring) 2015-05-04 05:25:40 +02:00
426c2d0d4c TODO: restructuring the datastructure classes; suggestion: write a Superclass GenericDataStructure which is than inherited by PilotDataStructure and SeiscompDataStructure 2015-04-29 07:57:52 +02:00
0760c2fe3a introducing new attribute __name to the datastructure objects. Used in autoPyLoT to distinguish between structure types. 2015-04-29 06:29:08 +02:00
8bf9b55288 task: create development frame for autoPyLoT 2015-04-22 12:46:24 +02:00
ca8081b7aa debugging: return the exception text whenever an error occurs - makes debugging much easier 2015-04-22 12:38:10 +02:00
58aad840c8 task: read also old autoPILOT parameter files 2015-04-22 12:22:34 +02:00
4b641f1b3c reversed polarity in picking mode 2015-04-21 08:21:59 +02:00
463535f01a improved flexibility of the GUI actions (Matplotlib) implementation 2015-04-21 08:16:32 +02:00
bb84e27e54 implemented a much faster calculation of the zero crossing beside an average calculation over the whole signal window of the dominant period 2015-04-21 08:14:26 +02:00
Ludger Küperkoch
694a10bd4a Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2015-04-13 09:52:55 +02:00
4d268da435 suppress output of earllatepicker 2015-04-13 09:52:45 +02:00
Ludger Küperkoch
fee0d05253 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2015-04-13 09:42:32 +02:00
7816e6342f zooming for 3-component window changed now zooming is done by using the mouse wheel
bugfix: calculation of the snr corrected
2015-04-13 09:42:17 +02:00
Ludger Küperkoch
b42b87602b Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop
Conflicts:
	pylot/core/pick/earllatepicker.py
	pylot/core/pick/fmpicker.py
	pylot/core/pick/getSNR.py
2015-04-13 09:36:22 +02:00
Ludger Küperkoch
492aac831a Commited to pull changes 2015-04-13 09:27:26 +02:00
67dd66535a bugfix: zooming with scroll wheel now working properly
task: panning now available while in exploration mode, if a phase is selected initial pick can be set and afterwards the onset itself (procedure questionable as two picks are needed)
panning not tested yet!
2015-04-09 08:49:11 +02:00
Ludger Küperkoch
6213962654 Deleted. 2015-04-08 11:32:02 +02:00
Ludger Küperkoch
0494f2a11b Deleted: 2015-04-08 11:29:50 +02:00
c15716388d new zoom icon added 2015-04-07 15:00:53 +02:00
d21798f633 test pickingdialog and prepare figures for the poster 2015-04-07 15:00:00 +02:00
043c45e02c bugfix: undo filtering when checkbox is unchecked
code improvement: class PickDlg -> distinguish between setting the initial pick (for zooming) and setting the actual pick (phase onset); methods renamed -> setPick is now setIniPick and plotPick became setPick
2015-04-06 11:42:21 +02:00
b243be8075 task: implementation of picking (work in progress) 2015-04-02 18:48:06 +02:00
e35d6b9371 bugfix: modified icon management and corrected usage of references 2015-04-02 18:36:21 +02:00
0824026159 standalone python files now import definitions from module pylot.core.pick.utils and parse arguments when called from shell (deleted "if __name__ == '__main__' :" clauses from the module) 2015-04-02 15:45:38 +02:00
Ludger Küperkoch
f6f1c9cf2f Modified to handle new module utils. 2015-03-30 16:25:04 +02:00
Ludger Küperkoch
a015b0c90d New functions in module: getnoisewin and getsignalwin to extract noise and signal parts. 2015-03-30 16:22:20 +02:00
Ludger Küperkoch
e8aa9de060 Modified to handle new module utils.py. 2015-03-30 16:20:41 +02:00
Ludger Küperkoch
1cdda3652f New module containing some helpful functions, replaces getSNR, fmpicker, and earllatepicker. 2015-03-30 14:35:21 +02:00
Ludger Küperkoch
bebe3a3c45 Cleaned up source code, debuged: calculates now T/4 instead of T/8 out of zero crossings. 2015-03-30 14:18:19 +02:00
Ludger Küperkoch
0ad7e629ce Marginal changes only. 2015-03-30 10:59:27 +02:00
Ludger Küperkoch
45eb138717 New function to derive SNR, returns SNR and SNR[dB]. 2015-03-30 10:58:24 +02:00
5b52f718fe mutable default arguments may cause problems as unexpected default behavior 2015-03-30 06:04:24 +02:00
814906ef65 module restructured: beginning with general utils followed by utils concerning obspy event creation 2015-03-30 05:55:54 +02:00
27ecdb899b plotting scheme restructured: the same widgets are used for plotting the overview and the station plots, the plotting method has been moved to the widget side which makes more sense than having it on the data side;
new functions in utils module: prepTimeAxis returns a proper time axis array for a given start time and an obspy trace; getGlobalTimes returns the minimum start time and the maximum end time (edges) of a given obspy stream object
2015-03-29 08:07:46 +02:00
ae57381733 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-03-19 15:38:13 +01:00
c46b8a7821 made a copy and modified run_makeCF.py (now test_autopick.py in the root directory) 2015-03-19 15:36:55 +01:00
Ludger Küperkoch
dc78abed09 Modified to handle new function fmpicker. 2015-03-19 14:36:56 +01:00
Ludger Küperkoch
a606b030e2 New function to derive automatically first motion (polarity) of phase onset based on zero crossings and slope determination. 2015-03-19 14:32:50 +01:00
Ludger Küperkoch
787cac7d68 Removed class EarlLatePicker, replaced by new function earllatepicker. 2015-03-18 14:45:49 +01:00
Ludger Küperkoch
16ae4bdfe9 Modified for using new function earllatepicker instead of removed class EarlLatePicker of object Picker. 2015-03-18 14:45:08 +01:00
Ludger Küperkoch
8ba34db05c New function to calculate earliest and latest possible pick from a given initial (most likely) pick. Replaces class EarlLatePicker of object Picker. 2015-03-18 14:44:08 +01:00
Ludger Küperkoch
49a248d139 Debuged AICPicker: Now values equal zero are removed from CF to avoid numerical instabilities. 2015-03-12 15:45:54 +01:00
474622027e now the station selection works fine and a picking window is opened when the waveform has been clicked 2015-03-12 13:59:29 +01:00
a0bbe8ca04 trying to get the picking of plot coordinates working (pending for poster preparation) 2015-03-11 12:05:52 +01:00
Ludger Küperkoch
486449fbb5 Debuged EarLatePicker noise level exceedance part. 2015-03-11 12:01:06 +01:00
Ludger Küperkoch
85f0445e6b Stabilized AICPicker: if no minimum was found, try 1st derivative of AIC-CF. 2015-03-10 16:48:48 +01:00
Ludger Küperkoch
ea68b38f7e Stabilized AICPicker by introducing 1st derivative of CF to find global maximum. 2015-03-10 16:18:32 +01:00
Ludger Küperkoch
380cccdf16 New attribute getPickError in class EarlLatePicker to derive symmetric picking error out of earliest and latest possible and most probable pick. 2015-03-09 16:14:03 +01:00
Ludger Küperkoch
a3fb4770c6 Modified to apply and show symmetric picking error derived from EarlLatePicker.py with new attribute getPickError. 2015-03-09 16:11:52 +01:00
c7aeb1959b implement picking window and station selection (tests pending due to not working station selection so far) 2015-03-09 11:21:33 +01:00
54916fa421 Merge branch 'filter-handling' into develop
Conflicts:
	pylot/core/util/widgets.py
2015-03-06 09:14:51 +01:00
78b41f3d57 initialization of a picking window (work doubled due to system crash before commit) 2015-03-06 09:05:52 +01:00
Sebastian Wehling
e321ad26b2 make creating new event work 2015-03-06 09:03:04 +01:00
Sebastian Wehling
a86a2efb8a debugging in progress (filter waveform not working) 2015-03-05 14:52:34 +01:00
Sebastian Wehling
ffa58c1f89 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2015-03-05 11:54:32 +01:00
Dennis Wlecklik
5fbd9d7fa9 initial import from coincidence trigger to generate coincidence triggerlists
with obspys coincidenceTrigger
2015-03-05 11:49:27 +01:00
Dennis Wlecklik
3507314955 initial git import of module trigger which introduces simple triggerlist
modification functionality
2015-03-05 11:44:38 +01:00
Ludger Küperkoch
77c87067da Different time windows for slope determination from AR- and HOS-CF. 2015-03-04 15:53:18 +01:00
Ludger Küperkoch
8f71297884 Debuged, stable slope determination of CF, modified plotting. 2015-03-04 15:52:14 +01:00
Sebastian Wehling
567ae16f1d bugfix: FilterOptionsDialog should only provide logic options 2015-03-04 15:42:08 +01:00
Sebastian Wehling
5f0b7fbdc0 bugfix: fixed usage of createAction do to outsourcing 2015-03-04 15:40:25 +01:00
Ludger Küperkoch
714e70de69 Modified for improved class Picker.py 2015-03-04 13:49:02 +01:00
Ludger Küperkoch
f6922fafef Implemented quality assessment for AICPicker based on slope and SNR from CF. New attributes getSNR and getSlope. 2015-03-04 13:45:29 +01:00
Sebastian Wehling
cc2d823272 user interface setup for picking dialog added 2015-03-04 11:54:56 +01:00
Sebastian Wehling
0ceba15118 corrected MatLab code remnant semicolon 2015-03-04 11:53:15 +01:00
Sebastian Wehling
0dbcca1c6f moved function createAction to the widgets module (reused in additional widget)
bugfix: on Linux systems os.getlogin raises an exception (reimplementation: getLogin)
2015-03-04 11:52:04 +01:00
b23c9d1104 initialized new widget and window for picking (work in progress) 2015-03-01 19:59:41 +01:00
addb8ae815 try to make filtering work 2015-03-01 19:59:41 +01:00
Ludger Küperkoch
b953377c58 Major changes: 1) Implemented new class EarlLatePicker for calculating earliest and lates possible pick from initial (most likely) onset, based on cook book for consistent phase picking by Diehl & Kissling 2) Modified AICPicker, uses now unsmoothed and smoothed CF for not sticking in some local minima 3) Implemented optional plotting of interims results 2015-02-25 10:07:16 +01:00
Ludger Küperkoch
4a48874f88 Debuged and cleaned source code 2015-02-25 09:59:59 +01:00
Ludger Küperkoch
1966a2b612 Extended for applying new class EarlLatePicker and for plotting earliest and lates possible picks 2015-02-25 09:56:23 +01:00
Ludger Küperkoch
3556a2becc Changed index for AR-CF calculation, no more shift in getTimeArray needed. 2015-02-24 09:08:38 +01:00
Ludger Küperkoch
acd8f70369 AR-CFs now have same sampling rate as raw seismograms, new attribute getXCF 2015-02-23 15:42:35 +01:00
Ludger Küperkoch
16c07da6e4 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2015-02-23 15:06:22 +01:00
Ludger Küperkoch
125728f2b1 Closes Ticket #143, uses now None instead of -1 2015-02-23 15:04:39 +01:00
c5f9842c37 added a toolbar (work in progress) 2015-02-23 14:47:38 +01:00
d9b685eebb display more detailed status messages 2015-02-23 14:46:18 +01:00
cb114dc696 bugfix: displayed status message has not been updated properly 2015-02-23 14:45:47 +01:00
d4d464d400 generalized method addActions in order to be more flexible in adding actions to different QtObject types 2015-02-23 14:38:26 +01:00
cc002c9460 bugfix: wrong return type expectation corrected 2015-02-23 14:35:00 +01:00
4184fcffdc make waveform filtering work (in progress) 2015-02-20 08:38:26 +01:00
4344a7c8a6 unnecessary code overhead; return type is clear anyway (different return type for PyQt!!!) 2015-02-20 08:37:21 +01:00
b10d8606cc at least print error messages to screen (helps debugging ^^) 2015-02-20 08:36:20 +01:00
7dd1519f83 use similar method names for similar types of methods (e.g. xWFData for all methods connected to waveform data) 2015-02-20 08:35:26 +01:00
35c184ede7 bugfix: in order to be able to check for checkable these should be available in the namespace, thus these actions have been set as attributes of the MainWindow object 2015-02-20 08:30:17 +01:00
5496b2deaa bugfix: use get and set methods instead of directly changes values of attributes 2015-02-20 08:28:24 +01:00
757a6d784b better use call to the classes method then returning a value 2015-02-18 15:35:54 +01:00
cdb8af56b3 bugfix: avoid empty parts of the data display 2015-02-18 15:35:12 +01:00
abbe9cb2c4 bugfix: missed to call get method before trying to fetch an item 2015-02-18 15:34:21 +01:00
693362a278 normalize waveform data to avoid overlapping 2015-02-18 15:32:37 +01:00
dd360bd9cc code clean up 2015-02-18 15:32:01 +01:00
1878b887f6 give information on files which could not be read and thus not be attended to the waveform container 2015-02-18 15:31:35 +01:00
82ac85d743 bugfix: return value of QFileDialog method calls must be handled carefully 2015-02-18 15:30:24 +01:00
5c9f17bce3 bugfix: attribute was of wrong kind for which the successive call raised an exception 2015-02-18 15:27:50 +01:00
d15441900e bugfixes in order to make the GUI work 2015-02-17 13:17:01 +01:00
091ab23b90 version string changed for testing reasons 2015-02-16 10:32:19 +01:00
8acd84976e optimization of the codes outer appearance 2015-02-16 10:31:25 +01:00
fa6db084b8 Data object restructured for convenience; fixed problems in the class logic; restructured imports 2015-02-16 10:30:35 +01:00
2b8c60a3d4 now only Signal is imported from PySide avoiding overhead by importing SIGNAL additionally 2015-02-16 10:28:28 +01:00
d477467b02 method renamed to avoid misunderstanding 2015-02-16 10:27:32 +01:00
61c136fec3 fixed a startup problem: a figure was opened without parent object (MainWindow) and led to crash before the MainApplication opened properly 2015-02-16 10:26:05 +01:00
0e73f21bda imports restructured and optimized 2015-02-16 10:24:17 +01:00
be0bf20382 cross-correlation analysis 2015-02-16 07:01:41 +01:00
d32b401508 changed due to testing 2015-02-13 11:36:44 +01:00
759697add8 problem with the creation of a valid resource identifier fixed (still problematic, see #145) 2015-02-13 11:36:09 +01:00
c35eea4588 several bugfixes for the read routine for PILOT event data (testing not yet completed, see also tickets #145 and #146) 2015-02-13 11:35:00 +01:00
1b86d3bfa4 nothing changed 2015-02-13 11:32:00 +01:00
cdd24e23fb added missing method for GenericDataStructure 2015-02-13 11:31:20 +01:00
e66e0701a4 catching a problem with sloppy formatted GSE data 2015-02-13 11:30:45 +01:00
47f0fcb030 corrected wrong logic of the routine 2015-02-13 11:29:32 +01:00
6a59bee73d the call to the parents method makes no sense - deleted; typo corrected 2015-02-13 11:28:58 +01:00
3508d00c28 catch case where no filename for the actual opened event is defined 2015-02-13 11:24:27 +01:00
2b5e8216ba new method the get the latest event that has been opened see also [7e3bcef] 2015-02-13 11:23:01 +01:00
922cb6a807 recursive call to openWaveFormData deleted 2015-02-13 11:20:29 +01:00
81ce161744 automatic reformatting of the code 2015-02-13 11:19:10 +01:00
30503185e4 initialize all attributes that might be used in startup methods (bugfix) 2015-02-13 11:17:18 +01:00
7e3bcefd19 only store the last 5 events 2015-02-13 11:16:20 +01:00
1c40cb3852 bugfix: wrong call to a method 2015-02-13 11:15:48 +01:00
35e477c13f by default the last opened event is loaded on restart 2015-02-13 11:14:17 +01:00
903e87e1e1 usage of DATASTRUCTURE modified 2015-02-13 11:13:21 +01:00
b07f1b5b78 picks.py deleted new classes are not needed; ~obspy.core.event.Pick object used instead 2015-02-11 13:11:12 +01:00
bec1ee1716 new function added: createAmplitude - routine for convenient ~obspy.core.event.Amplitude object creation 2015-02-11 08:19:13 +01:00
d5c9ad41be Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop
Conflicts:
	pylot/core/util/utils.py
2015-02-10 13:17:46 +01:00
46a20a10e6 new functions added for event creation purposes:
getHash - returns a hash string from an UTCDateTime object
	createResourceID - returns a valid PyLoT resourceID for arbitrary types of event data
	createOrigin - returns an ObsPy Origin object (work in progress)
	createEvent - returns an ObsPy Event object (work in progress)
	createPick - returns an ObsPy Pick object (work in progress)
	createArrival - returns an ObsPy Arrival object (work in progress)
	createMagnitude - returns an ObsPy Magnitude object (work in progress)
	createAmplitude - returns an ObsPy Amplitude object (work in progress)
testing should be carried out as a next step
2015-02-10 13:12:04 +01:00
c88ba18d2f new functions added for event creation purposes:
getHash - returns a hash string from an UTCDateTime object
	createResourceID - returns a valid PyLoT resourceID for arbitrary types of event data
	createOrigin - returns an ObsPy Origin object (work in progress)
	createEvent - returns an ObsPy Event object (work in progress)
	createPick - returns an ObsPy Pick object (work in progress)
	createArrival - returns an ObsPy Arrival object (work in progress)
2015-02-09 13:24:55 +01:00
f6bf37c920 new package io.py which should contain all import and export routines written by ourselves, such as reading old PILOT phase and location information file; implementation of the readPILOTevent function; new routines in utils: createArrival will be split into two functions: createPick and createArrival; also planned: createOrigin, createAmplitude and createMagnitude as well as giving createEvent functionality 2015-02-07 09:12:58 +01:00
d3199a5798 implementation of reading and plotting seismograms (work in progress) 2015-02-07 09:05:08 +01:00
7092f6e8b5 the MainWindow now should give the right component in the title 2015-02-07 09:03:03 +01:00
bc87c12cfa new attribute dispComponent added to the MainWindow class to control the displayed component 2015-02-04 14:50:49 +01:00
401c09d0b4 added new methods to the MPLWidget class to control the axes labels 2015-02-04 14:49:49 +01:00
36675d4a92 code clean up 2015-01-29 08:53:01 +01:00
9dc5b57ee0 new attribute introduced holding information about the component of the seismic waveforms to display in the overview plot 2015-01-29 08:52:01 +01:00
eab0ea5a7e modified the GenericDataStructure class in order to fit into the concept of different data structures (work in progress) 2015-01-29 08:50:39 +01:00
f5eda74730 method getWFFnames implemented returning the file names of the waveform data files given in a particular data structure case as well as setting the attribute pointing to the same information; method openWaveformData implemented in order to read waveform data into the Data object 2015-01-29 08:48:25 +01:00
8eb69822b1 re-organization of the MainWindow methods (for convenience only) 2015-01-29 08:41:38 +01:00
a8330b6d91 PilotDataStructure's method expandDataPath return the actual datapath as SeiscompDataStructure's does 2015-01-27 05:22:06 +01:00
89f996ffe3 problem fixed: renaming of getFields method implemented into expandDataPath method (unified usage of either DataStructure object) 2015-01-27 05:19:41 +01:00
1accc92421 Merge branch 'develop' 2015-01-27 05:01:45 +01:00
d22a224804 data plotting; waveform filtering and convenience imports in order to get a overview window displaying data; new data structure available -> PyLoT should be able to read PILOT data 2015-01-26 21:11:53 +01:00
dbd53024b2 new module: make selection of either data structure easier 2015-01-26 21:08:07 +01:00
Ludger Küperkoch
75ffe0c37a Some changes to be actual to Python2.7 2015-01-26 10:55:25 +01:00
Ludger Küperkoch
41a2e840f8 Some changes to be actual to Python2.7 2015-01-26 10:55:18 +01:00
Ludger Küperkoch
2d48ad3bb2 Some changes to be actual to Python2.7 2015-01-26 10:54:58 +01:00
23fa136dc5 get data from the NewEvtDlg dialog for event creation 2015-01-23 10:21:34 +01:00
64158174e6 currently working on the plotting of waveforms; changes made to meet pre-requisites to data plotting 2015-01-22 16:41:52 +01:00
ef50c3d4d8 bugfix: single element tuple declaration was wrong 2015-01-21 16:07:43 +01:00
538c2e2dff Merge branch 'add-save' 2015-01-20 14:04:12 +01:00
19eaa171fd Merge branch 'master' into devGUI 2015-01-20 14:03:22 +01:00
b4c19acd99 release version change due to testing 2015-01-20 14:02:56 +01:00
45fb1935ef added FormatError to convenience imports of package util 2015-01-20 14:02:29 +01:00
540891f3d7 preferences panel works for me; settings saved properly 2015-01-20 13:58:23 +01:00
4769b447a8 added help menu to the menubar 2015-01-20 13:56:15 +01:00
ff98371a04 add recent events to file menu 2015-01-20 13:55:15 +01:00
0bfe2ccc3d new method added in order to add actions and separators to the menu in the menubar more easily 2015-01-20 13:54:17 +01:00
9bbbe89b36 add recent events to file menu 2015-01-20 13:46:16 +01:00
2961867c10 insert assert statement in Picker.py 2014-12-19 10:50:50 +01:00
1d61b4936c add save data method 2014-12-18 13:49:16 +01:00
6be85efa1f Merge branch 'develop' 2014-12-18 13:36:05 +01:00
f5ab88909f Merge branch 'add-save' into develop 2014-12-18 13:35:23 +01:00
d46d5c2bb0 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2014-12-17 12:17:02 +01:00
f0d60de745 add save data method 2014-12-17 12:16:32 +01:00
92ed582c01 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into add-save 2014-12-17 12:01:07 +01:00
c5e55fd867 Merge branch 'installation'
Conflicts:
	pylot/RELEASE-VERSION
2014-12-17 08:00:07 +01:00
e6301af2bb Merge branch 'devFilterWidget' into develop 2014-12-17 07:53:32 +01:00
9d1a78222e PropertiesDlg changed: retrieve additional information about the user, use QSettings to store the derived parameters 2014-12-17 07:52:55 +01:00
3fe1e3906e OUTPUTFORMATS in defaults defined; manage available formats just from here 2014-12-17 06:37:36 +01:00
8213cdc575 PropertiesDlg added to the MainWindow (not tested yet) 2014-12-17 06:33:34 +01:00
0749420f9a filter possible event format file extension for selection from file dialog 2014-12-17 06:30:03 +01:00
Ludger Küperkoch
2fcf325a6e Debugged getDataArray, same data lengths are now guaranteed 2014-12-16 16:15:53 +01:00
Ludger Küperkoch
13b8a9daec Debugged 2014-12-16 16:13:52 +01:00
Ludger Küperkoch
fa58ec2aee Modified for applying pragmatic picking algorithm, new class PragPicker in Picker.py 2014-12-15 15:04:48 +01:00
Ludger Küperkoch
59930c3238 Implemented pragmatic picking algorithm developed by TM, JL, and LK 2014-12-15 15:03:41 +01:00
5d85a4bdc8 returning value in set method is not straight forward 2014-12-15 05:15:43 +01:00
Ludger Küperkoch
2eace0d304 Debugging, cleaning up 2014-12-12 13:37:18 +01:00
Ludger Küperkoch
31273b384e Simplified AIC-picking algorithm: Onset is definetly the minimum in front of maximum of AIC-CF! Smoothing of AIC-CF no more necessary. 2014-12-11 16:30:21 +01:00
Ludger Küperkoch
201c34a85b Modified for using TimeArray object for plotting and expanded for picking on ARH-CF. 2014-12-11 15:57:25 +01:00
Ludger Küperkoch
112e0bc7fa Modified internal function getTimeArray for calculating correct time stamps even for AR prediction, where CF time array is different to data time array. Implemented getARdetStep and setARdetStep where ARdetStep is the recalculation step of AR coefficients. 2014-12-11 15:55:23 +01:00
3c9865c767 add station selection 2014-12-11 09:43:59 +01:00
d665e47d02 get values for filter parameters from widget 2014-12-09 05:25:43 +01:00
9e7f20a9fb create a working MainWindow 2014-12-08 11:38:24 +01:00
223c992f20 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2014-12-08 11:02:04 +01:00
4bb75d17fb remove variables which are attributes of classes 2014-12-08 11:01:47 +01:00
ef8bd6572e create a working MainWindow 2014-12-08 10:26:14 +01:00
04e28943d5 remove variables which are attributes of classes 2014-12-08 08:53:58 +01:00
32eee12f25 using the new implementation of the AutoPicking object 2014-12-08 08:48:33 +01:00
752811c8fd implemented method getTimeArray in the same fashion as used in run_makeCF.py 2014-12-08 08:45:43 +01:00
ce8b954a8b now cf is an CharacteristicFunction object and not an array (changes should also be made to the caller run_makeCF.py) 2014-12-08 05:27:54 +01:00
Ludger Küperkoch
479058a41e Included AICPicker of class Picker 2014-12-05 16:32:55 +01:00
Ludger Küperkoch
ca809c4673 Initial version of new class of methods for automatic picking, AICPicker is running but without quality attributes 2014-12-05 16:14:03 +01:00
70a700101b Merge branch 'devGUI' into develop 2014-12-05 10:27:42 +01:00
5650f7bfc7 started to implement read capability for matlab binary phases files (AUTO- and PHASES.mat) 2014-12-05 10:26:37 +01:00
9603f7127c imports corrected; menu definition changed 2014-12-04 05:13:32 +01:00
609005433a added verbose output functionality 2014-12-02 12:07:02 +01:00
e6ac337466 testing GUI; execution updates RELEASE-VERSION 2014-12-01 12:46:04 +01:00
553bb9990b loading data by initialization of a Data object (not working yet) 2014-12-01 12:45:20 +01:00
41684cd282 filterOptions has now a buttonBox 2014-12-01 12:44:25 +01:00
3e559f61da fnConstructor now works on eventIDs also 2014-12-01 12:43:49 +01:00
d7a4692afc tried to get filter options popup working (not working yet) 2014-12-01 12:42:50 +01:00
ec1cc26b8c new method okToContinue written in order to prevent accidental dataloss 2014-12-01 12:41:56 +01:00
dc43a3520d do not "save" actions as Attributes of the MainWindow 2014-12-01 12:39:56 +01:00
4acf634f8d loadData changed; now uses information from the sender to evaluate the fname to read 2014-12-01 12:37:52 +01:00
9d38ed9771 new QSettings added 2014-12-01 12:36:23 +01:00
746b073572 changed imports as some were not necessary and others are now mandatory 2014-12-01 12:34:44 +01:00
fc3e1a613e added quit functionality 2014-12-01 08:40:35 +01:00
04e6a51e99 edit on makePyLoT.py: a symlink is created an darwin systems in order to get the right application name on Mac OS X's menubar 2014-11-29 11:39:25 +01:00
d405e9e6f9 debug GUI 2014-11-28 11:15:49 +01:00
9dc57e3977 icon for P and S phase selection added 2014-11-28 09:19:16 +01:00
c7f09988e5 started implementation of a makePyLoT routine capable of building and installing PyLoT to a desired directory 2014-11-27 11:51:40 +01:00
1702051d8f Merge commit '8ed281ae2d9e45c842d93da99f641842cdfb8bb4' into installation 2014-11-27 10:59:55 +01:00
d47623ed65 implementation of standard icons corrected 2014-11-27 10:59:34 +01:00
8ed281ae2d printer icon added licensed under Creative Commons (Attribution 3.0); source: https://www.iconfinder.com/icons/59191/print_printer_icon#size=32 (27.11.2014) 2014-11-27 10:57:33 +01:00
094213bd21 method createAction implemented in order to create menu entries 2014-11-27 10:13:17 +01:00
411b365987 template for argparse program imported; will be changed to make PyLoT (build, install, re- or uninstall); 2014-11-26 09:09:19 +01:00
4b7bfc6aa9 make GUI working even without actual data 2014-11-26 08:48:42 +01:00
4bb03d6418 all picks classes are now collected in the same module 2014-11-26 08:47:21 +01:00
9ff18c7425 changes made in order to get the GUI working for the first time 2014-11-26 08:46:16 +01:00
d0d17ee656 reorganization of graphical and help resources; they are not part of the code and therefore they do not really match in util package 2014-11-26 08:45:04 +01:00
8cb638e5bc indentation fixed 2014-11-25 05:04:47 +01:00
758de94fff indentation fixed 2014-11-24 05:39:57 +01:00
Ludger Küperkoch
8fb9ca9dc2 Modified for running updated CharFuns.py showing all kinds of CFs on all 3 components 2014-11-21 14:52:19 +01:00
Ludger Küperkoch
8fa9ec74c0 Included AR prediction on all 3 components 2014-11-21 14:50:51 +01:00
2a385512ee version number changes each time the Main program is started (should not be the case, to be fixed before release) 2014-11-21 10:08:18 +01:00
9958c86287 fixed wrong usage of attribute wfdata 2014-11-21 10:06:04 +01:00
25921e3718 started to improve documentation in read/data 2014-11-21 10:05:27 +01:00
0e8c5a7e48 exporting is much easier using obspy routines 2014-11-21 10:04:32 +01:00
Ludger Küperkoch
7da6b57ed1 Modified to handle two-component data 2014-11-20 09:06:13 +01:00
Ludger Küperkoch
03033f57a1 Included autoregressive prediction on horizontal components 2014-11-20 09:05:30 +01:00
fbce83293d initial import of classes for automatic picking purposes [just imported by me; module has originally been written by Ludger Küperkoch] 2014-11-14 07:40:00 +01:00
c40aec192c test modules added and modified (not working yet) 2014-11-13 11:30:19 +01:00
8c66f1823a cleaning up main window for first test runs 2014-11-13 11:29:42 +01:00
86803cdff0 debugging UI problems to get the main application running 2014-11-06 15:07:05 +01:00
013c948b33 fix convenience import problems 2014-11-06 15:05:56 +01:00
7fd191dcc6 component testing scripts added 2014-10-30 13:38:41 +01:00
97344c9f21 cleaned up object type class definition for FilterOptions, programs now only use methods to access attributes 2014-10-30 13:38:03 +01:00
bff84ede81 moved QtPyLoT.py (main program) to the base directory 2014-10-30 13:36:19 +01:00
3b613d8330 see ticket #129 (future changes very likely) 2014-10-30 08:13:05 +01:00
da18039c87 line added 2014-10-27 12:19:48 +01:00
224c6b625c FilterOptionsDialog processes parameter filter option of type FilterOption 2014-10-27 12:19:04 +01:00
185b308166 adding new package containing picking relevant data types 2014-10-27 12:16:14 +01:00
4f440d282d added a string representation for data type FilterOptions 2014-10-27 12:14:59 +01:00
c3e072e952 trying to implement generic data structure import 2014-10-27 12:12:48 +01:00
d4bf29e4ff avoid using python keywords as format as variable name; empty method definition for data plotting 2014-10-27 12:10:35 +01:00
32cf20b81d avoid imports within class definitions 2014-10-27 12:06:30 +01:00
c03b8a220f changed loading of filter options, now immediately either a error status message or a success message is displayed in the main window if the filter parameter could not be loaded or were loaded respectively 2014-10-27 12:04:01 +01:00
77e7f666f0 added 'TestType' to plotting options (only for testing) 2014-10-27 11:57:34 +01:00
c41eb36a34 widget name changed to match the actual QtGUI type name 2014-10-27 11:56:44 +01:00
2d776f84da deleted unnecessary import 2014-10-27 11:55:39 +01:00
12c6fecf74 modified establishment of data plot 2014-10-27 11:55:06 +01:00
Sebastian Wehling
db76861124 added write support for Events in QuakeML and JSON format utilizing ObsPy 2014-07-25 14:16:11 +02:00
Sebastian Wehling
898169647b added new convenience import from new module within package 2014-07-25 14:15:06 +02:00
Sebastian Wehling
e4ddb8b55e new module utils within package util containing helpers for this and that 2014-07-25 14:14:19 +02:00
Sebastian Wehling
dde360d4cc modified: docstrings modified 2014-07-17 11:04:16 +02:00
Sebastian Wehling
8de25cc149 modified: docstring for class FilterOptions established using Sphinx-markups 2014-07-17 10:28:29 +02:00
Sebastian Wehling
6e2c1851ec modified: added imports
added: new class Data added (container class for waveform- and event data)
2014-07-16 12:07:42 +02:00
Sebastian Wehling
5268d35d39 modified: introduce data container class 2014-07-16 12:06:05 +02:00
Sebastian Wehling
34e27f3e67 modified: enhanced readability of convience imports 2014-07-16 12:02:57 +02:00
1266ced058 modification: PropertiesDlg started (not working) 2014-07-03 10:21:36 +02:00
29700e793e modification: fixed qt-resources alias for the offline help alternative 2014-07-03 10:19:51 +02:00
ff39d97b82 modification: url of the wiki-page changed to full domain (certificate validation issue) 2014-07-03 10:18:42 +02:00
a079bd331b deletion: line deleted contain call to a not implemented method 2014-07-03 10:17:25 +02:00
0cee4cd644 modified: imports adjusted to only those used in the code really 2014-07-03 10:15:25 +02:00
a385553a29 enhancements and fixes:
import QTabBar
started to implement PropertiesDlg
deleted unnecessary buttonBox assignment
entered default page for HelpForm (NOT WORKING YET)
2014-06-11 15:25:26 +02:00
00f52c444a file head fixed 2014-06-11 15:21:30 +02:00
4c8174f5ae convenience imports completed 2014-06-11 15:20:55 +02:00
0481fa748b the help form should look like this or similar but it is not working at the moment; maybe QTextBrowser element of HelpForm should be replaced by QWebView (pending) 2014-06-11 15:19:37 +02:00
46f5e55c8e improved imports for better debugging 2014-06-11 05:49:53 +02:00
cb80170ccf some non-functional snippets deleted to promote GUI debugging 2014-06-11 05:48:21 +02:00
e7507a325f fixed usage of keyword arguments; 2014-06-11 05:43:27 +02:00
e659e13a0e FilterOptionsWidget debugged; next it will be tested as a QDockWidget (QMainWindow necessary) 2014-06-11 05:38:41 +02:00
cb7eb481d9 improved imports for better debugging 2014-06-10 16:37:07 +02:00
3278470deb Started to work on ticket #122 2014-05-14 11:45:45 +02:00
307e960d34 pushbutton layout implemented (variable number of buttons according to the number of stations used) 2014-05-09 15:00:08 +02:00
d9ca0141de alphabetic order of convenience imports 2014-04-11 19:40:11 +02:00
fb2553e980 check main case; corrected usage of import 2014-04-11 19:39:29 +02:00
6af43fc9fd bugfix: imports corrected;
imports updated, layout of 'FilterOptionsDock' started
2014-04-10 09:34:13 +02:00
8df11078b4 bugfix: private methods name corrected;
set default values instead of 'None'
2014-04-10 09:31:16 +02:00
bead7a24c3 documentation updated in order to automatically provide online documentation via sphinx.ext.autodoc 2014-04-01 16:49:28 +02:00
0dec3eb7f0 unified class naming 2014-04-01 16:48:16 +02:00
36531c9923 convenience imports added 2014-04-01 16:47:24 +02:00
88b2a319fd added status label; not sure how to implement loading of data (different types of databases) 2014-04-01 16:46:10 +02:00
ef8adc6c0a doc strings corrected 2014-03-31 13:01:51 +02:00
faacfc423c resources file added in order to provide binary media file for the User Interfaces 2014-03-31 13:00:57 +02:00
c26782bf7c imports fixed and classes renamed for better readability 2014-03-31 12:59:52 +02:00
e6b49cfdb3 module pylot.core.util.connection added: contains routines for web and network utilization 2014-03-31 12:58:58 +02:00
b049dda90f imports fixed; doc string as RST added 2014-03-31 12:57:08 +02:00
9b8413beaf icons and help documents added; main application has been modified slightly; new method definitions added (ToDo) 2014-03-28 22:26:15 +01:00
d58b671d36 started to write initialization method for the GenericDataBase class in order to read data from an arbitrary data folder structure 2014-03-28 05:30:55 +01:00
0af8ab2b08 holds now all widgets' classes used in the main application 2014-03-28 05:28:16 +01:00
90936bd47a emphasize modular structure by outsourcing widgets and errors 2014-03-28 05:25:46 +01:00
dac3be5110 package wide imports for convenience 2014-03-27 21:29:41 +01:00
5b044a3f14 container module for error handling added 2014-03-27 15:34:42 +01:00
253a49c06b implementation of the PyLoT icon 2014-03-19 12:24:41 +01:00
fbbfcbcaea make use of new module widgets, set a matplotlib figure the central GUI element 2014-03-19 12:16:41 +01:00
e347e8eef9 implement new module widgets 2014-03-19 12:15:30 +01:00
9a2d127e30 added class MPLWidget in order to create updatable Matplotlib Figures within a Qt GUI 2014-03-19 12:14:54 +01:00
8edea03fe7 cleanup, switched to PySide (more flexible licensing), started to implement the filter options depending on the phase to be picked 2014-03-13 13:27:34 +01:00
ac27a8ef2e clean-up 2014-03-13 13:26:13 +01:00
c83a11a2c3 moved class FilterOptions to the read module 2014-03-13 13:25:37 +01:00
84f3a29a86 new file defaults.py written to provide default value if no user configuration file is available 2014-03-13 09:24:17 +01:00
d0b3f0ee5d cleanup: module naming re-structured 2014-02-21 23:39:42 +01:00
c0f7060368 SeiscompDataStructure objects contain all relevant information to expand a desired data path (including unix shell wildcards) [not tested for Windows yet] 2014-02-20 14:20:57 +01:00
e38b917623 removing QtDesigner project files due to decision to code the PyQt stuff by ourselves 2014-02-19 14:58:45 +01:00
8eb82cabc0 Merge branch 'master' into develop 2014-02-19 14:56:32 +01:00
Sebastian Wehling
bddc2ab83e bugfix: corrected call to special method __getitem__ 2014-02-19 14:43:56 +01:00
Sebastian Wehling
270e3b6d00 modifications concerning the usage of __specialmethods__ made 2014-02-19 13:07:39 +01:00
Sebastian Wehling
45999de6d2 made some modifications (debugging special method implementation)
item assignment not working yet
2014-02-18 15:07:50 +01:00
Sebastian Wehling
98c50e5312 made some modifications on special methods 2014-02-18 14:16:55 +01:00
ede06550cd reorganized initialization to IO-type class SeisCompDataStructure; see also ticket #118 2014-02-18 09:38:40 +01:00
c3ec80d947 planned imports of PyLoT of not yet existing PyLoT classes commented from pylot/__init__.py 2014-02-18 09:35:55 +01:00
f9d8173b2f class AutoPickParameter is now working; work on ticket #119 not finished yet (closure pending) 2014-02-18 09:33:36 +01:00
5a093ed736 AutoPickParamter class modified; not working at the moment (!) 2014-02-15 08:09:55 +01:00
34c1f9111b initial AutoPickParameter class import. Attributes are not callable at the moment (implementation pending). 2014-02-13 14:28:41 +01:00
Sebastian Wehling
4aa7856267 started initialization of SDS data organization scheme 2014-02-12 14:18:12 +01:00
Sebastian Wehling
a4f948fd76 modified initialization method of GenericDataBase class 2014-02-11 13:21:05 +01:00
1a4d306a40 initialized readinput module; there will be type classes to handle different input data types, e.g. inputs for automatic Picking, inputs for correlation detection, input for reference Picking ... 2014-02-07 05:42:31 +01:00
738f280abe started to implement a filter Widget 2014-02-07 05:40:49 +01:00
Sebastian Wehling
d016a80a72 classes for I/O started, QtPyLoT.py cleaned 2014-02-03 12:51:23 +01:00
25351d3827 changes made during workshop 2014-01-30 13:11:44 +01:00
0c1e64895b added collection class FilterOptions for filter option handling (container class in order to keep GUI up-to-date) 2014-01-28 12:07:23 +01:00
Sebastian Wehling
aaf04a13d5 started to write initialization methods for Dialogs, Windows and other Widgets 2014-01-24 14:31:57 +01:00
dcc3881720 permissions repaired and QtPyLoT.py started with some MainWindow stuff 2014-01-10 05:45:03 +01:00
e05c3d56bc initialized software versioning similar to obspy 2014-01-09 10:43:40 +01:00
32a1c8bcd3 commit master 2013-12-09 13:34:01 +01:00
33d10300f5 commit staged changes 2013-12-09 13:31:14 +01:00
336572bfc3 stage all unstaged files 2013-12-09 13:28:13 +01:00
8bf51c9315 added QtProject files. Testing the capabilities of QtDesigner for our purposes. Maybe it is better to design the GUI directly via PyQt/PySide instead of utilizing the QtDesigner and translate the *.ui file to *.py scripts. 2013-12-09 13:25:05 +01:00
bf37a6546d Started to build the basic structure. Most classes will inherit functionality of the ObsPy Core classes, but slightly redefined to fit PyLoTs’ purposes. 2013-11-20 06:02:43 +01:00
a484709bc4 removing file created by accident 2013-11-08 15:08:04 +01:00
e92c00af48 initial commit for the first blank files
preparing git spare initialization on remote system
2013-11-08 15:05:39 +01:00
5d4084ac8a no message 2013-11-08 14:31:09 +01:00
6c363d34ff updated contacts in README 2013-11-08 10:33:33 +01:00
91cd80bdb5 changed the README text to match the context 2013-10-11 06:01:12 +02:00
a3a959d75a first commit of GNU LGPL3 text and the readme file of the latest matlab version of PILOT. 2013-10-11 05:27:33 +02:00
169 changed files with 249653 additions and 2 deletions

4
.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
*.pyc
*~
.idea
pylot/RELEASE-VERSION

4158
PyLoT.py Executable file

File diff suppressed because it is too large Load Diff

113
README.md
View File

@@ -1,2 +1,111 @@
# PyLoT
Python picking and Location Tool
# PyLoT
version: 0.3
The Python picking and Localisation Tool
This python library contains a graphical user interfaces for picking seismic phases. This software needs [ObsPy][ObsPy]
and the PySide2 Qt5 bindings for python to be installed first.
PILOT has originally been developed in Mathworks' MatLab. In order to distribute PILOT without facing portability
problems, it has been decided to redevelop the software package in Python. The great work of the ObsPy group allows easy
handling of a bunch of seismic data and PyLoT will benefit a lot compared to the former MatLab version.
The development of PyLoT is part of the joint research project MAGS2 and AlpArray.
## Installation
At the moment there is no automatic installation procedure available for PyLoT. Best way to install is to clone the
repository and add the path to your Python path.
It is highly recommended to use Anaconda for a simple creation of a Python installation using either the *pylot.yml* or the *requirements.txt* file found in the PyLoT root directory. First make sure that the *conda-forge* channel is available in your Anaconda installation:
conda config --add channels conda-forge
Afterwards run (from the PyLoT main directory where the files *requirements.txt* and *pylot.yml* are located)
conda env create -f pylot.yml
or
conda create --name pylot_38 --file requirements.txt
to create a new Anaconda environment called "pylot_38".
Afterwards activate the environment by typing
conda activate pylot_38
#### Prerequisites:
In order to run PyLoT you need to install:
- Python 3
- obspy
- pyside2
- pyqtgraph
- cartopy
(the following are already dependencies of the above packages):
- scipy
- numpy
- matplotlib <= 3.3.x
#### Some handwork:
PyLoT needs a properties folder on your system to work. It should be situated in your home directory
(on Windows usually C:/Users/*username*):
mkdir ~/.pylot
In the next step you have to copy some files to this directory:
*for local distance seismicity*
cp path-to-pylot/inputs/pylot_local.in ~/.pylot/pylot.in
*for regional distance seismicity*
cp path-to-pylot/inputs/pylot_regional.in ~/.pylot/pylot.in
*for global distance seismicity*
cp path-to-pylot/inputs/pylot_global.in ~/.pylot/pylot.in
and some extra information on error estimates (just needed for reading old PILOT data) and the Richter magnitude scaling
relation
cp path-to-pylot/inputs/PILOT_TimeErrors.in path-to-pylot/inputs/richter_scaling.data ~/.pylot/
You may need to do some modifications to these files. Especially folder names should be reviewed.
PyLoT has been tested on Mac OSX (10.11), Debian Linux 8 and on Windows 10.
## Release notes
#### Features:
- event organisation in project files and waveform visualisation
- consistent manual phase picking through predefined SNR dependant zoom level
- consistent automatic phase picking routines using Higher Order Statistics, AIC and Autoregression
- interactive tuning of auto-pick parameters
- uniform uncertainty estimation from waveform's properties for automatic and manual picks
- pdf representation and comparison of picks taking the uncertainty intrinsically into account
- Richter and moment magnitude estimation
- location determination with external installation of [NonLinLoc](http://alomax.free.fr/nlloc/index.html)
#### Known issues:
We hope to solve these with the next release.
## Staff
Original author(s): M. Rische, S. Wehling-Benatelli, L. Kueperkoch, M. Bischoff (PILOT)
Developer(s): S. Wehling-Benatelli, M. Paffrath, L. Kueperkoch, K. Olbert, M. Bischoff, C. Wollin, M. Rische, D. Arnold, K. Cökerim, S. Zimmermann
Others: A. Bruestle, T. Meier, W. Friederich
[ObsPy]: http://github.com/obspy/obspy/wiki
April 2022

561
autoPyLoT.py Executable file
View File

@@ -0,0 +1,561 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import print_function
import argparse
import datetime
import glob
import os
import traceback
from obspy import read_events
from obspy.core.event import ResourceIdentifier
import pylot.core.loc.focmec as focmec
import pylot.core.loc.hash as hash
import pylot.core.loc.hypo71 as hypo71
import pylot.core.loc.hypodd as hypodd
import pylot.core.loc.hyposat as hyposat
import pylot.core.loc.nll as nll
import pylot.core.loc.velest as velest
# from PySide.QtGui import QWidget, QInputDialog
from pylot.core.analysis.magnitude import MomentMagnitude, LocalMagnitude
from pylot.core.io.data import Data
from pylot.core.io.inputs import PylotParameter
from pylot.core.pick.autopick import autopickevent, iteratepicker
from pylot.core.util.dataprocessing import restitute_data, Metadata
from pylot.core.util.defaults import SEPARATOR
from pylot.core.util.event import Event
from pylot.core.util.structure import DATASTRUCTURE
from pylot.core.util.utils import get_none, trim_station_components, check4gapsAndRemove, check4doubled, \
check4rotated
from pylot.core.util.version import get_git_version as _getVersionString
__version__ = _getVersionString()
def autoPyLoT(input_dict=None, parameter=None, inputfile=None, fnames=None, eventid=None, savepath=None,
savexml=True, station='all', iplot=0, ncores=0, obspyDMT_wfpath=False):
"""
Determine phase onsets automatically utilizing the automatic picking
algorithms by Kueperkoch et al. 2010/2012.
:param obspyDMT_wfpath: if obspyDMT is used, name of data directory ("raw" or "processed")
:param input_dict:
:type input_dict:
:param parameter: PylotParameter object containing parameters used for automatic picking
:type parameter: pylot.core.io.inputs.PylotParameter
:param inputfile: path to the input file containing all parameter information for automatic picking
(for formatting details, see. `~pylot.core.io.inputs.PylotParameter`
:type inputfile: str
:param fnames: list of data file names or None when called from GUI
:type fnames: str
:param eventid: event path incl. event ID (path to waveform files)
:type eventid: str
:param savepath: save path for autoPyLoT output, if None/"None" output will be saved in event folder
:type savepath: str
:param savexml: export results in XML file if True
:type savexml: bool
:param station: choose specific station name or 'all' to pick all stations
:type station: str
:param iplot: logical variable for plotting: 0=none, 1=partial, 2=all
:type iplot: int
:param ncores: number of cores used for parallel processing. Default (0) uses all available cores
:type ncores: int
:return: dictionary containing picks
:rtype: dict
"""
if ncores == 1:
sp_info = 'autoPyLoT is running serial on 1 cores.'
else:
if ncores == 0:
ncores_readable = 'all available'
else:
ncores_readable = ncores
sp_info = 'autoPyLoT is running in parallel on {} cores.'.format(ncores_readable)
splash = '''************************************\n
*********autoPyLoT starting*********\n
The Python picking and Location Tool\n
Version {version} 2017\n
\n
Authors:\n
L. Kueperkoch (BESTEC GmbH, Landau i. d. Pfalz, \n
now at igem GmbH, Mainz)
M. Paffrath (Ruhr-Universitaet Bochum)\n
S. Wehling-Benatelli (Ruhr-Universitaet Bochum)\n
{sp}
***********************************'''.format(version=_getVersionString(),
sp=sp_info)
print(splash)
parameter = get_none(parameter)
inputfile = get_none(inputfile)
eventid = get_none(eventid)
fig_dict = None
fig_dict_wadatijack = None
if input_dict and isinstance(input_dict, dict):
if 'parameter' in input_dict:
parameter = input_dict['parameter']
if 'fig_dict' in input_dict:
fig_dict = input_dict['fig_dict']
if 'fig_dict_wadatijack' in input_dict:
fig_dict_wadatijack = input_dict['fig_dict_wadatijack']
if 'station' in input_dict:
station = input_dict['station']
if 'fnames' in input_dict:
fnames = input_dict['fnames']
if 'eventid' in input_dict:
eventid = input_dict['eventid']
if 'iplot' in input_dict:
iplot = input_dict['iplot']
if 'savexml' in input_dict:
savexml = input_dict['savexml']
if 'obspyDMT_wfpath' in input_dict:
obspyDMT_wfpath = input_dict['obspyDMT_wfpath']
if not parameter:
if not inputfile:
print('Using default input parameter')
parameter = PylotParameter(inputfile)
else:
if not type(parameter) == PylotParameter:
print('Wrong input type for parameter: {}'.format(type(parameter)))
return
if inputfile:
print('Parameters set and input file given. Choose either of both.')
return
evt = None
# reading parameter file
if parameter.hasParam('datastructure'):
# getting information on data structure
datastructure = DATASTRUCTURE[parameter.get('datastructure')]()
dsfields = {'root': parameter.get('rootpath'),
'dpath': parameter.get('datapath'),
'dbase': parameter.get('database')}
exf = ['root', 'dpath', 'dbase']
if parameter['eventID'] != '*' and fnames == 'None':
dsfields['eventID'] = parameter['eventID']
exf.append('eventID')
datastructure.modifyFields(**dsfields)
datastructure.setExpandFields(exf)
# check if default location routine NLLoc is available and all stations are used
if get_none(parameter['nllocbin']) and station == 'all':
locflag = 1
# get NLLoc-root path
nllocroot = parameter.get('nllocroot')
# get path to NLLoc executable
nllocbin = parameter.get('nllocbin')
nlloccall = '%s/NLLoc' % nllocbin
# get name of phase file
phasef = parameter.get('phasefile')
phasefile = '%s/obs/%s' % (nllocroot, phasef)
# get name of NLLoc-control file
ctrf = parameter.get('ctrfile')
ctrfile = '%s/run/%s' % (nllocroot, ctrf)
# pattern of NLLoc ttimes from location grid
ttpat = parameter.get('ttpatter')
# pattern of NLLoc-output file
nllocoutpatter = parameter.get('outpatter')
maxnumit = 2 # maximum number of iterations for re-picking
else:
locflag = 0
print(" !!! ")
print("!!No location routine available, autoPyLoT is running in non-location mode!!")
print("!!No source parameter estimation possible!!")
print(" !!! ")
wfpath_extension = ''
if obspyDMT_wfpath not in [None, False, 'False', '']:
wfpath_extension = obspyDMT_wfpath
print('Using obspyDMT structure. There will be no restitution, as pre-processed data are expected.')
if wfpath_extension != 'processed':
print('WARNING: Expecting wfpath_extension to be "processed" for'
' pre-processed data but received "{}" instead!!!'.format(wfpath_extension))
if not input_dict:
# started in production mode
datapath = datastructure.expandDataPath()
if fnames == 'None' and parameter['eventID'] == '*':
# multiple event processing
# read each event in database
events = [event for event in glob.glob(os.path.join(datapath, '*')) if
(os.path.isdir(event) and not event.endswith('EVENTS-INFO'))]
elif fnames == 'None' and parameter['eventID'] != '*' and not type(parameter['eventID']) == list:
# single event processing
events = glob.glob(os.path.join(datapath, parameter['eventID']))
elif fnames == 'None' and type(parameter['eventID']) == list:
# multiple event processing
events = []
for eventID in parameter['eventID']:
events.append(os.path.join(datapath, eventID))
else:
# autoPyLoT was initialized from GUI
events = [eventid]
evID = os.path.split(eventid)[-1]
locflag = 2
else:
# started in tune or interactive mode
datapath = os.path.join(parameter['rootpath'],
parameter['datapath'])
events = []
for eventID in eventid:
events.append(os.path.join(datapath,
parameter['database'],
eventID))
if not events:
print('autoPyLoT: No events given. Return!')
return
# transform system path separator to '/'
for index, eventpath in enumerate(events):
eventpath = eventpath.replace(SEPARATOR, '/')
events[index] = eventpath
allpicks = {}
glocflag = locflag
nEvents = len(events)
for index, eventpath in enumerate(events):
print('Working on: {} ({}/{})'.format(eventpath, index + 1, nEvents))
evID = os.path.split(eventpath)[-1]
event_datapath = os.path.join(eventpath, wfpath_extension)
fext = '.xml'
filename = os.path.join(eventpath, 'PyLoT_' + evID + fext)
try:
data = Data(evtdata=filename)
data.get_evt_data().path = eventpath
print('Reading event data from filename {}...'.format(filename))
except Exception as e:
print('Could not read event from file {}: {}'.format(filename, e))
data = Data()
pylot_event = Event(eventpath) # event should be path to event directory
data.setEvtData(pylot_event)
if fnames == 'None':
data.setWFData(glob.glob(os.path.join(datapath, event_datapath, '*')))
# the following is necessary because within
# multiple event processing no event ID is provided
# in autopylot.in
try:
parameter.get('eventID')
except Exception:
now = datetime.datetime.now()
eventID = '%d%02d%02d%02d%02d' % (now.year,
now.month,
now.day,
now.hour,
now.minute)
parameter.setParam(eventID=eventID)
else:
data.setWFData(fnames)
eventpath = events[0]
# now = datetime.datetime.now()
# evID = '%d%02d%02d%02d%02d' % (now.year,
# now.month,
# now.day,
# now.hour,
# now.minute)
parameter.setParam(eventID=eventid)
wfdat = data.getWFData() # all available streams
if not station == 'all':
wfdat = wfdat.select(station=station)
if not wfdat:
print('Could not find station {}. STOP!'.format(station))
return
# wfdat = remove_underscores(wfdat)
# trim components for each station to avoid problems with different trace starttimes for one station
wfdat = check4gapsAndRemove(wfdat)
wfdat = check4doubled(wfdat)
wfdat = trim_station_components(wfdat, trim_start=True, trim_end=False)
if not wfpath_extension:
metadata = Metadata(parameter.get('invdir'))
else:
metadata = Metadata(os.path.join(eventpath, 'resp'))
corr_dat = None
if metadata:
# rotate stations to ZNE
try:
wfdat = check4rotated(wfdat, metadata)
except Exception as e:
print('Could not rotate station {} to ZNE:\n{}'.format(wfdat[0].stats.station,
traceback.format_exc()))
if locflag:
print("Restitute data ...")
corr_dat = restitute_data(wfdat.copy(), metadata, ncores=ncores)
if not corr_dat and locflag:
locflag = 2
print('Stations: %s' % (station))
print(wfdat)
##########################################################
# !automated picking starts here!
fdwj = None
if fig_dict_wadatijack:
fdwj = fig_dict_wadatijack[evID]
picks = autopickevent(wfdat, parameter, iplot=iplot, fig_dict=fig_dict,
fig_dict_wadatijack=fdwj,
ncores=ncores, metadata=metadata, origin=data.get_evt_data().origins)
##########################################################
# locating
if locflag > 0:
# write phases to NLLoc-phase file
nll.export(picks, phasefile, parameter)
# For locating the event the NLLoc-control file has to be modified!
nllocout = '%s_%s' % (evID, nllocoutpatter)
# create comment line for NLLoc-control file
nll.modify_inputs(ctrf, nllocroot, nllocout, phasef,
ttpat)
# locate the event
nll.locate(ctrfile, parameter)
# !iterative picking if traces remained unpicked or occupied with bad picks!
# get theoretical onset times for picks with weights >= 4
# in order to reprocess them using smaller time windows around theoretical onset
# get stations with bad onsets
badpicks = []
for key in picks:
if picks[key]['P']['weight'] >= 4 or picks[key]['S']['weight'] >= 4:
badpicks.append([key, picks[key]['P']['mpp']])
# TODO keep code DRY (Don't Repeat Yourself) the following part is written twice
# suggestion: delete block and modify the later similar block to work properly
if len(badpicks) == 0:
print("autoPyLoT: No bad onsets found, thus no iterative picking necessary!")
# get NLLoc-location file
locsearch = '%s/loc/%s.????????.??????.grid?.loc.hyp' % (nllocroot, nllocout)
if len(glob.glob(locsearch)) > 0:
# get latest NLLoc-location file if several are available
nllocfile = max(glob.glob(locsearch), key=os.path.getctime)
evt = read_events(nllocfile)[0]
# calculate seismic moment Mo and moment magnitude Mw
moment_mag = MomentMagnitude(corr_dat, evt, parameter.get('vp'),
parameter.get('Qp'),
parameter.get('rho'), True,
iplot)
# update pick with moment property values (w0, fc, Mo)
for stats, props in moment_mag.moment_props.items():
picks[stats]['P'].update(props)
evt = moment_mag.updated_event()
net_mw = moment_mag.net_magnitude()
if net_mw is not None:
print("Network moment magnitude: %4.1f" % net_mw.mag)
# calculate local (Richter) magntiude
WAscaling = parameter.get('WAscaling')
magscaling = parameter.get('magscaling')
local_mag = LocalMagnitude(corr_dat, evt,
parameter.get('sstop'),
WAscaling, True, iplot)
# update pick with local magnitude property values
for stats, amplitude in local_mag.amplitudes.items():
picks[stats]['S']['Ao'] = amplitude.generic_amplitude
print("Local station magnitudes scaled with:")
print("log(Ao) + %f * log(r) + %f * r + %f" % (WAscaling[0],
WAscaling[1],
WAscaling[2]))
evt = local_mag.updated_event(magscaling)
net_ml = local_mag.net_magnitude(magscaling)
if net_ml:
print("Network local magnitude: %4.1f" % net_ml.mag)
if magscaling is None:
scaling = False
elif magscaling[0] != 0 and magscaling[1] != 0:
scaling = False
else:
scaling = True
if scaling:
print("Network local magnitude scaled with:")
print("%f * Ml + %f" % (magscaling[0], magscaling[1]))
else:
print("autoPyLoT: No NLLoc-location file available!")
print("No source parameter estimation possible!")
locflag = 9
else:
# get theoretical P-onset times from NLLoc-location file
locsearch = '%s/loc/%s.????????.??????.grid?.loc.hyp' % (nllocroot, nllocout)
if len(glob.glob(locsearch)) > 0:
# get latest file if several are available
nllocfile = max(glob.glob(locsearch), key=os.path.getctime)
nlloccounter = 0
while len(badpicks) > 0 and nlloccounter <= maxnumit:
nlloccounter += 1
if nlloccounter > maxnumit:
print("autoPyLoT: Number of maximum iterations reached, stop iterative picking!")
break
print("autoPyLoT: Starting with iteration No. %d ..." % nlloccounter)
if input_dict:
if 'fig_dict' in input_dict:
fig_dict = input_dict['fig_dict']
picks = iteratepicker(wfdat, nllocfile, picks, badpicks, parameter,
fig_dict=fig_dict)
else:
picks = iteratepicker(wfdat, nllocfile, picks, badpicks, parameter)
# write phases to NLLoc-phase file
nll.export(picks, phasefile, parameter)
# remove actual NLLoc-location file to keep only the last
os.remove(nllocfile)
# locate the event
nll.locate(ctrfile, parameter)
print("autoPyLoT: Iteration No. %d finished." % nlloccounter)
# get updated NLLoc-location file
nllocfile = max(glob.glob(locsearch), key=os.path.getctime)
# check for bad picks
badpicks = []
for key in picks:
if picks[key]['P']['weight'] >= 4 or picks[key]['S']['weight'] >= 4:
badpicks.append([key, picks[key]['P']['mpp']])
print("autoPyLoT: After iteration No. %d: %d bad onsets found ..." % (nlloccounter,
len(badpicks)))
if len(badpicks) == 0:
print("autoPyLoT: No more bad onsets found, stop iterative picking!")
nlloccounter = maxnumit
evt = read_events(nllocfile)[0]
if locflag < 2:
# calculate seismic moment Mo and moment magnitude Mw
moment_mag = MomentMagnitude(corr_dat, evt, parameter.get('vp'),
parameter.get('Qp'),
parameter.get('rho'), True,
iplot)
# update pick with moment property values (w0, fc, Mo)
for stats, props in moment_mag.moment_props.items():
if stats in picks:
picks[stats]['P'].update(props)
evt = moment_mag.updated_event()
net_mw = moment_mag.net_magnitude()
if net_mw is not None:
print("Network moment magnitude: %4.1f" % net_mw.mag)
# calculate local (Richter) magntiude
WAscaling = parameter.get('WAscaling')
magscaling = parameter.get('magscaling')
local_mag = LocalMagnitude(corr_dat, evt,
parameter.get('sstop'),
WAscaling, True, iplot)
# update pick with local magnitude property values
for stats, amplitude in local_mag.amplitudes.items():
if stats in picks:
picks[stats]['S']['Ao'] = amplitude.generic_amplitude
print("Local station magnitudes scaled with:")
print("log(Ao) + %f * log(r) + %f * r + %f" % (WAscaling[0],
WAscaling[1],
WAscaling[2]))
evt = local_mag.updated_event(magscaling)
net_ml = local_mag.net_magnitude(magscaling)
if net_ml:
print("Network local magnitude: %4.1f" % net_ml.mag)
if magscaling is None:
scaling = False
elif magscaling[0] != 0 and magscaling[1] != 0:
scaling = False
else:
scaling = True
if scaling:
print("Network local magnitude scaled with:")
print("%f * Ml + %f" % (magscaling[0], magscaling[1]))
else:
print("autoPyLoT: No NLLoc-location file available! Stop iteration!")
locflag = 9
##########################################################
# write phase files for various location
# and fault mechanism calculation routines
# ObsPy event object
if evt is not None:
event_id = eventpath.split('/')[-1]
evt.resource_id = ResourceIdentifier('smi:local/' + event_id)
data.applyEVTData(evt, 'event')
data.applyEVTData(picks)
if savexml:
if savepath == 'None' or savepath is None:
saveEvtPath = eventpath
else:
saveEvtPath = savepath
fnqml = '%s/PyLoT_%s_autopylot' % (saveEvtPath, evID)
data.exportEvent(fnqml, fnext='.xml', fcheck=['auto', 'magnitude', 'origin'])
if locflag == 1:
# HYPO71
hypo71file = '%s/PyLoT_%s_HYPO71_phases' % (eventpath, evID)
hypo71.export(picks, hypo71file, parameter)
# HYPOSAT
hyposatfile = '%s/PyLoT_%s_HYPOSAT_phases' % (eventpath, evID)
hyposat.export(picks, hyposatfile, parameter)
# VELEST
velestfile = '%s/PyLoT_%s_VELEST_phases.cnv' % (eventpath, evID)
velest.export(picks, velestfile, evt, parameter)
# hypoDD
hypoddfile = '%s/PyLoT_%s_hypoDD_phases.pha' % (eventpath, evID)
hypodd.export(picks, hypoddfile, parameter, evt)
# FOCMEC
focmecfile = '%s/PyLoT_%s_FOCMEC.in' % (eventpath, evID)
focmec.export(picks, focmecfile, parameter, evt)
# HASH
hashfile = '%s/PyLoT_%s_HASH' % (eventpath, evID)
hash.export(picks, hashfile, parameter, evt)
endsplash = '''------------------------------------------\n'
-----Finished event %s!-----\n'
------------------------------------------'''.format \
(version=_getVersionString()) % evID
print(endsplash)
locflag = glocflag
if locflag == 0:
print("autoPyLoT was running in non-location mode!")
# save picks for current event ID to dictionary with ALL picks
allpicks[evID] = picks
endsp = '''####################################\n
************************************\n
*********autoPyLoT terminates*******\n
The Python picking and Location Tool\n
************************************'''.format(version=_getVersionString())
print(endsp)
return allpicks
if __name__ == "__main__":
# parse arguments
parser = argparse.ArgumentParser(
description='''autoPyLoT automatically picks phase onset times using higher order statistics,
autoregressive prediction and AIC followed by locating the seismic events using
NLLoc''')
parser.add_argument('-i', '-I', '--inputfile', type=str,
action='store',
help='''full path to the file containing the input
parameters for autoPyLoT''')
parser.add_argument('-p', '-P', '--iplot', type=int,
action='store', default=0,
help='''optional, logical variable for plotting: 0=none, 1=partial, 2=all''')
parser.add_argument('-f', '-F', '--fnames', type=str,
action='store',
help='''optional, list of data file names''')
parser.add_argument('-e', '--eventid', type=str,
action='store',
help='''optional, event path incl. event ID''')
parser.add_argument('-s', '-S', '--spath', type=str,
action='store',
help='''optional, save path for autoPyLoT output''')
parser.add_argument('-c', '-C', '--ncores', type=int,
action='store', default=0,
help='''optional, number of CPU cores used for parallel processing (default: all available(=0))''')
parser.add_argument('-dmt', '-DMT', '--obspy_dmt_wfpath', type=str,
action='store', default=False,
help='''optional, wftype (raw, processed) used for obspyDMT database structure''')
cla = parser.parse_args()
picks = autoPyLoT(inputfile=str(cla.inputfile), fnames=str(cla.fnames),
eventid=str(cla.eventid), savepath=str(cla.spath),
ncores=cla.ncores, iplot=int(cla.iplot), obspyDMT_wfpath=str(cla.obspy_dmt_wfpath))

12
autopylot.sh Normal file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
#$ -l low
#$ -cwd
#$ -pe smp 40
##$ -l mem=3G
#$ -l h_vmem=6G
#$ -l os=*stretch
conda activate pylot_311
python ./autoPyLoT.py -i /home/marcel/.pylot/pylot_adriaarray.in -c 20 -dmt processed

474
docs/gui.md Normal file
View File

@@ -0,0 +1,474 @@
# PyLoT Documentation
- [PyLoT Documentation](#pylot-documentation)
- [PyLoT GUI](#pylot-gui)
- [First start](#first-start)
- [Main Screen](#main-screen)
- [Waveform Plot](#waveform-plot)
- [Mouse view controls](#mouse-view-controls)
- [Buttons](#buttons)
- [Array Map](#array-map)
- [Eventlist](#eventlist)
- [Usage](#usage)
- [Projects and Events](#projects-and-events)
- [Event folder structure](#event-folder-structure)
- [Loading event information from CSV file](#loading-event-information-from-csv-file)
- [Adding events to project](#adding-events-to-project)
- [Saving projects](#saving-projects)
- [Adding metadata](#adding-metadata)
- [Picking](#picking)
- [Manual Picking](#manual-picking)
- [Picking window](#picking-window)
- [Picking Window Settings](#picking-window-settings)
- [Filtering](#filtering)
- [Export and Import of manual picks](#export-and-import-of-manual-picks)
- [Export](#export)
- [Import](#import)
- [Automatic Picking](#automatic-picking)
- [Tuning](#tuning)
- [Production run of the autopicker](#production-run-of-the-autopicker)
- [Evaluation of automatic picks](#evaluation-of-automatic-picks)
- [1. Jackknife check](#1-jackknife-check)
- [2. Wadati check](#2-wadati-check)
- [Comparison between automatic and manual picks](#comparison-between-automatic-and-manual-picks)
- [Export and Import of automatic picks](#export-and-import-of-automatic-picks)
- [Location determination](#location-determination)
- [FAQ](#faq)
# PyLoT GUI
This section describes how to use PyLoT graphically to view waveforms and create manual or automatic picks.
## First start
After opening PyLoT for the first time, the setup routine asks for the following information:
Questions:
1. Full Name
2. Authority: Enter authority/institution name
3. Format: Enter output format (*.xml, *.cnv, *.obs)
[//]: <> (TODO: explain what these things mean, where they are used)
## Main Screen
After entering the [information](#first-start), PyLoTs main window is shown. It defaults to a view of
the [Waveform Plot](#waveform-plot), which starts empty.
<img src=images/gui/pylot-main-screen.png alt="Tune autopicks button" title="Tune autopicks button">
Add trace data by [loading a project](#projects-and-events) or by [adding event data](#adding-events-to-project).
### Waveform Plot
The waveform plot shows a trace list of all stations of an event.
Click on any trace to open the stations [picking window](#picking-window), where you can review automatic and manual
picks.
<img src=images/gui/pylot-waveform-plot.png alt="A Waveform Plot showing traces of one event">
Above the traces the currently displayed event can be selected. In the bottom bar information about the trace under the
mouse cursor is shown. This information includes the station name (station), the absolute UTC time (T) of the point
under the mouse cursor and the relative time since the first trace start in seconds (t) as well as a trace count.
#### Mouse view controls
Hold left mouse button and drag to pan view.
Hold right mouse button and Direction | Result --- | --- Move the mouse up | Increase amplitude scale Move the mouse
down | Decrease amplitude scale Move the mouse right | Increase time scale Move the mouse left | Decrease time scale
Press right mouse button and click "View All" from the context menu to reset the view.
#### Buttons
[//]: <> (Hack: We need these invisible spaces to add space to the first column, otherwise )
| Icon &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Description |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| <img src="../icons/newfile.png" alt="Create new project" width="64" height="64"> | Create a new project, for more information about projects see [Projects and Events](#projects-and-events). |
| <img src="../icons/openproject.png" alt="Open project" width="64" height="64"> | Load a project file from disk. |
| <img src="../icons/saveproject.png" alt="Save Project" width="64" height="64"> | Save all current events into an associated project file on disk. If there is no project file currently associated, you will be asked to create a new one. |
| <img src="../icons/saveprojectas.png" alt="Save Project as" width="64" height="64"> | Save all current events into a new project file on disk. See [Saving projects](#saving-projects). |
| <img src="../icons/add.png" alt="Add event data" width="64" height="64"> | Add event data by selecting directories containing waveforms. For more information see [Event folder structure](#event-folder-structure). |
| <img src="../icons/openpick.png" alt="Load event information" width="64" height="64"> | Load picks/origins from disk into the currently displayed event. If a pick already exists for a station, the one from file will overwrite the existing one. |
| <img src="../icons/openpicks.png" alt="Load information for all events" width="64" height="64"> | Load picks/origins for all events of the current project. PyLoT searches for files within the directory of the event and tries to load them for that event. For this function to work, the files containing picks/origins have to be named as described in [Event folder structure](#event-folder-structure). If a pick already exists for a station, the one from file will overwrite the existing one. |
| <img src="../icons/savepicks.png" alt="Save picks" width="64" height="64"> | Save event information such as picks and origin to file. You will be asked to select a directory in which this information should be saved. |
| <img src="../icons/openloc.png" alt="Load location information" width="64" height="64"> | Load location information from disk, |
| <img src="../icons/Matlab_PILOT_icon.png" alt="Load legacy information" width="64" height="64"> | Load event information from a previous, MatLab based PILOT version. |
| <img src="../icons/key_Z.png" alt="Display Z" width="64" height="64"> | Display Z component of streams in waveform plot. |
| <img src="../icons/key_N.png" alt="Display N" width="64" height="64"> | Display N component of streams in waveform plot. |
| <img src="../icons/key_E.png" alt="Display E" width="64" height="64"> | Display E component of streams in waveform plot. |
| <img src="../icons/tune.png" alt="Tune Autopicker" width="64" height="64"> | Open the [Tune Autopicker window](#tuning). |
| <img src="../icons/autopylot_button.png" alt="" width="64" height="64"> | Opens a window that allows starting the autopicker for all events ([Production run of the AutoPicker](#production-run-of-the-autopicker)). |
| <img src="../icons/compare_button.png" alt="Comparison" width="64" height="64"> | Compare automatic and manual picks, only available if automatic and manual picks for an event exist. See [Comparison between automatic and manual picks](#comparison-between-automatic-and-manual-picks). |
| <img src="../icons/locate_button.png" alt="Locate event" width="64" height="64"> | Run a location routine (NonLinLoc) as configured in the settings on the picks. See [Location determination](#location-determination). |
### Array Map
The array map will display a color diagram to allow a visual check of the consistency of picks across multiple stations.
This works by calculating the time difference of every onset to the earliest onset. Then isolines are drawn between
stations with the same time difference and the areas between isolines are colored.
The result should resemble a color gradient as the wavefront rolls over the network area. Stations where picks are
earlier/later than their neighbours can be reviewed by clicking on them, which opens
the [picking window](#picking-window).
Above the Array Map the picks that are used to create the map can be customized. The phase of picks that should be used
can be selected, which allows checking the consistency of the P- and S-phase separately. Additionally the pick type can
be set to manual, automatic or hybrid, meaning display only manual picks, automatic picks or only display automatic
picks for stations where there are no manual ones.
![Array Map](images/gui/arraymap-example.png "Array Map")
*Array Map for an event at the Northern Mid Atlantic Ridge, between North Africa and Mexico (Lat. 22.58, Lon. -45.11).
The wavefront moved from west to east over the network area (Alps and Balcan region), with the earliest onsets in blue
in the west.*
To be able to display an array map PyLoT needs to load an inventory file, where the metadata of seismic stations is
kept. For more information see [Metadata](#adding-metadata). Additionally automatic or manual picks need to exist for
the current event.
### Eventlist
The eventlist displays event parameters. The displayed parameters are saved in the .xml file in the event folder. Events
can be deleted from the project by pressing the red X in the leftmost column of the corresponding event.
<img src="images/gui/eventlist.png" alt="Eventlist">
| Column | Description |
|------------|--------------------------------------------------------------------------------------------------------------------|
| Event | Full path to the events folder. |
| Time | Time of event. |
| Lat | Latitude in degrees of event location. |
| Lon | Longitude in degrees of event location. |
| Depth | Depth in km of event. |
| Mag | Magnitude of event. |
| [N] MP | Number of manual picks. |
| [N] AP | Number of automatic picks. |
| Tuning Set | Select whether this event is a Tuning event. See [Automatic Picking](#automatic-picking). |
| Test Set | Select whether this event is a Test event. See [Automatic Picking](#automatic-picking). |
| Notes | Free form text field for notes regarding this event. Text will be saved in the notes.txt file in the event folder. |
## Usage
### Projects and Events
PyLoT uses projects to categorize different seismic data. A project consists of one or multiple events. Events contain
seismic traces from one or multiple stations. An event also contains further information, e.g. origin time, source
parameters and automatic as well as manual picks. Projects are used to group events which should be analysed together. A
project could contain all events from a specific region within a timeframe of interest or all recorded events of a
seismological experiment.
### Event folder structure
PyLoT expects the following folder structure for seismic data:
* Every event should be in it's own folder with the following naming scheme for the folders:
``e[id].[doy].[yy]``, where ``[id]`` is a four-digit numerical id increasing from 0001, ``[doy]`` the three digit day
of year and ``[yy]`` the last two digits of the year of the event. This structure has to be created by the user of
PyLoT manually.
* These folders should contain the seismic data for their event as ``.mseed`` or other supported filetype
* All automatic and manual picks should be in an ``.xml`` file in their event folder. PyLoT saves picks in this file.
This file does not have to be added manually unless there are picks to be imported. The format used to save picks is
QUAKEML.
Picks are saved in a file with the same filename as the event folder with ``PyLoT_`` prepended.
* The file ``notes.txt`` is used for saving analysts comments. Everything saved here will be displayed in the 'Notes'
column of the eventlist.
### Loading event information from CSV file
Event information can be saved in a ``.csv`` file located in the rootpath. The file is made from one header line, which
is followed by one or multiple data lines. Values are separated by comma, while a dot is used as a decimal separator.
This information is then shown in the table in the [Eventlist tab](#Eventlist).
One example header and data line is shown below.
```event,Date,Time,Magnitude,Lat,Long,Depth,Region,Basis Lat,Basis Long,Distance [km],Distance [rad],Distance [deg]```
```e0001.024.16,24/01/16,10:30:30,7.1,59.66,-153.45,128,Southern Alaska,46.62,10.26,8104.65,1.27,72.89,7.1```
The meaning of the header entries is:
| Header | description |
|----------------------|------------------------------------------------------------------------------------------------|
| event | Event id, has to be the same as the folder name in which waveform data for this event is kept. |
| Data | Origin date of the event, format DD/MM/YY or DD/MM/YYYY. |
| Time | Origin time of the event. Format HH:MM:SS. |
| Lat, Long | Origin latitude and longitude in decimal degrees. |
| Region | Flinn-Engdahl region name. |
| Basis Lat, Basis Lon | Latitude and longitude of the basis of the station network in decimal degrees. |
| Distance [km] | Distance from origin coordinates to basis coordinates in km. |
| Distance [rad] | Distance from origin coordinates to basis coordinates in rad. |
### Adding events to project
PyLoT GUI starts with an empty project. To add events, use the add event data button. Select one or multiple folders
containing events.
[//]: <> (TODO: explain _Directories: Root path, Data path, Database path_)
### Saving projects
Save the current project from the menu with File->Save project or File->Save project as. PyLoT uses ``.plp`` files to
save project information. This file format is not interchangeable between different versions of Python interpreters.
Saved projects contain the automatic and manual picks. Seismic trace data is not included into the ``.plp`` file, but
read from its location used when saving the file.
### Adding metadata
[//]: <> (TODO: Add picture of metadata "manager" when it is done)
PyLoT can handle ``.dless``, ``.xml``, ``.resp`` and ``.dseed`` file formats for Metadata. Metadata files stored on disk
can be added to a project by clicking *Edit*->*Manage Inventories*. This opens up a window where the folders which
contain metadata files can be selected. PyLoT will then search these files for the station names when it needs the
information.
# Picking
PyLoTs automatic and manual pick determination works as following:
* Using certain parameters, a first initial/coarse pick is determined. The first manual pick is determined by visual
review of the whole waveform and selection of the most likely onset by the analyst. The first automatic pick is
determined by calculation of a characteristic function (CF) for the seismic trace. When a wave arrives, the CFs
properties change, which is determined as the signals onset.
* Afterwards, a refined set of parameters is applied to a small part of the waveform around the initial onset. For
manual picks this means a closer view of the trace, for automatic picks this is done by a recalculated CF with
different parameters.
* This second picking phase results in the precise pick, which is treated as the onset time.
## Manual Picking
To create manual picks, you will need to open or create a project that contains seismic trace data (
see [Adding events to projects](#adding-events-to-project)). Click on a trace to open
the [Picking window](#picking-window).
### Picking window
Open the picking window of a station by leftclicking on any trace in the waveform plot. Here you can create manual picks
for the selected station.
<img src="images/gui/picking/pickwindow.png" alt="Picking window">
*Picking window of a station.*
#### Picking Window Settings
| Icon | Shortcut | Menu Alternative | Description |
|----------------------------------------------------------------------------------|----------------|-----------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| <img src="../icons/filter_p.png" alt="Filter P" width="64" height="64"> | p | Filter->Apply P Filter | Filter all channels according to the options specified in Filter parameter, P Filter section. |
| <img src="../icons/filter_s.png" alt="Filter S" width="64" height="64"> | s | Filter->Apply S Filter | Filter all channels according to the options specified in Filter parameter, S Filter section. |
| <img src="../icons/key_A.png" alt="Filter Automatically" width="64" height="64"> | Ctrl + a | Filter->Automatic Filtering | If enabled, automatically select the correct filter option (P, S) depending on the selected phase to be picked. |
| ![desc](images/gui/picking/phase_selection.png "Phase selection") | 1 (P) or 5 (S) | Picks->P or S | Select phase to pick. If Automatic Filtering is enabled, this will apply the appropriate filter depending on the phase. |
| ![Zoom into](../icons/zoom_in.png "Zoom into waveform") | - | - | Zoom into waveform. |
| ![Reset zoom](../icons/zoom_0.png "Reset zoom") | - | - | Reset zoom to default view. |
| ![Delete picks](../icons/delete.png "Delete picks") | - | - | Delete all manual picks on this station. |
| ![Rename a phase](../icons/sync.png "Rename a phase") | - | - | Click this button and then the picked phase to rename it. |
| ![Continue](images/gui/picking/continue.png "Continue with next station") | - | - | If checked, after accepting the manual picks for this station with 'OK', the picking window for the next station will be opened. This option is useful for fast manual picking of a complete event. |
| Estimated onsets | - | - | Show the theoretical onsets for this station. Needs metadata and origin information. |
| Compare to channel | - | - | Select a data channel to compare against. The selected channel will be displayed in the picking window behind every channel allowing the analyst to visually compare signal correlation between different channels. |
| Scaling | - | - | Individual means every channel is scaled to its own maximum. If a channel is selected here, all channels will be scaled relatively to this channel. |
| Menu Command | Shortcut | Description |
|---------------------------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| P Channels and S Channels | - | Select which channels should be treated as P or S channels during picking. When picking a phase, only the corresponding channels will be shown during the precise pick. Normally, the Z channel should be selected for the P phase and the N and E channel for the S phase. |
### Filtering
Access the Filter options by pressing Ctrl+f on the Waveform plot or by the menu under *Edit*->*Filter Parameter*.
<img src=images/gui/pylot-filter-options.png>
Here you are able to select filter type, order and frequencies for the P and S pick separately. These settings are used
in the GUI for displaying the filtered waveform data and during manual picking. The values used by PyLoT for automatic
picking are displayed next to the manual values. They can be changed in the [Tune Autopicker dialog](#tuning).
A green value automatic value means the automatic and manual filter parameter is configured the same, red means they are
configured differently. By toggling the "Overwrite filteroptions" checkmark you can set whether the manual
precise/second pick uses the filter settings for the automatic picker (unchecked) or whether it uses the filter options
in this dialog (checked). To guarantee consistent picking results between automatic and manual picking it is recommended
to use the same filter settings for the determination of automatic and manual picks.
### Export and Import of manual picks
#### Export
After the creation of manual picks they can either be saved in the project file (
see [Saving projects](#saving-projects)). Alternatively the picks can be exported by pressing
the <img src="../icons/savepicks.png" alt="Save event information button" title="Save picks button" height=24 width=24>
button above the waveform plot or in the menu File->Save event information (shortcut Ctrl+p). Select the event directory
in which to save the file. The filename will be ``PyLoT_[event_folder_name].[filetype selected during first startup]``
.
You can rename and copy this file, but PyLoT will then no longer be able to automatically recognize the correct picks
for an event and the file will have to be manually selected when loading.
#### Import
To import previously saved picks press
the <img src="../icons/openpick.png" alt="Load event information button" width="24" height="24"> button and select the
file to load. You will be asked to save the current state of your project if you have not done so before. You can
continue without saving by pressing "Discard". This does not delete any information from your project, it just means
that no project file is saved before the changes of importing picks are applied. PyLoT will automatically load files
named after the scheme it uses when saving picks, described in the paragraph above. If it can't find any matching files,
a file dialogue will open and you can select the file you wish to load.
If you see a warning "Mismatch in event identifiers" and are asked whether to continue loading the picks, this means
that PyLoT doesn't recognize the picks in the file as belonging to this specific event. They could have either been
saved under a different installation of PyLoT but with the same waveform data, which means they are still compatible and
you can continue loading them. Or they could be picks from a different event, in which case loading them is not
recommended.
## Automatic Picking
The general workflow for automatic picking is as following:
- After setting up the project by loading waveforms and optionally metadata, the right parameters for the autopicker
have to be determined
- This [tuning](#tuning) is done for single stations with immediate graphical feedback of all picking results
- Afterwards the autopicker can be run for all or a subset of events from the project
For automatic picking PyLoT discerns between tune and test events, which the user has to set as such. Tune events are
used to calibrate the autopicking algorithm, test events are then used to test the calibration. The purpose of that is
controlling whether the parameters found during tuning are able to reliably pick the "unknown" test events.
If this behaviour is not desired and all events should be handled the same, dont mark any events. Since this is just a
way to group events to compare the picking results, nothing else will change.
### Tuning
Tuning describes the process of adjusting the autopicker settings to the characteristics of your data set. To do this in
PyLoT, use the <img src=../icons/tune.png height=24 alt="Tune autopicks button" title="Tune autopicks button"> button to
open the Tune Autopicker.
<img src=images/gui/tuning/tune_autopicker.png>
View of a station in the Tune Autopicker window.
1. Select the event to be displayed and processed.
2. Select the station from the event.
3. To pick the currently displayed trace, click
the <img src=images/gui/tuning/autopick_trace_button.png alt="Pick trace button" title="Autopick trace button" height=16>
button.
4. These tabs are used to select the current view. __Traces Plot__ contains a plot of the stations traces, where manual
picks can be created/edited. __Overview__ contains graphical results of the automatic picking process. The __P and S
tabs__ contain the automatic picking results of the P and S phase, while __log__ contains a useful text output of
automatic picking.
5. These buttons are used to load/save/reset settings for automatic picking. The parameters can be saved in PyLoT input
files, which have the file ending *.in*. They are human readable text files, which can also be edited by hand. Saving
the parameters allows you to load them again later, even on different machines.
6. These menus control the behaviour of the creation of manual picks from the Tune Autopicker window. Picks allows to
select the phase for which a manual pick should be created, Filter allows to filter waveforms and edit the filter
parameters. P-Channels and S-Channels allow to select the channels that should be displayed when creating a manual P
or S pick.
7. This menu is the same as in the [Picking Window](#picking-window-settings), with the exception of the __Manual
Onsets__ options. The __Manual Onsets__ buttons accepts or reject the manual picks created in the Tune Autopicker
window, pressing accept adds them to the manual picks for the event, while reject removes them.
8. The traces plot in the centre allows creating manual picks and viewing the waveforms.
9. The parameters which influence the autopicking result are in the Main settings and Advanced settings tabs on the left
side. For a description of all the parameters see the [tuning documentation](tuning.md).
### Production run of the autopicker
After the settings used during tuning give the desired results, the autopicker can be used on the complete dataset. To
invoke the autopicker on the whole set of events, click
the <img src=../icons/autopylot_button.png alt="Autopick" title="Autopick" height=32> button.
### Evaluation of automatic picks
PyLoT has two internal consistency checks for automatic picks that were determined for an event:
1. Jackknife check
2. Wadati check
#### 1. Jackknife check
The jackknife test in PyLoT checks the consistency of automatically determined P-picks by checking the statistical
variance of the picks. The variance of all P-picks is calculated and compared to the variance of subsets, in which one
pick is removed.
The idea is, that picks that are close together in time should not influence the estimation of the variance much, while
picks whose positions deviates from the norm influence the variance to a greater extent. If the estimated variance of a
subset with a pick removed differs to much from the estimated variance of all picks, the pick that was removed from the
subset will be marked as invalid.
The factor by which picks are allowed to skew from the estimation of variance can be configured, it is called *
jackfactor*, see [here](tuning.md#Pick-quality-control).
Additionally, the deviation of picks from the median is checked. For that, the median of all P-picks that passed the
Jackknife test is calculated. Picks whose onset times deviate from the mean onset time by more than the *mdttolerance*
are marked as invalid.
<img src=images/gui/jackknife_plot.png title="Jackknife/Median test diagram">
*The result of both tests (Jackknife and Median) is shown in a diagram afterwards. The onset time is plotted against a
running number of stations. Picks that failed either the Jackknife or the median test are colored red. The median is
plotted as a green line.*
The Jackknife and median check are suitable to check for picks that are outside of the expected time window, for
example, when a wrong phase was picked. It won't recognize picks that are in close proximity to the right onset which
are just slightly to late/early.
#### 2. Wadati check
The Wadati check checks the consistency of S picks. For this the SP-time, the time difference between S and P onset is
plotted against the P onset time. A line is fitted to the points, which minimizes the error. Then the deviation of
single picks to this line is checked. If the deviation in seconds is above the *wdttolerance*
parameter ([see here](tuning.md#Pick-quality-control)), the pick is marked as invalid.
<img src=images/gui/wadati_plot.png title="Output diagram of Wadati check">
*The Wadati plot in PyLoT shows the SP onset time difference over the P onset time. A first line is fitted (black). All
picks which deviate to much from this line are marked invalid (red). Then a second line is fitted which excludes the
invalid picks. From this lines slope, the ratio of P and S wave velocity is determined.*
### Comparison between automatic and manual picks
Every pick in PyLoT consists of an earliest possible, latest possible and most likely onset time. The earliest and
latest possible onset time characterize the uncertainty of a pick. This approach is described in Diel, Kissling and
Bormann (2012) - Tutorial for consistent phase picking at local to regional distances. These times are represented as a
Probability Density Function (PDF) for every pick. The PDF is implemented as two exponential distributions around the
most likely onset as the expected value.
To compare two single picks, their PDFs are cross correlated to create a new PDF. This corresponds to the subtraction of
the automatic pick from the manual pick.
<img src=images/gui/comparison/comparison_pdf.png title="Comparison between automatic and manual pick">
*Comparison between an automatic and a manual pick for a station in PyLoT by comparing their PDFs.*
*The upper plot shows the difference between the two single picks that are shown in the lower plot.*
*The difference is implemented as a cross correlation between the two PDFs. and results in a new PDF, the comparison
PDF.*
*The expected value of the comparison PDF corresponds to the time distance between the automatic and manual picks most
likely onset.*
*The standard deviation corresponds to the combined uncertainty.*
To compare the automatic and manual picks between multiple stations of an event, the properties of all the comparison
PDFs are shown in a histogram.
<img src=images/gui/comparison/compare_widget.png title="Comparison between picks of an event">
*Comparison between the automatic and manual picks for an event in PyLoT.*
*The top left plot shows the standard deviation of the comparison PDFs for P picks.*
*The bottom left plot shows the expected values of the comparison PDFs for P picks.*
*The top right plot shows the standard deviation of the comparison PDFs for S picks.*
*The bottom right plot shows the expected values of the comparison PDFs for S picks.*
*The standard deviation plots show that most P picks have an uncertainty between 1 and 2 seconds, while S pick
uncertainties have a much larger spread between 1 to 15 seconds.*
*This means P picks have higher quality classes on average than S picks.*
*The expected values are largely negative, meaning that the algorithm tends to pick earlier than the analyst with the
applied settings (Manual - Automatic).*
*The number of samples mentioned in the plots legends is the amount of stations that have an automatic and a manual P
pick.*
### Export and Import of automatic picks
Picks can be saved in *.xml* format.
# Location determination
To be added.
# FAQ
Q: During manual picking the error "No channel to plot for phase ..." is displayed, and I am unable to create a pick.
A: Select a channel that should be used for the corresponding phase in the Pickwindow. For further information
read [Picking Window settings](#picking-window-settings).
Q: I see a warning "Mismatch in event identifiers" when loading picks from a file.
A: This means that PyLoT doesn't recognize the picks in the file as belonging to this specific event. They could have
been saved under a different installation of PyLoT but with the same waveform data, which means they are still
compatible and you can continue loading them or they could be the picks of a different event, in which case loading them
is not recommended.

BIN
docs/gui.pdf Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 876 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

150
docs/tuning.md Normal file
View File

@@ -0,0 +1,150 @@
# AutoPyLoT Tuning
A description of the parameters used for determining automatic picks.
## Filter parameters and cut times
Parameters applied to the traces before picking algorithm starts.
| Name | Description |
|---------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| *P Start*, *P
Stop* | Define time interval relative to trace start time for CF calculation on vertical trace. Value is relative to theoretical onset time if 'Use TauPy' option is enabled in main settings of 'Tune Autopicker' dialogue. |
| *S Start*, *S
Stop* | Define time interval relative to trace start time for CF calculation on horizontal traces. Value is relative to theoretical onset time if 'Use TauPy' option is enabled in main settings of 'Tune Autopicker' dialogue. |
| *Bandpass
Z1* | Filter settings for Butterworth bandpass applied to vertical trace for calculation of initial P pick. |
| *Bandpass
Z2* | Filter settings for Butterworth bandpass applied to vertical trace for calculation of precise P pick. |
| *Bandpass
H1* | Filter settings for Butterworth bandpass applied to horizontal traces for calculation of initial S pick. |
| *Bandpass
H2* | Filter settings for Butterworth bandpass applied to horizontal traces for calculation of precise S pick. |
## Inital P pick
Parameters used for determination of initial P pick.
| Name | Description |
|--------------|------------------------------------------------------------------------------------------------------------------------------|
| *
tLTA* | Size of gliding LTA window in seconds used for calculation of HOS-CF. |
| *pickwin
P* | Size of time window in seconds in which the minimum of the AIC-CF in front of the maximum of the HOS-CF is determined. |
| *
AICtsmooth* | Average of samples in this time window will be used for smoothing of the AIC-CF. |
| *
checkwinP* | Time in front of the global maximum of the HOS-CF in which to search for a second local extrema. |
| *minfactorP* | Used with *
checkwinP*. If a second local maximum is found, it has to be at least as big as the first maximum * *minfactorP*. |
| *
tsignal* | Time window in seconds after the initial P pick used for determining signal amplitude. |
| *
tnoise* | Time window in seconds in front of initial P pick used for determining noise amplitude. |
| *tsafetey* | Time in seconds between *tsignal* and *
tnoise*. |
| *
tslope* | Time window in seconds after initial P pick in which the slope of the onset is calculated. |
## Inital S pick
Parameters used for determination of initial S pick
| Name | Description |
|---------------|------------------------------------------------------------------------------------------------------------------------------|
| *
tdet1h* | Length of time window in seconds in which AR params of the waveform are determined. |
| *
tpred1h* | Length of time window in seconds in which the waveform is predicted using the AR model. |
| *
AICtsmoothS* | Average of samples in this time window is used for smoothing the AIC-CF. |
| *
pickwinS* | Time window in which the minimum in the AIC-CF in front of the maximum in the ARH-CF is determined. |
| *
checkwinS* | Time in front of the global maximum of the ARH-CF in which to search for a second local extrema. |
| *minfactorP* | Used with *
checkwinS*. If a second local maximum is found, it has to be at least as big as the first maximum * *minfactorS*. |
| *
tsignal* | Time window in seconds after the initial P pick used for determining signal amplitude. |
| *
tnoise* | Time window in seconds in front of initial P pick used for determining noise amplitude. |
| *tsafetey* | Time in seconds between *tsignal* and *
tnoise*. |
| *
tslope* | Time window in seconds after initial P pick in which the slope of the onset is calculated. |
## Precise P pick
Parameters used for determination of precise P pick.
| Name | Description |
|--------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| *Precalcwin* | Time window in seconds for recalculation of the HOS-CF. The new CF will be two times the size of *
Precalcwin*, since it will be calculated from the initial pick to +/- *Precalcwin*. |
| *
tsmoothP* | Average of samples in this time window will be used for smoothing the second HOS-CF. |
| *
ausP* | Controls artificial uplift of samples during precise picking. A common local minimum of the smoothed and unsmoothed HOS-CF is found when the previous sample is larger or equal to the current sample times (1+*
ausP*). |
## Precise S pick
Parameters used for determination of precise S pick.
| Name | Description |
|--------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| *
tdet2h* | Time window for determination of AR coefficients. |
| *
tpred2h* | Time window in which the waveform is predicted using the determined AR parameters. |
| *Srecalcwin* | Time window for recalculation of ARH-CF. New CF will be calculated from initial pick +/- *
Srecalcwin*. |
| *
tsmoothS* | Average of samples in this time window will be used for smoothing the second ARH-CF. |
| *
ausS* | Controls artificial uplift of samples during precise picking. A common local minimum of the smoothed and unsmoothed ARH-CF is found when the previous sample is larger or equal to the current sample times (1+*
ausS*). |
| *
pickwinS* | Time window around initial pick in which to look for a precise pick. |
## Pick quality control
Parameters used for checking quality and integrity of automatic picks.
| Name | Description |
|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| *
minAICPslope* | Initial P picks with a slope lower than this value will be discared. |
| *
minAICPSNR* | Initial P picks with a SNR below this value will be discarded. |
| *
minAICSslope* | Initial S picks with a slope lower than this value will be discarded. |
| *
minAICSSNR* | Initial S picks with a SNR below this value will be discarded. |
| *minsiglength*, *noisefacor*. *minpercent* | Parameters for checking signal length. In the time window of size *
minsiglength* after the initial P pick *
minpercent* of samples have to be larger than the RMS value. |
| *
zfac* | To recognize misattributed S picks, the RMS amplitude of vertical and horizontal traces are compared. The RMS amplitude of the vertical traces has to be at least *
zfac* higher than the RMS amplitude on the horizontal traces for the pick to be accepted as a valid P pick. |
| *
jackfactor* | A P pick is removed if the jackknife pseudo value of the variance of his subgroup is larger than the variance of all picks multiplied with the *
jackfactor*. |
| *
mdttolerance* | Maximum allowed deviation of P onset times from the median. Value in seconds. |
| *
wdttolerance* | Maximum allowed deviation of S onset times from the line during the Wadati test. Value in seconds. |
## Pick quality determination
Parameters for discrete quality classes.
| Name | Description |
|------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| *
timeerrorsP* | Width of the time windows in seconds between earliest and latest possible pick which represent the quality classes 0, 1, 2, 3 for P onsets. |
| *
timeerrorsS* | Width of the time windows in seconds between earliest and latest possible pick which represent the quality classes 0, 1, 2, 3 for S onsets. |
| *nfacP*, *nfacS* | For determination of latest possible onset time. The time when the signal reaches an amplitude of *
nfac* * mean value of the RMS amplitude in the time window *tnoise* corresponds to the latest possible onset time. |

BIN
docs/tuning.pdf Normal file

Binary file not shown.

19
help/index.html Normal file
View File

@@ -0,0 +1,19 @@
<html>
<head><title>PyLoT - the Python picking and Localisation Tool</title></head>
<body>
<p><b>PyLoT</b> is a program which is capable of picking seismic phases,
exporting these as numerous standard phase format and localize the corresponding
seismic event with external software as, e.g.:</p>
<ul type="circle">
<li><a href="http://alomax.free.fr/nlloc/index.html">NonLinLoc</a></li>
<li>HypoInvers</li>
<li>HypoSat</li>
<li>whatever you want ...</li>
</ul>
<p>Read more on the
<a href="https://ariadne.geophysik.rub.de/trac/PyLoT/wiki/">PyLoT WikiPage</a>.</p>
<p>Bug reports are very much appreciated and can also be delivered on our
<a href="https://ariadne.geophysik.rub.de/trac/PyLoT">PyLoT TracPage</a> after
successful registration.</p>
</body>
</html>

62
icons.qrc Normal file
View File

@@ -0,0 +1,62 @@
<RCC>
<qresource>
<file>icons/pylot.ico</file>
<file>icons/pylot.png</file>
<file>icons/back.png</file>
<file>icons/home.png</file>
<file>icons/newfile.png</file>
<file>icons/open.png</file>
<file>icons/openproject.png</file>
<file>icons/add.png</file>
<file>icons/save.png</file>
<file>icons/saveas.png</file>
<file>icons/saveproject.png</file>
<file>icons/saveprojectas.png</file>
<file>icons/manupicksicon_small.png</file>
<file>icons/autopicksicon_small.png</file>
<file>icons/tune.png</file>
<file>icons/autopylot_button.png</file>
<file>icons/pick.png</file>
<file>icons/waveform.png</file>
<file>icons/openpick.png</file>
<file>icons/openpicks.png</file>
<file>icons/openpick.png</file>
<file>icons/openpicks.png</file>
<file>icons/savepicks.png</file>
<file>icons/preferences.png</file>
<file>icons/parameter.png</file>
<file>icons/inventory.png</file>
<file>icons/map.png</file>
<file>icons/openloc.png</file>
<file>icons/compare_button.png</file>
<file>icons/pick_qualities_button.png</file>
<file>icons/eventlist_xml_button.png</file>
<file>icons/locate_button.png</file>
<file>icons/Matlab_PILOT_icon.png</file>
<file>icons/printer.png</file>
<file>icons/delete.png</file>
<file>icons/key_A.png</file>
<file>icons/key_E.png</file>
<file>icons/key_N.png</file>
<file>icons/key_P.png</file>
<file>icons/key_Q.png</file>
<file>icons/key_R.png</file>
<file>icons/key_S.png</file>
<file>icons/key_T.png</file>
<file>icons/key_U.png</file>
<file>icons/key_V.png</file>
<file>icons/key_W.png</file>
<file>icons/key_Z.png</file>
<file>icons/filter.png</file>
<file>icons/filter_p.png</file>
<file>icons/filter_s.png</file>
<file>icons/sync.png</file>
<file>icons/zoom_0.png</file>
<file>icons/zoom_in.png</file>
<file>icons/zoom_out.png</file>
<file>splash/splash.png</file>
</qresource>
<qresource prefix="/help">
<file>help/index.html</file>
</qresource>
</RCC>

BIN
icons/Matlab_PILOT_icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
icons/add.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
icons/autopicsicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
icons/autopylot_button.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
icons/back.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
icons/compare_button.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
icons/delete.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
icons/filter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
icons/filter_p.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
icons/filter_s.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

BIN
icons/home.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
icons/inventory.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
icons/key_A.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
icons/key_E.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
icons/key_N.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
icons/key_P.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
icons/key_Q.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
icons/key_R.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
icons/key_S.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
icons/key_T.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
icons/key_U.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
icons/key_V.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
icons/key_W.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
icons/key_Z.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
icons/locate_button.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
icons/manupicsicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
icons/map.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
icons/newfile.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
icons/open.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
icons/openfile.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
icons/openloc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
icons/openpick.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
icons/openpicks.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
icons/openproject.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
icons/parameter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
icons/pick.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
icons/preferences.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
icons/printer.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
icons/pylot.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
icons/pylot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
icons/save.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
icons/saveas.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
icons/savepicks.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
icons/saveproject.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
icons/saveprojectas.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
icons/sync.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
icons/tune.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
icons/waveform.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
icons/zoom_0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
icons/zoom_in.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

BIN
icons/zoom_out.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

110182
icons_rc_2.py Normal file

File diff suppressed because it is too large Load Diff

109998
icons_rc_3.py Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,3 @@
## default time errors for old PILOT phases
0.04 0.08 0.16 0.32 #timeerrorsP# %discrete time errors [s] corresponding to picking weights [0 1 2 3] for P
0.04 0.08 0.16 0.32 #timeerrorsS# %discrete time errors [s] corresponding to picking weights [0 1 2 3] for S

100
inputs/pylot_global.in Normal file
View File

@@ -0,0 +1,100 @@
%This is a parameter input file for PyLoT/autoPyLoT.
%All main and special settings regarding data handling
%and picking are to be set here!
%Parameters are optimized for %extent data sets!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#main settings#
#rootpath# %project path
#datapath# %data path
#database# %name of data base
#eventID# %event ID for single event processing (* for all events found in database)
#invdir# %full path to inventory or dataless-seed file
PILOT #datastructure# %choose data structure
True #apverbose# %choose 'True' or 'False' for terminal output
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#NLLoc settings#
None #nllocbin# %path to NLLoc executable
None #nllocroot# %root of NLLoc-processing directory
None #phasefile# %name of autoPyLoT-output phase file for NLLoc
None #ctrfile# %name of autoPyLoT-output control file for NLLoc
ttime #ttpatter# %pattern of NLLoc ttimes from grid
AUTOLOC_nlloc #outpatter# %pattern of NLLoc-output file
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#parameters for seismic moment estimation#
3530.0 #vp# %average P-wave velocity
2500.0 #rho# %average rock density [kg/m^3]
300.0 0.8 #Qp# %quality factor for P waves (Qp*f^a); list(Qp, a)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#settings local magnitude#
1.0 1.0 1.0 #WAscaling# %Scaling relation (log(Ao)+Alog(r)+Br+C) of Wood-Anderson amplitude Ao [nm] If zeros are set, original Richter magnitude is calculated!
1.0 1.0 #magscaling# %Scaling relation for derived local magnitude [a*Ml+b]. If zeros are set, no scaling of network magnitude is applied!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#filter settings#
0.01 0.01 #minfreq# %Lower filter frequency [P, S]
0.3 0.3 #maxfreq# %Upper filter frequency [P, S]
3 3 #filter_order# %filter order [P, S]
bandpass bandpass #filter_type# %filter type (bandpass, bandstop, lowpass, highpass) [P, S]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#common settings picker#
global #extent# %extent of array ("local", "regional" or "global")
-150.0 #pstart# %start time [s] for calculating CF for P-picking (if TauPy: seconds relative to estimated onset)
600.0 #pstop# %end time [s] for calculating CF for P-picking (if TauPy: seconds relative to estimated onset)
200.0 #sstart# %start time [s] relative to P-onset for calculating CF for S-picking
1150.0 #sstop# %end time [s] after P-onset for calculating CF for S-picking
True #use_taup# %use estimated traveltimes from TauPy for calculating windows for CF
iasp91 #taup_model# %define TauPy model for traveltime estimation. Possible values: 1066a, 1066b, ak135, ak135f, herrin, iasp91, jb, prem, pwdk, sp6
0.05 0.5 #bpz1# %lower/upper corner freq. of first band pass filter Z-comp. [Hz]
0.001 0.5 #bpz2# %lower/upper corner freq. of second band pass filter Z-comp. [Hz]
0.05 0.5 #bph1# %lower/upper corner freq. of first band pass filter H-comp. [Hz]
0.001 0.5 #bph2# %lower/upper corner freq. of second band pass filter z-comp. [Hz]
#special settings for calculating CF#
%!!Edit the following only if you know what you are doing!!%
#Z-component#
HOS #algoP# %choose algorithm for P-onset determination (HOS, ARZ, or AR3)
150.0 #tlta# %for HOS-/AR-AIC-picker, length of LTA window [s]
4 #hosorder# %for HOS-picker, order of Higher Order Statistics
2 #Parorder# %for AR-picker, order of AR process of Z-component
16.0 #tdet1z# %for AR-picker, length of AR determination window [s] for Z-component, 1st pick
10.0 #tpred1z# %for AR-picker, length of AR prediction window [s] for Z-component, 1st pick
12.0 #tdet2z# %for AR-picker, length of AR determination window [s] for Z-component, 2nd pick
6.0 #tpred2z# %for AR-picker, length of AR prediction window [s] for Z-component, 2nd pick
0.001 #addnoise# %add noise to seismogram for stable AR prediction
60.0 10.0 40.0 10.0 #tsnrz# %for HOS/AR, window lengths for SNR-and slope estimation [tnoise, tsafetey, tsignal, tslope] [s]
150.0 #pickwinP# %for initial AIC pick, length of P-pick window [s]
35.0 #Precalcwin# %for HOS/AR, window length [s] for recalculation of CF (relative to 1st pick)
6.0 #aictsmooth# %for HOS/AR, take average of samples for smoothing of AIC-function [s]
4.0 #tsmoothP# %for HOS/AR, take average of samples for smoothing CF [s]
0.001 #ausP# %for HOS/AR, artificial uplift of samples (aus) of CF (P)
1.1 #nfacP# %for HOS/AR, noise factor for noise level determination (P)
#H-components#
ARH #algoS# %choose algorithm for S-onset determination (ARH or AR3)
12.0 #tdet1h# %for HOS/AR, length of AR-determination window [s], H-components, 1st pick
6.0 #tpred1h# %for HOS/AR, length of AR-prediction window [s], H-components, 1st pick
8.0 #tdet2h# %for HOS/AR, length of AR-determinaton window [s], H-components, 2nd pick
4.0 #tpred2h# %for HOS/AR, length of AR-prediction window [s], H-components, 2nd pick
4 #Sarorder# %for AR-picker, order of AR process of H-components
30.0 #Srecalcwin# %for AR-picker, window length [s] for recalculation of CF (2nd pick) (H)
195.0 #pickwinS# %for initial AIC pick, length of S-pick window [s]
100.0 10.0 45.0 10.0 #tsnrh# %for ARH/AR3, window lengths for SNR-and slope estimation [tnoise, tsafetey, tsignal, tslope] [s]
22.0 #aictsmoothS# %for AIC-picker, take average of samples for smoothing of AIC-function [s]
10.0 #tsmoothS# %for AR-picker, take average of samples for smoothing CF [s] (S)
0.001 #ausS# %for HOS/AR, artificial uplift of samples (aus) of CF (S)
1.2 #nfacS# %for AR-picker, noise factor for noise level determination (S)
#first-motion picker#
1 #minfmweight# %minimum required P weight for first-motion determination
3.0 #minFMSNR# %miniumum required SNR for first-motion determination
10.0 #fmpickwin# %pick window around P onset for calculating zero crossings
#quality assessment#
1.0 2.0 4.0 8.0 #timeerrorsP# %discrete time errors [s] corresponding to picking weights [0 1 2 3] for P
4.0 8.0 16.0 32.0 #timeerrorsS# %discrete time errors [s] corresponding to picking weights [0 1 2 3] for S
0.5 #minAICPslope# %below this slope [counts/s] the initial P pick is rejected
1.1 #minAICPSNR# %below this SNR the initial P pick is rejected
1.0 #minAICSslope# %below this slope [counts/s] the initial S pick is rejected
1.3 #minAICSSNR# %below this SNR the initial S pick is rejected
5.0 #minsiglength# %length of signal part for which amplitudes must exceed noiselevel [s]
1.0 #noisefactor# %noiselevel*noisefactor=threshold
10.0 #minpercent# %required percentage of amplitudes exceeding threshold
1.2 #zfac# %P-amplitude must exceed at least zfac times RMS-S amplitude
25.0 #mdttolerance# %maximum allowed deviation of P picks from median [s]
50.0 #wdttolerance# %maximum allowed deviation from Wadati-diagram
5.0 #jackfactor# %pick is removed if the variance of the subgroup with the pick removed is larger than the mean variance of all subgroups times safety factor

100
inputs/pylot_local.in Normal file
View File

@@ -0,0 +1,100 @@
%This is a parameter input file for PyLoT/autoPyLoT.
%All main and special settings regarding data handling
%and picking are to be set here!
%Parameters are optimized for %extent data sets!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#main settings#
/DATA/Insheim #rootpath# %project path
EVENT_DATA/LOCAL #datapath# %data path
2018.02_Insheim #database# %name of data base
e0006.038.18 #eventID# %event ID for single event processing (* for all events found in database)
/DATA/Insheim/STAT_INFO #invdir# %full path to inventory or dataless-seed file
PILOT #datastructure# %choose data structure
True #apverbose# %choose 'True' or 'False' for terminal output
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#NLLoc settings#
/home/ludger/NLLOC #nllocbin# %path to NLLoc executable
/home/ludger/NLLOC/Insheim #nllocroot# %root of NLLoc-processing directory
AUTOPHASES.obs #phasefile# %name of autoPyLoT-output phase file for NLLoc
Insheim_min1d032016_auto.in #ctrfile# %name of autoPyLoT-output control file for NLLoc
ttime #ttpatter# %pattern of NLLoc ttimes from grid
AUTOLOC_nlloc #outpatter# %pattern of NLLoc-output file
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#parameters for seismic moment estimation#
3530.0 #vp# %average P-wave velocity
2500.0 #rho# %average rock density [kg/m^3]
300.0 0.8 #Qp# %quality factor for P waves (Qp*f^a); list(Qp, a)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#settings local magnitude#
1.11 0.0009 -2.0 #WAscaling# %Scaling relation (log(Ao)+Alog(r)+Br+C) of Wood-Anderson amplitude Ao [nm] If zeros are set, original Richter magnitude is calculated!
0.0 0.0 #magscaling# %Scaling relation for derived local magnitude [a*Ml+b]. If zeros are set, no scaling of network magnitude is applied!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#filter settings#
2.0 2.0 #minfreq# %Lower filter frequency [P, S]
30.0 15.0 #maxfreq# %Upper filter frequency [P, S]
3 3 #filter_order# %filter order [P, S]
bandpass bandpass #filter_type# %filter type (bandpass, bandstop, lowpass, highpass) [P, S]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#common settings picker#
local #extent# %extent of array ("local", "regional" or "global")
7.0 #pstart# %start time [s] for calculating CF for P-picking
16.0 #pstop# %end time [s] for calculating CF for P-picking
-0.5 #sstart# %start time [s] relative to P-onset for calculating CF for S-picking
10.0 #sstop# %end time [s] after P-onset for calculating CF for S-picking
False #use_taup# %use estimated traveltimes from TauPy for calculating windows for CF
iasp91 #taup_model# %define TauPy model for traveltime estimation
2.0 20.0 #bpz1# %lower/upper corner freq. of first band pass filter Z-comp. [Hz]
2.0 30.0 #bpz2# %lower/upper corner freq. of second band pass filter Z-comp. [Hz]
2.0 10.0 #bph1# %lower/upper corner freq. of first band pass filter H-comp. [Hz]
2.0 15.0 #bph2# %lower/upper corner freq. of second band pass filter z-comp. [Hz]
#special settings for calculating CF#
%!!Edit the following only if you know what you are doing!!%
#Z-component#
HOS #algoP# %choose algorithm for P-onset determination (HOS, ARZ, or AR3)
4.0 #tlta# %for HOS-/AR-AIC-picker, length of LTA window [s]
4 #hosorder# %for HOS-picker, order of Higher Order Statistics
2 #Parorder# %for AR-picker, order of AR process of Z-component
1.2 #tdet1z# %for AR-picker, length of AR determination window [s] for Z-component, 1st pick
0.4 #tpred1z# %for AR-picker, length of AR prediction window [s] for Z-component, 1st pick
0.6 #tdet2z# %for AR-picker, length of AR determination window [s] for Z-component, 2nd pick
0.2 #tpred2z# %for AR-picker, length of AR prediction window [s] for Z-component, 2nd pick
0.001 #addnoise# %add noise to seismogram for stable AR prediction
3.0 0.0 1.0 0.5 #tsnrz# %for HOS/AR, window lengths for SNR-and slope estimation [tnoise, tsafetey, tsignal, tslope] [s]
3.0 #pickwinP# %for initial AIC pick, length of P-pick window [s]
6.0 #Precalcwin# %for HOS/AR, window length [s] for recalculation of CF (relative to 1st pick)
0.4 #aictsmooth# %for HOS/AR, take average of samples for smoothing of AIC-function [s]
0.1 #tsmoothP# %for HOS/AR, take average of samples for smoothing CF [s]
0.4 #ausP# %for HOS/AR, artificial uplift of samples (aus) of CF (P)
1.3 #nfacP# %for HOS/AR, noise factor for noise level determination (P)
#H-components#
ARH #algoS# %choose algorithm for S-onset determination (ARH or AR3)
0.8 #tdet1h# %for HOS/AR, length of AR-determination window [s], H-components, 1st pick
0.4 #tpred1h# %for HOS/AR, length of AR-prediction window [s], H-components, 1st pick
0.6 #tdet2h# %for HOS/AR, length of AR-determinaton window [s], H-components, 2nd pick
0.3 #tpred2h# %for HOS/AR, length of AR-prediction window [s], H-components, 2nd pick
4 #Sarorder# %for AR-picker, order of AR process of H-components
5.0 #Srecalcwin# %for AR-picker, window length [s] for recalculation of CF (2nd pick) (H)
4.0 #pickwinS# %for initial AIC pick, length of S-pick window [s]
2.0 0.2 1.5 1.0 #tsnrh# %for ARH/AR3, window lengths for SNR-and slope estimation [tnoise, tsafetey, tsignal, tslope] [s]
1.0 #aictsmoothS# %for AIC-picker, take average of samples for smoothing of AIC-function [s]
0.7 #tsmoothS# %for AR-picker, take average of samples for smoothing CF [s] (S)
0.9 #ausS# %for HOS/AR, artificial uplift of samples (aus) of CF (S)
1.5 #nfacS# %for AR-picker, noise factor for noise level determination (S)
#first-motion picker#
1 #minfmweight# %minimum required P weight for first-motion determination
2.0 #minFMSNR# %miniumum required SNR for first-motion determination
0.2 #fmpickwin# %pick window around P onset for calculating zero crossings
#quality assessment#
0.04 0.08 0.16 0.32 #timeerrorsP# %discrete time errors [s] corresponding to picking weights [0 1 2 3] for P
0.05 0.10 0.20 0.40 #timeerrorsS# %discrete time errors [s] corresponding to picking weights [0 1 2 3] for S
0.8 #minAICPslope# %below this slope [counts/s] the initial P pick is rejected
1.1 #minAICPSNR# %below this SNR the initial P pick is rejected
1.0 #minAICSslope# %below this slope [counts/s] the initial S pick is rejected
1.5 #minAICSSNR# %below this SNR the initial S pick is rejected
1.0 #minsiglength# %length of signal part for which amplitudes must exceed noiselevel [s]
1.1 #noisefactor# %noiselevel*noisefactor=threshold
50.0 #minpercent# %required percentage of amplitudes exceeding threshold
1.1 #zfac# %P-amplitude must exceed at least zfac times RMS-S amplitude
5.0 #mdttolerance# %maximum allowed deviation of P picks from median [s]
1.0 #wdttolerance# %maximum allowed deviation from Wadati-diagram
2.0 #jackfactor# %pick is removed if the variance of the subgroup with the pick removed is larger than the mean variance of all subgroups times safety factor

100
inputs/pylot_regional.in Normal file
View File

@@ -0,0 +1,100 @@
%This is a parameter input file for PyLoT/autoPyLoT.
%All main and special settings regarding data handling
%and picking are to be set here!
%Parameters are optimized for %extent data sets!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#main settings#
#rootpath# %project path
#datapath# %data path
#database# %name of data base
#eventID# %event ID for single event processing (* for all events found in database)
#invdir# %full path to inventory or dataless-seed file
PILOT #datastructure# %choose data structure
True #apverbose# %choose 'True' or 'False' for terminal output
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#NLLoc settings#
None #nllocbin# %path to NLLoc executable
None #nllocroot# %root of NLLoc-processing directory
None #phasefile# %name of autoPyLoT-output phase file for NLLoc
None #ctrfile# %name of autoPyLoT-output control file for NLLoc
ttime #ttpatter# %pattern of NLLoc ttimes from grid
AUTOLOC_nlloc #outpatter# %pattern of NLLoc-output file
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#parameters for seismic moment estimation#
3530.0 #vp# %average P-wave velocity
2500.0 #rho# %average rock density [kg/m^3]
300.0 0.8 #Qp# %quality factor for P waves (Qp*f^a); list(Qp, a)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#settings local magnitude#
1.11 0.0009 -2.0 #WAscaling# %Scaling relation (log(Ao)+Alog(r)+Br+C) of Wood-Anderson amplitude Ao [nm] If zeros are set, original Richter magnitude is calculated!
1.0382 -0.447 #magscaling# %Scaling relation for derived local magnitude [a*Ml+b]. If zeros are set, no scaling of network magnitude is applied!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#filter settings#
1.0 1.0 #minfreq# %Lower filter frequency [P, S]
10.0 10.0 #maxfreq# %Upper filter frequency [P, S]
2 2 #filter_order# %filter order [P, S]
bandpass bandpass #filter_type# %filter type (bandpass, bandstop, lowpass, highpass) [P, S]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#common settings picker#
local #extent# %extent of array ("local", "regional" or "global")
15.0 #pstart# %start time [s] for calculating CF for P-picking
60.0 #pstop# %end time [s] for calculating CF for P-picking
-1.0 #sstart# %start time [s] relative to P-onset for calculating CF for S-picking
10.0 #sstop# %end time [s] after P-onset for calculating CF for S-picking
True #use_taup# %use estimated traveltimes from TauPy for calculating windows for CF
iasp91 #taup_model# %define TauPy model for traveltime estimation
2.0 10.0 #bpz1# %lower/upper corner freq. of first band pass filter Z-comp. [Hz]
2.0 12.0 #bpz2# %lower/upper corner freq. of second band pass filter Z-comp. [Hz]
2.0 8.0 #bph1# %lower/upper corner freq. of first band pass filter H-comp. [Hz]
2.0 10.0 #bph2# %lower/upper corner freq. of second band pass filter z-comp. [Hz]
#special settings for calculating CF#
%!!Edit the following only if you know what you are doing!!%
#Z-component#
HOS #algoP# %choose algorithm for P-onset determination (HOS, ARZ, or AR3)
7.0 #tlta# %for HOS-/AR-AIC-picker, length of LTA window [s]
4 #hosorder# %for HOS-picker, order of Higher Order Statistics
2 #Parorder# %for AR-picker, order of AR process of Z-component
1.2 #tdet1z# %for AR-picker, length of AR determination window [s] for Z-component, 1st pick
0.4 #tpred1z# %for AR-picker, length of AR prediction window [s] for Z-component, 1st pick
0.6 #tdet2z# %for AR-picker, length of AR determination window [s] for Z-component, 2nd pick
0.2 #tpred2z# %for AR-picker, length of AR prediction window [s] for Z-component, 2nd pick
0.001 #addnoise# %add noise to seismogram for stable AR prediction
3.0 0.1 0.5 1.0 #tsnrz# %for HOS/AR, window lengths for SNR-and slope estimation [tnoise, tsafetey, tsignal, tslope] [s]
3.0 #pickwinP# %for initial AIC pick, length of P-pick window [s]
6.0 #Precalcwin# %for HOS/AR, window length [s] for recalculation of CF (relative to 1st pick)
0.2 #aictsmooth# %for HOS/AR, take average of samples for smoothing of AIC-function [s]
0.1 #tsmoothP# %for HOS/AR, take average of samples for smoothing CF [s]
0.001 #ausP# %for HOS/AR, artificial uplift of samples (aus) of CF (P)
1.3 #nfacP# %for HOS/AR, noise factor for noise level determination (P)
#H-components#
ARH #algoS# %choose algorithm for S-onset determination (ARH or AR3)
0.8 #tdet1h# %for HOS/AR, length of AR-determination window [s], H-components, 1st pick
0.4 #tpred1h# %for HOS/AR, length of AR-prediction window [s], H-components, 1st pick
0.6 #tdet2h# %for HOS/AR, length of AR-determinaton window [s], H-components, 2nd pick
0.3 #tpred2h# %for HOS/AR, length of AR-prediction window [s], H-components, 2nd pick
4 #Sarorder# %for AR-picker, order of AR process of H-components
5.0 #Srecalcwin# %for AR-picker, window length [s] for recalculation of CF (2nd pick) (H)
4.0 #pickwinS# %for initial AIC pick, length of S-pick window [s]
2.0 0.3 1.5 1.0 #tsnrh# %for ARH/AR3, window lengths for SNR-and slope estimation [tnoise, tsafetey, tsignal, tslope] [s]
1.0 #aictsmoothS# %for AIC-picker, take average of samples for smoothing of AIC-function [s]
0.7 #tsmoothS# %for AR-picker, take average of samples for smoothing CF [s] (S)
0.9 #ausS# %for HOS/AR, artificial uplift of samples (aus) of CF (S)
1.5 #nfacS# %for AR-picker, noise factor for noise level determination (S)
#first-motion picker#
1 #minfmweight# %minimum required P weight for first-motion determination
2.0 #minFMSNR# %miniumum required SNR for first-motion determination
0.2 #fmpickwin# %pick window around P onset for calculating zero crossings
#quality assessment#
0.02 0.04 0.08 0.16 #timeerrorsP# %discrete time errors [s] corresponding to picking weights [0 1 2 3] for P
0.04 0.08 0.16 0.32 #timeerrorsS# %discrete time errors [s] corresponding to picking weights [0 1 2 3] for S
0.8 #minAICPslope# %below this slope [counts/s] the initial P pick is rejected
1.1 #minAICPSNR# %below this SNR the initial P pick is rejected
1.0 #minAICSslope# %below this slope [counts/s] the initial S pick is rejected
1.5 #minAICSSNR# %below this SNR the initial S pick is rejected
1.0 #minsiglength# %length of signal part for which amplitudes must exceed noiselevel [s]
1.0 #noisefactor# %noiselevel*noisefactor=threshold
10.0 #minpercent# %required percentage of amplitudes exceeding threshold
1.5 #zfac# %P-amplitude must exceed at least zfac times RMS-S amplitude
6.0 #mdttolerance# %maximum allowed deviation of P picks from median [s]
1.0 #wdttolerance# %maximum allowed deviation from Wadati-diagram
5.0 #jackfactor# %pick is removed if the variance of the subgroup with the pick removed is larger than the mean variance of all subgroups times safety factor

View File

@@ -0,0 +1,53 @@
0 1.4
10 1.5
20 1.7
25 1.9
30 2.1
35 2.3
40 2.4
45 2.5
50 2.6
60 2.8
70 2.8
75 2.9
85 2.9
90 3.0
100 3.0
110 3.1
120 3.1
130 3.2
140 3.2
150 3.3
160 3.3
170 3.4
180 3.4
190 3.5
200 3.5
210 3.6
230 3.7
240 3.7
250 3.8
260 3.8
270 3.9
280 3.9
290 4.0
300 4.0
310 4.1
320 4.2
330 4.2
340 4.2
350 4.3
360 4.3
370 4.3
380 4.4
390 4.4
400 4.5
430 4.6
470 4.7
510 4.8
560 4.9
600 5.1
700 5.2
800 5.4
900 5.5
1000 5.7

228
makePyLoT.py Normal file
View File

@@ -0,0 +1,228 @@
#!/usr/bin/env python
# encoding: utf-8
from __future__ import print_function
"""
makePyLoT -- build and install PyLoT
makePyLoT is a python make file in order to establish the folder structure and
meet requisites
It defines
:class CLIError:
:method main:
:author: Sebastian Wehling-Benatelli
:copyright: 2014 MAGS2 EP3 Working Group. All rights reserved.
:license: GNU Lesser General Public License, Version 3
(http://www.gnu.org/copyleft/lesser.html)
:contact: sebastian.wehling@rub.de
updated: Updated
"""
import glob
import os
import sys
import shutil
import copy
from argparse import ArgumentParser
from argparse import RawDescriptionHelpFormatter
__all__ = []
__version__ = 0.1
__date__ = '2014-11-26'
__updated__ = '2016-04-28'
DEBUG = 0
TESTRUN = 0
PROFILE = 0
class CLIError(Exception):
"""Generic exception to raise and log different fatal errors."""
def __init__(self, msg):
super(CLIError).__init__(type(self))
self.msg = "E: %s" % msg
def __str__(self):
return self.msg
def __unicode__(self):
return self.msg
def main(argv=None): # IGNORE:C0111
'''Command line options.'''
if argv is None:
argv = sys.argv
else:
sys.argv.extend(argv)
program_name = os.path.basename(sys.argv[0])
program_version = "v%s" % __version__
program_build_date = str(__updated__)
program_version_message = 'makePyLoT %s (%s)' % (
program_version, program_build_date)
program_shortdesc = __import__('__main__').__doc__.split("\n")[1]
program_license = '''{0:s}
Created by Sebastian Wehling-Benatelli on {1:s}.
Copyright 2014 MAGS2 EP3 Working Group. All rights reserved.
GNU Lesser General Public License, Version 3
(http://www.gnu.org/copyleft/lesser.html)
Distributed on an "AS IS" basis without warranties
or conditions of any kind, either express or implied.
USAGE
'''.format(program_shortdesc, str(__date__))
try:
# Setup argument parser
parser = ArgumentParser(description=program_license,
formatter_class=RawDescriptionHelpFormatter)
parser.add_argument("-b", "--build", dest="build", action="store_true",
help="build PyLoT")
parser.add_argument("-v", "--verbose", dest="verbose", action="count",
help="set verbosity level")
parser.add_argument("-i", "--install", dest="install",
action="store_true",
help="install PyLoT on the system")
parser.add_argument("-d", "--directory", dest="directory",
help="installation directory", metavar="RE")
parser.add_argument('-V', '--version', action='version',
version=program_version_message)
# Process arguments
args = parser.parse_args()
verbose = args.verbose
build = args.build
install = args.install
directory = args.directory
if verbose > 0:
print("Verbose mode on")
if install and not directory:
raise CLIError("""Trying to install without appropriate
destination; please specify an installation
directory!""")
if build and install:
print("Building and installing PyLoT ...\n")
buildPyLoT(verbose)
installPyLoT(verbose)
elif build and not install:
print("Building PyLoT without installing! Please wait ...\n")
buildPyLoT(verbose)
cleanUp()
return 0
except KeyboardInterrupt:
cleanUp(1)
return 0
except Exception as e:
if DEBUG or TESTRUN:
raise e
indent = len(program_name) * " "
sys.stderr.write(program_name + ": " + repr(e) + "\n")
sys.stderr.write(indent + " for help use --help")
return 2
def buildPyLoT(verbosity=None):
system = sys.platform
if verbosity > 1:
msg = ("... on system: {0}\n"
"\n"
" Current working directory: {1}\n"
).format(system, os.getcwd())
print(msg)
if system.startswith(('win', 'microsoft')):
raise CLIError(
"building on Windows system not tested yet; implementation pending")
elif system == 'darwin':
# create a symbolic link to the desired python interpreter in order to
# display the right application name
for path in os.getenv('PATH').split(':'):
found = glob.glob(os.path.join(path, 'python'))
if found:
os.symlink(found, './PyLoT')
break
def installPyLoT(verbosity=None):
files_to_copy = {'pylot_local.in': ['~', '.pylot'],
'pylot_regional.in': ['~', '.pylot'],
'pylot_global.in': ['~', '.pylot']}
if verbosity > 0:
print('starting installation of PyLoT ...')
if verbosity > 1:
print('copying input files into destination folder ...')
ans = input('please specify scope of interest '
'([0]=local, 1=regional, 2=global, 3=active) :') or 0
if not isinstance(ans, int):
ans = int(ans)
if ans == 0:
ans = 'local'
elif ans == 1:
ans = 'regional'
elif ans == 2:
ans = 'global'
elif ans == 3:
ans = 'active'
link_dest = []
for file, destination in files_to_copy.items():
link_file = ans in file
if link_file:
link_dest = copy.deepcopy(destination)
link_dest.append('pylot.in')
link_dest = os.path.join(*link_dest)
destination.append(file)
destination = os.path.join(*destination)
srcfile = os.path.join('input', file)
assert not os.path.isabs(srcfile), 'source files seem to be ' \
'corrupted ...'
if verbosity > 1:
print('copying file {file} to folder {dest}'.format(file=file, dest=destination))
shutil.copyfile(srcfile, destination)
if link_file:
if verbosity:
print('linking input file for autoPyLoT ...')
os.symlink(destination, link_dest)
def cleanUp(verbosity=None):
if verbosity >= 1:
print('cleaning up build files...')
if sys.platform == 'darwin':
os.remove('./PyLoT')
if __name__ == "__main__":
if DEBUG:
sys.argv.append("-h")
sys.argv.append("-v")
if TESTRUN:
import doctest
doctest.testmod()
if PROFILE:
import cProfile
import pstats
profile_filename = 'makePyLoT_profile.txt'
cProfile.run('main()', profile_filename)
statsfile = open("profile_stats.txt", "wb")
p = pstats.Stats(profile_filename, stream=statsfile)
stats = p.strip_dirs().sort_stats('cumulative')
stats.print_stats()
statsfile.close()
sys.exit(0)
sys.exit(main())

14
pylot.yml Normal file
View File

@@ -0,0 +1,14 @@
name: pylot_38
channels:
- conda-forge
- defaults
dependencies:
- cartopy=0.20.2
- matplotlib-base=3.3.4
- numpy=1.22.3
- obspy=1.3.0
- pyqtgraph=0.12.4
- pyside2>=5.13.2
- python=3.8.12
- qt>=5.12.9
- scipy=1.8.0

27
pylot/__init__.py Normal file
View File

@@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
# --------------------------------------------------------
# Purpose: Convience imports for PyLoT
#
'''
================================================
PyLoT - the Python picking and Localization Tool
================================================
This python library contains a graphical user interfaces for picking
seismic phases. This software needs ObsPy (http://github.com/obspy/obspy/wiki)
and the Qt4 libraries to be installed first.
PILOT has been developed in Mathworks' MatLab. In order to distribute
PILOT without facing portability problems, it has been decided to re-
develop the software package in Python. The great work of the ObsPy
group allows easy handling of a bunch of seismic data and PyLoT will
benefit a lot compared to the former MatLab version.
The development of PyLoT is part of the joint research project MAGS2.
:copyright:
The PyLoT Development Team
:license:
GNU Lesser General Public License, Version 3
(http://www.gnu.org/copyleft/lesser.html)
'''

1
pylot/core/__init__.py Normal file
View File

@@ -0,0 +1 @@
# -*- coding: utf-8 -*-

View File

@@ -0,0 +1 @@
# -*- coding: utf-8 -*-

View File

@@ -0,0 +1,871 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Created autumn/winter 2015.
Revised/extended summer 2017.
:author: Ludger Küperkoch / MAGS2 EP3 working group
"""
import matplotlib.pyplot as plt
import numpy as np
import obspy.core.event as ope
from obspy.geodetics import degrees2kilometers
from scipy import integrate, signal
from scipy.optimize import curve_fit
from pylot.core.pick.utils import getsignalwin, crossings_nonzero_all, \
select_for_phase
from pylot.core.util.utils import common_range, fit_curve
def richter_magnitude_scaling(delta):
distance = np.array([0, 10, 20, 25, 30, 35, 40, 45, 50, 60, 70, 75, 85, 90, 100, 110,
120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 230, 240, 250,
260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380,
390, 400, 430, 470, 510, 560, 600, 700, 800, 900, 1000])
richter_scaling = np.array([1.4, 1.5, 1.7, 1.9, 2.1, 2.3, 2.4, 2.5, 2.6, 2.8, 2.8, 2.9,
2.9, 3.0, 3.1, 3.1, 3.2, 3.2, 3.3, 3.3, 3.4, 3.4, 3.5, 3.5,
3.6, 3.7, 3.7, 3.8, 3.8, 3.9, 3.9, 4.0, 4.0, 4.1, 4.2, 4.2,
4.2, 4.2, 4.3, 4.3, 4.3, 4.4, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9,
5.1, 5.2, 5.4, 5.5, 5.7])
# prepare spline interpolation to calculate return value
func, params = fit_curve(distance, richter_scaling)
return func(delta, params)
class Magnitude(object):
"""
Base class object for Magnitude calculation within PyLoT.
"""
def __init__(self, stream, event, verbosity=False, iplot=0):
self._type = "M"
self._stream = stream
self._plot_flag = iplot
self._verbosity = verbosity
self._event = event
self._magnitudes = dict()
def __str__(self):
print(
'number of stations used: {0}\n'.format(len(self.magnitudes.values())))
print('\tstation\tmagnitude')
for s, m in self.magnitudes.items(): print('\t{0}\t{1}'.format(s, m))
def __nonzero__(self):
return bool(self.magnitudes)
@property
def type(self):
return self._type
@property
def plot_flag(self):
return self._plot_flag
@plot_flag.setter
def plot_flag(self, value):
self._plot_flag = value
@property
def verbose(self):
return self._verbosity
@verbose.setter
def verbose(self, value):
if not isinstance(value, bool):
print('WARNING: only boolean values accepted...\n')
value = bool(value)
self._verbosity = value
@property
def stream(self):
return self._stream
@stream.setter
def stream(self, value):
self._stream = value
@property
def event(self):
return self._event
@property
def origin_id(self):
return self._event.origins[0].resource_id
@property
def arrivals(self):
return self._event.origins[0].arrivals
@property
def magnitudes(self):
return self._magnitudes
@magnitudes.setter
def magnitudes(self, value):
"""
takes a tuple and saves the key value pair to private
attribute _magnitudes
:param value: station, magnitude value pair
:type value: tuple or list
:return:
"""
station, magnitude = value
self._magnitudes[station] = magnitude
def calc(self):
pass
def updated_event(self, magscaling=None):
net_ml = self.net_magnitude(magscaling)
if net_ml:
self.event.magnitudes.append(net_ml)
return self.event
def net_magnitude(self, magscaling=None):
if self:
if magscaling is None:
scaling = False
elif magscaling[0] == 0.0 and magscaling[1] == 0.0:
scaling = False
else:
scaling = True
if scaling == True:
# scaling necessary
print("Scaling network magnitude ...")
mag = ope.Magnitude(
mag=np.median([M.mag for M in self.magnitudes.values()]) * \
magscaling[0] + magscaling[1],
magnitude_type=self.type,
origin_id=self.origin_id,
station_count=len(self.magnitudes),
azimuthal_gap=self.origin_id.get_referred_object().quality.azimuthal_gap)
else:
# no scaling necessary
# Temporary fix needs rework
if (len(self.magnitudes.keys()) == 0):
print("Error in local magnitude calculation ")
return None
mag = ope.Magnitude(
mag=np.median([M.mag for M in self.magnitudes.values()]),
magnitude_type=self.type,
origin_id=self.origin_id,
station_count=len(self.magnitudes),
azimuthal_gap=self.origin_id.get_referred_object().quality.azimuthal_gap)
return mag
class LocalMagnitude(Magnitude):
"""
Method to derive peak-to-peak amplitude as seen on a Wood-Anderson-
seismograph. Has to be derived from instrument corrected traces!
"""
# poles, zeros and sensitivity of WA seismograph
# (see Uhrhammer & Collins, 1990, BSSA, pp. 702-716)
_paz = {
'poles': [5.6089 - 5.4978j, -5.6089 - 5.4978j],
'zeros': [0j, 0j],
'gain': 2080,
'sensitivity': 1
}
_amplitudes = dict()
def __init__(self, stream, event, calc_win, wascaling, verbosity=False, iplot=0):
super(LocalMagnitude, self).__init__(stream, event, verbosity, iplot)
self._calc_win = calc_win
self._wascaling = wascaling
self._type = 'ML'
self.calc()
@property
def calc_win(self):
return self._calc_win
@calc_win.setter
def calc_win(self, value):
self._calc_win = value
@property
def wascaling(self):
return self._wascaling
@property
def amplitudes(self):
return self._amplitudes
@amplitudes.setter
def amplitudes(self, value):
station, a0 = value
self._amplitudes[station] = a0
def peak_to_peak(self, st, t0):
try:
iplot = int(self.plot_flag)
except:
if self.plot_flag == True or self.plot_flag == 'True':
iplot = 2
else:
iplot = 0
# simulate Wood-Anderson response
st.simulate(paz_remove=None, paz_simulate=self._paz)
# trim waveform to common range
stime, etime = common_range(st)
st.trim(stime, etime)
# get time delta from waveform data
dt = st[0].stats.delta
power = [np.power(tr.data, 2) for tr in st if tr.stats.channel[-1] not
in 'Z3']
# checking horizontal count and calculating power_sum accordingly
if len(power) == 1:
print('WARNING: Only one horizontal found for station {0}.'.format(st[0].stats.station))
power_sum = power[0]
elif len(power) == 2:
power_sum = power[0] + power[1]
else:
raise ValueError('Wood-Anderson aomplitude defintion only valid for'
' up to two horizontals: {0} given'.format(len(power)))
sqH = np.sqrt(power_sum)
# get time array
th = np.arange(0, st[0].stats.npts / st[0].stats.sampling_rate, dt)
# get maximum peak within pick window
iwin = getsignalwin(th, t0 - stime, self.calc_win)
ii = min([iwin[len(iwin) - 1], len(th)])
iwin = iwin[0:ii]
wapp = np.max(sqH[iwin])
if self.verbose:
print("Determined Wood-Anderson peak-to-peak amplitude for station {0}: {1} "
"mm".format(st[0].stats.station, wapp))
# check for plot flag (for debugging only)
fig = None
if iplot > 1:
fig = plt.figure()
ax = fig.add_subplot(211)
ax.plot(th, st[0].data, 'k')
ax.plot(th, sqH)
ax.plot(th[iwin], sqH[iwin], 'g')
ax.plot([t0 - stime, t0 - stime], [0, max(sqH)], 'r', linewidth=2)
ax.set_title('Station %s, Channel %s, RMS Horizontal Trace, '
'WA-peak-to-peak=%6.3f mm' % (st[0].stats.station,
st[0].stats.channel,
wapp))
ax.set_xlabel('Time [s]')
ax.set_ylabel('Displacement [mm]')
ax = fig.add_subplot(212)
ax.plot(th, st[1].data, 'k')
ax.plot(th, sqH)
ax.plot(th[iwin], sqH[iwin], 'g')
ax.plot([t0 - stime, t0 - stime], [0, max(sqH)], 'r', linewidth=2)
ax.set_title('Channel %s, RMS Horizontal Trace, '
'WA-peak-to-peak=%6.3f mm' % (st[1].stats.channel,
wapp))
ax.set_xlabel('Time [s]')
ax.set_ylabel('Displacement [mm]')
fig.show()
try:
input()
except SyntaxError:
pass
plt.close(fig)
return wapp, fig
def calc(self):
for a in self.arrivals:
if a.phase not in 'sS':
continue
pick = a.pick_id.get_referred_object()
station = pick.waveform_id.station_code
# make sure calculating Ml only from reliable onsets
# NLLoc: time_weight = 0 => do not use onset!
if a.time_weight == 0:
print("Uncertain pick at Station {}, do not use it!".format(station))
continue
wf = select_for_phase(self.stream.select(
station=station), a.phase)
if not wf:
if self.verbose:
print(
'WARNING: no waveform data found for station {0}'.format(
station))
continue
delta = degrees2kilometers(a.distance)
onset = pick.time
a0, self.p2p_fig = self.peak_to_peak(wf, onset)
amplitude = ope.Amplitude(generic_amplitude=a0 * 1e-3)
amplitude.unit = 'm'
amplitude.category = 'point'
amplitude.waveform_id = pick.waveform_id
amplitude.magnitude_hint = self.type
amplitude.pick_id = pick.resource_id
amplitude.type = 'AML'
self.event.amplitudes.append(amplitude)
self.amplitudes = (station, amplitude)
# using standard Gutenberg-Richter relation
# or scale WA amplitude with given scaling relation
if str(self.wascaling) == '[0.0, 0.0, 0.0]':
print("Calculating original Richter magnitude ...")
magnitude = ope.StationMagnitude(mag=np.log10(a0) \
+ richter_magnitude_scaling(delta))
else:
print("Calculating scaled local magnitude ...")
a0 = a0 * 1e03 # mm to nm (see Havskov & Ottemöller, 2010)
magnitude = ope.StationMagnitude(mag=np.log10(a0) \
+ self.wascaling[0] * np.log10(delta) + self.wascaling[1]
* delta + self.wascaling[
2])
if self.verbose:
print(
"Local Magnitude for station {0}: ML = {1:3.1f}".format(
station, magnitude.mag))
magnitude.origin_id = self.origin_id
magnitude.waveform_id = pick.waveform_id
magnitude.amplitude_id = amplitude.resource_id
magnitude.station_magnitude_type = self.type
self.event.station_magnitudes.append(magnitude)
self.magnitudes = (station, magnitude)
class MomentMagnitude(Magnitude):
'''
Method to calculate seismic moment Mo and moment magnitude Mw.
Requires results of class calcsourcespec for calculating plateau w0
and corner frequency fc of source spectrum, respectively. Uses
subfunction calcMoMw.py. Returns modified dictionary of picks including
Dc-value, corner frequency fc, seismic moment Mo and
corresponding moment magntiude Mw.
'''
_props = dict()
def __init__(self, stream, event, vp, Qp, density, verbosity=False,
iplot=False):
super(MomentMagnitude, self).__init__(stream, event, verbosity, iplot)
self._vp = vp
self._Qp = Qp
self._density = density
self._type = 'Mw'
self.calc()
@property
def p_velocity(self):
return self._vp
@property
def p_attenuation(self):
return self._Qp
@property
def rock_density(self):
return self._density
@property
def moment_props(self):
return self._props
@moment_props.setter
def moment_props(self, value):
station, props = value
self._props[station] = props
@property
def seismic_moment(self):
return self._m0
@seismic_moment.setter
def seismic_moment(self, value):
self._m0 = value
def calc(self):
for a in self.arrivals:
if a.phase not in 'pP':
continue
# make sure calculating Mo only from reliable onsets
# NLLoc: time_weight = 0 => do not use onset!
if a.time_weight == 0:
continue
pick = a.pick_id.get_referred_object()
station = pick.waveform_id.station_code
if len(self.stream) <= 2:
print("Station:" '{0}'.format(station))
print("WARNING: No instrument corrected data available,"
" no magnitude calculation possible! Go on.")
continue
wf = self.stream.select(station=station)
if not wf:
continue
try:
scopy = wf.copy()
except AssertionError:
print("WARNING: Something's wrong with the data,"
"station {},"
"no calculation of moment magnitude possible! Go on.".format(station))
continue
onset = pick.time
distance = degrees2kilometers(a.distance)
azimuth = a.azimuth
incidence = a.takeoff_angle
if not 0. <= incidence <= 360.:
if self.verbose:
print(f'WARNING: Incidence angle outside bounds - {incidence}')
return
w0, fc = calcsourcespec(scopy, onset, self.p_velocity, distance,
azimuth, incidence, self.p_attenuation,
self.plot_flag, self.verbose)
if w0 is None or fc is None:
if self.verbose:
print("WARNING: insufficient frequency information")
continue
WF = select_for_phase(scopy, "P")
m0, mw = calcMoMw(WF, w0, self.rock_density, self.p_velocity,
distance, self.verbose)
self.moment_props = (station, dict(w0=w0, fc=fc, Mo=m0))
magnitude = ope.StationMagnitude(mag=mw)
magnitude.origin_id = self.origin_id
magnitude.waveform_id = pick.waveform_id
magnitude.station_magnitude_type = self.type
self.event.station_magnitudes.append(magnitude)
self.magnitudes = (station, magnitude)
# WIP JG
def getSourceSpec(self):
for a in self.arrivals:
if a.phase not in 'pP':
continue
# make sure calculating Mo only from reliable onsets
# NLLoc: time_weight = 0 => do not use onset!
if a.time_weight == 0:
continue
pick = a.pick_id.get_referred_object()
station = pick.waveform_id.station_code
if len(self.stream) <= 2:
print("Station:" '{0}'.format(station))
print("WARNING: No instrument corrected data available,"
" no magnitude calculation possible! Go on.")
continue
wf = self.stream.select(station=station)
if not wf:
continue
try:
scopy = wf.copy()
except AssertionError:
print("WARNING: Something's wrong with the data,"
"station {},"
"no calculation of moment magnitude possible! Go on.".format(station))
continue
onset = pick.time
distance = degrees2kilometers(a.distance)
azimuth = a.azimuth
incidence = a.takeoff_angle
w0, fc, plt = calcsourcespec(scopy, onset, self.p_velocity, distance,
azimuth, incidence, self.p_attenuation,
3, self.verbose)
return w0, fc, plt
def calcMoMw(wfstream, w0, rho, vp, delta, verbosity=False):
'''
Subfunction of run_calcMoMw to calculate individual
seismic moments and corresponding moment magnitudes.
:param: wfstream
:type: `~obspy.core.stream.Stream`
:param: w0, height of plateau of source spectrum
:type: float
:param: rho, rock density [kg/m³]
:type: integer
:param: delta, hypocentral distance [km]
:type: integer
:param: inv, name/path of inventory or dataless-SEED file
:type: string
'''
tr = wfstream[0]
delta = delta * 1000 # hypocentral distance in [m]
if verbosity:
print(
"calcMoMw: Calculating seismic moment Mo and moment magnitude Mw \
for station {0} ...".format(tr.stats.station))
# additional common parameters for calculating Mo
# average radiation pattern of P waves (Aki & Richards, 1980)
rP = 2 / np.sqrt(15)
freesurf = 2.0 # free surface correction, assuming vertical incidence
Mo = w0 * 4 * np.pi * rho * np.power(vp, 3) * delta / (rP * freesurf)
# Mw = np.log10(Mo * 1e07) * 2 / 3 - 10.7 # after Hanks & Kanamori (1979),
# defined for [dyn*cm]!
Mw = np.log10(Mo) * 2 / 3 - 6.7 # for metric units
if verbosity:
print(
"calcMoMw: Calculated seismic moment Mo = {0} Nm => Mw = {1:3.1f} ".format(
Mo, Mw))
return Mo, Mw
def calcsourcespec(wfstream, onset, vp, delta, azimuth, incidence,
qp, iplot=0, verbosity=False):
'''
Subfunction to calculate the source spectrum and to derive from that the plateau
(usually called omega0) and the corner frequency assuming Aki's omega-square
source model. Has to be derived from instrument corrected displacement traces,
thus restitution and integration necessary! Integrated traces are rotated
into ray-coordinate system ZNE => LQT using Obspy's rotate modul!
:param: wfstream (corrected for instrument)
:type: `~obspy.core.stream.Stream`
:param: onset, P-phase onset time
:type: float
:param: vp, Vp-wave velocity
:type: float
:param: delta, hypocentral distance [km]
:type: integer
:param: azimuth
:type: integer
:param: incidence
:type: integer
:param: Qp, quality factor for P-waves
:type: integer
:param: iplot, show results (iplot>1) or not (iplot<1)
:type: integer
'''
if verbosity:
print("Calculating source spectrum for station %s ...." % wfstream[0].stats.station)
try:
iplot = int(iplot)
except:
if iplot == True or iplot == 'True':
iplot = 2
else:
iplot = 0
# get Q value
Q, A = qp
dist = delta * 1000 # hypocentral distance in [m]
Fc = None
w0 = None
zdat = select_for_phase(wfstream, "P")
if len(zdat) == 0:
print("No vertical component found in stream:\n{}".format(wfstream))
print("No calculation of source spectrum possible!")
return w0, Fc
dt = zdat[0].stats.delta
freq = zdat[0].stats.sampling_rate
# trim traces to common range (for rotation)
trstart, trend = common_range(wfstream)
wfstream.trim(trstart, trend)
# rotate into LQT (ray-coordindate-) system using Obspy's rotate
# L: P-wave direction
# Q: SV-wave direction
# T: SH-wave direction
LQT = wfstream.rotate('ZNE->LQT', azimuth, incidence)
ldat = LQT.select(component="L")
if len(ldat) == 0:
# if horizontal channels are 1 and 2
# no azimuth information is available and thus no
# rotation is possible!
if verbosity:
print("calcsourcespec: Azimuth information is missing, "
"no rotation of components possible!")
# instead, use component 3
ldat = LQT.select(component="3")
if len(ldat) == 0:
# maybe component z available
ldat = LQT.select(component="Z")
# integrate to displacement
# unrotated vertical component (for comparison)
inttrz = signal.detrend(integrate.cumtrapz(zdat[0].data, None, dt))
# rotated component Z => L
Ldat = signal.detrend(integrate.cumtrapz(ldat[0].data, None, dt))
# get window after P pulse for
# calculating source spectrum
rel_onset = onset - trstart
impickP = int(rel_onset * freq)
wfzc = Ldat[impickP: len(Ldat) - 1]
# get time array
t = np.arange(0, len(inttrz) * dt, dt)
# calculate spectrum using only first cycles of
# waveform after P onset!
zc = crossings_nonzero_all(wfzc)
if np.size(zc) == 0 or len(zc) <= 3:
if verbosity:
print("calcsourcespec: Something is wrong with the waveform, "
"no zero crossings derived!\n")
print("No calculation of source spectrum possible!")
else:
index = min([3, len(zc) - 1])
calcwin = (zc[index] - zc[0]) * dt
iwin = getsignalwin(t, rel_onset, calcwin)
xdat = Ldat[iwin]
# fft
fny = freq / 2
# l = len(xdat) / freq
# number of fft bins after Bath
# n = freq * l
# find next power of 2 of data length
m = pow(2, np.ceil(np.log(len(xdat)) / np.log(2)))
N = min(int(np.power(m, 2)), 16384)
# N = int(np.power(m, 2))
y = dt * np.fft.fft(xdat, N)
Y = abs(y[: int(N / 2)])
L = (N - 1) / freq
f = np.arange(0, fny, 1 / L)
# remove zero-frequency and frequencies above
# corner frequency of seismometer (assumed
# to be 100 Hz)
fi = np.where((f >= 1) & (f < 100))
F = f[fi]
YY = Y[fi]
# correction for attenuation
wa = 2 * np.pi * F # angular frequency
D = np.exp((wa * dist) / (2 * vp * Q * F ** A))
YYcor = YY.real * D
# get plateau (DC value) and corner frequency
# initial guess of plateau
w0in = np.mean(YYcor[0:100])
# initial guess of corner frequency
# where spectral level reached 50% of flat level
iin = np.where(YYcor >= 0.5 * w0in)
Fcin = F[iin[0][np.size(iin) - 1]]
# use of implicit scipy otimization function
fit = synthsourcespec(F, w0in, Fcin)
[optspecfit, _] = curve_fit(synthsourcespec, F, YYcor, [w0in, Fcin])
w01 = optspecfit[0]
fc1 = optspecfit[1]
if verbosity:
print("calcsourcespec: Determined w0-value: %e m/Hz, \n"
"calcsourcespec: Determined corner frequency: %f Hz" % (w01, fc1))
# use of conventional fitting
[w02, fc2] = fitSourceModel(F, YYcor, Fcin, iplot, verbosity)
# get w0 and fc as median of both
# source spectrum fits
w0 = np.median([w01, w02])
Fc = np.median([fc1, fc2])
if verbosity:
print("calcsourcespec: Using w0-value = %e m/Hz and fc = %f Hz" % (
w0, Fc))
if iplot >= 1:
f1 = plt.figure()
tLdat = np.arange(0, len(Ldat) * dt, dt)
plt.subplot(2, 1, 1)
# show displacement in mm
p1, = plt.plot(t, np.multiply(inttrz, 1000), 'k')
p2, = plt.plot(tLdat, np.multiply(Ldat, 1000))
plt.legend([p1, p2], ['Displacement', 'Rotated Displacement'])
if iplot == 1:
plt.plot(t[iwin], np.multiply(xdat, 1000), 'g')
plt.title('Seismogram and P Pulse, Station %s-%s' \
% (zdat[0].stats.station, zdat[0].stats.channel))
else:
plt.title('Seismogram, Station %s-%s' \
% (zdat[0].stats.station, zdat[0].stats.channel))
plt.xlabel('Time since %s' % zdat[0].stats.starttime)
plt.ylabel('Displacement [mm]')
if iplot > 1:
plt.subplot(2, 1, 2)
p1, = plt.loglog(f, Y.real, 'k')
p2, = plt.loglog(F, YY.real)
p3, = plt.loglog(F, YYcor, 'r')
p4, = plt.loglog(F, fit, 'g')
plt.loglog([Fc, Fc], [w0 / 100, w0], 'g')
plt.legend([p1, p2, p3, p4], ['Raw Spectrum',
'Used Raw Spectrum',
'Q-Corrected Spectrum',
'Fit to Spectrum'])
plt.title('Source Spectrum from P Pulse, w0=%e m/Hz, fc=%6.2f Hz' \
% (w0, Fc))
plt.xlabel('Frequency [Hz]')
plt.ylabel('Amplitude [m/Hz]')
plt.grid()
if iplot == 3:
return w0, Fc, plt
plt.show()
try:
input()
except SyntaxError:
pass
plt.close(f1)
return w0, Fc
def synthsourcespec(f, omega0, fcorner):
'''
Calculates synthetic source spectrum from given plateau and corner
frequency assuming Akis omega-square model.
:param: f, frequencies
:type: array
:param: omega0, DC-value (plateau) of source spectrum
:type: float
:param: fcorner, corner frequency of source spectrum
:type: float
'''
# ssp = omega0 / (pow(2, (1 + f / fcorner)))
ssp = omega0 / (1 + pow(2, (f / fcorner)))
return ssp
def fitSourceModel(f, S, fc0, iplot, verbosity=False):
'''
Calculates synthetic source spectrum by varying corner frequency fc.
Returns best approximated plateau omega0 and corner frequency, i.e. with least
common standard deviations.
:param: f, frequencies
:type: array
:param: S, observed source spectrum
:type: array
:param: fc0, initial corner frequency
:type: float
'''
try:
iplot = int(iplot)
except:
if iplot == True or iplot == 'True':
iplot = 2
else:
iplot = 0
w0 = []
stdw0 = []
fc = []
stdfc = []
STD = []
# get window around initial corner frequency for trials
# left side of initial corner frequency
fcstopl = max(f[0], fc0 - max(1, fc0 / 2))
il = np.where(f <= fcstopl)
il = il[0][np.size(il) - 1]
# right side of initial corner frequency
fcstopr = min(fc0 + (fc0 / 2), f[len(f) - 1])
ir = np.where(f >= fcstopr)
# check, if fcstopr is available
if np.size(ir) == 0:
fcstopr = fc0
ir = len(f) - 1
else:
ir = ir[0][0]
# vary corner frequency around initial point
print("fitSourceModel: Varying corner frequency "
"around initial corner frequency ...")
# check difference of il and ir in order to
# keep calculation time acceptable
idiff = ir - il
if idiff > 100000:
increment = 1000
elif idiff <= 100000 and idiff > 10000:
increment = 100
elif idiff <= 20:
increment = 1
else:
increment = 10
for i in range(il, ir, increment):
FC = f[i]
indexdc = np.where((f > 0) & (f <= FC))
dc = np.mean(S[indexdc])
stddc = np.std(dc - S[indexdc])
w0.append(dc)
stdw0.append(stddc)
fc.append(FC)
# slope
indexfc = np.where((f >= FC) & (f <= fcstopr))
yi = dc / (1 + (f[indexfc] / FC) ** 2)
stdFC = np.std(yi - S[indexfc])
stdfc.append(stdFC)
STD.append(stddc + stdFC)
# get best found w0 anf fc from minimum
if len(STD) > 0:
Fc = fc[np.argmin(STD)]
w0 = w0[np.argmin(STD)]
elif len(STD) == 0:
Fc = fc0
w0 = max(S)
if verbosity:
print(
"fitSourceModel: best fc: {0} Hz, best w0: {1} m/Hz".format(Fc, w0))
if iplot >= 1:
plt.figure() # iplot)
plt.loglog(f, S, 'k')
plt.loglog([f[0], Fc], [w0, w0], 'g')
plt.loglog([Fc, Fc], [w0 / 100, w0], 'g')
plt.title('Calculated Source Spectrum, Omega0=%e m/Hz, fc=%6.2f Hz' \
% (w0, Fc))
plt.xlabel('Frequency [Hz]')
plt.ylabel('Amplitude [m/Hz]')
plt.grid()
if iplot == 2:
plt.figure() # iplot + 1)
plt.subplot(311)
plt.plot(fc, STD, '*')
plt.title('Common Standard Deviations')
plt.xticks([])
plt.subplot(312)
plt.plot(fc, stdw0, '*')
plt.title('Standard Deviations of w0-Values')
plt.xticks([])
plt.subplot(313)
plt.plot(fc, stdfc, '*')
plt.title('Standard Deviations of Corner Frequencies')
plt.xlabel('Corner Frequencies [Hz]')
plt.show()
try:
input()
except SyntaxError:
pass
plt.close()
return w0, Fc

View File

@@ -0,0 +1 @@
# -*- coding: utf-8 -*-

943
pylot/core/io/data.py Normal file
View File

@@ -0,0 +1,943 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import copy
import logging
import os
from PySide2.QtWidgets import QMessageBox
from obspy import read_events
from obspy.core import read, Stream, UTCDateTime
from obspy.core.event import Event as ObsPyEvent
from obspy.io.sac import SacIOError
import pylot.core.loc.focmec as focmec
import pylot.core.loc.hypodd as hypodd
import pylot.core.loc.velest as velest
from pylot.core.io.phases import readPILOTEvent, picks_from_picksdict, \
picksdict_from_pilot, merge_picks, PylotParameter
from pylot.core.util.errors import FormatError, OverwriteError
from pylot.core.util.event import Event
from pylot.core.util.obspyDMT_interface import qml_from_obspyDMT
from pylot.core.util.utils import fnConstructor, full_range, check4rotated, \
check_for_gaps_and_merge, trim_station_components, check_for_nan
class Data(object):
"""
Data container with attributes wfdata holding ~obspy.core.stream.
:type parent: PySide2.QtWidgets.QWidget object, optional
:param parent: A PySide2.QtWidgets.QWidget object utilized when
called by a GUI to display a PySide2.QtWidgets.QMessageBox instead of printing
to standard out.
:type evtdata: ~obspy.core.event.Event object, optional
:param evtdata ~obspy.core.event.Event object containing all derived or
loaded event. Container object holding, e.g. phase arrivals, etc.
"""
def __init__(self, parent=None, evtdata=None):
self._parent = parent
if self.getParent():
self.comp = parent.getComponent()
else:
self.comp = 'Z'
self.wfdata = Stream()
self._new = False
if isinstance(evtdata, ObsPyEvent) or isinstance(evtdata, Event):
pass
elif isinstance(evtdata, dict):
evt = readPILOTEvent(**evtdata)
evtdata = evt
elif isinstance(evtdata, str):
try:
cat = read_events(evtdata)
if len(cat) != 1:
raise ValueError('ambiguous event information for file: '
'{file}'.format(file=evtdata))
evtdata = cat[0]
except TypeError as e:
if 'Unknown format for file' in e.message:
if 'PHASES' in evtdata:
picks = picksdict_from_pilot(evtdata)
evtdata = ObsPyEvent()
evtdata.picks = picks_from_picksdict(picks)
elif 'LOC' in evtdata:
raise NotImplementedError('PILOT location information '
'read support not yet '
'implemented.')
elif 'event.pkl' in evtdata:
evtdata = qml_from_obspyDMT(evtdata)
else:
raise e
else:
raise e
else: # create an empty Event object
self.setNew()
evtdata = ObsPyEvent()
evtdata.picks = []
self.evtdata = evtdata
self.wforiginal = None
self.cuttimes = None
self.dirty = False
self.processed = None
def __str__(self):
return str(self.wfdata)
def __add__(self, other):
assert isinstance(other, Data), "operands must be of same type 'Data'"
rs_id = self.get_evt_data().get('resource_id')
rs_id_other = other.get_evt_data().get('resource_id')
if other.isNew() and not self.isNew():
picks_to_add = other.get_evt_data().picks
old_picks = self.get_evt_data().picks
wf_ids_old = [pick.waveform_id for pick in old_picks]
for new_pick in picks_to_add:
wf_id = new_pick.waveform_id
if wf_id in wf_ids_old:
for old_pick in old_picks:
comparison = [old_pick.waveform_id == new_pick.waveform_id,
old_pick.phase_hint == new_pick.phase_hint,
old_pick.method_id == new_pick.method_id]
if all(comparison):
del (old_pick)
old_picks.append(new_pick)
elif not other.isNew() and self.isNew():
new = other + self
self.evtdata = new.get_evt_data()
elif self.isNew() and other.isNew():
pass
elif rs_id == rs_id_other:
other.setNew()
return self + other
else:
raise ValueError("both Data objects have differing "
"unique Event identifiers")
return self
def getPicksStr(self):
"""
Return picks in event data
:return: picks seperated by newlines
:rtype: str
"""
picks_str = ''
for pick in self.get_evt_data().picks:
picks_str += str(pick) + '\n'
return picks_str
def getParent(self):
"""
Get PySide.QtGui.QWidget parent object
"""
return self._parent
def isNew(self):
return self._new
def setNew(self):
self._new = True
def getCutTimes(self):
"""
Returns earliest start and latest end of all waveform data
:return: minimum start time and maximum end time as a tuple
:rtype: (UTCDateTime, UTCDateTime)
"""
if self.cuttimes is None:
self.updateCutTimes()
return self.cuttimes
def updateCutTimes(self):
"""
Update cuttimes to contain earliest start and latest end time
of all waveform data
:rtype: None
"""
self.cuttimes = full_range(self.getWFData())
def getEventFileName(self):
ID = self.getID()
# handle forbidden filenames especially on windows systems
return fnConstructor(str(ID))
def checkEvent(self, event, fcheck, forceOverwrite=False):
"""
Check information in supplied event and own event and replace with own
information if no other information are given or forced by forceOverwrite
:param event: Event that supplies information for comparison
:type event: pylot.core.util.event.Event
:param fcheck: check and delete existing information
can be a str or a list of strings of ['manual', 'auto', 'origin', 'magnitude']
:type fcheck: str, [str]
:param forceOverwrite: Set to true to force overwrite own information. If false,
supplied information from event is only used if there is no own information in that
category (given in fcheck: manual, auto, origin, magnitude)
:type forceOverwrite: bool
:return:
:rtype: None
"""
if 'origin' in fcheck:
self.replaceOrigin(event, forceOverwrite)
if 'magnitude' in fcheck:
self.replaceMagnitude(event, forceOverwrite)
if 'auto' in fcheck:
self.replacePicks(event, 'auto')
if 'manual' in fcheck:
self.replacePicks(event, 'manual')
def replaceOrigin(self, event, forceOverwrite=False):
"""
Replace own origin with the one supplied in event if own origin is not
existing or forced by forceOverwrite = True
:param event: Event that supplies information for comparison
:type event: pylot.core.util.event.Event
:param forceOverwrite: always replace own information with supplied one if true
:type forceOverwrite: bool
:return:
:rtype: None
"""
if self.get_evt_data().origins or forceOverwrite:
if event.origins:
print("Found origin, replace it by new origin.")
event.origins = self.get_evt_data().origins
def replaceMagnitude(self, event, forceOverwrite=False):
"""
Replace own magnitude with the one supplied in event if own magnitude is not
existing or forced by forceOverwrite = True
:param event: Event that supplies information for comparison
:type event: pylot.core.util.event.Event
:param forceOverwrite: always replace own information with supplied one if true
:type forceOverwrite: bool
:return:
:rtype: None
"""
if self.get_evt_data().magnitudes or forceOverwrite:
if event.magnitudes:
print("Found magnitude, replace it by new magnitude")
event.magnitudes = self.get_evt_data().magnitudes
def replacePicks(self, event, picktype):
"""
Replace picks in event with own picks
:param event: Event that supplies information for comparison
:type event: pylot.core.util.event.Event
:param picktype: 'auto' or 'manual' picks
:type picktype: str
:return:
:rtype: None
"""
checkflag = 1
picks = event.picks
# remove existing picks
for j, pick in reversed(list(enumerate(picks))):
try:
if picktype in str(pick.method_id.id):
picks.pop(j)
checkflag = 2
except AttributeError as e:
msg = '{}'.format(e)
print(e)
checkflag = 0
if checkflag > 0:
if checkflag == 1:
print("Write new %s picks to catalog." % picktype)
if checkflag == 2:
print("Found %s pick(s), remove them and append new picks to catalog." % picktype)
# append new picks
for pick in self.get_evt_data().picks:
if picktype in str(pick.method_id.id):
picks.append(pick)
def exportEvent(self, fnout, fnext='.xml', fcheck='auto', upperErrors=None):
"""
Export event to file
:param fnout: basename of file
:param fnext: file extensions xml, cnv, obs, focmec, or/and pha
:param fcheck: check and delete existing information
can be a str or a list of strings of ['manual', 'auto', 'origin', 'magnitude']
"""
from pylot.core.util.defaults import OUTPUTFORMATS
if not type(fcheck) == list:
fcheck = [fcheck]
try:
evtformat = OUTPUTFORMATS[fnext]
except KeyError as e:
errmsg = '{0}; selected file extension {1} not ' \
'supported'.format(e, fnext)
raise FormatError(errmsg)
if hasattr(self.get_evt_data(), 'notes'):
try:
with open(os.path.join(os.path.dirname(fnout), 'notes.txt'), 'w') as notes_file:
notes_file.write(self.get_evt_data().notes)
except Exception as e:
print('Warning: Could not save notes.txt: ', str(e))
# check for already existing xml-file
if fnext == '.xml':
if os.path.isfile(fnout + fnext):
print("xml-file already exists! Check content ...")
cat = read_events(fnout + fnext)
if len(cat) > 1:
raise IOError('Ambigious event information in file {}'.format(fnout + fnext))
if len(cat) < 1:
raise IOError('No event information in file {}'.format(fnout + fnext))
event = cat[0]
if not event.resource_id == self.get_evt_data().resource_id:
QMessageBox.warning(self, 'Warning', 'Different resource IDs!')
return
self.checkEvent(event, fcheck)
self.setEvtData(event)
self.get_evt_data().write(fnout + fnext, format=evtformat)
# try exporting event
else:
evtdata_org = self.get_evt_data()
picks = evtdata_org.picks
eventpath = evtdata_org.path
picks_copy = copy.deepcopy(picks)
evtdata_copy = Event(eventpath)
evtdata_copy.picks = picks_copy
# check for stations picked automatically as well as manually
# Prefer manual picks!
for i in range(len(picks)):
if picks[i].method_id == 'manual':
mstation = picks[i].waveform_id.station_code
mstation_ext = mstation + '_'
for k in range(len(picks_copy)):
if ((picks_copy[k].waveform_id.station_code == mstation) or
(picks_copy[k].waveform_id.station_code == mstation_ext)) and \
(picks_copy[k].method_id == 'auto'):
del picks_copy[k]
break
lendiff = len(picks) - len(picks_copy)
if lendiff != 0:
print("Manual as well as automatic picks available. Prefered the {} manual ones!".format(lendiff))
no_uncertainties_p = []
no_uncertainties_s = []
if upperErrors:
# check for pick uncertainties exceeding adjusted upper errors
# Picks with larger uncertainties will not be saved in output file!
for j in range(len(picks)):
for i in range(len(picks_copy)):
if picks_copy[i].phase_hint[0] == 'P':
# Skipping pick if no upper_uncertainty is found and warning user
if picks_copy[i].time_errors['upper_uncertainty'] is None:
#print("{1} P-Pick of station {0} does not have upper_uncertainty and cant be checked".format(
# picks_copy[i].waveform_id.station_code,
# picks_copy[i].method_id))
if not picks_copy[i].waveform_id.station_code in no_uncertainties_p:
no_uncertainties_p.append(picks_copy[i].waveform_id.station_code)
continue
#print ("checking for upper_uncertainty")
if (picks_copy[i].time_errors['uncertainty'] is None) or \
(picks_copy[i].time_errors['upper_uncertainty'] >= upperErrors[0]):
print("Uncertainty exceeds or equal adjusted upper time error!")
print("Adjusted uncertainty: {}".format(upperErrors[0]))
print("Pick uncertainty: {}".format(picks_copy[i].time_errors['uncertainty']))
print("{1} P-Pick of station {0} will not be saved in outputfile".format(
picks_copy[i].waveform_id.station_code,
picks_copy[i].method_id))
del picks_copy[i]
break
if picks_copy[i].phase_hint[0] == 'S':
# Skipping pick if no upper_uncertainty is found and warning user
if picks_copy[i].time_errors['upper_uncertainty'] is None:
#print("{1} S-Pick of station {0} does not have upper_uncertainty and cant be checked".format(
#picks_copy[i].waveform_id.station_code,
#picks_copy[i].method_id))
if not picks_copy[i].waveform_id.station_code in no_uncertainties_s:
no_uncertainties_s.append(picks_copy[i].waveform_id.station_code)
continue
if (picks_copy[i].time_errors['uncertainty'] is None) or \
(picks_copy[i].time_errors['upper_uncertainty'] >= upperErrors[1]):
print("Uncertainty exceeds or equal adjusted upper time error!")
print("Adjusted uncertainty: {}".format(upperErrors[1]))
print("Pick uncertainty: {}".format(picks_copy[i].time_errors['uncertainty']))
print("{1} S-Pick of station {0} will not be saved in outputfile".format(
picks_copy[i].waveform_id.station_code,
picks_copy[i].method_id))
del picks_copy[i]
break
for s in no_uncertainties_p:
print("P-Pick of station {0} does not have upper_uncertainty and cant be checked".format(s))
for s in no_uncertainties_s:
print("S-Pick of station {0} does not have upper_uncertainty and cant be checked".format(s))
if fnext == '.obs':
try:
evtdata_copy.write(fnout + fnext, format=evtformat)
# write header afterwards
evid = str(evtdata_org.resource_id).split('/')[1]
header = '# EQEVENT: Label: EQ%s Loc: X 0.00 Y 0.00 Z 10.00 OT 0.00 \n' % evid
nllocfile = open(fnout + fnext)
l = nllocfile.readlines()
# Adding A0/Generic Amplitude to .obs file
# l2 = []
# for li in l:
# for amp in evtdata_org.amplitudes:
# if amp.waveform_id.station_code == li[0:5].strip():
# li = li[0:64] + '{:0.2e}'.format(amp.generic_amplitude) + li[73:-1] + '\n'
# l2.append(li)
# l = l2
nllocfile.close()
l.insert(0, header)
nllocfile = open(fnout + fnext, 'w')
nllocfile.write("".join(l))
nllocfile.close()
except KeyError as e:
raise KeyError('''{0} export format
not implemented: {1}'''.format(evtformat, e))
if fnext == '.cnv':
try:
velest.export(picks_copy, fnout + fnext, eventinfo=self.get_evt_data())
except KeyError as e:
raise KeyError('''{0} export format
not implemented: {1}'''.format(evtformat, e))
if fnext == '_focmec.in':
try:
parameter = PylotParameter()
logging.warning('Using default input parameter')
focmec.export(picks_copy, fnout + fnext, parameter, eventinfo=self.get_evt_data())
except KeyError as e:
raise KeyError('''{0} export format
not implemented: {1}'''.format(evtformat, e))
if fnext == '.pha':
try:
parameter = PylotParameter()
logging.warning('Using default input parameter')
hypodd.export(picks_copy, fnout + fnext, parameter, eventinfo=self.get_evt_data())
except KeyError as e:
raise KeyError('''{0} export format
not implemented: {1}'''.format(evtformat, e))
def getComp(self):
"""
Get component (ZNE)
"""
return self.comp
def getID(self):
"""
Get unique resource id
"""
try:
return self.evtdata.get('resource_id').id
except:
return None
def filterWFData(self, kwargs):
"""
Filter waveform data
:param kwargs: arguments to pass through to filter function
"""
data = self.getWFData()
data.detrend('linear')
data.taper(0.02, type='cosine')
data.filter(**kwargs)
self.dirty = True
def setWFData(self, fnames, fnames_alt=None, checkRotated=False, metadata=None, tstart=0, tstop=0):
"""
Clear current waveform data and set given waveform data
:param fnames: waveform data names to append
:param fnames_alt: alternative data to show (e.g. synthetic/processed)
:type fnames: list
"""
def check_fname_exists(filenames: list) -> list:
if filenames:
filenames = [fn for fn in filenames if os.path.isfile(fn)]
return filenames
self.wfdata = Stream()
self.wforiginal = None
self.wf_alt = Stream()
if tstart == tstop:
tstart = tstop = None
self.tstart = tstart
self.tstop = tstop
# remove directories
fnames = check_fname_exists(fnames)
fnames_alt = check_fname_exists(fnames_alt)
# if obspy_dmt:
# wfdir = 'raw'
# self.processed = False
# for fname in fnames:
# if fname.endswith('processed'):
# wfdir = 'processed'
# self.processed = True
# break
# for fpath in fnames:
# if fpath.endswith(wfdir):
# wffnames = [os.path.join(fpath, fname) for fname in os.listdir(fpath)]
# if 'syngine' in fpath.split('/')[-1]:
# wffnames_syn = [os.path.join(fpath, fname) for fname in os.listdir(fpath)]
# else:
# wffnames = fnames
if fnames is not None:
self.appendWFData(fnames)
if fnames_alt is not None:
self.appendWFData(fnames_alt, alternative=True)
else:
return False
# various pre-processing steps:
# remove possible underscores in station names
# self.wfdata = remove_underscores(self.wfdata)
# check for gaps and merge
self.wfdata, _ = check_for_gaps_and_merge(self.wfdata)
# check for nans
check_for_nan(self.wfdata)
# check for stations with rotated components
if checkRotated and metadata is not None:
self.wfdata = check4rotated(self.wfdata, metadata, verbosity=0)
# trim station components to same start value
trim_station_components(self.wfdata, trim_start=True, trim_end=False)
# make a copy of original data
self.wforiginal = self.getWFData().copy()
self.dirty = False
return True
def appendWFData(self, fnames, alternative=False):
"""
Read waveform data from fnames and append it to current wf data
:param fnames: waveform data to append
:type fnames: list
"""
assert isinstance(fnames, list), "input parameter 'fnames' is " \
"supposed to be of type 'list' " \
"but is actually" \
" {0}".format(type(fnames))
if self.dirty:
self.resetWFData()
orig_or_alternative_data = {True: self.wf_alt,
False: self.wfdata}
warnmsg = ''
for fname in set(fnames):
try:
orig_or_alternative_data[alternative] += read(fname, starttime=self.tstart, endtime=self.tstop)
except TypeError:
try:
orig_or_alternative_data[alternative] += read(fname, format='GSE2', starttime=self.tstart, endtime=self.tstop)
except Exception as e:
try:
orig_or_alternative_data[alternative] += read(fname, format='SEGY', starttime=self.tstart,
endtime=self.tstop)
except Exception as e:
warnmsg += '{0}\n{1}\n'.format(fname, e)
except SacIOError as se:
warnmsg += '{0}\n{1}\n'.format(fname, se)
if warnmsg:
warnmsg = 'WARNING in appendWFData: unable to read waveform data\n' + warnmsg
print(warnmsg)
def getWFData(self):
return self.wfdata
def getOriginalWFData(self):
return self.wforiginal
def getAltWFdata(self):
return self.wf_alt
def resetWFData(self):
"""
Set waveform data to original waveform data
"""
if self.getOriginalWFData():
self.wfdata = self.getOriginalWFData().copy()
else:
self.wfdata = Stream()
self.dirty = False
def resetPicks(self):
"""
Clear all picks from event
"""
self.get_evt_data().picks = []
def get_evt_data(self):
return self.evtdata
def setEvtData(self, event):
self.evtdata = event
def applyEVTData(self, data, typ='pick'):
"""
Either takes an `obspy.core.event.Event` object and applies all new
information on the event to the actual data if typ is 'event or
creates ObsPy pick objects and append it to the picks list from the
PyLoT dictionary contain all picks if type is pick
:param data: data to apply, either picks or complete event
:type data:
:param typ: which event data to apply, 'pick' or 'event'
:type typ: str
:param authority_id: (currently unused)
:type: str
:raise OverwriteError:
"""
def applyPicks(picks):
"""
Creates ObsPy pick objects and append it to the picks list from the
PyLoT dictionary contain all picks.
:param picks:
:raise OverwriteError: raises an OverwriteError if the picks list is
not empty. The GUI will then ask for a decision.
"""
# firstonset = find_firstonset(picks)
# check for automatic picks
print("Writing phases to ObsPy-quakeml file")
for key in picks:
if not picks[key].get('P'):
continue
if picks[key]['P']['picker'] == 'auto':
print("Existing auto-picks will be overwritten in pick-dictionary!")
picks = picks_from_picksdict(picks)
break
else:
if self.get_evt_data().picks:
raise OverwriteError('Existing picks would be overwritten!')
else:
picks = picks_from_picksdict(picks)
break
self.get_evt_data().picks = picks
# if 'smi:local' in self.getID() and firstonset:
# fonset_str = firstonset.strftime('%Y_%m_%d_%H_%M_%S')
# ID = ResourceIdentifier('event/' + fonset_str)
# ID.convertIDToQuakeMLURI(authority_id=authority_id)
# self.get_evt_data().resource_id = ID
def applyEvent(event):
"""
takes an `obspy.core.event.Event` object and applies all new
information on the event to the actual data
:param event:
"""
if event is None:
print("applyEvent: Received None")
return
if self.isNew():
self.setEvtData(event)
else:
# prevent overwriting original pick information
event_old = self.get_evt_data()
if not event_old.resource_id == event.resource_id:
print("WARNING: Missmatch in event resource id's: {} and {}".format(
event_old.resource_id,
event.resource_id))
else:
picks = copy.deepcopy(event_old.picks)
event = merge_picks(event, picks)
# apply event information from location
event_old.update(event)
applydata = {'pick': applyPicks,
'event': applyEvent}
applydata[typ](data)
self._new = False
class GenericDataStructure(object):
"""
GenericDataBase type holds all information about the current data-
base working on.
"""
def __init__(self, **kwargs):
self.allowedFields = []
self.expandFields = ['root']
self.dsFields = {}
self.modifyFields(**kwargs)
def modifyFields(self, **kwargs):
"""
:param kwargs:
"""
assert isinstance(kwargs, dict), 'dictionary type object expected'
if not self.extraAllowed():
kwargs = self.updateNotAllowed(kwargs)
for key, value in kwargs.items():
key = str(key).lower()
if value is not None:
if type(value) not in (str, int, float):
for n, val in enumerate(value):
value[n] = str(val)
else:
value = str(value)
try:
self.setFieldValue(key, value)
except KeyError as e:
errmsg = ''
errmsg += 'WARNING:\n'
errmsg += 'unable to set values for datastructure fields\n'
errmsg += '%s; desired value was: %s\n' % (e, value)
print(errmsg)
def isField(self, key):
"""
:param key:
:return:
"""
return key in self.getFields().keys()
def getFieldValue(self, key):
"""
:param key:
:return:
"""
if self.isField(key):
return self.getFields()[key]
else:
return
def setFieldValue(self, key, value):
"""
:param key:
:param value:
:raise KeyError:
"""
if not self.extraAllowed() and key not in self.getAllowed():
raise KeyError
else:
if not self.isField(key):
print('creating new field "%s"' % key)
self.getFields()[key] = value
def getFields(self):
"""
:return:
"""
return self.dsFields
def getExpandFields(self):
"""
:return:
"""
return self.expandFields
def setExpandFields(self, keys):
"""
:param keys:
"""
expandFields = []
for key in keys:
if self.isField(key):
expandFields.append(key)
self.expandFields = expandFields
def getAllowed(self):
"""
:return:
"""
return self.allowedFields
def extraAllowed(self):
"""
:return:
"""
return not self.allowedFields
def updateNotAllowed(self, kwargs):
"""
:param kwargs:
:return:
"""
for key in kwargs:
if key not in self.getAllowed():
kwargs.__delitem__(key)
return kwargs
def hasSuffix(self):
"""
:return:
"""
try:
self.getFieldValue('suffix')
except KeyError:
return False
else:
if self.getFieldValue('suffix'):
return True
return False
def expandDataPath(self):
"""
:return:
"""
expandList = []
for item in self.getExpandFields():
expandList.append(self.getFieldValue(item))
if self.hasSuffix():
expandList.append('*%s' % self.getFieldValue('suffix'))
return os.path.join(*expandList)
def getCatalogName(self):
"""
:return:
"""
return os.path.join(self.getFieldValue('root'), 'catalog.qml')
class PilotDataStructure(GenericDataStructure):
"""
Object containing the data access information for the old PILOT data
structure.
"""
def __init__(self, **fields):
if not fields:
fields = {'database': '',
'root': ''}
GenericDataStructure.__init__(self, **fields)
self.setExpandFields(['root', 'database'])
class ObspyDMTdataStructure(GenericDataStructure):
"""
Object containing the data access information for the old PILOT data
structure.
"""
def __init__(self, **fields):
if not fields:
fields = {'database': '',
'root': ''}
GenericDataStructure.__init__(self, **fields)
self.setExpandFields(['root', 'database'])
class SeiscompDataStructure(GenericDataStructure):
"""
Dictionary containing the data access information for an SDS data archive:
:param str dataType: Desired data type. Default: ``'waveform'``
:param sdate, edate: Either date string or an instance of
:class:`obspy.core.utcdatetime.UTCDateTime. Default: ``None``
:type sdate, edate: str or UTCDateTime or None
"""
def __init__(self, rootpath='/data/SDS', dataformat='MSEED',
filesuffix=None, **kwargs):
super(GenericDataStructure, self).__init__()
edate = UTCDateTime()
halfyear = UTCDateTime('1970-07-01')
sdate = UTCDateTime(edate - halfyear)
del halfyear
year = ''
if not edate.year == sdate.year:
nyears = edate.year - sdate.year
for yr in range(nyears):
year += '{0:04d},'.format(sdate.year + yr)
year = '{' + year[:-1] + '}'
else:
year = '{0:04d}'.format(sdate.year)
# SDS fields' default values
# definitions from
# http://www.seiscomp3.org/wiki/doc/applications/slarchive/SDS
self.dsFields = {'root': '/data/SDS', 'YEAR': year, 'NET': '??',
'STA': '????', 'CHAN': 'HH?', 'TYPE': 'D', 'LOC': '',
'DAY': '{0:03d}'.format(sdate.julday)
}
self.modifiyFields(**kwargs)
def modifiyFields(self, **kwargs):
"""
:param kwargs:
"""
if kwargs and isinstance(kwargs, dict):
for key, value in kwargs.iteritems():
key = str(key)
if type(value) not in (str, int, float):
for n, val in enumerate(value):
value[n] = str(val)
else:
value = str(value)
try:
self.setFieldValue(key, value)
except KeyError as e:
errmsg = ''
errmsg += 'WARNING:\n'
errmsg += 'unable to set values for SDS fields\n'
errmsg += '%s; desired value was: %s\n' % (e, value)
print(errmsg)
def setFieldValue(self, key, value):
"""
:param key:
:param value:
"""
if self.isField(key):
self.getFields()[key] = value
else:
print('Warning: trying to set value of non-existent field '
'{field}'.format(field=key))
def expandDataPath(self):
"""
:return:
"""
fullChan = '{0}.{1}'.format(self.getFields()['CHAN'], self.getType())
dataPath = os.path.join(self.getFields()['SDSdir'],
self.getFields()['YEAR'],
self.getFields()['NET'],
self.getFields()['STA'],
fullChan,
'*{0}'.format(self.getFields()['DAY']))
return dataPath

View File

@@ -0,0 +1,616 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
"""
Default parameters used for picking
"""
defaults = {'rootpath': {'type': str,
'tooltip': 'project path',
'value': '',
'namestring': 'Root path'},
'datapath': {'type': str,
'tooltip': 'data path',
'value': '',
'namestring': 'Data path'},
'database': {'type': str,
'tooltip': 'name of data base',
'value': '',
'namestring': 'Database path'},
'eventID': {'type': str,
'tooltip': 'event ID for single event processing (* for all events found in database)',
'value': '',
'namestring': 'Event ID'},
'extent': {'type': str,
'tooltip': 'extent of array ("active", "local", "regional" or "global")',
'value': 'local',
'namestring': 'Array extent'},
'invdir': {'type': str,
'tooltip': 'full path to inventory or dataless-seed file',
'value': '',
'namestring': 'Inventory directory'},
'datastructure': {'type': str,
'tooltip': 'choose data structure',
'value': 'PILOT',
'namestring': 'Datastructure'},
'apverbose': {'type': bool,
'tooltip': "choose 'True' or 'False' for terminal output",
'value': True,
'namestring': 'App. verbosity'},
'nllocbin': {'type': str,
'tooltip': 'path to NLLoc executable',
'value': '',
'namestring': 'NLLoc bin path'},
'nllocroot': {'type': str,
'tooltip': 'root of NLLoc-processing directory',
'value': '',
'namestring': 'NLLoc root path'},
'phasefile': {'type': str,
'tooltip': 'name of autoPyLoT-output phase file for NLLoc',
'value': 'AUTOPHASES.obs',
'namestring': 'Phase filename'},
'ctrfile': {'type': str,
'tooltip': 'name of autoPyLoT-output control file for NLLoc',
'value': '',
'namestring': 'Control filename'},
'ttpatter': {'type': str,
'tooltip': 'pattern of NLLoc ttimes from grid',
'value': 'ttime',
'namestring': 'Traveltime pattern'},
'outpatter': {'type': str,
'tooltip': 'pattern of NLLoc-output file',
'value': 'AUTOLOC_nlloc',
'namestring': 'NLLoc output pattern'},
'vp': {'type': float,
'tooltip': 'average P-wave velocity',
'value': 3530.,
'min': 0.,
'max': np.inf,
'namestring': 'P-velocity'},
'rho': {'type': float,
'tooltip': 'average rock density [kg/m^3]',
'value': 2500.,
'min': 0.,
'max': np.inf,
'namestring': 'Density'},
'Qp': {'type': (float, float),
'tooltip': 'quality factor for P waves (Qp*f^a); list(Qp, a)',
'value': (300., 0.8),
'namestring': ('Quality factor', 'Qp1', 'Qp2')},
'pstart': {'type': float,
'tooltip': 'start time [s] for calculating CF for P-picking (if TauPy:'
' seconds relative to estimated onset)',
'value': 15.0,
'min': -np.inf,
'max': np.inf,
'namestring': 'P start'},
'pstop': {'type': float,
'tooltip': 'end time [s] for calculating CF for P-picking (if TauPy:'
' seconds relative to estimated onset)',
'value': 60.0,
'min': -np.inf,
'max': np.inf,
'namestring': 'P stop'},
'sstart': {'type': float,
'tooltip': 'start time [s] relative to P-onset for calculating CF for S-picking',
'value': -1.0,
'min': -np.inf,
'max': np.inf,
'namestring': 'S start'},
'sstop': {'type': float,
'tooltip': 'end time [s] after P-onset for calculating CF for S-picking',
'value': 10.0,
'min': -np.inf,
'max': np.inf,
'namestring': 'S stop'},
'bpz1': {'type': (float, float),
'tooltip': 'lower/upper corner freq. of first band pass filter Z-comp. [Hz]',
'value': (2, 20),
'min': (0., 0.),
'max': (np.inf, np.inf),
'namestring': ('Z-bandpass 1', 'Lower', 'Upper')},
'bpz2': {'type': (float, float),
'tooltip': 'lower/upper corner freq. of second band pass filter Z-comp. [Hz]',
'value': (2, 30),
'min': (0., 0.),
'max': (np.inf, np.inf),
'namestring': ('Z-bandpass 2', 'Lower', 'Upper')},
'bph1': {'type': (float, float),
'tooltip': 'lower/upper corner freq. of first band pass filter H-comp. [Hz]',
'value': (2, 15),
'min': (0., 0.),
'max': (np.inf, np.inf),
'namestring': ('H-bandpass 1', 'Lower', 'Upper')},
'bph2': {'type': (float, float),
'tooltip': 'lower/upper corner freq. of second band pass filter z-comp. [Hz]',
'value': (2, 20),
'min': (0., 0.),
'max': (np.inf, np.inf),
'namestring': ('H-bandpass 2', 'Lower', 'Upper')},
'algoP': {'type': str,
'tooltip': 'choose algorithm for P-onset determination (HOS, ARZ, or AR3)',
'value': 'HOS',
'namestring': 'P algorithm'},
'tlta': {'type': float,
'tooltip': 'for HOS-/AR-AIC-picker, length of LTA window [s]',
'value': 7.0,
'min': 0.,
'max': np.inf,
'namestring': 'LTA window'},
'hosorder': {'type': int,
'tooltip': 'for HOS-picker, order of Higher Order Statistics',
'value': 4,
'min': 0,
'max': np.inf,
'namestring': 'HOS order'},
'Parorder': {'type': int,
'tooltip': 'for AR-picker, order of AR process of Z-component',
'value': 2,
'min': 0,
'max': np.inf,
'namestring': 'AR order P'},
'tdet1z': {'type': float,
'tooltip': 'for AR-picker, length of AR determination window [s] for Z-component, 1st pick',
'value': 1.2,
'min': 0.,
'max': np.inf,
'namestring': 'AR det. window Z 1'},
'tpred1z': {'type': float,
'tooltip': 'for AR-picker, length of AR prediction window [s] for Z-component, 1st pick',
'value': 0.4,
'min': 0.,
'max': np.inf,
'namestring': 'AR pred. window Z 1'},
'tdet2z': {'type': float,
'tooltip': 'for AR-picker, length of AR determination window [s] for Z-component, 2nd pick',
'value': 0.6,
'min': 0.,
'max': np.inf,
'namestring': 'AR det. window Z 2'},
'tpred2z': {'type': float,
'tooltip': 'for AR-picker, length of AR prediction window [s] for Z-component, 2nd pick',
'value': 0.2,
'min': 0.,
'max': np.inf,
'namestring': 'AR pred. window Z 2'},
'addnoise': {'type': float,
'tooltip': 'add noise to seismogram for stable AR prediction',
'value': 0.001,
'min': 0.,
'max': np.inf,
'namestring': 'Add noise'},
'tsnrz': {'type': (float, float, float, float),
'tooltip': 'for HOS/AR, window lengths for SNR-and slope estimation [tnoise, tsafetey, tsignal, tslope] [s]',
'value': (3, 0.1, 0.5, 1.0),
'min': (0., 0., 0., 0.),
'max': (np.inf, np.inf, np.inf, np.inf),
'namestring': ('SNR windows P', 'Noise', 'Safety', 'Signal', 'Slope')},
'pickwinP': {'type': float,
'tooltip': 'for initial AIC pick, length of P-pick window [s]',
'value': 3.0,
'min': 0.,
'max': np.inf,
'namestring': 'AIC window P'},
'Precalcwin': {'type': float,
'tooltip': 'for HOS/AR, window length [s] for recalculation of CF (relative to 1st pick)',
'value': 6.0,
'min': 0.,
'max': np.inf,
'namestring': 'Recal. window P'},
'aictsmooth': {'type': float,
'tooltip': 'for HOS/AR, take average of samples for smoothing of AIC-function [s]',
'value': 0.2,
'min': 0.,
'max': np.inf,
'namestring': 'AIC smooth P'},
'tsmoothP': {'type': float,
'tooltip': 'for HOS/AR, take average of samples in this time window for smoothing CF [s]',
'value': 0.1,
'min': 0.,
'max': np.inf,
'namestring': 'CF smooth P'},
'ausP': {'type': float,
'tooltip': 'for HOS/AR, artificial uplift of samples (aus) of CF (P)',
'value': 0.001,
'min': 0.,
'max': np.inf,
'namestring': 'Artificial uplift P'},
'nfacP': {'type': float,
'tooltip': 'for HOS/AR, noise factor for noise level determination (P)',
'value': 1.3,
'min': 0.,
'max': np.inf,
'namestring': 'Noise factor P'},
'algoS': {'type': str,
'tooltip': 'choose algorithm for S-onset determination (ARH or AR3)',
'value': 'ARH',
'namestring': 'S algorithm'},
'tdet1h': {'type': float,
'tooltip': 'for HOS/AR, length of AR-determination window [s], H-components, 1st pick',
'value': 0.8,
'min': 0.,
'max': np.inf,
'namestring': 'AR det. window H 1'},
'tpred1h': {'type': float,
'tooltip': 'for HOS/AR, length of AR-prediction window [s], H-components, 1st pick',
'value': 0.4,
'min': 0.,
'max': np.inf,
'namestring': 'AR pred. window H 1'},
'tdet2h': {'type': float,
'tooltip': 'for HOS/AR, length of AR-determinaton window [s], H-components, 2nd pick',
'value': 0.6,
'min': 0.,
'max': np.inf,
'namestring': 'AR det. window H 2'},
'tpred2h': {'type': float,
'tooltip': 'for HOS/AR, length of AR-prediction window [s], H-components, 2nd pick',
'value': 0.3,
'min': 0.,
'max': np.inf,
'namestring': 'AR pred. window H 2'},
'Sarorder': {'type': int,
'tooltip': 'for AR-picker, order of AR process of H-components',
'value': 4,
'min': 0,
'max': np.inf,
'namestring': 'AR order S'},
'Srecalcwin': {'type': float,
'tooltip': 'for AR-picker, window length [s] for recalculation of CF (2nd pick) (H)',
'value': 5.0,
'min': 0.,
'max': np.inf,
'namestring': 'Recal. window S'},
'pickwinS': {'type': float,
'tooltip': 'for initial AIC pick, length of S-pick window [s]',
'value': 3.0,
'min': 0.,
'max': np.inf,
'namestring': 'AIC window S'},
'tsnrh': {'type': (float, float, float, float),
'tooltip': 'for ARH/AR3, window lengths for SNR-and slope estimation [tnoise, tsafetey, tsignal, tslope] [s]',
'value': (2, 0.2, 1.5, 0.5),
'min': (0., 0., 0., 0.),
'max': (np.inf, np.inf, np.inf, np.inf),
'namestring': ('SNR windows S', 'Noise', 'Safety', 'Signal', 'Slope')},
'aictsmoothS': {'type': float,
'tooltip': 'for AIC-picker, take average of samples in this time window for smoothing of AIC-function [s]',
'value': 0.5,
'min': 0.,
'max': np.inf,
'namestring': 'AIC smooth S'},
'tsmoothS': {'type': float,
'tooltip': 'for AR-picker, take average of samples for smoothing CF [s] (S)',
'value': 0.7,
'min': 0.,
'max': np.inf,
'namestring': 'CF smooth S'},
'ausS': {'type': float,
'tooltip': 'for HOS/AR, artificial uplift of samples (aus) of CF (S)',
'value': 0.9,
'min': 0.,
'max': np.inf,
'namestring': 'Artificial uplift S'},
'nfacS': {'type': float,
'tooltip': 'for AR-picker, noise factor for noise level determination (S)',
'value': 1.5,
'min': 0.,
'max': np.inf,
'namestring': 'Noise factor S'},
'minfmweight': {'type': int,
'tooltip': 'minimum required P weight for first-motion determination',
'value': 1,
'namestring': 'Min. P weight'},
'minFMSNR': {'type': float,
'tooltip': 'miniumum required SNR for first-motion determination',
'value': 2.,
'min': 0.,
'max': np.inf,
'namestring': 'Min SNR'},
'fmpickwin': {'type': float,
'tooltip': 'pick window [s] around P onset for calculating zero crossings',
'value': 0.2,
'min': 0.,
'max': np.inf,
'namestring': 'Zero crossings window'},
'timeerrorsP': {'type': (float, float, float, float),
'tooltip': 'discrete time errors [s] corresponding to picking weights [0 1 2 3] for P',
'value': (0.01, 0.02, 0.04, 0.08),
'min': (0., 0., 0., 0.),
'max': (np.inf, np.inf, np.inf, np.inf),
'namestring': ('Time errors P', '0', '1', '2', '3')},
'timeerrorsS': {'type': (float, float, float, float),
'tooltip': 'discrete time errors [s] corresponding to picking weights [0 1 2 3] for S',
'value': (0.04, 0.08, 0.16, 0.32),
'min': (0., 0., 0., 0.),
'max': (np.inf, np.inf, np.inf, np.inf),
'namestring': ('Time errors S', '0', '1', '2', '3')},
'minAICPslope': {'type': float,
'tooltip': 'below this slope [counts/s] the initial P pick is rejected',
'value': 0.8,
'min': 0.,
'max': np.inf,
'namestring': 'Min. slope P'},
'minAICPSNR': {'type': float,
'tooltip': 'below this SNR the initial P pick is rejected',
'value': 1.1,
'min': 0.,
'max': np.inf,
'namestring': 'Min. SNR P'},
'minAICSslope': {'type': float,
'tooltip': 'below this slope [counts/s] the initial S pick is rejected',
'value': 1.,
'min': 0.,
'max': np.inf,
'namestring': 'Min. slope S'},
'minAICSSNR': {'type': float,
'tooltip': 'below this SNR the initial S pick is rejected',
'value': 1.5,
'min': 0.,
'max': np.inf,
'namestring': 'Min. SNR S'},
'minsiglength': {'type': float,
'tooltip': 'length of signal part for which amplitudes must exceed noiselevel [s]',
'value': 1.,
'min': 0.,
'max': np.inf,
'namestring': 'Min. signal length'},
'noisefactor': {'type': float,
'tooltip': 'noiselevel*noisefactor=threshold',
'value': 1.0,
'min': 0.,
'max': np.inf,
'namestring': 'Noise factor'},
'minpercent': {'type': float,
'tooltip': 'required percentage of amplitudes exceeding threshold',
'value': 10.,
'min': 0.,
'max': np.inf,
'namestring': 'Min amplitude [%]'},
'zfac': {'type': float,
'tooltip': 'P-amplitude must exceed at least zfac times RMS-S amplitude',
'value': 1.5,
'min': 0.,
'max': np.inf,
'namestring': 'Z factor'},
'mdttolerance': {'type': float,
'tooltip': 'maximum allowed deviation of P picks from median [s]',
'value': 6.0,
'min': 0.,
'max': np.inf,
'namestring': 'Median tolerance'},
'wdttolerance': {'type': float,
'tooltip': 'maximum allowed deviation from Wadati-diagram',
'value': 1.0,
'min': 0.,
'max': np.inf,
'namestring': 'Wadati tolerance'},
'jackfactor': {'type': float,
'tooltip': 'pick is removed if the variance of the subgroup with the pick removed is larger than the mean variance of all subgroups times safety factor',
'value': 5.0,
'min': 0.,
'max': np.inf,
'namestring': 'Jackknife safety factor'},
'WAscaling': {'type': (float, float, float),
'tooltip': 'Scaling relation (log(Ao)+Alog(r)+Br+C) of Wood-Anderson amplitude Ao [nm] \
If zeros are set, original Richter magnitude is calculated!',
'value': (0., 0., 0.),
'min': (-np.inf, -np.inf, -np.inf),
'max': (np.inf, np.inf, np.inf),
'namestring': ('Wood-Anderson scaling', '', '', '')},
'magscaling': {'type': (float, float),
'tooltip': 'Scaling relation for derived local magnitude [a*Ml+b]. \
If zeros are set, no scaling of network magnitude is applied!',
'value': (0., 0.),
'min': (0., -np.inf),
'max': (np.inf, np.inf),
'namestring': ('Local mag. scaling', '', '')},
'minfreq': {'type': (float, float),
'tooltip': 'Lower filter frequency [P, S]',
'value': (1.0, 1.0),
'min': (0., 0.),
'max': (np.inf, np.inf),
'namestring': ('Lower freq.', 'P', 'S')},
'maxfreq': {'type': (float, float),
'tooltip': 'Upper filter frequency [P, S]',
'value': (10.0, 10.0),
'min': (0., 0.),
'max': (np.inf, np.inf),
'namestring': ('Upper freq.', 'P', 'S')},
'filter_order': {'type': (int, int),
'tooltip': 'filter order [P, S]',
'value': (2, 2),
'min': (0, 0),
'max': (np.inf, np.inf),
'namestring': ('Order', 'P', 'S')},
'filter_type': {'type': (str, str),
'tooltip': 'filter type (bandpass, bandstop, lowpass, highpass) [P, S]',
'value': ('bandpass', 'bandpass'),
'namestring': ('Type', 'P', 'S')},
'use_taup': {'type': bool,
'tooltip': 'use estimated traveltimes from TauPy for calculating windows for CF',
'value': True,
'namestring': 'Use TauPy'},
'taup_model': {'type': str,
'tooltip': 'Define TauPy model for traveltime estimation. Possible values: 1066a, 1066b, ak135, ak135f, herrin, iasp91, jb, prem, pwdk, sp6',
'value': None,
'namestring': 'TauPy model'},
'taup_phases': {'type': str,
'tooltip': 'Specify possible phases for TauPy (comma separated). See Obspy TauPy documentation for possible values.',
'value': 'ttall',
'namestring': 'TauPy phases'},
}
settings_main = {
'dirs': [
'rootpath',
'datapath',
'database',
'eventID',
'invdir',
'datastructure',
'apverbose'],
'nlloc': [
'nllocbin',
'nllocroot',
'phasefile',
'ctrfile',
'ttpatter',
'outpatter'],
'smoment': [
'vp',
'rho',
'Qp'],
'localmag': [
'WAscaling',
'magscaling'],
'filter': [
'minfreq',
'maxfreq',
'filter_order',
'filter_type'],
'pick': [
'extent',
'pstart',
'pstop',
'sstart',
'sstop',
'use_taup',
'taup_model',
'taup_phases',
'bpz1',
'bpz2',
'bph1',
'bph2']
}
settings_special_pick = {
'z': [
'algoP',
'tlta',
'hosorder',
'Parorder',
'tdet1z',
'tpred1z',
'tdet2z',
'tpred2z',
'addnoise',
'tsnrz',
'pickwinP',
'Precalcwin',
'aictsmooth',
'tsmoothP',
'ausP',
'nfacP'],
'h': [
'algoS',
'tdet1h',
'tpred1h',
'tdet2h',
'tpred2h',
'Sarorder',
'Srecalcwin',
'pickwinS',
'tsnrh',
'aictsmoothS',
'tsmoothS',
'ausS',
'nfacS'],
'fm': [
'minfmweight',
'minFMSNR',
'fmpickwin'],
'quality': [
'timeerrorsP',
'timeerrorsS',
'minAICPslope',
'minAICPSNR',
'minAICSslope',
'minAICSSNR',
'minsiglength',
'noisefactor',
'minpercent',
'zfac',
'mdttolerance',
'wdttolerance',
'jackfactor'],
}

View File

@@ -0,0 +1,84 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Script to get event parameters from PyLoT-xml file to write
them into eventlist.
LK, igem, 03/2021
Edited for use in PyLoT
JG, igem, 01/2022
"""
import os
import argparse
import numpy as np
import matplotlib.pyplot as plt
import glob
from obspy.core.event import read_events
from pyproj import Proj
"""
Creates an eventlist file summarizing all events found in a certain folder. Only called by pressing UI Button eventlis_xml_action
:rtype:
:param path: Path to root folder where single Event folder are to found
"""
def geteventlistfromxml(path, outpath):
p = Proj(proj='utm', zone=32, ellps='WGS84')
# open eventlist file and write header
evlist = outpath + '/eventlist'
evlistobj = open(evlist, 'w')
evlistobj.write(
'EventID Date To Lat Lon EAST NORTH Dep Ml NoP NoS RMS errH errZ Gap \n')
# data path
dp = path + "/e*/*.xml"
# list of all available xml-files
xmlnames = glob.glob(dp)
# read all onset weights
for names in xmlnames:
print("Getting location parameters from {}".format(names))
cat = read_events(names)
try:
st = cat.events[0].origins[0].time
Lat = cat.events[0].origins[0].latitude
Lon = cat.events[0].origins[0].longitude
EAST, NORTH = p(Lon, Lat)
Dep = cat.events[0].origins[0].depth / 1000
Ml = cat.events[0].magnitudes[1].mag
NoP = []
NoS = []
except IndexError:
print('Insufficient data found for event (not localised): ' + names.split('/')[-1].split('_')[-1][
:-4] + ' Skipping event for eventlist.')
continue
for i in range(len(cat.events[0].origins[0].arrivals)):
if cat.events[0].origins[0].arrivals[i].phase == 'P':
NoP.append(cat.events[0].origins[0].arrivals[i].phase)
elif cat.events[0].origins[0].arrivals[i].phase == 'S':
NoS.append(cat.events[0].origins[0].arrivals[i].phase)
# NoP = cat.events[0].origins[0].quality.used_station_count
errH = cat.events[0].origins[0].origin_uncertainty.max_horizontal_uncertainty
errZ = cat.events[0].origins[0].depth_errors.uncertainty
Gap = cat.events[0].origins[0].quality.azimuthal_gap
# evID = names.split('/')[6]
evID = names.split('/')[-1].split('_')[-1][:-4]
Date = str(st.year) + str('%02d' % st.month) + str('%02d' % st.day)
To = str('%02d' % st.hour) + str('%02d' % st.minute) + str('%02d' % st.second) + \
'.' + str('%06d' % st.microsecond)
# write into eventlist
evlistobj.write('%s %s %s %9.6f %9.6f %13.6f %13.6f %8.6f %3.1f %d %d NaN %d %d %d\n' % (evID, \
Date, To, Lat, Lon,
EAST, NORTH, Dep, Ml,
len(NoP), len(NoS),
errH, errZ, Gap))
print('Adding Event ' + names.split('/')[-1].split('_')[-1][:-4] + ' to eventlist')
print('Eventlist created and saved in: ' + outpath)
evlistobj.close()

504
pylot/core/io/inputs.py Normal file
View File

@@ -0,0 +1,504 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from pylot.core.io import default_parameters
from pylot.core.util.errors import ParameterError
class PylotParameter(object):
'''
PylotParameter is a parameter type object capable to read and/or write
parameter ASCII.
:param fn str: Filename of the input file
Parameters are given for example as follows:
========== ========== =======================================
Name Value Comment
========== ========== =======================================
phl S # phaselabel
ff1 0.1 # freqmin
ff2 0.5 # freqmax
tdet 6.875 # det-window_(s)_for_ar
tpred 2.5 # pred-window_(s)_for_ar
order 4 # order_of_ar
fnoise 0 # noise_level_for_ar
suppp 7 # envelopecoeff
tolt 300 # (s)time around arrival time
f1tpwt 4 # propfact_minfreq_secondtaper
pickwindow 9 # length_of_pick_window
w1 1 # length_of_smoothing_window
w2 0.37 # cf(i-1)*(1+peps)_for_local_min
w3 0.25 # cf(i-1)*(1+peps)_for_local_min
tslope 0.8;2 # slope_det_window_loc_glob
aerr 30;60 # adjusted_error_slope_fitting_loc_glob
tsn 20;5;20;10 # length_signal_window_S/N
proPh Sn # nextprominentphase
========== ========== =======================================
'''
def __init__(self, fnin=None, fnout=None, verbosity=0, **kwargs):
'''
Initialize parameter object:
io content of an ASCII file an form a type consistent dictionary
contain all parameters.
'''
self.__init_default_paras()
self.__init_subsettings()
self.__filename = fnin
self.__parameter = {}
self._verbosity = verbosity
self._parFileCont = {}
# io from parsed arguments alternatively
for key, val in kwargs.items():
self._parFileCont[key] = val
self.from_file()
if fnout:
self.export2File(fnout)
# Human-readable string representation of the object
def __str__(self):
string = ''
string += 'Automated picking parameter:\n\n'
if self.__parameter:
for key, value in self.iteritems():
string += '%s:\t\t%s\n' % (key, value)
else:
string += 'Empty parameter dictionary.'
return string
# Set default values of parameter names
def __init_default_paras(self):
"""set default values of parameter names"""
parameters = default_parameters.defaults
self.__defaults = parameters
def __init_subsettings(self):
self._settings_main = default_parameters.settings_main
self._settings_special_pick = default_parameters.settings_special_pick
# String representation of the object
def __repr__(self):
return "PylotParameter('%s')" % self.__filename
# Boolean test
def __nonzero__(self):
return bool(self.__parameter)
def __getitem__(self, key):
try:
return self.__parameter[key]
except:
return None
def __setitem__(self, key, value):
try:
value = self.check_range(value, self.__defaults[key]['max'], self.__defaults[key]['min'])
except KeyError:
# no min/max values in defaults
pass
self.__parameter[key] = value
def __delitem__(self, key):
del self.__parameter[key]
def __iter__(self):
return iter(self.__parameter)
def __len__(self):
return len(self.__parameter.keys())
def iteritems(self):
"""
Iterate over parameters
:return: key, value tupel
:rtype:
"""
for key, value in self.__parameter.items():
yield key, value
def hasParam(self, parameter):
"""
Check if parameter is in keys
:param parameter: parameter to look for in keys
:type parameter:
:return:
:rtype: bool
"""
return parameter in self.__parameter.keys()
def get(self, *args):
"""
Get first available parameter in args
:param args:
:type args:
:return:
:rtype:
"""
try:
for param in args:
try:
return self.__getitem__(param)
except KeyError as e:
self._printParameterError(e)
raise ParameterError(e)
except TypeError:
try:
return self.__getitem__(args)
except KeyError as e:
self._printParameterError(e)
raise ParameterError(e)
def get_defaults(self):
"""
get default parameters
:return:
:rtype: dict
"""
return self.__defaults
def get_main_para_names(self):
"""
Get main parameter names
:return: list of keys available in parameters
:rtype:
"""
return self._settings_main
def get_special_para_names(self):
"""
Get pick parameter names
:return: list of keys available in parameters
:rtype:
"""
return self._settings_special_pick
def get_all_para_names(self):
"""
Get all parameter names
:return:
:rtype: list
"""
all_names = []
all_names += self.get_main_para_names()['dirs']
all_names += self.get_main_para_names()['nlloc']
all_names += self.get_main_para_names()['smoment']
all_names += self.get_main_para_names()['localmag']
all_names += self.get_main_para_names()['pick']
all_names += self.get_main_para_names()['filter']
all_names += self.get_special_para_names()['z']
all_names += self.get_special_para_names()['h']
all_names += self.get_special_para_names()['fm']
all_names += self.get_special_para_names()['quality']
return all_names
def reinit_default_parameters(self):
self.__init_default_paras()
@staticmethod
def check_range(value, max_value, min_value):
"""
Check if value is within the min/max values defined in default_parameters. Works for tuple and scalar values.
:param value: Value to be checked against min/max range
:param max_value: Maximum allowed value, tuple or scalar
:param min_value: Minimum allowed value, tuple or scalar
:return: value tuple/scalar clamped to the valid range
>>> checkRange(-5, 10, 0)
0
>>> checkRange((-5., 100.), (10., 10.), (0., 0.))
(0.0, 10.0)
"""
try:
# Try handling tuples by comparing their elements
comparisons = [(a > b) for a, b in zip(value, max_value)]
if True in comparisons:
value = tuple(max_value[i] if comp else value[i] for i, comp in enumerate(comparisons))
comparisons = [(a < b) for a, b in zip(value, min_value)]
if True in comparisons:
value = tuple(min_value[i] if comp else value[i] for i, comp in enumerate(comparisons))
except TypeError:
value = max(min_value, min(max_value, value))
return value
def checkValue(self, param, value):
"""
Check type of value against expected type of param.
Print warning message if type check fails
:param param:
:type param:
:param value:
:type value:
:return:
:rtype:
"""
is_type = type(value)
expect_type = self.get_defaults()[param]['type']
if not is_type == expect_type and not is_type == tuple:
message = 'Type check failed for param: {}, is type: {}, expected type:{}'
message = message.format(param, is_type, expect_type)
print(Warning(message))
def setParamKV(self, param, value):
"""
set parameter param to value
:param param:
:type param:
:param value:
:type value:
:return:
:rtype: None
"""
self.__setitem__(param, value)
def setParam(self, **kwargs):
"""
Set multiple parameters
:param kwargs:
:type kwargs:
:return:
:rtype: None
"""
for key in kwargs:
self.__setitem__(key, kwargs[key])
@staticmethod
def _printParameterError(errmsg):
print('ParameterError:\n non-existent parameter %s' % errmsg)
def reset_defaults(self):
"""
Reset current parameters to default parameters
:return:
:rtype: None
"""
defaults = self.get_defaults()
for param_name, param in defaults.items():
self.setParamKV(param_name, param['value'])
def from_file(self, fnin=None):
"""
read parameters from file and set values to read values
:param fnin: filename
:type fnin:
:return:
:rtype: None
"""
if not fnin:
if self.__filename is not None:
fnin = self.__filename
else:
return
if isinstance(fnin, (list, tuple)):
fnin = fnin[0]
inputFile = open(fnin, 'r')
try:
lines = inputFile.readlines()
for line in lines:
parspl = line.split('\t')[:2]
self._parFileCont[parspl[0].strip()] = parspl[1]
except IndexError as e:
if self._verbosity > 0:
self._printParameterError(e)
inputFile.seek(0)
lines = inputFile.readlines()
for line in lines:
if not line.startswith(('#', '%', '\n', ' ')):
parspl = line.split('#')[:2]
self._parFileCont[parspl[1].strip()] = parspl[0].strip()
for key, value in self._parFileCont.items():
try:
val = int(value)
except:
try:
val = float(value)
except:
if len(value.split(' ')) > 1:
vallist = value.strip().split(' ')
val = []
for val0 in vallist:
try:
val0 = float(val0)
except:
pass
val.append(val0)
else:
val = str(value.strip())
self._parFileCont[key] = val
self.__parameter = self._parFileCont
def export2File(self, fnout):
"""
Export parameters to file
:param fnout: Filename of export file
:type fnout: str
:return:
:rtype:
"""
fid_out = open(fnout, 'w')
lines = []
# for key, value in self.iteritems():
# lines.append('{key}\t{value}\n'.format(key=key, value=value))
# fid_out.writelines(lines)
header = ('%This is a parameter input file for PyLoT/autoPyLoT.\n' +
'%All main and special settings regarding data handling\n' +
'%and picking are to be set here!\n' +
'%Parameters are optimized for %{} data sets!\n'.format(self.get_main_para_names()['pick'][0]))
separator = '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n'
fid_out.write(header)
self.write_section(fid_out, self.get_main_para_names()['dirs'],
'main settings', separator)
self.write_section(fid_out, self.get_main_para_names()['nlloc'],
'NLLoc settings', separator)
self.write_section(fid_out, self.get_main_para_names()['smoment'],
'parameters for seismic moment estimation', separator)
self.write_section(fid_out, self.get_main_para_names()['localmag'],
'settings local magnitude', separator)
self.write_section(fid_out, self.get_main_para_names()['filter'],
'filter settings', separator)
self.write_section(fid_out, self.get_main_para_names()['pick'],
'common settings picker', separator)
fid_out.write(('#special settings for calculating CF#\n' +
'%!!Edit the following only if you know what you are doing!!%\n'))
self.write_section(fid_out, self.get_special_para_names()['z'],
'Z-component', None)
self.write_section(fid_out, self.get_special_para_names()['h'],
'H-components', None)
self.write_section(fid_out, self.get_special_para_names()['fm'],
'first-motion picker', None)
self.write_section(fid_out, self.get_special_para_names()['quality'],
'quality assessment', None)
def write_section(self, fid, names, title, separator):
"""
write a section of parameters to file
:param fid: File object to write to
:type fid:
:param names: which parameter names to write to file
:type names:
:param title: title of section
:type title: str
:param separator: section separator, written at start of section
:type separator: str
:return:
:rtype:
"""
if separator:
fid.write(separator)
fid.write('#{}#\n'.format(title))
l_val = 50
l_name = 15
l_ttip = 100
for name in names:
value = self[name]
if type(value) == list or type(value) == tuple:
value_tmp = ''
for vl in value:
value_tmp += '{} '.format(vl)
value = value_tmp
tooltip = self.get_defaults()[name]['tooltip']
if not len(str(value)) > l_val:
value = '{:<{}} '.format(str(value), l_val)
else:
value = '{} '.format(str(value))
name += '#'
if not len(name) > l_name:
name = '#{:<{}} '.format(name, l_name)
else:
name = '#{} '.format(name)
if not len(tooltip) > l_ttip:
ttip = '%{:<{}}\n'.format(tooltip, l_ttip)
else:
ttip = '%{}\n'.format(tooltip)
line = value + name + ttip
fid.write(line)
class FilterOptions(object):
'''
FilterOptions is a parameter object type providing Butterworth filter
option parameter for PyLoT. Its easy to access properties helps to manage
file based as well as parameter manipulation within the GUI.
:type filtertype: str, optional
:param filtertype: String containing the desired filtertype For information
about the supported filter types see _`Supported Filter` section .
:type freq: list, optional
:param freq: list of float(s) describing the cutoff limits of the filter
:type order: int, optional
:param order: Integer value describing the order of the desired Butterworth
filter.
.. rubric:: _`Supported Filter`
``'bandpass'``
Butterworth-Bandpass
``'bandstop'``
Butterworth-Bandstop
``'lowpass'``
Butterworth-Lowpass
``'highpass'``
Butterworth-Highpass
'''
def __init__(self, filtertype='bandpass', freq=[2., 5.], order=3,
**kwargs):
self._order = order
self._filtertype = filtertype
self._freq = freq
def __str__(self):
hrs = '''\n\tFilter parameter:\n
Type:\t\t{ftype}\n
Frequencies:\t{freq}\n
Order:\t\t{order}\n
'''.format(ftype=self.getFilterType(),
freq=self.getFreq(),
order=self.getOrder())
return hrs
def __nonzero__(self):
return bool(self.getFilterType())
def parseFilterOptions(self):
if self:
robject = {'type': self.getFilterType(),
'corners': self.getOrder(),
'zerophase': False}
if not self.getFilterType() in ['highpass', 'lowpass']:
robject['freqmin'] = self.getFreq()[0]
robject['freqmax'] = self.getFreq()[1]
elif self.getFilterType() == 'highpass':
robject['freq'] = self.getFreq()[0]
elif self.getFilterType() == 'lowpass':
robject['freq'] = self.getFreq()[1]
return robject
return None
def getFreq(self):
return self.__getattribute__('_freq')
def setFreq(self, freq):
self.__setattr__('_freq', freq)
def getOrder(self):
return self.__getattribute__('_order')
def setOrder(self, order):
self.__setattr__('_order', order)
def getFilterType(self):
return self.__getattribute__('_filtertype')
def setFilterType(self, filtertype):
self.__setattr__('_filtertype', filtertype)

220
pylot/core/io/location.py Normal file
View File

@@ -0,0 +1,220 @@
from obspy import UTCDateTime
from obspy.core import event as ope
from pylot.core.util.utils import get_login, get_hash
def create_amplitude(pickID, amp, unit, category, cinfo):
'''
:param pickID:
:param amp:
:param unit:
:param category:
:param cinfo:
:return:
'''
amplitude = ope.Amplitude()
amplitude.creation_info = cinfo
amplitude.generic_amplitude = amp
amplitude.unit = ope.AmplitudeUnit(unit)
amplitude.type = ope.AmplitudeCategory(category)
amplitude.pick_id = pickID
return amplitude
def create_arrival(pickresID, cinfo, phase, azimuth=None, dist=None):
'''
create_arrival - function to create an Obspy Arrival
:param pickresID: Resource identifier of the created pick
:type pickresID: :class: `~obspy.core.event.ResourceIdentifier` object
:param cinfo: An ObsPy :class: `~obspy.core.event.CreationInfo` object
holding information on the creation of the returned object
:type cinfo: :class: `~obspy.core.event.CreationInfo` object
:param phase: name of the arrivals seismic phase
:type phase: str
:param azimuth: azimuth between source and receiver
:type azimuth: float or int, optional
:param dist: distance between source and receiver
:type dist: float or int, optional
:return: An ObsPy :class: `~obspy.core.event.Arrival` object
'''
arrival = ope.Arrival()
arrival.creation_info = cinfo
arrival.pick_id = pickresID
arrival.phase = phase
if azimuth is not None:
arrival.azimuth = float(azimuth) if azimuth > -180 else azimuth + 360.
else:
arrival.azimuth = azimuth
arrival.distance = dist
return arrival
def create_creation_info(agency_id=None, creation_time=None, author=None):
'''
get creation info of obspy event
:param agency_id:
:param creation_time:
:param author:
:return:
'''
if author is None:
author = get_login()
if creation_time is None:
creation_time = UTCDateTime()
return ope.CreationInfo(agency_id=agency_id, author=author,
creation_time=creation_time)
def create_event(origintime, cinfo, originloc=None, etype='earthquake',
resID=None, authority_id=None):
'''
create_event - funtion to create an ObsPy Event
:param origintime: the events origintime
:type origintime: :class: `~obspy.core.utcdatetime.UTCDateTime` object
:param cinfo: An ObsPy :class: `~obspy.core.event.CreationInfo` object
holding information on the creation of the returned object
:type cinfo: :class: `~obspy.core.event.CreationInfo` object
:param originloc: tuple containing the location of the origin
(LAT, LON, DEP) affiliated with the event which is created
:type originloc: tuple, list
:param etype: Event type str object. converted via ObsPy to a valid event
type string.
:type etype: str
:param resID: Resource identifier of the created event
:type resID: :class: `~obspy.core.event.ResourceIdentifier` object, str
:param authority_id: name of the institution carrying out the processing
:type authority_id: str
:return: An ObsPy :class: `~obspy.core.event.Event` object
'''
if originloc is not None:
o = create_origin(origintime, cinfo,
originloc[0], originloc[1], originloc[2])
else:
o = None
if not resID:
resID = create_resourceID(origintime, etype, authority_id)
elif isinstance(resID, str):
resID = create_resourceID(origintime, etype, authority_id, resID)
elif not isinstance(resID, ope.ResourceIdentifier):
raise TypeError("unsupported type(resID) for resource identifier "
"generation: %s" % type(resID))
event = ope.Event(resource_id=resID)
event.creation_info = cinfo
event.event_type = etype
if o:
event.origins = [o]
return event
def create_magnitude(originID, cinfo):
'''
create_magnitude - function to create an ObsPy Magnitude object
:param originID:
:type originID:
:param cinfo:
:type cinfo:
:return:
'''
magnitude = ope.Magnitude()
magnitude.creation_info = cinfo
magnitude.origin_id = originID
return magnitude
def create_origin(origintime, cinfo, latitude, longitude, depth):
'''
create_origin - function to create an ObsPy Origin
:param origintime: the origins time of occurence
:type origintime: :class: `~obspy.core.utcdatetime.UTCDateTime` object
:param cinfo:
:type cinfo:
:param latitude: latitude in decimal degree of the origins location
:type latitude: float
:param longitude: longitude in decimal degree of the origins location
:type longitude: float
:param depth: hypocentral depth of the origin
:type depth: float
:return: An ObsPy :class: `~obspy.core.event.Origin` object
'''
assert isinstance(origintime, UTCDateTime), "origintime has to be " \
"a UTCDateTime object, but " \
"actually is of type " \
"'%s'" % type(origintime)
origin = ope.Origin()
origin.time = origintime
origin.creation_info = cinfo
origin.latitude = latitude
origin.longitude = longitude
origin.depth = depth
return origin
def create_pick(origintime, picknum, picktime, eventnum, cinfo, phase, station,
wfseedstr, authority_id):
'''
create_pick - function to create an ObsPy Pick
:param origintime:
:type origintime:
:param picknum: number of the created pick
:type picknum: int
:param picktime:
:type picktime:
:param eventnum: human-readable event identifier
:type eventnum: str
:param cinfo: An ObsPy :class: `~obspy.core.event.CreationInfo` object
holding information on the creation of the returned object
:type cinfo: :class: `~obspy.core.event.CreationInfo` object
:param phase: name of the arrivals seismic phase
:type phase: str
:param station: name of the station at which the seismic phase has been
picked
:type station: str
:param wfseedstr: A SEED formatted string of the form
network.station.location.channel in order to set a referenced waveform
:type wfseedstr: str, SEED formatted
:param authority_id: name of the institution carrying out the processing
:type authority_id: str
:return: An ObsPy :class: `~obspy.core.event.Pick` object
'''
pickID = eventnum + '_' + station.strip() + '/{0:03d}'.format(picknum)
pickresID = create_resourceID(origintime, 'pick', authority_id, pickID)
pick = ope.Pick()
pick.resource_id = pickresID
pick.time = picktime
pick.creation_info = cinfo
pick.phase_hint = phase
pick.waveform_id = ope.ResourceIdentifier(id=wfseedstr, prefix='file:/')
return pick
def create_resourceID(timetohash, restype, authority_id=None, hrstr=None):
'''
create unique resource id
:param timetohash: event origin time to hash
:type timetohash: class: `~obspy.core.utcdatetime.UTCDateTime` object
:param restype: type of the resource, e.g. 'orig', 'earthquake' ...
:type restype: str
:param authority_id: name of the institution carrying out the processing
:type authority_id: str, optional
:param hrstr:
:type hrstr:
:return:
'''
assert isinstance(timetohash, UTCDateTime), "'timetohash' is not an ObsPy" \
"UTCDateTime object"
hid = get_hash(timetohash)
if hrstr is None:
resID = ope.ResourceIdentifier(restype + '/' + hid[0:6])
else:
resID = ope.ResourceIdentifier(restype + '/' + hrstr)
if authority_id is not None:
resID.convertIDToQuakeMLURI(authority_id=authority_id)
return resID

Some files were not shown because too many files have changed in this diff Show More