2894 Commits
Author SHA1 Message Date
marcel 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
marcel 7326f061e5 [minor] inform if station coordinates were not found in metadata 2024-06-12 16:11:53 +02:00
marcel 1a18401fe3 [bugfix] added missing Parameter object in call for picksdict_from_picks 2024-06-12 13:44:02 +02:00
marcel ec930dbc12 [minor] removed unneeded imports 2024-06-07 15:56:05 +02:00
marcel b991f771af [bugfix] removing redundancy and wrong bullsh.. try-except code 2024-06-07 15:04:16 +02:00
marcel 2c3b1876ab [minor] switch default cmap for array_map to 'viridis' 2024-06-07 14:34:27 +02:00
marcel 0acd23d4d0 [update] further improved Pickfile selection dialog, now providing methods "overwrite" or "merge" 2024-06-07 14:32:57 +02:00
marcel f349c8bc7e [update] improve pickfile selection, give the ability to select only specific files 2024-06-07 13:09:34 +02:00
marcel 6688ef845d [bugfix] re-implement ability of get_bool to return unidentifiable input 2024-06-07 13:08:51 +02:00
marcel 5b18e9ab71 [merge] merge branch 'improve-util-utils' of pull request #35 into develop 2024-06-07 10:29:39 +02:00
marcel c79e886d77 [minor] update default shell script for SGE 2024-06-06 15:55:47 +02:00
marcel 76f2d5d972 [update] improve SearchForFileExtensionDialog now proposing available file endings 2024-06-06 15:54:36 +02:00
marcel 2d08fd029d [hotfix] datetime formatting caused error when time not set 2024-06-06 13:55:11 +02:00
marcel 8f22d438d3 [update] changed eventbox overview to show P and S onsets separately 2024-06-05 16:18:25 +02:00
marcel 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
marcel 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
marcel 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
marcel 5c7f0b56eb [update] improved SearchFileByExtensionDialog widget 2024-06-05 14:19:17 +02:00
marcel 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
marcel e1a0fde619 [update] improved array map to identify and display other phase names than P / S 2024-05-29 11:43:31 +02:00
marcel 48d196df11 [update] improved SearchFileByExtensionDialog widget (table, auto refresh) 2024-05-29 11:42:10 +02:00
marcel 6cc9cb4a96 [minor] reduced maxtasksperchild for multiprocessing 2024-05-29 11:40:34 +02:00
marcel 5eab686445 [bugfix] accidentally removed return value 2024-05-24 16:10:32 +02:00
marcel 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
marcel 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
marcel 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
marcel 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
marcel 5b97d51517 [minor] mpl.figure.canvas.draw -> draw_idle 2024-03-22 17:12:04 +01:00
marcel 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
marcel 9c78471d20 [bugfix] header resize method renamed in QT5 2024-03-22 15:34:05 +01:00
marcel 09d2fb1022 [bugfix] pt2 of fmpicker fix, make sure to also copy stream in autoPyLoT
closes #24
2023-08-24 12:55:30 +02:00
marcel 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
marcel 2e85d083a3 [bugfix] do not call calcsourcespec if incidence angle is outside bounds (for whatever reason) 2023-08-24 11:27:30 +02:00
marcel 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
marcel 1f16d01648 [minor] give more precise user warning if no pick channel was selected 2023-08-23 09:38:16 +02:00
marcel 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
marcel a9aeb7aaa3 [bugfix] set simple phase hint (P or S) 2023-08-22 15:53:49 +02:00
marcel b9adb182ad [bugfix] could not handle asterisk-marked events when opening tune-autopicker 2023-08-22 15:53:49 +02:00
marcel 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
marcel 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
marcel 8d356050d7 [update] corrected original authors of PILOT 2023-08-22 12:01:51 +02:00
jeldrik 43cab3767f [Bugfix] fixxed wrong check for taupymodel 2023-06-27 08:04:00 +02:00
sebastianw b3fdbc811e Merge branch 'develop' into improve-util-utils 2023-06-23 09:37:54 +02:00
jeldrik a1f6c5ffca Bugfixxes, spectogram tab wip 2023-06-14 13:11:54 +02:00
jeldrik 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
sebastianw 9fce4998d3 bugfix: remove unused functions; correct for wrong formatting (PEP) 2023-04-23 22:05:11 +02:00
sebastianw c468bfbe84 feat: add type hints and tests for plot utils 2023-04-23 21:37:20 +02:00
sebastianw 4861d33e9a bugfix: add tests to key_for_set_value 2023-04-16 09:58:51 +02:00
sebastianw f5f4635c3d bugfix: rename is_iterable and add doc tests 2023-04-16 09:50:42 +02:00
sebastianw b12d92eebb bugfix: refactor get_owner and get_hash; add tests 2023-04-12 21:22:58 +02:00
sebastianw e9da81376e bugfix: add new tests and refactor get_none 2023-04-12 20:32:44 +02:00
sebastianw e68fc849f0 bugfix: correct erroneous and add new doctests 2023-04-10 19:14:23 +02:00
sebastianw efb117177c bugfix: update check4rotate 2023-04-10 18:35:58 +02:00
sebastianw 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
jeldrik 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
jeldrik 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
jeldrik 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
kaan 5ef427ec12 Merge branch 'develop' of git.geophysik.ruhr-uni-bochum.de:marcel/pylot into develop 2022-06-29 14:07:35 +02:00
kaan 29cf978782 minor bug fixes 2022-06-29 14:07:06 +02:00
marcel 091449819c [update] tau-p usage for s-picking 2022-05-31 18:16:02 +02:00
marcel 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
marcel 084fb10cea Merge remote-tracking branch 'origin/develop' into develop 2022-05-31 09:59:17 +02:00
marcel dde9520879 [minor] deactivate logwidget by default as it seems to irregularly create segfaults 2022-05-31 09:40:15 +02:00
marcel 7847f40a35 [minor] added developers do README 2022-04-01 12:07:51 +02:00
ludger 2c188432a1 Merge branch 'develop' of https://git.geophysik.ruhr-uni-bochum.de/marcel/pylot into develop 2022-03-24 13:28:52 +01:00
marcel 86dc0f5436 [minor] small style changes 2022-03-22 11:26:29 +01:00
marcel 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
ludger 3392100206 Removed psd 2022-03-17 13:42:27 +01:00
marcel 401265eb3a [minor] added some comments 2022-03-16 16:03:54 +01:00
marcel dd685d5d5e [refactor] rewrote/simplified getQualitiesfromxml code, used function already implemented in phases.py 2022-03-16 16:00:14 +01:00
marcel 3cd17ff364 [update] added xml file for unittest 2022-03-16 14:31:03 +01:00
marcel d879aa1a8b [bugfix] small fix to get getQualitiesfromxml running, added unittest for function 2022-03-16 14:29:47 +01:00
marcel 445f1da5ac [bugfix] reset stdout to previously set one and not to default sys.__stdout__ 2022-03-16 09:25:28 +01:00
marcel 962cf4edac [minor] README.md 2022-03-15 11:14:08 +01:00
marcel eb0dd87a9e [update] optimize requirements/yml file 2022-03-15 10:44:37 +01:00
marcel e9cc579cf6 [minor] README.md 2022-03-15 10:41:48 +01:00
marcel f1fd52b750 [bugfix] when closing mainwindow, also close logwidget 2022-03-15 10:41:29 +01:00
marcel 5449210797 [update] optimize requirements/yml file 2022-03-15 10:12:39 +01:00
marcel 0af948030b [bugfix] chooseArrival -> chooseArrivals, fixes #25 2022-03-15 09:42:25 +01:00
marcel 21b1be0e56 [update] updated README 2022-03-14 16:05:58 +01:00
marcel 58eee13b07 [update] removed setup.py (deprecated) 2022-03-14 15:53:42 +01:00
marcel c57eb4f556 [update] added requirements, updated pylot.yml and setup.py 2022-03-14 15:33:33 +01:00
marcel 47bb8c4326 Merge branch 'develop' into feature/port-to-py3 2022-03-14 13:19:20 +01:00
marcel 29ffcf2e37 [bugfix] pick_r unreferenced, closes #26 2022-03-14 11:18:51 +01:00
marcel e35d5d6df9 [refactor] automatic code reformatting (Pycharm) 2022-03-09 14:41:34 +01:00
marcel 79f3d40714 [refactor] code cleanup (WIP) 2022-03-09 14:28:30 +01:00
marcel 9cef22b74b [refactor] code cleanup (WIP), open issues #25 and #26 2022-03-09 14:08:04 +01:00
marcel c254ee09b3 [bugfix] updated some window flags for PySide2 2022-03-09 10:43:16 +01:00
marcel be32f4f61d [improvement] log can be opened from menu now (or focuses) 2022-03-09 10:42:52 +01:00
marcel 9036a9054e [new] log widget for PyLoT 2022-03-08 16:27:36 +01:00
marcel dd02527c1d [bugfix] connected save figure button to a function that saves a figure 2022-03-08 15:07:18 +01:00
marcel 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
marcel 0b50a91f57 [bugfix] scrolling inhibited withing QSpin/QDoubleSpinBox 2022-03-07 15:32:29 +01:00
marcel 8725f5083c Merge branch 'develop' into feature/port-to-py3 2022-03-07 14:46:35 +01:00
jeldrik 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
jeldrik 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
jeldrik 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
jeldrik 131f6782af Temporary fix for Auto/Manual Pick Dictionary detection + fix for .pha files not getting saved 2021-11-21 13:04:25 +01:00
ludger 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
jeldrik 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
marcel ca56139922 [minor] corrected some coding mistakes, added some requirements 2021-08-12 09:42:18 +02:00
marcel 81240a8ffe [bugfix] also regarding #20 2021-08-11 16:18:41 +02:00
marcel d236d3d80f Merge branch 'develop' into feature/port-to-py3 2021-08-11 15:16:19 +02:00
marcel 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
marcel b976ec6ab0 [minor] remove redundant code 2021-07-20 17:24:27 +02:00
marcel 702b7f3fb1 [minor] removed total number of picks which seems to be buggy (and also not explained) 2021-07-20 14:09:57 +02:00
marcel 320cb42390 [bugfixes] some more bugfixes 2021-07-16 10:15:40 +02:00
marcel cc1139d2ca [bugfix] some (py3) related fixes in rotate station and minMax plotting 2021-07-15 12:04:34 +02:00
marcel 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
marcel de11c3b611 [bugfix] added dummy argument for QAction trigger signal
fixes #14
2021-07-09 12:16:32 +02:00
marcel 92c328e3c6 [bugfix] closes #15 increased pointsize and moved station labels 2021-07-09 12:10:10 +02:00
marcel 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
ludger 30eb8fbbbd [Bugifx] Taup model was hard coded as iasp91. 2021-07-07 11:10:23 +02:00
ludger 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
ludger 3af02bbbf7 Merge branch 'develop' of https://git.geophysik.ruhr-uni-bochum.de/marcel/pylot into develop 2021-06-18 13:01:43 +02:00
ludger 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
marcel 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
ludger 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
jeldrik 5289be55dd Merge branch 'develop' of https://git.geophysik.ruhr-uni-bochum.de/marcel/pylot into develop 2021-05-06 13:49:12 +02:00
jeldrik 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
ludger c9bd0a147c Preparation of implementing pick-quality button. 2021-04-01 11:01:06 +02:00
marcel 07e7ef3efa [revision] cleaned up unclean code: tabs -> spaces 2021-03-30 16:39:44 +02:00
jeldrik f11ffc67ff Merge branch 'develop' of https://git.geophysik.ruhr-uni-bochum.de/marcel/pylot into develop 2021-03-29 16:10:08 +02:00
jeldrik 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
marcel bfec58cc24 [bugfix] entering if when len(mag) == 1 2021-02-01 16:03:23 +01:00
ludger 172786dc6d [Bugfix] Remove elements of shrinking list! 2021-01-14 14:04:50 +01:00
ludger a9784d33e5 If events have been removed, project-event list is updated
automatically.
2021-01-14 10:13:51 +01:00
ludger 21453159b7 Started implementing saving peak-to-peak amplitude in .obs file 2020-12-10 12:50:33 +01:00
ludger f40d22af33 FOCMEC needs suffix *.in for input file. 2020-10-15 10:02:02 +02:00
ludger 01fea084d5 [Bugfix] Avoid printing * in focmec-input file. 2020-10-15 09:43:25 +02:00
ludger 16f6e2d1fd [Bugfix] localmag and momentmag referenced before assignment. 2020-10-07 10:37:41 +02:00
ludger 49c747b638 Merge branch 'develop' of https://git.geophysik.ruhr-uni-bochum.de/marcel/pylot into develop 2020-10-06 11:26:37 +02:00
marcel f8f4e6789c [new] add extent option "active" to pick high frequency active seismic data 2020-10-06 10:44:27 +02:00
ludger 08c2d7556f Implemented first-motion info into picking window. 2020-09-30 13:27:02 +02:00
ludger 7d77cb0b2f [Bugfix] Wrong syntax for multiple if statements. 2020-09-30 10:11:10 +02:00
ludger 6f70b2c0e2 Implemented first-motion picker within manual picking. 2020-09-29 16:48:38 +02:00
ludger 8f1ab87045 Started implementing automated first-motion picking within manual
picking.
2020-09-28 16:55:25 +02:00
ludger 5351043493 Local and moment magntiude occur on event list. 2020-09-28 15:11:23 +02:00
ludger dccbaa357a Check if data directory exists to avoid program abortion. 2020-09-22 10:30:48 +02:00
ludger 37c8858096 Limit number of fft bins. 2020-09-21 17:01:06 +02:00
ludger f93499da7d For unknown reasons sometimes station and network information are not
avaialble, avoid program failure.
2020-09-16 16:16:53 +02:00
ludger e4cfebe989 Capture possible error occuring due to to incomplete dictonaries. 2020-07-30 15:21:26 +02:00
ludger da360990f6 [Bugfix]: Capture error ocurring when writing output files without event
location.
2020-07-30 13:55:56 +02:00
ludger e083e75d73 Make sure to load autoPyLoT-event information from xml file. 2020-07-30 13:27:38 +02:00
ludger 79192cda33 Distinguish between auto picks and manual picks in code. 2020-07-30 13:04:45 +02:00
ludger 066db3df53 Removed unnecassary print statements. 2020-07-30 10:40:34 +02:00
ludger 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
ludger f49b9054b0 [Bugfix]: Take into account onset time might be None. 2020-07-29 15:10:22 +02:00
ludger 82e2c325ae Return 'N' (noisy) for first motion instead None. 2020-07-29 14:51:23 +02:00
ludger 85ae05b580 Updated author information. 2020-07-29 13:55:54 +02:00
ludger e64135c7a8 [Bugfix]: Check for key S and be sure to get element weight for pick
dictionary.
2020-07-29 12:14:42 +02:00
ludger b7795ca562 Removed right-side picking to stabilize algorithm. 2020-07-29 10:10:18 +02:00
ludger 8066bd2f01 Avoid IOerror, relaxed to warning message to keep PyLoT running. 2020-07-28 17:16:48 +02:00
ludger df6a6c1c71 Added output for hypoDD. 2020-07-28 13:08:25 +02:00
ludger 1f6a44eeef [Bugfix]: elif statement was not working. 2020-07-27 16:55:19 +02:00
ludger 2bab42a0dc [Bugfix] invlist is already inventory object! 2020-07-27 16:26:11 +02:00
ludger c7d8569105 Enabled writing for FOCMEC output. 2020-07-23 16:51:05 +02:00
ludger 003ba76650 [Bugfix]: PyLoT is now able to write VELEST-input cnv-file. 2020-07-21 16:22:17 +02:00
ludger 7617958a1c Capture problems during data fitting. 2020-07-21 11:55:27 +02:00
marcel 32c95757c6 [minor] small changes to autopylot.sh script 2020-07-16 12:36:23 +02:00
marcel dad383b197 [revert] reverted accidental changes to file PyLoT.py 2020-07-16 12:35:18 +02:00
ludger 707c596672 [Bugfix]: No scaling if 0.0! 2020-07-08 15:32:16 +02:00
ludger 075beb2db3 [Bugfix]: network magnitude has never been scaled! 2020-07-08 15:20:03 +02:00
ludger 7023bc4ce4 Bug workaround: sometimes rotate2zne fails resulting in an permanent
error
2020-07-08 14:57:43 +02:00
marcel 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
marcel 1a20d7fbcb [bugfix] workaround for MacOS, where SetChannelComponents class can not be saved using QSettings 2020-06-16 12:03:34 +02:00
marcel fb6ba83cc5 [new] added --reset_qsettings option to PyLoT in case of corrupted QSettings 2020-06-16 11:09:50 +02:00
marcel 02083e2bf8 [change] magnitude calculation problem using evalresp in GUI, changed to usage of ObsPy intrinsic function 2020-06-08 17:42:05 +02:00
marcel 7187cb337b [various] fixes on array_map 2020-06-08 14:23:05 +02:00
ludger fa093ccac6 Take into account that creation info sometimes is not available. 2020-06-03 13:19:31 +02:00
marcel 6ad187b7fa [update] added missing function for refactor commit 2020-01-14 14:03:13 +01:00
marcel 78eca1b222 [update] some smaller changes in GUI and array_map 2020-01-14 13:57:12 +01:00
marcel 492f5b96f2 [refactor] moved functions requiring QT import from util.utils to util.gui 2020-01-14 13:55:30 +01:00
marcel be397edf1c [bugfix] same problem as prior commit 2019-12-17 17:04:08 +01:00
marcel fa4423f65d [bugfix] transform to float for different python library versions 2019-12-17 16:54:07 +01:00
marcel 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
marcel aa38e2b851 Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop 2019-12-17 13:51:44 +01:00
marcel 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
marcel 3354e3980e [update] improved array map, point size showing pick error class now 2019-12-11 15:59:24 +01:00
marcel 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
marcel 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
marcel 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
marcel e6a326d437 [bugfixes] on GUI driven earthquake location/magnitude calculation 2019-10-24 10:12:00 +02:00
marcel 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
marcel cc8d301cff [new] small script to automatically generate array maps (maybe add this as a GUI option?) 2019-09-05 17:20:11 +02:00
marcel b39489b253 [update] increased flexibility of ArrayMap class 2019-09-05 17:19:40 +02:00
marcel 7382ca5d47 [bugfix] start/endtimes modified for taupy were not used at all 2019-09-02 10:44:25 +02:00
marcel 34ca64ee17 [bugfix] old picks were not properly erased before loeading new picks 2019-08-23 11:30:16 +02:00
marcel 2963be5bba [bugfix] try and error reading did not work for StationXML files 2019-08-23 11:29:15 +02:00
marcel 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
marcel 15882ed27e Merge branch 'feature/metadata_clean_inventory' into develop 2019-08-12 16:39:12 +02:00
marcel b21b113edd [bugfix] dataprocessing, xml
[update] save images as svg/jpg
2019-08-12 11:58:04 +02:00
marcel 9764e12b19 [new] save event table as .csv file 2019-07-01 17:24:06 +02:00
marcel 8ae00529f0 [minor] modified status output (count events) 2019-06-26 12:00:55 +02:00
marcel 3c3fd00654 [minor] changed number of levels on array map 2019-06-26 11:58:03 +02:00
marcel 2d775fa1b9 [rename] real_Bool/real_None -> get_Bool/get_None 2019-06-24 15:05:04 +02:00
marcel 2687d6cdef [bugfix] get bool on 'use_taup' parameter in case it was a string 2019-06-24 15:05:03 +02:00
marcel eaabdce47a [bugfix] on magnitudes 2019-06-24 15:05:02 +02:00
marcel 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
marcel e6f4545058 [remove] restflag (unused) 2019-06-18 15:38:05 +02:00
marcel f51fdd01d5 [minor] typo 2019-06-18 14:34:16 +02:00
marcel 6f4378e4c2 [minor] updated .gitignore 2019-06-18 14:04:10 +02:00
marcel 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
marcel 06235cc092 [bugfix] added check for length of data array, code was lost on refactoring 2019-06-18 13:58:35 +02:00
marcel 61b514fae1 [bugfix] on deleted picks 2019-06-18 11:35:43 +02:00
marcel dcca731890 [bugfix] workaround for SPt in pick dictionary 2019-06-18 11:35:43 +02:00
marcel 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
marcel 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
marcel 3ccf826f25 [new] FileExtensionDialog for load-picks (e.g. _correlatex.xml) 2019-05-29 10:37:16 +02:00
marcel fdcd35186f [add] $NSLOTS variable to autopylot shell script 2019-05-29 10:36:52 +02:00
marcel 87bd46b535 [bugfix] Exception had no attribute message 2019-05-29 10:36:37 +02:00
marcel 8164710ea4 [bugfix] plotting map without picks lead to an exception 2019-05-28 12:20:29 +02:00
marcel 74c68d6a14 [hotfix] deepcopy of Pickparameter object 2019-05-28 11:23:47 +02:00
marcel 77eec8e94c [bugfix] some small fixes regarding plotting and reading notes.txt 2019-05-28 11:23:47 +02:00
marcel 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
marcel b228467097 [bugfix] mixed up > and < 2019-04-12 15:30:00 +02:00
marcel 3806026438 [bugfix] import lost on merge 2019-04-12 15:29:45 +02:00
marcel d0e6c2819c [bugfix] partial of old code remained after merge 2019-04-12 10:37:15 +02:00
marcel 1ee3e43451 [change] visual changes in array map (contourf->contour) 2019-04-12 10:35:16 +02:00
marcel aca0cfcabc [minor] refactor comparison 2019-04-12 10:35:16 +02:00
marcel 98e9e786af [new] gain control for main plot window (hotkeys: +, - [amplified with Ctrl] and R [reset]) 2019-04-12 10:35:16 +02:00
marcel 6b9231abd3 [merge] feature/refactor into develop 2019-04-12 10:31:29 +02:00
marcel 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
marcel f21e5913bb Merge remote-tracking branch 'origin/feature/documentation' into develop 2019-04-09 13:36:17 +02:00
marcel 7be10a22b4 [bugfix] arrivals removed when filtering in 3comp window 2019-04-05 10:23:10 +02:00
marcel 912347beda [change] colormap can be adjusted in array_map 2019-04-05 10:23:10 +02:00
marcel 6d4610983d [minor] exclude folder "EVENTS-INFO" from possible event folders in dmt_structure 2019-04-03 15:08:36 +02:00
marcel 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
marcel 0995350697 [bugfix] Thomas commit append an .in to every input file (e.g. pylot.in.in) 2019-04-01 15:54:58 +02:00
marcel a90ef26344 [add] paramter taup_phases 2019-04-01 15:29:29 +02:00
tommy 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
marcel 81c7ac2f6e [bugfix] split for dirty event (*) 2019-03-20 10:16:46 +01:00
marcel 0d07adeeae [bugfix] unhashable type "newstr" 2019-03-20 10:16:46 +01:00
marcel 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
marcel e8df5198ea [bugfix] missing split for * in dirty events 2019-03-12 15:19:24 +01:00
marcel a8db13095e [update] merging picks in Data updated 2019-03-12 15:19:24 +01:00
marcel 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
marcel d6381e80c1 [bugfix] cell changing did not set event/project dirty 2019-03-07 17:02:11 +01:00
marcel 6032018067 [bugfix] network/station interchanged leading to huge load times for
metatada
2019-03-07 17:02:11 +01:00
marcel a9d92e70ce [bugfix] stations not updated when changing event 2019-03-07 17:01:45 +01:00
marcel 49bcdd2680 [bugfix] time axis for plots created with linspace instead of arange
[minor] enhanced error output
2019-03-07 16:31:41 +01:00
marcel 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
marcel 7bf3bb6835 [minor] various small fixes 2019-03-07 16:31:41 +01:00
marcel 9ae8e36061 [bugfix] taupy picks not initiated in array_map 2019-02-28 17:07:41 +01:00
marcel 4dfcdb41ec [bugfix] missing split for event dirty flag (*) in event_table 2019-02-28 16:39:53 +01:00
marcel 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
marcel 739a6e89f4 [pycharm] optimized imports 2018-08-16 17:34:05 +02:00
marcel c23bbfae8a [bugfix] enhanced emergency reset loop for corrupted QSettings 2018-08-16 16:22:35 +02:00
marcel 6546f8f196 [update] warn user in case of low SNR for manual pick 2018-08-16 16:14:48 +02:00
marcel ce1564c2f8 [minor] improved convenience, small bugfix 2018-08-15 15:51:41 +02:00
marcel 8a187905cb [update] finalized recent projects
[minor] some small fixes, improvements
2018-08-15 15:39:43 +02:00
marcel 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
marcel a82a1cddc8 [minor] changed message for pick deletion 2018-08-13 17:44:24 +02:00
marcel f22f7845cb [new] remove picks on map with middle-click
[bugfix] remove old annotations
2018-08-13 12:49:48 +02:00
marcel 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
marcel 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
marcel 677d3a200c [bugfix] return statement disappeared on merge in a45e817213 2018-08-07 10:33:57 +02:00
marcel e46c0fb862 [minor] typos 2018-08-07 10:06:39 +02:00
marcel a2af6b44f3 [bugfix] regard location ID in PyLoT! (WIP) 2018-08-06 16:03:54 +02:00
marcel 34891d3dc1 [minor] added verbosity flag for Metadata to reduce output in GUI 2018-08-06 09:19:30 +02:00
marcel a85b79e432 [change] try to merge streams instead of deleting them when they have gaps 2018-08-06 09:02:05 +02:00
marcel 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
marcel 5c74160710 Merge branch 'feature/metadata_class' into develop 2018-08-03 11:18:34 +02:00
marcel e75beff883 [minor] cosmetics on dataPlot bottom layout 2018-08-03 11:16:56 +02:00
marcel 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
marcel e211a901ff [bugfix] could not init array map when loading project 2018-08-03 09:33:37 +02:00
marcel 393413d6fc [bugfix] closes #215 2018-08-02 15:42:34 +02:00
marcel d5e9cd07d4 [revert] went back to old quality assessment without SNR 2018-08-02 14:18:20 +02:00
marcel 529939b4b8 [minor] removed unused object 2018-08-02 13:32:45 +02:00
marcel 7dae8e1107 [bugfix] not regarding possible * in eventpath in eventbox 2018-08-02 13:00:36 +02:00
marcel 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
marcel c898f93293 [new] idea for new quality check using SNR 2018-08-01 13:25:27 +02:00
marcel 93bdaa8998 [bugfix] forgot to split * in getFromPath 2018-07-31 10:22:45 +02:00
marcel e68b634f25 [new] event modification status saved with "dirty" attribute, only save event-XML when modified 2018-07-31 09:41:48 +02:00
marcel 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
marcel db9a1371b1 [bugfix] closes #223 2018-07-25 15:16:14 +02:00
marcel bf5c371459 [bugfix] various bugfixes originating from changes (more picks) in dictionary (refs #233 refs #234) 2018-07-25 14:05:15 +02:00
marcel bfc745dd30 Merge branch 'develop'
Conflicts:
	pylot/core/pick/autopick.py
2018-07-25 10:53:08 +02:00
marcel 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
marcel 974ee12076 [update] closes #242 - dpi change added, figures using PylotCanvas can be saved with CTRL+S 2018-07-24 15:20:00 +02:00
marcel 37e2e39f3a Merge branch 'develop' into feature/metadata_class 2018-07-24 14:36:22 +02:00
marcel f310afb4c6 [minor] renaming QtAction 2018-07-24 14:33:38 +02:00
marcel 6d6179bb55 [bugfix] closes #251 also fixed for histogram and locateAction 2018-07-24 14:32:15 +02:00
marcel 62287df1b4 [minor] removed "None" from filteroptions 2018-07-24 14:16:24 +02:00
marcel b3524c562d [bugfix] closes #260 checking for filtertype first 2018-07-24 14:15:32 +02:00
marcel 9e75f8d4f2 [bugfix] closes #255 filtering should work as intended now 2018-07-24 13:54:40 +02:00
marcel ef6e011d22 [update] slightly improved feasibility using obspy_dmt with metadata and array map 2018-07-23 16:03:15 +02:00
marcel 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
marcel f802f1db58 [new] working on metadata/inventory selection from GUI 2018-07-19 11:50:29 +02:00
marcel b348117d5a [bugfix] tuneAutopicker not using new pb_widget 2018-07-18 15:04:07 +02:00
marcel 90e26cbd8f [bugfix] various, pick delete/plot behaviour 2018-07-18 14:12:59 +02:00
marcel 12082cb2a9 [minor] removed old code 2018-07-18 11:42:46 +02:00
marcel ed654024b2 [update] reinstated check4rotated in autoPyLoT 2018-07-18 11:39:01 +02:00
marcel 17c27f9294 [bugfix] add time to metadata.get_coordinates in check4rotated 2018-07-18 11:38:33 +02:00
marcel ed7ee5d944 [bugfix] progressText not updating in progressBar 2018-07-18 11:13:29 +02:00
marcel 37da7327d0 [bugfix] using Metadata class for pickDlg, not yet working for array_map (WIP!) 2018-07-17 16:04:20 +02:00
marcel c172cfa892 Merge branch 'develop' into feature/metadata_class 2018-07-17 14:51:24 +02:00
marcel 1fc62a5e9d [bugfix] add trace starttime to metadata.get_coordinates call 2018-07-17 14:49:37 +02:00
marcel cf34c9465c [minor] cosmetics 2018-07-17 14:49:37 +02:00
marcel dda997e457 [update] autopick -> only export necessary XML (WIP) 2018-07-17 14:49:37 +02:00
marcel fbc01290d5 [update] make PYQTGRAPH mandatory for PyLoT (stop maintaining unused stuff)! 2018-07-17 14:49:37 +02:00
marcel 64885db214 [update] no more replotting of whole data when pick is changed 2018-07-17 14:49:36 +02:00
marcel 5b48b744fd [update] plotting (added fill_between again now performance got increased) 2018-07-17 14:49:36 +02:00
marcel 469d91bfdc [cleanup] removed has_spe function, using dict.get method instead! 2018-07-17 14:49:36 +02:00
marcel 663d244f70 [cleanup] removed some parentheses 2018-07-17 14:49:35 +02:00
marcel 7a0d3486a6 [cleanup] code cleanup by PyCharm 2018-07-17 14:49:34 +02:00
marcel 754d42c8e3 [cleanup] add requirements to setup.py 2018-07-17 14:45:51 +02:00
marcel 415af11f63 [cleanup] add @staticmethod, some other stuff 2018-07-17 14:45:51 +02:00
marcel d151cdbc6d [bugfix] added missing parameter "WAScaling" (not knowing what it does but it was missing!) 2018-07-17 14:45:50 +02:00
marcel b22d04db47 [cleanup] replace equality by "is" 2018-07-17 14:45:50 +02:00
marcel e210bd8793 [add] number of active picks (and total) 2018-07-17 14:45:48 +02:00
marcel 0e70520a78 [bugfix] Spick quality check doing random stuff caused by copy paste errors 2018-07-17 14:45:48 +02:00
marcel ad686d42db [minor] update_status when loading multiple events 2018-07-17 14:45:48 +02:00
marcel 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
marcel 3b52b7a28f [bugfix] fixed some bugs resulting from restructuring of serial/parallel picking 2018-07-12 15:56:34 +02:00
marcel 9f1672d793 [hotfix] something went wrong trying to merge/rebase develop 2018-07-12 14:17:06 +02:00
marcel 319343499b [bugfix] parallel picking called accidently 2018-07-12 14:14:22 +02:00
marcel d360d9db92 [bugfix] raise Exception if no Z-component is found for Magnitude calculation 2018-07-12 14:13:34 +02:00
marcel 9a5624c951 [change] return values of autopickstation 2018-07-12 14:13:19 +02:00
marcel 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
marcel 84ed0b900f [update] unit test for Metadata class 2018-07-12 11:28:43 +02:00
marcel 1d571a0046 [add] Metadata class now requires time for get_metadata and get_coordinates as well 2018-07-12 11:27:20 +02:00
marcel 3bd5243f2a [minor] typo 2018-07-12 10:04:35 +02:00
marcel 6b28b9c9c6 Merge remote-tracking branch 'origin/feature/metadata_class' into feature/metadata_class 2018-07-12 09:47:40 +02:00
marcel 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
marcel 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
marcel 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
marcel c376364206 Merge branch 'develop' into feature/metadata_class 2018-07-11 14:02:53 +02:00
marcel c3e8b2c03d /metadata_class: Auto stash before merge of "feature/metadata_class" and "develop" 2018-07-11 14:01:47 +02:00
marcel afade77922 Merge branch 'develop' into feature/metadata_class 2018-07-11 09:48:28 +02:00
marcel 0cec2c81d3 Merge remote-tracking branch 'origin/develop' into develop 2018-07-11 09:42:43 +02:00
marcel a0fcf03c1e [update] add try/except to autopickstation call 2018-07-11 09:42:28 +02:00
marcel 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
marcel b870b5378a [bugfix] setting Datastructure to obspydmt or None caused crash and corrupted QSettings 2018-07-10 14:20:31 +02:00
marcel 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
marcel 8d3bd88be9 [minor] gitignore update 2018-07-10 13:54:49 +02:00
marcel e7284cba41 [bugfix] dictionary containing params not initiated in __init__ 2018-07-10 13:36:52 +02:00
marcel 6ab2609e8c [bugfix] default filename given for nlloc in default_parameters 2018-07-10 13:35:24 +02:00
marcel 47b045ad35 Merge branch 'develop' into feature/metadata_class 2018-07-10 11:49:48 +02:00
marcel 1de1dc71f8 [bugfix] reinstated ludgers changes, added bugfix for GUI 2018-07-10 11:47:45 +02:00
marcel f6688b3a28 Merge branch 'develop' into feature/metadata_class 2018-07-10 11:38:10 +02:00
marcel 77dd0d4733 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2018-07-10 11:36:31 +02:00
marcel 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
marcel c46513a626 [bugfix] full_range called for each station when drawing picks, largely decreasing plot performance 2018-07-10 11:13:41 +02:00
marcel b4516fb2cb [update] save automatic picks calculated inside GUI in XML files as well 2018-07-10 11:01:34 +02:00
marcel 9c119819a6 [bugfix] self.inventory_files initiated too late 2018-07-09 14:14:59 +02:00
marcel 0474e5fbe9 [minor] add progressbar to autopick widget 2018-07-09 13:32:44 +02:00
marcel 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
marcel 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
marcel 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
marcel 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
marcel 871fb685a4 [removed] amplification of cf by empirical values to account for restituted data 2018-07-05 15:30:40 +02:00
marcel 2c588c1c80 [change] initial pick now searches for latest local minimum instead of first increase in cf 2018-07-05 15:29:09 +02:00
marcel df0f059ff3 [bugfix] parameters tpred2z and tdet2z were unused 2018-07-05 14:37:32 +02:00
marcel b0ad99eced [minor] improved text output if wf data cannot be read 2018-07-04 17:25:11 +02:00
marcel e05909b188 [minor] textobjects split into single lines before adding to log for convenience 2018-07-04 16:48:14 +02:00
marcel 27e425844a Merge branch 'develop' of ariadne:/data/git/pylot into develop 2018-07-04 10:56:44 +02:00
marcel 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
marcel 4896c1e1d8 [cleanup] removed redundancy 2018-07-02 13:34:30 +02:00
marcel 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
marcel 2c07dd63b8 [bugfix] save Event before tarting tuneAutopicker (else source information might not be accessible to autoPyLoT) 2018-06-29 14:19:09 +02:00
marcel 22e5de194e [bugfix] array map only checking for manual picks 2018-06-29 13:55:42 +02:00
marcel 9b63c1bb24 [bugfix] taupy phases lost on plot refresh 2018-06-29 10:13:58 +02:00
marcel f4201c4e2f [bugfix] full path for ctrfile 2018-06-28 15:59:13 +02:00
marcel 4cb3f72ba8 [bugfixes] location/magnitude w ludger 2018-06-28 15:22:40 +02:00
marcel 5870843a03 [bugfix] event_datapath not set if not obspyDMT 2018-06-28 10:31:48 +02:00
marcel 4ed8e54822 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2018-06-27 14:21:35 +02:00
marcel 8ae0449c01 [new] metadata class (WIP) 2018-06-27 14:21:20 +02:00
marcel 3a66ec1c95 [bugfix] print a warning in case saveData fails 2018-06-27 14:20:11 +02:00
marcel 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
marcel 77b4458ab5 [idea] change read_metadata to also read files without specific file ending 2018-06-25 14:22:14 +02:00
marcel 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
marcel 34508fc4a3 [bugfix] addressing PyLoTCanvas already deleted
setParent(None) -> del(widget), not fully working on autopickwidget
2018-06-21 15:04:58 +02:00
marcel 1b5f58bbbd [minor] prefer processed data on init 2018-06-21 14:24:15 +02:00
marcel a5667c1e06 [bugfix] nextStation not working with deleted PickDlg 2018-06-21 14:23:52 +02:00
marcel 2a8efd0904 [bugfix] autoPyLoT <-> obspyDMT 2018-06-21 13:24:24 +02:00
marcel 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
marcel 910ed66676 [new] only load relevant waveforms into TAP widget 2018-06-20 13:49:27 +02:00
marcel 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
marcel 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
marcel 7de8c2ee8b [minor] info on number of traces for main plot 2018-06-19 11:13:06 +02:00
marcel ca886d4355 [update] on obspyDMT compatibility (WIP) 2018-06-19 10:35:34 +02:00
marcel ec32981787 [minor] improve current event highlighting 2018-06-19 10:26:17 +02:00
marcel 7c0de44974 [update] array_map legend inaxes, add lat/lon status, some fixes and improvements 2018-06-15 14:49:26 +02:00
marcel 0168d8923d [minor] tighten PyLoT tabs layouts 2018-06-14 16:26:26 +02:00
marcel 46a6cdcc00 [bugfix] remove autopicks weight>3 2018-06-14 15:50:44 +02:00
marcel fe0e4be43d [update] array_map uses PylotCanvas now, added grid and labels 2018-06-14 14:08:25 +02:00
marcel 06cacdd4cb [update] major improvements of array_map, code restyled, increased flexibility 2018-06-13 17:01:05 +02:00
marcel f50e38241e [minor] tweaks and finalization of obspyDMT options 2018-06-08 15:01:05 +02:00
marcel 083e5c8fe9 [new] synthetics checkbox 2018-06-08 14:29:45 +02:00
marcel 8155389b3d [new] add qcombobox for raw/processed selection 2018-06-08 14:18:28 +02:00
marcel 5e161d308a [bugfix] trying to access station not in autopicks dictionary 2018-06-05 15:11:43 +02:00
marcel 9b5fe3baba [bugfix] saving xml when tuning autopicker unnecessary (and caused id mismatch) 2018-06-05 15:07:06 +02:00
marcel d695c0016a [bugfix] delete_later not caused tuneAutoPicker to malfunction 2018-06-05 15:06:33 +02:00
marcel cbba41f16a [bugfix] autoPickWidget not enabled again after Error 2018-06-05 14:24:00 +02:00
marcel d57c193a0b Merge branch 'feature/obspy_dmt_interface' into develop 2018-06-05 13:48:53 +02:00
marcel 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
marcel f49d323c13 [add] no data label 2018-04-27 10:45:20 +02:00
marcel ae4c345fa7 [update] same functionality but within main thread 2018-04-26 16:40:46 +02:00
marcel 65f0d23f07 [revert] changes not working due to Thread 2018-04-26 16:37:57 +02:00
marcel 2554f6ca7e [new] dont show plot if no data 2018-04-26 16:32:05 +02:00
marcel 8073a872c1 [add] event colored grey if folder isEmpty 2018-04-26 16:26:03 +02:00
marcel ea9939a0c0 Merge branch 'develop' into feature/obspy_dmt_interface 2018-04-26 16:19:30 +02:00
marcel 18926610cf [add] colorized table 2018-04-26 16:19:12 +02:00
marcel 3d1d97dd26 Merge branch 'develop' into feature/obspy_dmt_interface 2018-04-26 15:01:29 +02:00
marcel b02a0e8f9a [bugfix] os.getlogin not working on all OS/python versions 2018-04-26 15:00:40 +02:00
marcel 4c42d34adc [bugfix] check for time_ax not working this way 2018-04-26 14:52:17 +02:00
marcel c90a2f6ae1 [bugfix] forgot to replace PyQt4 with PySide 2018-04-26 14:50:18 +02:00
marcel be82706413 [bugfix] event_path overwritten 2018-04-25 14:06:07 +02:00
marcel 644470f156 [bugfix] was only checking current data processing state 2018-04-25 14:01:05 +02:00
marcel d6150c5d1a [new] disable event selection of folder is empty 2018-04-25 13:48:06 +02:00
marcel 073a71e150 [add] origin/mag to eventBox 2018-04-24 15:37:15 +02:00
marcel d3de33a12b [add] lineEdit showing if using processed/raw data 2018-04-23 17:00:52 +02:00
marcel e6648a3cec [add] read event info from obsDMT pickle file 2018-04-23 16:49:01 +02:00
marcel 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
marcel 0320ad67b9 [new] station highlighting by middle mouseclick 2018-04-20 14:53:15 +02:00
marcel 9b0ef55b70 [bugfix] wasnt using processed data 2018-04-20 13:51:21 +02:00
marcel 4d3b300e17 [removed] check4gaps/doubled, plotting merged instead 2018-04-19 17:03:11 +02:00
marcel 56295f0c81 Merge branch 'feature/obspy_dmt_interface' into develop 2018-04-19 13:44:42 +02:00
marcel a876384338 [add] info for user on min/max plot 2018-04-19 13:38:17 +02:00
marcel 964aa9ce6c [change] set downsampling to false again (creating errors when plotting
picks)
2018-04-18 16:46:21 +02:00
marcel af54cb0d4b [add] auto set plotmethod 'fast' for large dataset 2018-04-18 16:44:33 +02:00
marcel 349715d13c [removed] nth_sample dialog 2018-04-18 16:21:57 +02:00
marcel 726210daeb [add] plot-method = 'fast' for min/max plot 2018-04-18 16:21:27 +02:00
marcel e72111a6fb [add] obspy-like min/max function, removed testing area 2018-04-18 16:17:54 +02:00
marcel 5fcb07e647 [change] prepTimeAxis using linspace (is that ok?) 2018-04-18 16:17:16 +02:00
marcel 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
marcel 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
marcel 10c26a8261 Merge branch 'develop' into feature/obspy_dmt_interface 2018-04-05 16:03:26 +02:00
marcel b730b16ac6 [add] check for plot quantity 2018-04-05 16:02:53 +02:00
marcel c655371bae [minor] add RELEASE-VERSION to gitignore 2018-04-05 15:34:49 +02:00
marcel 67ee544522 Merge branch 'develop' into feature/obspy_dmt_interface 2018-04-05 15:33:48 +02:00
marcel 4cf785a135 [add] synthetic data plot (not yet flexible) 2018-04-05 15:33:40 +02:00
marcel f3627033b1 [bugfix] auto downsampling not working 2018-04-05 15:06:23 +02:00
marcel bd086e6cd4 Merge branch 'develop' into feature/obspy_dmt_interface 2018-04-04 15:20:30 +02:00
marcel a201b99c2e [bugfix] closes #256, not asking for filteroptions if no filterphase 2018-04-04 15:17:55 +02:00
marcel 889628ceee [remove] RELEASE VERSION!!! 2018-04-04 15:17:55 +02:00
marcel 366db9aef0 [initial] first changes to supply an interface to an obspyDMT database 2018-04-04 14:57:54 +02:00
marcel 79412c392d [add] gitignore 2018-04-03 16:04:29 +02:00
marcel 8f5292b957 [minor] added Error if phase can not be identified 2018-03-28 10:24:24 +02:00
marcel 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
marcel f9203d92e8 [bugfix] tuneAutopicker not working without 'P' and 'S' in picks 2018-03-05 17:49:40 +01:00
marcel 39f9238a06 [new] function to modify project/event rootpath (called on loading project) 2018-03-05 17:45:07 +01:00
marcel 8dabfb41d8 [add] check for event data 2018-03-05 16:51:06 +01:00
marcel 4918448d92 [bugfix] some fixes on hovering/renaming picks 2018-02-23 10:37:23 +01:00
marcel 9e74ff04c2 [add] linear detrend for manual picking... 2018-02-22 16:31:01 +01:00
marcel 39b925f475 [bugfix] init of Filteroptions class not working with kwargs 2018-02-22 16:26:46 +01:00
marcel b076ee90fa [add] cb for overwriteFilter, else filter automatically again 2018-02-22 16:03:11 +01:00
marcel bff888c98a [bugfix] emitted signal disturbing reset feature 2018-02-22 11:33:14 +01:00
marcel 2e5ed974f0 [bugfix] filteroptions were not loaded from project 2018-02-22 11:28:46 +01:00
marcel 90bc7642fd [update] default corners=4! 2018-02-22 11:19:24 +01:00
marcel 08b3c70497 [add] labels auto/manu 2018-02-22 11:16:56 +01:00
marcel 69955ff439 [add] reset (to auto settings) button 2018-02-22 10:51:26 +01:00
marcel fa46385a52 [add] color representation of auto filter values 2018-02-22 10:05:57 +01:00
marcel 144ecda61e Merge branch 'feature/additional_channel_display' into develop 2018-02-21 13:39:49 +01:00
marcel 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
marcel 819e4d7076 [bugfix] skip unknown channels for everything but comparison option 2018-01-17 16:38:11 +01:00
marcel 60a2863629 [bugfix] copy/paste failure 2018-01-17 16:28:50 +01:00
marcel c6cd6b2d69 [bugfix] use filter selected for ini pick not auto, save this filteropt. 2018-01-17 12:19:32 +01:00
marcel 0e057af39b [cleanup] simplifaction of setIniPickP/S functions, merge into one 2018-01-17 12:04:07 +01:00
marcel 473529961e [update] EVERY trace now scaled relative to its own noiselevel 2018-01-17 11:47:52 +01:00
marcel d2437b5014 Merge branch 'develop' into feature/additional_channel_display 2018-01-17 10:31:40 +01:00
marcel 97de485c99 [bugfix] case pg=False: internal change of pylot canvas updated 2018-01-17 10:30:38 +01:00
marcel 98f7ff8406 [update] resetZoom after picking 2018-01-16 16:17:18 +01:00
marcel f4632ac1f5 [update] enable/disable comboboxes in pick mode 2018-01-16 16:10:47 +01:00
marcel 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
marcel ec394d447d [new] choose channels to pick on for each phase 2018-01-16 13:33:12 +01:00
marcel a22e64889d [add] scaling by channel (untested) 2018-01-15 16:35:19 +01:00
marcel 4835c0ca8a [change] possible to select one of all available channels for comparison 2018-01-15 15:29:46 +01:00
marcel 975bd64266 Merge branch 'develop' into feature/additional_channel_display 2018-01-15 14:43:26 +01:00
marcel de8886b73b [update] leave rename phase mode when picking initiated 2018-01-15 14:37:07 +01:00
marcel f4839bb609 [bugfix] too many arguments in function (outdated) 2018-01-15 14:31:42 +01:00
marcel 5b5902a329 [update] keep filter corresponding to phase when refreshing plot 2018-01-15 14:28:08 +01:00
marcel 1c51ed12fc [bugfix] missing paranthesis 2018-01-15 14:21:10 +01:00
marcel 49de0fb22e [add] Hotkey for renaming 2018-01-15 14:20:48 +01:00
marcel b191bd8cf4 [update] warn/do not save picks with unknown phase ID 2018-01-15 14:17:14 +01:00
marcel 4589f92a1a [new] renaming of phases (untested) 2018-01-15 13:52:31 +01:00
marcel 44f63f8163 [change] ax.vlines -> ax.axvline (infinite) 2018-01-15 11:38:07 +01:00
marcel a1ee8d408c [add] user_help to status bar
[bugfix] missing change to mouseevent button
2018-01-15 11:32:02 +01:00
marcel d6400562d6 [change] DELETE PICK WITH MIDDLE MOUSE BUTTON (else deleted using zoom) 2018-01-15 11:28:25 +01:00
marcel 0013d099f3 [new] tooltip for phases on mouseover (untested) 2018-01-15 11:21:43 +01:00
marcel 534222e241 [bugfix] Exception when pick.filter_id was None 2018-01-15 11:16:26 +01:00
marcel 796eea87a1 [new] show time and pick info on left click in 3 comp window! 2018-01-12 15:14:57 +01:00
marcel bb395d2514 [new] preparation for pick info on click 2018-01-12 14:42:16 +01:00
marcel 5aef50f922 [new] save filteroptions as strings in XML (untested) 2018-01-12 14:07:36 +01:00
marcel ffa30e92e9 [bugfix] tried to filter without active event 2018-01-12 10:15:30 +01:00
marcel 23ed5ceb5c [update] filter hotkeys changed to P, S, Ctrl+F 2018-01-12 10:10:51 +01:00
marcel 185cc14e38 [add] P and S Filter options for main window
[bugfix] wforiginal not pre-processed
2018-01-12 10:07:14 +01:00
marcel 80d2ff508b Merge branch 'develop' into feature/additional_channel_display 2018-01-11 10:56:14 +01:00
marcel c7dc1481a1 [bugfix] wrong parent set for TuneAutoPicker 2018-01-10 16:59:34 +01:00
marcel 0ebc6e11f8 [add] prev/next event button (~~had to remove min button width) 2018-01-10 16:54:26 +01:00
marcel 78d5ee58b5 [update] apply new filter settings after selection 2018-01-10 16:08:28 +01:00
marcel 8d6de02afe [bugfix] filter settings will be retained when leaving picking mode etc 2018-01-10 16:00:34 +01:00
marcel 7ab13ebaad Merge branch 'develop' into feature/additional_channel_display 2018-01-10 14:50:46 +01:00
marcel a76dd06497 [update] add detrend/taper to 3comp filter (better only one function!) 2018-01-10 14:50:37 +01:00
marcel 7c61c7c471 Merge branch 'develop' into feature/additional_channel_display 2018-01-09 15:37:01 +01:00
marcel 39e048cf2f [bugfix] rectangle zoom connection 2018-01-09 13:46:21 +01:00
marcel 440c2c7bf3 [bugfix] reconnect interactive zoom after rectangle zoom 2018-01-09 13:37:53 +01:00
marcel 7be9fc28fa [minor] beautification 2018-01-09 12:21:49 +01:00
marcel a81c98c0b8 [update] pickdlg maximized by default 2018-01-09 12:18:47 +01:00
marcel fe81bd9719 [bugfix] enable buttons when switching between P and S by hotkey 2018-01-09 12:15:55 +01:00
marcel fde0de26f2 [update] added hotkeys for picking 2018-01-09 12:14:34 +01:00
marcel acdcf74c63 [bugfix] corrected hotkey 2018-01-09 12:04:43 +01:00
marcel 1324bf3d7c [bugfix] retain filtering when switching events 2018-01-09 12:04:03 +01:00
marcel 00cdbb5052 [update] changed frame color to pick color on init pick 2018-01-09 11:54:46 +01:00
marcel 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
marcel 8badba4a89 Merge branch 'develop' into feature/additional_channel_display 2018-01-09 09:55:09 +01:00
marcel 549700bf7a [update] changed plot/filter behavior for 3comp window 2018-01-09 09:54:39 +01:00
marcel c39303042f Merge branch 'develop' into feature/additional_channel_display 2018-01-08 14:46:58 +01:00
marcel fb4753ca83 [add] improved filteroptions and fixed some bugs 2018-01-08 14:45:29 +01:00
marcel 08703bf691 [add] some hacks to display air pressure in plot 2018-01-08 13:47:40 +01:00
marcel 8c9fded873 [update] working on filter bugs WIP 2017-12-21 13:13:44 +01:00
marcel 1296e914c3 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-12-06 14:53:18 +01:00
marcel e0e106d898 [bugfix] no more zoom reset entering picking mode 2017-12-06 14:52:31 +01:00
marcel 151900753a [update] improve help for event folder structure 2017-11-23 11:37:04 +01:00
marcel 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
marcel deaa67bb30 [bugfix] wront parent used for style 2017-10-20 11:04:03 +02:00
marcel f01868bc36 [bugfix] missing parameter ax for getXLims (mpl) 2017-10-20 11:00:52 +02:00
marcel 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
marcel 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
marcel 846da4cab7 [minor] version number changed to 0.2 2017-09-21 15:59:34 +02:00
marcel c8adc24c67 [minor] README update 2017-09-21 15:58:52 +02:00
marcel 255eca3c05 [update] rename QtPylot -> PyLoT (suggestion) 2017-09-21 15:36:17 +02:00
marcel af5953b053 [update] README.md 2017-09-21 15:34:29 +02:00
marcel c19f057abf [update] default pylot.in file updates 2017-09-21 15:20:05 +02:00
marcel 1f2b3147fd [cleanup] remove old files pt.2 2017-09-21 15:03:14 +02:00
marcel 43930a07cb [minor] remove navigation toolbar for tap 2017-09-21 14:42:19 +02:00
marcel 2a987cbdfa [cleanup] removed unused old code and output 2017-09-21 14:38:56 +02:00
marcel 238998e626 [cleanup] removed old unused class 2017-09-21 14:27:42 +02:00
marcel b465ba2111 [minor] color for qstatusbar missing 2017-09-21 14:26:35 +02:00
marcel 370e8a7074 [update] make HELP work again 2017-09-21 13:31:45 +02:00
marcel 259538f0b0 [minor] add some description to exp. histograms 2017-09-21 10:54:34 +02:00
marcel 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
marcel 92b12537eb [update] small improvements on comparison figures 2017-09-21 10:31:29 +02:00
marcel e9ce9635e0 [update] tuneAutoPicker color/pick visualisation 2017-09-20 11:03:30 +02:00
marcel c70222972c [update] small change in comparison figures 2017-09-19 16:08:04 +02:00
marcel 8397856213 [refs #247] array map initiation when loading project 2017-09-18 16:12:02 +02:00
marcel 961be8ccbc [bugfix] ibad referenced before assignment 2017-09-18 15:10:52 +02:00
marcel 7522201e06 [minor] beautiful progressbar 2017-09-18 15:06:50 +02:00
marcel 69ad0bf23b [bugfix] self.pdlg_widget not initiated 2017-09-18 15:06:33 +02:00
marcel 5bb55a8181 [update] move progressbar to bottom of mainwindow 2017-09-18 14:57:48 +02:00
marcel eab416df3f [bugfix] reset stdout in Worker 2017-09-18 14:46:29 +02:00
marcel 0949a6deac [update] apw saved, proper deletion of figures 2017-09-18 14:44:18 +02:00
marcel 6acb0ad580 [minor] wadata/jk improvements 2017-09-18 12:20:48 +02:00
marcel 316d19ba9e [bugfix] one replacement of i -> index missing 2017-09-18 11:39:27 +02:00
marcel 8a2bb65581 Merge remote-tracking branch 'origin/develop' into develop 2017-09-18 11:24:57 +02:00
marcel 330e15441e [bugfix] fig._tight=True tried to be set on None type 2017-09-18 11:23:52 +02:00
marcel 365657064f [cleanup] pycharm code inspection 2017-09-18 10:41:27 +02:00
marcel 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
marcel 6a40eef3fc Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-09-15 14:47:44 +02:00
marcel 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
marcel 7496025137 [rename] Ref Button -> Tune Button 2017-09-13 14:44:56 +02:00
marcel 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
marcel f2f908f8b5 [bugfix] missing parameter in getGlobalLimits 2017-09-12 15:31:02 +02:00
marcel 8381782194 [bugfix] missing third value (color) in tuple for autopicker 2017-09-12 14:10:15 +02:00
marcel 518019322d [minor] add event name to Histogram Window 2017-09-12 13:30:51 +02:00
marcel 4bf03ef0d9 [minor] update radioButton StyleSheet 2017-09-12 13:30:38 +02:00
marcel cc0281f9dc [add] color for tune/test events on MultiEventWidget 2017-09-12 12:09:59 +02:00
marcel 1d253b5ee5 [minor] text color changed in stylesheet 2017-09-12 11:58:24 +02:00
marcel 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
marcel 0cf46a0cc3 [minor] improve user output on used CPU cores 2017-09-12 11:02:08 +02:00
marcel 7027f9ca58 [update] stylename active used to init combobox 2017-09-11 16:06:25 +02:00
marcel c23fc0f303 [minor] stylesheet changes 2017-09-11 16:01:03 +02:00
marcel ed915f29df Merge branch 'style_options' into develop 2017-09-11 15:53:49 +02:00
marcel 0418acf472 [minor] embellish autoPyLoT button 2017-09-11 15:52:01 +02:00
marcel e333ae0ece [revert] accidently added line for local testing 2017-09-11 15:16:42 +02:00
marcel 197164f849 [issue] trying to solve FigureCanvas already deleted exception WIP 2017-09-11 15:15:33 +02:00
marcel a4c697d250 [minor] solving some parental issues 2017-09-11 14:39:46 +02:00
marcel bed5c8ffcf [minor] stylesheet changes 2017-09-11 14:23:42 +02:00
marcel 330ab9b823 Merge branch 'develop' into style_options 2017-09-11 13:29:22 +02:00
marcel b1a12bf666 [bugfix] workaround: if datastructure not set 2017-09-11 13:28:39 +02:00
marcel f0e4ba5ab2 [add] style settings option 2017-09-11 13:27:32 +02:00
marcel d93a571a51 Merge branch 'develop' into style_options 2017-09-11 12:23:40 +02:00
marcel 1862b6d6e1 [bugfix] QSettings not loaded on setupUI because
application/organization name were not set
2017-09-11 12:18:30 +02:00
marcel 6e43e67172 [minor] stylesheet modifications 2017-09-11 10:24:22 +02:00
marcel e5b0210c27 [update] bright stylesheet 2017-09-08 17:25:29 +02:00
marcel 78ba5484c6 [bugfix] old usage of _parent 2017-09-08 17:19:34 +02:00
marcel f1fdd3b17b [update] bright stylesheet 2017-09-08 17:19:18 +02:00
marcel 104a8dda64 [update] add linecolor settings to autoPyLoT figs 2017-09-08 17:01:36 +02:00
marcel 7ef784f2d2 [minor] color changes 2017-09-08 15:50:08 +02:00
marcel d15828a058 [add] pick trace button color 2017-09-08 12:25:30 +02:00
marcel 51fe48553d [update] bright stylesheet 2017-09-08 12:21:56 +02:00
marcel a97258513e [bugfix] missing variable name change 2017-09-08 10:28:54 +02:00
marcel e310e1b6a6 Merge branch 'develop' into style_options 2017-09-08 09:39:47 +02:00
marcel 38a071ac5b [minor] suppress rotation warning in GUI 2017-09-08 09:36:34 +02:00
marcel 8717df836a [add] bright stylesheet 2017-09-08 09:27:47 +02:00
marcel 9d540fdd9b Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-09-07 16:57:34 +02:00
marcel 91340b66e9 [minor] add window title to pickDlg 2017-09-07 16:57:10 +02:00
marcel 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
marcel 9c63621ba4 [update] style_settings 2017-09-07 16:07:43 +02:00
marcel bab34a23c4 [add] settings for styles 2017-09-07 10:59:09 +02:00
marcel 7e39593b05 [change] dark stylesheet update 2017-09-07 10:52:22 +02:00
marcel 7ecf976401 [add] dark stylesheet 2017-09-06 18:34:59 +02:00
marcel 7f0d3c2ab4 [new] missing parents added, some preperations 2017-09-06 18:02:09 +02:00
marcel bf36e5e6a5 [bugfix] shift traces on wfPG plot 2017-09-05 15:31:02 +02:00
marcel 88bf4c8f67 [bugfix] delete picks after jk/wadati not working 2017-09-05 15:03:03 +02:00
marcel c6105330e0 [add] Ctrl+S to save fig (has to be clicked firsts) 2017-09-04 15:03:30 +02:00
marcel 16997ff49b Merge branch 'update_waveformwidget' into develop 2017-09-01 15:47:17 +02:00
marcel 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
marcel 9a61a7f27d [change] fix legend locations to prevent them from bouncing on zoom 2017-08-31 15:41:59 +02:00
marcel 8e59845558 Merge branch 'develop' into update_waveformwidget 2017-08-31 15:28:07 +02:00
marcel 699575f9d5 Merge branch 'compare_events' into develop 2017-08-31 15:02:27 +02:00
marcel 33bc4e060f [minor] change layout and add groupbox 2017-08-31 15:01:48 +02:00
marcel 9eea1e9b14 Merge remote-tracking branch 'origin/develop' into develop 2017-08-31 14:32:12 +02:00
marcel 79cbaf3397 [update] working version to compare several events 2017-08-31 14:31:33 +02:00
marcel eaa7a993af [add] compare widget for multiple events added 2017-08-31 11:16:38 +02:00
marcel 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
marcel f4fc067f16 Merge branch 'develop' into compare_events 2017-08-30 14:54:24 +02:00
marcel ca5167cb04 [bugfix] check type(picks) in dict/Attribdict 2017-08-30 14:45:20 +02:00
marcel aea58b3c11 [update] made autopickwidget concept more flexible 2017-08-30 14:44:39 +02:00
marcel f21fc7bb37 [fixes #244] parameters passed to pickDlg explicit 2017-08-30 10:51:20 +02:00
marcel 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
marcel e2b69d043c Merge branch 'develop' into update_waveformwidget 2017-08-29 15:57:04 +02:00
marcel 21f02bf675 [minor] add absolute time to WfWidgetPG 2017-08-29 15:55:36 +02:00
marcel 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
marcel 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
marcel 8e4fa5edca [cherrypick] from darius: rotate and taupy tooltip 2017-08-29 14:37:05 +02:00
marcel 726544bf3b [update] canvas finally working again 2017-08-24 17:16:21 +02:00
marcel c83671f140 [update] canvas used for tune-fig, not yet pan 2017-08-24 11:35:53 +02:00
marcel 070c32e007 [change] disable multicursor by default 2017-08-23 15:18:24 +02:00
marcel 2ce609a19c [bugfix] tuneAutopicker not working cause of wadatijack 2017-08-23 14:46:30 +02:00
marcel 1bbb686778 [updates] first usage of PylotCanvas for other fig 2017-08-23 14:45:46 +02:00
marcel 3cfd2371fc [change] scroll zoom now part of WFwidget 2017-08-23 12:17:51 +02:00
marcel 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
marcel 0e650dfb75 [update] working version of autopickwidget 2017-08-23 10:25:46 +02:00
marcel 9a5196c33f [minor] cosmetics 2017-08-23 09:20:59 +02:00
marcel 62610cd592 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-22 16:43:57 +02:00
marcel c6c13f85bc [new] first working version of jackknife plots for multiple events (WIP) 2017-08-22 16:43:09 +02:00
marcel d818e6aef9 [new] widget for picking interactive inside GUI 2017-08-22 13:21:06 +02:00
marcel 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
marcel 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
marcel ed994e987f [change] ComparisonDlg -> ComparisonWidget 2017-08-21 16:07:57 +02:00
marcel b185ce72b1 [add] exclude quality class 4 from comparison 2017-08-21 15:33:19 +02:00
marcel b30ab69ad2 [bugfix] teach comparison to cope without pick 2017-08-21 15:33:00 +02:00
marcel 50e7b83812 [new] new function to exclude picks by quality 2017-08-21 15:11:07 +02:00
marcel 2b0aa38b37 [change] restructure identifyPhase functions 2017-08-21 14:59:28 +02:00
marcel 55a54ae154 [rename] getQualityFromUncertainty 2017-08-21 14:50:18 +02:00
marcel e9dd34eca7 [change] py3 histogram changes merged to develop 2017-08-21 14:11:41 +02:00
marcel a75c16b2cd Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-21 13:56:40 +02:00
marcel b9bdaa391b [change] use timedelta if (epick or lpick)=mpick 2017-08-21 13:51:54 +02:00
marcel 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
marcel e0e0be48c7 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-21 10:30:10 +02:00
marcel 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
marcel 8fb6a4ea19 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-18 14:54:02 +02:00
marcel 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
marcel 4faf007e0b [change] try set ncores flag explicitly (WIP) 2017-08-18 13:18:21 +02:00
marcel 8a024b66e0 [bugfix] checked identity of 'None' in autoPyLoT 2017-08-18 11:44:55 +02:00
marcel 53aa02669c [bugfix] savepath overwritten after first occurrence in for loop 2017-08-18 11:36:58 +02:00
marcel 4c859eae1b [cosmetics] added/changed some icons 2017-08-18 11:32:45 +02:00
marcel 4b01c7a28b Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-17 15:50:18 +02:00
marcel 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
marcel d067d4787e [bugfix] doubled picks saving XML files 2017-08-17 11:54:01 +02:00
marcel 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
marcel 17f94228ab Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-16 15:14:15 +02:00
marcel 879282657a [change] get comparison working with alparray/py3 2017-08-16 15:13:55 +02:00
marcel 8e6237a08d [add]function to check for doubled channels in stream 2017-08-16 15:13:28 +02:00
marcel 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
marcel 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
marcel c6fa6d8ff8 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-16 10:04:23 +02:00
marcel 256f3b6838 [closes #232] load autopicks automatically 2017-08-16 10:03:10 +02:00
marcel 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
marcel ff6f2ed2d9 [minor] rearrange menu items 2017-08-15 16:36:14 +02:00
marcel 92e083770e [bugfix] accidently swapped pick menus 2017-08-15 16:32:02 +02:00
marcel 81f3758414 [change] rearranged menu (pick para, preferences) 2017-08-15 16:28:38 +02:00
marcel 9bfba65aee [bugfix] station names in pgplot 2017-08-15 16:15:49 +02:00
marcel 8f1943b48f Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-15 15:49:22 +02:00
marcel 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
marcel f6774cb592 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-15 15:03:41 +02:00
marcel 90dae62922 [bugfix] pickDlg manipulate pick copy, rba error 2017-08-15 15:02:45 +02:00
marcel 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
marcel c7e4cd0c8b [bugfix] savepath might be None as well! 2017-08-15 14:16:34 +02:00
marcel a23af62d23 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-15 14:15:18 +02:00
marcel 604edea95a [change] pick plot style (spe->fill_between) 2017-08-15 14:14:39 +02:00
marcel c45b997aec [add] phase text color sync to phase marker color 2017-08-15 14:00:16 +02:00
marcel 67b3f4f363 [bugfix] TypeError has no attr. 'message' 2017-08-15 13:52:26 +02:00
marcel 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
marcel 4bb616492c [bugfix] use identifyPhase instead of phase[0] 2017-08-15 10:02:46 +02:00
marcel ff1ab722df [minor] code cleanup 2017-08-15 09:49:10 +02:00
marcel a9d06790d2 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-14 17:00:15 +02:00
marcel 0f61799024 [add] new colors appl. to matplot, added quality 2017-08-14 16:59:39 +02:00
marcel 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
marcel 9edabc6aef Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-14 14:29:45 +02:00
marcel 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
marcel 07c16695ba [minor] bugfix in unused function 2017-08-14 14:13:35 +02:00
marcel 100a39afd9 [bugfix] prevent error on mousewheel zoom outside axis 2017-08-14 13:56:08 +02:00
marcel fda9de5738 [idea] copy pick not event and add to blank event 2017-08-14 13:44:38 +02:00
marcel 3cd64d09de [add] parameter savexml added to autoPyLoT 2017-08-14 13:30:27 +02:00
marcel 0a8f6f8a39 [bugfix] regard uncertainty == None 2017-08-14 11:43:09 +02:00
marcel e0077524f4 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-14 11:40:48 +02:00
marcel b585f571da [bugfix] no quality set if else was hit 2017-08-14 11:40:22 +02:00
marcel c20ea78e52 [bugfix] check for station in picks before plot 2017-08-14 11:38:31 +02:00
marcel 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
marcel b3b3dca41a Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-11 16:07:43 +02:00
marcel 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
marcel 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
marcel 039f98a811 [add] check for nsamples and negative slope of cf 2017-08-11 15:01:32 +02:00
marcel 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
marcel fe2a2a9714 [add] trim_station_comp also for tuneAutopicker 2017-08-11 10:28:35 +02:00
marcel 7846e1303a [bugfix] in tuneautopicker 2017-08-11 10:24:25 +02:00
marcel 9b97937049 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-11 10:15:42 +02:00
marcel 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
marcel 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
marcel fd2b82e978 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-10 14:01:55 +02:00
marcel 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
marcel 460af0e094 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-10 12:25:42 +02:00
marcel 2cc05329f9 [bugfix] huge bug in slope calculation 2017-08-10 12:25:03 +02:00
marcel 8a80af78cf [bugfix] use z-trace starttime instead of full_range 2017-08-10 12:00:43 +02:00
marcel 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
marcel fd9e4f0c05 [add] remove automatic phases possible from pickDlg 2017-08-09 15:10:36 +02:00
marcel 5c6f1eb564 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-08-09 14:16:45 +02:00
marcel 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
marcel 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
marcel 863718a3f8 [add] support str as outformat 2017-08-07 16:53:21 +02:00
marcel aa954dcd52 [add] current event saved as XML before picking in GUI 2017-08-07 16:49:56 +02:00
marcel 0692569056 [change] removed .obs from default export formats which is causing
problems
2017-08-07 16:45:20 +02:00
marcel b260c23deb [change] behavior of saveEvent button changed 2017-08-07 16:44:45 +02:00
marcel 2fa9a60023 [rename] functions renamed 2017-08-07 16:41:50 +02:00
marcel 014152e30e [add] saveAllEvents now connected to export for Autopick process and saveProject 2017-08-07 16:33:45 +02:00
marcel 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
marcel 4f1541ce4e [change] autoPyLoT output folder automatically set to event folder 2017-08-07 13:35:05 +02:00
marcel 57295c4a17 [minor] removed prompt 2017-08-07 12:17:18 +02:00
marcel d310cf3ff7 [bugfix] For some unknown reason QPushButtons in event table caused
segmentation fault
2017-08-07 12:14:54 +02:00
marcel 0018ae10d0 [bugfix] wrong index used 2017-08-07 12:03:15 +02:00
marcel 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
marcel 60ebaa6528 [bugfix] few typos 2017-08-04 11:05:52 +02:00
marcel 9499688887 [add] parameter taup_model 2017-08-04 11:03:10 +02:00
marcel 41e5c004b2 [add] new parameter use_taup 2017-08-04 10:28:00 +02:00
marcel 04bf655cf1 [bugfix] init Checkbox if parameter is not found 2017-08-04 10:27:23 +02:00
marcel 924eb8aae6 [cosmetics] rearranged autopick menu 2017-08-03 15:33:28 +02:00
marcel ddb1fb8b97 [add] multiple eventIDs possible as eventID pylot_parameter (testing needed) 2017-08-03 14:49:32 +02:00
marcel cab9061030 [change] abortButton for Thread removed by default, cause it was not
working properly
2017-08-03 14:39:58 +02:00
marcel 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
marcel 154e7b459f [add] --ncores flag added to autoPyLoT call, also enabled in GUI widget 2017-08-03 11:49:15 +02:00
marcel 90006809a5 [add] new autopick options added to file menu 2017-08-03 11:10:26 +02:00
marcel 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
marcel 85a01fb0f1 [minor] cosmetics in print 2017-08-03 10:33:58 +02:00
marcel 5e2dc6c9f9 [add] improved submit functions 2017-08-03 10:15:54 +02:00
marcel 20b31a1c5c [reformat] code reformatting with PyCharm 2017-08-03 09:41:54 +02:00
marcel 4107f0249d [add] widgets for GUI independent spawning of autoPyLoT processes, WIP 2017-08-02 15:20:32 +02:00
marcel 482ae112e8 [bugfix] missing string emitting signal 2017-08-02 13:19:09 +02:00
marcel dfa04f7b0a [add] change seperator for event initiation from system specific to '/' 2017-08-02 11:37:17 +02:00
marcel d5645cf979 [bugfix] string transformation of None values 2017-08-02 11:02:24 +02:00
marcel a5a3087283 [add] system specific path SEPERATOR 2017-08-02 10:47:41 +02:00
marcel c60c659608 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-07-31 17:00:55 +02:00
marcel aa5d11d735 [WIP] changed multiThread structure to QThreadPool 2017-07-31 17:00:19 +02:00
marcel 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
marcel c353c24283 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-07-31 14:57:36 +02:00
marcel 7ca6509611 [bugfix] has_keys not a method of dict in python3 2017-07-31 14:56:59 +02:00
marcel 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
marcel 17e6169cee [bugfix] untabify code 2017-07-31 13:52:57 +02:00
marcel 06b8c8413f merge release version 2017-07-31 13:44:37 +02:00
marcel 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
marcel f13542840f [add] MultiThread class added 2017-07-31 10:40:03 +02:00
marcel f86f33b22f [minor] removed output 2017-07-20 16:18:00 +02:00
marcel 04d43f67c5 [bugfix] default phases from obspy not unique
[add] toggle button for checking phases
2017-07-20 15:11:07 +02:00
marcel f93713fdad [bugfixes] filtering should be possible for all recognized phases now 2017-07-20 14:09:35 +02:00
marcel d48d29f7ec [change] code restructured for flexibility 2017-07-20 11:50:57 +02:00
marcel 9c089329f3 [bugfix] string changed by accident 2017-07-20 11:42:31 +02:00
marcel 389965e573 [add] plot arrivals option added
[change] code reformated by PyCharm
2017-07-20 11:33:01 +02:00
marcel c644095b5a [add] phase defaults for phasesTab 2017-07-19 15:12:01 +02:00
marcel 7748a39a72 [bugfix] checked for attribute invPath instead of inv_path 2017-07-19 10:11:26 +02:00
marcel 548c863f10 [minor] tight_layout for waveformwidget figure 2017-07-18 16:17:04 +02:00
marcel d21afcf31a [minor] changed linewidth of wf plot slightly 2017-07-18 16:12:33 +02:00
marcel be588252cf [add] events can be removed by clicking a button in event_table 2017-07-18 16:07:08 +02:00
marcel 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
marcel 37875d5c87 [add] finished remove picks feature, testing needed 2017-07-18 14:34:09 +02:00
marcel dbb3fab6d0 [add] possibility to remove picks added to pickDlg 2017-07-18 13:54:47 +02:00
marcel 1918c11b42 [bugfix/improvement] checkZ4s independent of different trace starttimes and sampling rates 2017-07-17 18:02:29 +02:00
marcel 176f13db09 [bugfix] slope window was used for calculation of checkz4s leading to huge problems 2017-07-17 16:58:40 +02:00
marcel 547355fbdf [change] updated parameters of function call exportEvent in autoPyLoT 2017-07-17 13:44:38 +02:00
marcel 52f9e61c9f [bugfix] locflag was set active when initialized in tune mode without metadata 2017-07-17 13:40:35 +02:00
marcel f41a330606 [add] default event output name += .xml 2017-07-17 13:10:02 +02:00
marcel 2633f4b9cf [bugfix] error-prone check for method_id.id 2017-07-17 11:58:32 +02:00
marcel 7e0f4efbcc [bugfix] wrong usage of instrinsic function list() 2017-07-17 11:50:51 +02:00
marcel 7f0ab4dd94 [merge] merged changes in QtPyLoT manually 2017-07-17 11:38:50 +02:00
marcel e5f5ab8412 [change] improved code behavior; exportEvent now checks for magnitudes and origins as well 2017-07-17 11:32:38 +02:00
marcel 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
marcel 897b915eff [bugfix] origins object will be created independent to notes.txt,
[update] pycharm code restructuring (accidently)
2017-07-14 16:25:59 +02:00
marcel 90e27f1d08 [WIP] autopicks -> update xml file 2017-07-14 16:24:37 +02:00
marcel a017c4deb4 [bugfix] various bugfixes while testing on Windows with py3 2017-07-14 15:26:39 +02:00
marcel 3869922378 [bugfix] typo in variable name 2017-07-14 14:16:12 +02:00
marcel 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
marcel 20e86cee5a Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2017-07-14 11:11:49 +02:00
marcel 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
marcel 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
marcel f57aa37d99 [change] changed some functions to work with Python 3 and Windows 2017-07-13 17:27:48 +02:00
marcel ac25f9cacb [bugfix] set locflag = 2 if traces could not be corrected 2017-07-13 11:23:51 +02:00
marcel 154f802f27 [bugfix] removed useless prompt 2017-07-12 16:56:39 +02:00
marcel 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
marcel aa6f4324d0 Merge branch 'filterOptions' into develop 2017-07-12 16:33:14 +02:00
marcel 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
marcel 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
marcel 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
marcel e3a4a2861d [bugfix/test] idea to fix problem with different ressource_id's on autoPyLoT 2017-07-10 17:37:54 +02:00
marcel 0e566f9748 [add] latest pylot.in file added to inputs! 2017-07-10 15:49:15 +02:00
marcel e0926c6b20 [change] phase/expected phase arrivals text position now stays readable around pickDlg axes 2017-07-10 15:39:44 +02:00
marcel d966b87eba Merge branch 'taup' into develop 2017-07-10 11:32:51 +02:00
marcel bd4da2cc84 Merge branch 'master' into develop 2017-07-10 11:31:04 +02:00
marcel 8dcff4a467 Merge branch 'master' into taup 2017-07-10 11:30:37 +02:00
marcel d0b5626c91 Merge branch 'master' into filterOptions 2017-07-10 11:29:16 +02:00
marcel 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
marcel a9334372e8 [add] working version of expected arrivals of chosen phases 2017-07-07 12:16:38 +02:00
marcel 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
marcel f7e54275c3 [change] structural changes to filteroptions WIP 2017-07-06 17:22:23 +02:00
marcel 09b2dfa5d1 [hotfix] could not load multiple parameters from pylot.in if values are type==string 2017-07-06 09:53:13 +02:00
marcel dbc38385b5 [add] semi working version of filterOption dialog, WIP 2017-07-04 16:37:05 +02:00
marcel 097222a43d [add] namestrings for default parameters, filteroptions connected to parameters (WIP)
[change] layout of pylotparabox
2017-07-04 14:39:10 +02:00
marcel 1b3c29c47e [bugfix] missing comma in dictionary definition, also corrected misspelling 2017-07-04 10:31:23 +02:00
marcel 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
marcel 74393432da [bugfix] do not show file menu when embedded, stretch changed (still problems on ludgers machine) 2017-06-30 15:06:17 +02:00
marcel 8e12bb1bc6 [bugfix] when no settings are given for phases use empty list 2017-06-30 14:43:06 +02:00
marcel 1c610d22f0 [add] restore default options for some tabs 2017-06-30 14:29:37 +02:00
marcel beed46229a [add] plot phase name in pickDlg, also plot network code 2017-06-30 13:56:59 +02:00
marcel 533f7ea353 merge origin/develop into develop 2017-06-30 13:31:19 +02:00
marcel 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
marcel 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
marcel 3931f13fbe Merge branch 'develop' 2017-06-29 17:05:02 +02:00
marcel 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
marcel 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
marcel 574704cc49 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-06-29 10:24:27 +02:00
marcel 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
marcel 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
marcel 795733cc5f Merge branch 'develop' 2017-06-27 15:30:18 +02:00
marcel cb1fb60eec Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-06-27 15:11:06 +02:00
marcel 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
marcel f1a9726f91 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-06-27 13:54:51 +02:00
marcel 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
marcel a90e0bd78b [change] data._new moved to applyEVTData 2017-06-27 10:49:11 +02:00
marcel 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
marcel 53089a3279 [add] rootpath will be applied to QSettings as well 2017-06-26 18:02:07 +02:00
marcel 30e2e1df84 [bugfix] query for data flag/attribute isNew changed 2017-06-26 17:41:08 +02:00
marcel 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
marcel 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
marcel 42c288ad82 [bugfix] return when no file is selected on load_data 2017-06-26 14:10:40 +02:00
marcel c07642653d [change] default open path for load_data is event folder 2017-06-26 14:08:17 +02:00
marcel 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
marcel 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
marcel d08bd4cc9e [move] class Event finally moved to new module event 2017-06-26 12:03:04 +02:00
marcel 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
marcel 8e6c4d06ce [add] array_map now plotting event location if given 2017-06-23 15:40:13 +02:00
marcel 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
marcel f409861d10 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-06-23 14:16:06 +02:00
marcel 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
marcel 929f58b942 merge origin/develop into develop 2017-06-23 12:12:55 +02:00
marcel 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
marcel 410fe18390 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-06-22 16:32:31 +02:00
marcel 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
marcel 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
marcel 2b6297859b Merge branch 'develop' 2017-06-22 13:28:34 +02:00
marcel ca1d3dca38 [add] filter parameters added to default parameters 2017-06-22 12:01:22 +02:00
marcel 97ee03b443 Merge branch 'develop' into filterOptions 2017-06-22 11:26:02 +02:00
marcel 8e8b3e0462 [rename] AutoPickPara ---> PylotPara 2017-06-22 11:22:17 +02:00
marcel f91e1cde6f [change] structure changed to make parabox more flexible 2017-06-22 11:03:24 +02:00
marcel 203974cd83 [bugfix] parameters interchanged 2017-06-22 10:54:17 +02:00
marcel f6a20c4ea2 [bugfix] advanced_cb acciddently pushed to bottom of layout 2017-06-22 10:53:56 +02:00
marcel 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
marcel 5928967e28 [closes #212] tuneAutopicker always tries to load current event in mainwindow 2017-06-21 15:33:49 +02:00
marcel 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
marcel b0dcf5ff4b [change] local magnitude section added 2017-06-21 14:20:22 +02:00
marcel d77abdc1d0 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-06-21 14:10:24 +02:00
marcel 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
marcel c10639b49c [merge] manual merging to new function structure (widget insertion with position) 2017-06-21 13:28:44 +02:00
marcel 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
marcel 0a6ad8b663 [add] folder structure automatically recognized when adding events 2017-06-21 11:45:35 +02:00
marcel be463c2adf [add] functionality to display one groupbox of AutoPickParaBox exclusively 2017-06-21 10:36:22 +02:00
marcel 6daccad341 [add] testing: saveProjectAs option 'always' enabled when project is active 2017-06-20 16:30:13 +02:00
marcel d5a7e1f35f Merge branch 'develop' 2017-06-20 16:26:32 +02:00
marcel 1b512a0864 [closes #207, closes #208] when supressing user prompt, applyEVTData to data object was accidently removed 2017-06-20 16:23:54 +02:00
marcel ab979e9b10 [bugfix] events not properly provided to autoPyLoT by TuneAutopicker, wrong parameter name in plotting routine 2017-06-20 14:32:21 +02:00
marcel 0be5c4b694 [add] verbosity on import pyqtgraph exception 2017-06-20 13:22:29 +02:00
marcel 0ff6f78a6c [add] parameter localMag added 2017-06-20 12:10:56 +02:00
marcel 62a7d94816 [bugfix] expecting deprecated return parameter of autoPyLoT 2017-06-20 12:10:17 +02:00
marcel a8544dfb93 [bugfix] save XML does not set project clean 2017-06-20 10:35:31 +02:00
marcel d293a5d9e1 Merge branch 'develop' 2017-06-20 10:29:50 +02:00
marcel 718879fad0 merge origin/develop into develop 2017-06-20 09:57:52 +02:00
marcel 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
marcel 1b17842f63 [fixes #201] test events will be skipped when using TuneAutopicker 2017-06-19 16:30:39 +02:00
marcel 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
marcel 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
marcel 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
marcel 053caa5cf6 [change] replot after manual picking only if necessary (picks changed) 2017-06-19 10:37:24 +02:00
marcel 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
marcel 7257d43155 [fixes #205] call replot thread after manual picking 2017-06-19 10:23:39 +02:00
marcel 754883c5c9 [refs #204] adding application name/organisation/domain when building app before calling settings 2017-06-14 16:22:26 +02:00
marcel 15799feee7 Merge branch 'develop' 2017-06-14 10:20:41 +02:00
marcel d2d8498739 [bugfix] stream oabject overwritten when using alter_comp causing traces to disappear in plot 2017-06-12 14:36:38 +02:00
marcel 5412de8249 [add] notes can be read from event folders 2017-06-12 11:34:45 +02:00
marcel ddedd3ed7a [hotfix] ignoring error when mouseclick signal cannot be disconnected 2017-06-12 10:42:44 +02:00
marcel 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
marcel 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
marcel b061c81b2c [change] removed axes on startup 2017-06-08 16:58:44 +02:00
marcel 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
marcel 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
marcel 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
marcel be8035e118 [bugfix] update to previous commit 2017-06-07 11:31:03 +02:00
marcel 9e85a9df47 [bugfix] using default channel components in case QSettings is not working with OS 2017-06-07 11:29:38 +02:00
marcel 50750fc4e0 [bugfix] using default channel components in case QSettings is not working with OS 2017-06-07 11:22:00 +02:00
marcel 66c5142cb9 [change] major changes in AutoPickParaBox layout, now structured as groupboxes that can be hidden individually 2017-06-07 10:30:15 +02:00
marcel 0af795969b [add] parameters now changed as part of project, some small fixes 2017-06-06 16:30:27 +02:00
marcel f7d0e49458 [change] some updates of main window title changed to new QtPyLoT 2017-06-06 15:51:06 +02:00
marcel 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
marcel bdc85fa56a [bugfix] channel order mixed 2017-06-06 14:43:36 +02:00
marcel 9007197786 [add] network code added to station map 2017-06-06 14:08:19 +02:00
marcel 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
marcel 86c76c6f61 [bugfix] 3 comp. window, time correction for trace overdone 2017-06-06 11:16:57 +02:00
marcel 530a629d15 [bugfix] changed code order for QSettings 2017-06-02 14:02:08 +02:00
marcel f7af1d0b1b Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-06-02 11:52:39 +02:00
marcel 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
marcel 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
marcel 04304d3db8 [hotfix] adding decimals to AutopickParaBox 2017-06-01 14:01:43 +02:00
marcel eaa4849a20 added network code to TuneAutopicker, small bugfix 2017-05-31 17:31:58 +02:00
marcel cf399ed747 added parameter selection with ParameterBox to QtPyLoT Mainwindow 2017-05-31 17:12:34 +02:00
marcel 7d736823b1 [bugfix] min/max values of automatically generated spinboxes changed to -10e7 to 10e7 2017-05-31 16:28:05 +02:00
marcel cd612def81 WIP: working on saving filter options as part of project 2017-05-31 16:25:46 +02:00
marcel 62fa3ad8b1 several updates to internal refreshing of widgets when manual picks are set 2017-05-31 15:41:25 +02:00
marcel 02a59f46a9 [bugfix] fixed filter settings for pylot.in file on open/save action in AutoPickParaBox 2017-05-31 14:35:52 +02:00
marcel 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
marcel eb5cf08d58 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-05-31 13:46:37 +02:00
marcel 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
marcel c540cd0f81 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-05-31 11:48:51 +02:00
marcel 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
marcel 1ff3b845bb some changes on dirty flag, added keyPress/release Events for Ctrl-Key 2017-05-31 10:56:45 +02:00
marcel 60c882fe04 [bugfix] changes in default_parameters not applied 2017-05-31 10:33:45 +02:00
marcel 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
marcel f493359c26 [bugfix] fixes and modifications for (inhomogeneous) global datasets, WIP 2017-05-30 16:27:38 +02:00
marcel ceed165307 [bugfix] accidential function rename in code fixed 2017-05-30 11:45:53 +02:00
marcel a745381e8e some changes in propertiesDlg 2017-05-30 10:17:07 +02:00
marcel 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
marcel 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
marcel 41a870d720 some changes in dataPlot resizing/height adjustments 2017-05-29 16:21:36 +02:00
marcel 5115705c4e Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-05-29 13:50:30 +02:00
marcel 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
marcel cb91911313 Merge remote-tracking branch 'origin/develop' into develop 2017-05-29 11:57:14 +02:00
marcel b2d48cd523 changed some dirty things 2017-05-29 11:56:22 +02:00
marcel 3ad82c0c9e small fix on saving back loaded project 2017-05-29 11:34:22 +02:00
marcel 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
marcel b3a4470910 slightly changed qtpylot to call it from console 2017-05-24 15:28:52 +02:00
marcel 69b2daaab8 Merge remote-tracking branch 'origin/develop' into develop 2017-05-24 14:13:43 +02:00
marcel 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
marcel 840610cb18 [new] added some mousewheel zooming for array map 2017-05-23 13:34:39 +02:00
marcel 83fd0efd83 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-05-22 15:36:35 +02:00
marcel 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
marcel 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
marcel 5a3b77dc7b Merge remote-tracking branch 'origin/develop' into develop 2017-05-19 13:54:33 +02:00
marcel 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
marcel 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
marcel cf971d6a87 Mainwindow plotWidget size fix 2017-05-19 09:23:02 +02:00
marcel 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
marcel 77153bc8e9 Merge remote-tracking branch 'origin/develop' into develop 2017-05-18 13:22:13 +02:00
marcel 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
marcel 46236eeb55 changed PyQt import to PySide import! 2017-05-18 11:44:51 +02:00
marcel 0a911154ca Merge remote-tracking branch 'origin/develop' into develop 2017-05-18 11:42:42 +02:00
marcel 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
marcel fa2b65ea3d removed focmec parameter 2017-05-17 14:52:50 +02:00
marcel b97f79c31d Merge branch 'tap_thread' into develop 2017-05-17 13:27:03 +02:00
marcel d81fb3e2e9 several bugfixes, mainly on map_projection with updated pick structure as part of event class 2017-05-17 13:25:41 +02:00
marcel 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
marcel ba58cb548b bugfix iterating over same index as eventBox index 2017-05-16 14:20:32 +02:00
marcel f43611aeda added pickdlg to tune autopick, small fixes; to do: add manual picks 2017-05-16 13:41:35 +02:00
marcel c9d872d52b added load/save buttons for parameters 2017-05-15 18:12:26 +02:00
marcel cae5c961b0 some fixes calling autopylot (figures=None), added log for autoTuner 2017-05-15 17:21:22 +02:00
marcel a2ab98c202 added station list to TuneAutopicker 2017-05-15 12:03:53 +02:00
marcel 4d9c7b02cf autoPyLoT: figure beautification
also added nav toolbar to TuneAutopicker
2017-05-15 11:21:45 +02:00
marcel 77b076d560 threading for tuneAutopicker working now, to do: change figures (vfill), tight layout? 2017-05-12 15:40:19 +02:00
marcel 12e6106227 first working version of threaded tuneAutopicker 2017-05-12 13:58:05 +02:00
marcel 184983bc87 WIP: figure generating in threads partly working 2017-05-12 11:03:41 +02:00
marcel 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
marcel 6847bfe8c4 WIP autopick parameters
to do: save/load/station+trace selection
2017-05-10 16:28:07 +02:00
marcel dc656e5c57 merge origin develop into develop 2017-05-10 15:48:02 +02:00
marcel 862fb3240a added parameters tab to TuneAutopicker widget. Enabled direct call of autoPyLoT with AP-Settings object 2017-05-10 15:46:08 +02:00
marcel d96bc3c621 updated autopick parameter writing routine 2017-05-10 14:56:29 +02:00
marcel 7d56e15ccf WIP autopicker tuning
added default parameters and widget to show/edit them
2017-05-10 13:17:58 +02:00
marcel 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
marcel 29915f3669 added first small qwidget for later tuning of autopicker with figures (tight_layout not working?) 2017-05-08 17:48:59 +02:00
marcel 3090d5fca0 added two missing figures 2017-05-08 16:23:10 +02:00
marcel a8577ac80a Merge remote-tracking branch 'origin/develop' into develop 2017-05-08 15:43:09 +02:00
marcel 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
marcel 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
marcel 50ee351995 added scrollbar vor main wf plot for huge datasets, some changes in basemap figure size 2017-05-03 15:16:48 +02:00
marcel efe47d7a20 fix for station scatter error 2017-05-03 12:00:34 +02:00
marcel 413a921e5d small fixes 2017-05-03 11:28:43 +02:00
marcel fce0c98a89 Merge remote-tracking branch 'origin/develop' into develop 2017-05-02 12:19:16 +02:00
marcel 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
marcel 686ca4489c Merge branch 'project_events' into develop 2017-04-21 15:50:10 +02:00
marcel 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
marcel 6b7dbe3f9a some bugfixes 2017-04-20 17:06:36 +02:00
marcel b23228253a [bugfix] plotting pick of lower most channel 2017-04-20 15:28:43 +02:00
marcel 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
marcel bcc58e4937 changed eventlist string and coloring, [bug]: picks not displayed 2017-04-20 14:03:26 +02:00
marcel 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
marcel 227faf14c2 saving picks in events as part of project 2017-04-19 16:51:19 +02:00
marcel f935da8296 few bugfixes 2017-04-19 16:05:45 +02:00
marcel 80577dcfc7 added map_projection plot 2017-04-19 15:40:22 +02:00
marcel fd70ef2251 adding some tabs for map_projection, WIP 2017-04-18 17:17:46 +02:00
marcel 62876dd01d added first project structure and event lists (testing needed) 2017-04-18 16:24:26 +02:00
marcel 3092b4f657 Merge branch 'map_projection' into develop 2017-04-18 09:48:00 +02:00
marcel 486aadd791 color change in map projection 2017-04-13 15:51:58 +02:00
marcel 22ced8c07c [fix] parameters tab window flag for new qwidget window with parent 2017-04-13 11:55:09 +02:00
marcel de38b60893 qlineedit for autopylot parameter settings 2017-04-13 11:26:01 +02:00
marcel 54222b7f11 added method for array plotting to QtPyLoT, to do: button to call array plot 2017-04-12 16:43:29 +02:00
marcel 50f6d7d987 Merge branch 'develop' into map_projection 2017-04-12 15:21:58 +02:00
marcel e75c34afeb button color changed, 3 comp. window 2017-04-12 15:20:06 +02:00
marcel 6c214bbc77 changed structure to class with PyLoT mainwindow as input 2017-04-12 15:07:13 +02:00
marcel 488068105b Merge branch 'develop' into map_projection 2017-04-12 12:18:16 +02:00
marcel bb60093657 changed PickDlg layout to simpler button layout with hotkeys 2017-04-12 12:14:01 +02:00
marcel 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
marcel 76d4d59ed9 added PickDlg testwise for onpicked traces 2017-04-11 15:41:41 +02:00
marcel d037e0a1f2 Merge branch 'develop' into map_projection 2017-04-11 15:17:48 +02:00
marcel 2e6d39c52e small bugfixes and widget added 2017-04-11 15:16:53 +02:00
marcel 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
marcel f1e3720a0e gathering some ideas for map projection 2017-04-10 17:06:39 +02:00
marcel d370ef67c0 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2017-04-10 15:07:48 +02:00
marcel 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
marcel 0656a571cd now returning pylot_form to have access to GUI modules in ipython 2017-04-10 14:01:08 +02:00
marcel 50d3c5f235 added ipython support for developing 2017-04-10 13:32:53 +02:00
marcel 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
marcel 35705f1f1d Merge branch 'develop' 2017-04-07 13:58:07 +02:00
marcel 8bc390fb74 small bugfix 2017-04-06 16:18:08 +02:00
marcel 393289245f multiprocessing implemented for restitution and autopicker 2017-04-06 15:37:54 +02:00
marcel ef1755a80f added new files as well 2017-04-06 13:17:06 +02:00
marcel 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
sebastianw d668a483fc Merge tag '0.1a' into develop
First release of PyLoT
2016-10-04 06:42:34 +02:00
sebastianw f5c06cd6b7 Merge branch 'release/0.1a' 2016-10-04 06:41:54 +02:00
sebastianw b8840dff13 [version] edited release version 2016-10-04 06:40:48 +02:00
sebastianw 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
sebastianw ae0cc5e160 [remove] moved correlation code from PyLoT to the seisobs utils scope 2016-10-03 08:56:23 +02:00
sebastianw 45184fd888 [move] acitveSeismoPick3D removed from PyLoT project
will be under version control on its own
2016-10-03 08:20:54 +02:00
sebastianw 75a8397b21 [release] edit to README and deleted duplicate LICENSE file 2016-09-30 16:32:34 +02:00
sebastianw 96124537cd Merge branch 'master' into develop 2016-09-29 14:18:39 +02:00
sebastianw 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
sebastianw 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
sebastianw 2e840cdfeb [fix] reformatted code and fixed magnitude_type bug 2016-09-29 12:44:37 +02:00
sebastianw dfefd8af87 [enhancement] make use of new Magnitude method in QtPyLoT 2016-09-29 12:08:59 +02:00
sebastianw 34c1e80e78 [enhancement] make use of the new methods introduced in [900c7af931] 2016-09-29 11:55:08 +02:00
sebastianw 900c7af931 [new] added referenced information on Magnitude properties to the recently introduced Magnitude objects 2016-09-29 11:53:25 +02:00
sebastianw 010963dcd1 [bugfix] not all processing entries have to contain remove but at least one of them 2016-09-28 15:07:49 +02:00
sebastianw d68a1bcf0e [fix] some bugs found and fixed 2016-09-28 14:58:27 +02:00
sebastianw 019a3ae0f3 [new] added origin information to the net_magnitude 2016-09-28 14:58:27 +02:00
marcel d093349b50 changed function position 2016-09-28 14:38:16 +02:00
marcel be2bacf5e8 bugfix: metadata not read from default file 2016-09-28 14:37:24 +02:00
sebastianw 5f92d1f0db [refactor] major refactoring of autoPyLoT and making use of the newly introduced Magnitude objects 2016-09-28 11:03:53 +02:00
sebastianw 231e7dafa9 [new] added a function to easily add amplitude information to a given Obspy event object 2016-09-28 11:01:09 +02:00
sebastianw 4e520df145 [new] added Wood-Anderson amplitude output for further analysis 2016-09-28 10:59:50 +02:00
sebastianw 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
sebastianw c1bddd5c0b [change] improved verbosity and plotting control for Magnitude objects 2016-09-28 10:56:05 +02:00
sebastianw 72d15e1fc5 [new] implemented new magnitude concept into QtPyLoT 2016-09-27 15:15:53 +02:00
sebastianw 699ba6f122 [new] added a new Error -> ProcessingError raised in case of failed restitution 2016-09-27 15:14:48 +02:00
sebastianw cf514ae024 [change] traces that could not be restituted are now removed from trace 2016-09-27 15:13:51 +02:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 9288a169a4 [change] if folder selection is canceled do not empty editable text 2016-09-26 14:49:29 +02:00
sebastianw dc38bd6e79 [fix, refactor] started major refactoring of magnitude.py and fixed some smaller bugs 2016-09-26 14:47:50 +02:00
sebastianw eaa3c2e75d [change] do some major refactoring on Magnitude and subclasses to be more efficient and clean 2016-09-26 10:49:02 +02:00
sebastianw 51f4082e04 [fix] imported Magnitude overwrite prevented by renamed import; changed wrong function call 2016-09-23 15:21:34 +02:00
sebastianw 0dffe37d3b [namefix] rename data file and corresponding function 2016-09-23 15:12:43 +02:00
sebastianw 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
sebastianw 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
sebastianw 04ec43c699 [fix] restitute waveform data prior to Wood-Anderson simulation 2016-09-22 14:12:24 +02:00
sebastianw 8307974edf [new] added richter magnitude calculation (to be tested) 2016-09-22 11:39:07 +02:00
sebastianw 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
sebastianw 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
sebastianw 80e0ca99d7 [new] added function to calculate symmetrized pickerror on the fly 2016-09-21 14:12:58 +02:00
sebastianw a215ba35b1 Merge branch 'feature/magnitude4QtPyLoT'
Conflicts:
	pylot/core/analysis/magnitude.py
2016-09-21 10:41:38 +02:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw df002ce9ac [change] use read in metadata information instead of reading metadata each time invoked 2016-09-20 09:58:33 +02:00
sebastianw 7e76bf7577 [change] make use of new metadata reading utility function to improve performance 2016-09-20 09:57:09 +02:00
sebastianw 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
sebastianw 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
sebastianw 84739ed8ab [new] added new function to find common time window within a stream 2016-09-19 11:43:16 +02:00
sebastianw 420f382051 [cherry-pick] merged conflicts after cherry-pick of commit [17585f9381] 2016-09-19 11:42:52 +02:00
sebastianw f34262d931 [enhancement] catch possible exceptions during restitution process without losing code's verbosity 2016-09-19 11:39:15 +02:00
sebastianw ce4ac4fd04 [pep8] use naming and style conventions 2016-09-19 11:36:51 +02:00
sebastianw fa19ae9b9c [bugfix] only try to calculate moment magnitude given w0 and fc 2016-09-19 11:35:59 +02:00
sebastianw 8ee515e79f [bugfix] do not continue calculation without given data 2016-09-19 11:34:03 +02:00
sebastianw 5155efc710 [bugfix] do not try to give a full filepath for searching issue 2016-09-19 11:33:08 +02:00
sebastianw 8d37e9299c [new] added new function to find common time window within a stream 2016-09-19 11:32:00 +02:00
sebastianw 17585f9381 [rename] renaming getGlobalTimes for consistency and introduction of similar new function in future commit 2016-09-19 11:29:33 +02:00
sebastianw c8d8525c11 [bugs fixed and found] dataprocessing doesn't work as expected, np.bool_ substituted by bool 2016-09-15 14:51:11 +02:00
sebastianw 1e4b1d691a [bugfix] using get method and account for not existing autopylot input file 2016-09-15 12:14:43 +02:00
sebastianw 4233af55c6 [bugfix] which now also uses the nllocbin parameter from the input file 2016-09-15 12:11:24 +02:00
sebastianw 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
sebastianw d7680f8ae3 Merge branch 'feature/magnitude4QtPyLoT'
Conflicts:
	pylot/core/util/utils.py
2016-09-13 12:02:21 +02:00
sebastianw 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
sebastianw 8a5fcf05bf [move] pseudo method restituteWFData changed to function restitute_data and moved to dataprocessing 2016-09-10 13:24:42 +02:00
sebastianw 7c5b8cb646 [move] pseudo method restituteWFData changed to function restitute_data and moved to dataprocessing 2016-09-10 13:24:12 +02:00
sebastianw 8866d54428 [bugfix] now plotting of picks works also if less data than picks are available 2016-09-09 06:31:30 +02:00
sebastianw 94236190ba [bugfix] cancelling localization now works and gives information about the localization state 2016-09-09 06:31:04 +02:00
sebastianw 3d41e0abcd [refs #200] take advantage of the newly imported input file for magnitude calculation 2016-09-08 15:31:23 +02:00
sebastianw 6e6b3570a8 [bugfix] now plotting of picks works also if less data than picks are available 2016-09-08 15:29:37 +02:00
sebastianw a2ddd04b2f [bugfix] cancelling localization now works and gives information about the localization state 2016-09-08 15:28:40 +02:00
sebastianw cbbe019475 [new] read generalized parameter input file 2016-09-08 14:02:21 +02:00
sebastianw 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
sebastianw fd8abd18b5 Merge branch 'develop'
[bugfixes] bringing bugfixes into master
2016-09-08 09:56:57 +02:00
sebastianw 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
sebastianw d953609419 [bugfix] just parse filter options if available 2016-09-07 12:17:51 +02:00
sebastianw 9632ecf41f [bugfix] cover all possible cases (some correct components have been dropped before) 2016-09-07 11:10:51 +02:00
sebastianw 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
sebastianw 12641f8d52 [refs #200] fixing some minor bugs during processing of magnitude 2016-09-05 15:00:08 +02:00
sebastianw e1e3d54f8e [refs #200] corrected call to QFileDialog 2016-09-05 10:16:12 +02:00
sebastianw e6b788d423 Merge branch 'develop'
Conflicts:
	QtPyLoT.py
	pylot/core/io/data.py
2016-09-02 14:24:34 +02:00
sebastianw 76a856aa11 [clean-up] some code cosmetics and started to implement eventinformation 2016-09-02 14:21:59 +02:00
sebastianw 9f13f8db49 [refs #200] finished magnitude calculation (to be tested) 2016-09-02 09:03:51 +02:00
sebastianw d98ecea18a [refs #200] now merging picks without destroyed reference resource IDs 2016-09-01 14:21:25 +02:00
sebastianw 81640d30f9 [refs #200] ongoing work on parameter derivation 2016-08-31 13:41:18 +02:00
sebastianw facffa1bf2 [refs #200] started to implement magnitude determination from QtPyLoT 2016-08-31 12:16:48 +02:00
marcel f1d806c154 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-08-30 15:00:34 +02:00
marcel a8e56dba8b added repicking layout UI 2016-08-30 14:59:38 +02:00
sebastianw bcff0b74fe Merged feature/NLL4QtPylLoT into develop 2016-08-30 14:54:23 +02:00
sebastianw 280e954cac [closes #137] location out of QtPyLoT now possible 2016-08-30 14:53:58 +02:00
marcel a4c2666584 adding repicking qt layout 2016-08-30 11:54:38 +02:00
sebastianw ad91504211 [ref #137] removing last bugs before closing feature 2016-08-29 15:52:58 +02:00
sebastianw 060bc1d0c8 [refs #137] bugfix value now is specified by user on demand 2016-08-26 14:36:33 +02:00
marcel eb1d7c07a0 preparations for QT repicking interface 2016-08-26 14:31:09 +02:00
sebastianw 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
sebastianw b29c7068e3 [refs #137] some improvements in autoPyLoT and ongoing work in the QtPyLoT NLL implementation 2016-08-25 21:32:41 +02:00
sebastianw e53dd99d75 [refs #137] implementation of GUI driven NonLinLoc location started 2016-08-25 13:31:51 +02:00
marcel 135ac0ef80 successfully implemented a working version of QT postprocessing interface 2016-08-24 14:58:51 +02:00
marcel e51704f2b7 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-08-24 13:13:41 +02:00
marcel 9c3770ea9f working on postprocessing GUI 2016-08-24 13:13:24 +02:00
sebastianw 74d31afa3d Merged branch develop into develop 2016-08-19 16:32:41 +02:00
sebastianw f428a72e86 [enhancement] improved functionality and flexibility of PDFstatistics class 2016-08-19 16:32:31 +02:00
sebastianw c500f1b8bb [add] added new utility function to find a substring in a list of strings 2016-08-19 16:09:29 +02:00
sebastianw f9d40439a9 [change] oversampling reduced to avoid computational overhead 2016-08-19 16:08:18 +02:00
sebastianw 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
marcel 5228657a60 small changes for synthetic tests 2016-08-15 13:35:01 +02:00
sebastianw 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
sebastianw 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
sebastianw a6ce93cd9f [modification] added missing docstring content 2016-08-10 16:30:28 +02:00
marcel c72ed1e169 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-08-10 14:24:40 +02:00
marcel 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
sebastianw 94782f6758 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-08-09 13:10:49 +02:00
sebastianw 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
marcel 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
marcel 9f15376fd8 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-08-09 10:38:19 +02:00
marcel 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
marcel 4c42e9ceb5 bugfixes, added fullscreen mode 2016-08-04 14:17:22 +02:00
marcel 30049baf94 added constant SNR possibility (plotting), changed replotting structure 2016-08-04 12:16:25 +02:00
marcel 3efb237452 fix: wait for process obsdata (p.wait()) 2016-08-04 10:35:09 +02:00
sebastianw 471cfe755b [fix] be sure to start the external programs in the right directory 2016-08-03 13:28:54 +02:00
marcel c13bdd2cf2 code cleanup 2016-08-02 12:21:25 +02:00
marcel 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
marcel 638f552d6d changed structure of callFMTOMO to class 2016-07-27 14:42:11 +02:00
marcel adfe9cc027 bugfixes 2016-07-27 13:46:42 +02:00
marcel 8bd9f7debc rename 2016-07-27 11:13:20 +02:00
marcel 987ee597fd Release version modified!?!? 2016-07-27 11:12:27 +02:00
marcel 48c0dbacfb changed structure of active GUI code, autopicker window changed to class 2016-07-26 14:48:08 +02:00
marcel 3273709b54 code for first three windows changed to class structure 2016-07-19 15:19:03 +02:00
marcel 05cc8e52b9 last commit before structural changes (classes for each window) 2016-07-19 12:16:37 +02:00
marcel c7f7d9785b Rearranged Main Layout (buttons to top menu), several tweaks for plotDynSNR 2016-07-18 11:54:29 +02:00
marcel fb8d888845 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-07-18 11:12:43 +02:00
marcel 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
sebastianw 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
marcel 6ad78acc85 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-07-13 14:15:30 +02:00
marcel 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
marcel fd569823f8 bugfix typo 2016-07-13 10:58:39 +02:00
marcel 288bbe13d7 bugfix fstart before path 2016-07-13 10:52:42 +02:00
marcel 5890e905fc Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-07-13 10:04:48 +02:00
marcel e3100562da pseudo 2D model generation working after some fixes (+2 cushion for propgrid) 2016-07-13 10:04:13 +02:00
sebastianw 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
sebastianw 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
marcel ed85d0ef12 added minimum cushion for 2D case (for input file generation) 2016-07-12 14:39:28 +02:00
marcel 546dfad722 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-07-12 14:09:50 +02:00
marcel c47bf7911a GUI refinements, added 2D structure for plots, adde input filename specifications 2016-07-12 14:09:08 +02:00
sebastianw ef613e48a4 [change] pdf for difference of picks estimated via curve_fit (to be tested) 2016-07-11 14:15:41 +02:00
sebastianw 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
sebastianw 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
marcel 55a589b525 Added Surface plots, text windows and plotting of single shots. 2016-07-07 14:25:37 +02:00
marcel 5293bb6ec7 activating vtk_tools widget, bugfix on merging rays.dat (too many linebreaks) 2016-07-06 11:40:08 +02:00
marcel 0be69de6f7 busy adding VTK tools to main UI 2016-07-05 13:59:01 +02:00
marcel 5c7123af66 added a feature to generate a survey object from a SeisArray 2016-07-05 10:38:28 +02:00
sebastianw 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
marcel 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
marcel 8714616d1b Working on input file format (SEG2/SEGY) etc. 2016-06-27 15:20:17 +02:00
marcel 253e9f4b1e Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-06-27 14:47:44 +02:00
marcel a813eb462f adding tooltips 2016-06-27 14:47:34 +02:00
sebastianw 4591b7b1d9 [bugfix] changed the order of trying to read seismic data for reassessment 2016-06-27 10:59:50 +02:00
marcel 4bbb40c8b7 window resizing pt.3 2016-06-23 12:06:59 +02:00
marcel 3bec20bd45 window resizing pt.2 2016-06-23 11:59:12 +02:00
marcel 30d911b5cc window resizing 2016-06-23 11:55:54 +02:00
marcel 47bd7384f8 bugfixes, replotting of SeisArray figure 2016-06-23 11:42:09 +02:00
marcel 0abbb79e64 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-06-21 13:29:28 +02:00
marcel 806b974011 further GUI implementations, plot of seismic array in main window 2016-06-21 13:29:10 +02:00
sebastianw 043f60dc2a [change] make Python 3 compatible calls to print 2016-06-21 09:32:37 +02:00
sebastianw 952a2ea535 make use of formerly implemented subprocess call routine 2016-06-21 09:31:26 +02:00
marcel 8393f283c7 GUI changes and updates 2016-06-17 13:14:20 +02:00
marcel f01187615b fix 2016-06-16 14:00:04 +02:00
marcel 579461f7b4 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-06-16 13:57:50 +02:00
marcel 9f71bf8082 restructured GUI and added first Seismic Array options 2016-06-16 13:57:15 +02:00
sebastianw b3acef0bcd [closes #198] comparison dialog now available from QtPyLoT 2016-06-15 14:52:42 +02:00
marcel c3d134e6ca changed GUI organization (single files for each window) 2016-06-15 12:19:11 +02:00
marcel 1ec468a586 bugfix, boxes clickable 2016-06-15 10:01:28 +02:00
sebastianw 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
sebastianw e554330154 [change] now the station selector entries are sorted for convience 2016-06-14 15:03:13 +02:00
sebastianw 3c4cbff9f3 [fix] do not try to add a Layout to a QWidget which already has one 2016-06-14 14:56:15 +02:00
sebastianw 78ebb1f8db [change] decreased verbosity 2016-06-14 14:55:18 +02:00
sebastianw 073ed658b3 [edit] changed calculation of difference pdf to include large differences also 2016-06-14 14:28:46 +02:00
marcel 4093dd0ce7 name change 2016-06-13 14:37:56 +02:00
marcel 410b3c2f55 added GUI 2016-06-13 14:37:12 +02:00
marcel d02bb369ec Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-06-13 14:35:47 +02:00
marcel 69b5b410f0 minor changes for GUI 2016-06-13 14:35:29 +02:00
sebastianw 3cee0e6df9 [change] added plots for debugging 2016-06-13 14:23:42 +02:00
sebastianw 79f0982558 [bugfix] use only vaild values for plotting 2016-06-13 11:27:16 +02:00
sebastianw 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
sebastianw a3deb2a9d3 Merged 195 into develop 2016-06-10 14:37:40 +02:00
sebastianw 467f0ae79b [new] histogram plot added; debugging in progress 2016-06-10 14:37:33 +02:00
sebastianw 280f8544e4 [prepare] starting implementation of a histogram overview plot from pick comparison dialog 2016-06-10 09:04:10 +02:00
sebastianw 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
sebastianw 14cd175297 [bugfix] it was not possible to pick the very first station manually 2016-06-10 09:01:37 +02:00
sebastianw b5d94eed61 [closes #195] implementation of comparison within GUI ready for testing 2016-06-08 15:00:47 +02:00
sebastianw b96366e321 [ref #195] implementation done; some bugs have to be fixed 2016-06-08 13:14:38 +02:00
sebastianw e6d8701411 Merged branch 195 into develop 2016-06-07 14:09:41 +02:00
sebastianw 8e09fd7c42 [refs #195] pushing GUI element implementation forward 2016-06-07 13:51:03 +02:00
marcel 661b4d11c0 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-06-07 13:39:34 +02:00
marcel f3769846ba GUI testing 2016-06-07 13:39:21 +02:00
marcel 7e33502824 GUI tests 2016-06-07 13:38:35 +02:00
sebastianw dd668b90d6 Merged branch 195 into develop 2016-06-06 14:12:18 +02:00
sebastianw 536019259e [adresses 195] preparing GUI elements for a new dialog widget for interactive comparison 2016-06-06 14:10:46 +02:00
sebastianw 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
marcel 2395c12b26 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-06-01 14:15:14 +02:00
marcel a255718f59 added script to VC 2016-06-01 14:14:57 +02:00
marcel 9c8c5bb842 - 2016-06-01 14:14:12 +02:00
marcel 02117399b5 output change 2016-06-01 14:13:15 +02:00
marcel 9996033ca5 cleanup (worker) 2016-06-01 14:12:49 +02:00
sebastianw 0d7ee9d779 [fixed] loading of automatic picks did not plot any result (fixed in this rev) 2016-06-01 08:55:43 +02:00
sebastianw 62b1a4e670 making widget reusable 2016-05-31 17:36:00 +02:00
sebastianw 73c49d8291 improved plotting performance especially for large data sets 2016-05-31 17:27:59 +02:00
sebastianw 7965239a92 [closes #124] PILOT event data can be loaded now 2016-05-31 15:53:23 +02:00
sebastianw 724032b3f6 capturing multiply stored station labels 2016-05-31 13:12:42 +02:00
marcel e341994825 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-05-31 11:15:38 +02:00
marcel 0520df5963 bugfix 2016-05-31 11:15:30 +02:00
marcel ae2fc73d89 parallelization 2016-05-31 11:14:51 +02:00
sebastianw 51aa949b56 debugging in progress 2016-05-30 17:08:35 +02:00
sebastianw 36b0aea86c [edit] fixing bugs (in progress) 2016-05-27 12:53:34 +02:00
sebastianw 618dd10c23 [task] further steps to implement pick comparison from QtPyLoT 2016-05-27 11:25:47 +02:00
sebastianw a1d29a45cb Merge branch 'develop' 2016-05-27 07:45:04 +02:00
sebastianw 163a501ae9 introducing automatic data into QtPyLoT 2016-05-27 07:43:54 +02:00
sebastianw 53614bb5b9 [fix] fixing a bug introduced accidently by merge 2016-05-27 06:49:20 +02:00
marcel 0dd69a0e19 added default value for cores 2016-05-25 14:28:25 +02:00
marcel ecf4a7ced7 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-05-25 14:24:51 +02:00
marcel 5057664b1d code changes for parallelization 2016-05-25 14:24:19 +02:00
sebastianw e46e8cb71b [reformat] corrected formatting after merge 2016-05-25 14:22:08 +02:00
sebastianw f8db6b1d9f [merge] resolved conflicts in utils due to two-sided coding 2016-05-25 14:05:25 +02:00
marcel 8ca87bc777 changes while testing parallelization of autopicker 2016-05-24 14:20:59 +02:00
marcel 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
marcel 46ccd44e16 changed to generation of reference grids 2016-05-23 14:25:24 +02:00
marcel d9844fff17 added worker 2016-05-23 14:25:06 +02:00
marcel 42cbfeb787 temporary retaining of parallel tests 2016-05-23 14:24:02 +02:00
marcel 25ca11f572 minor tweaks 2016-05-23 14:22:52 +02:00
marcel 093f750aa1 tried worker function 2016-05-23 12:06:55 +02:00
sebastianw 41b7ca6968 [task] reformatting activeSeismoPick and editing pool mapping to work properly 2016-05-23 11:53:22 +02:00
marcel 3cc77f4868 bugfixes 2016-05-23 11:24:01 +02:00
marcel 73d71a61d5 restructuring for parallization 2016-05-23 11:23:23 +02:00
marcel 1f47f3dd85 parallization of picking algorithm 2016-05-23 11:22:39 +02:00
sebastianw 392a556ac4 [restructure] Wall-E wasting time 2016-05-20 14:46:10 +02:00
sebastianw 08df7c3304 [edit] decreased unwanted verbosity 2016-05-20 10:11:40 +02:00
sebastianw 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
marcel db17cb4f8d code cleanup 2016-05-19 14:24:48 +02:00
marcel 4edd5f8e52 code cleanup 2016-05-19 11:21:24 +02:00
marcel 5f740783f0 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-05-19 11:20:47 +02:00
marcel 3138bbfa93 code cleanup and commenting 2016-05-19 11:20:37 +02:00
sebastianw 7c5aff0a27 [fix] correctly formatting the timestring now 2016-05-19 11:16:28 +02:00
sebastianw 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
sebastianw dc5d76efb8 [fix] fixing docstring problem caused by merge of conflicting files 2016-05-18 13:17:05 +02:00
sebastianw eb5f028a47 Merge branch 'develop'
Conflicts:
	pylot/core/io/phases.py
2016-05-18 13:02:51 +02:00
sebastianw c315b917b8 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-05-18 12:55:43 +02:00
sebastianw e62ff9d68c [fix] returning variables now, docstrings corrected to be able to use single quotes in docstrings 2016-05-18 12:55:04 +02:00
marcel dbaead4754 code cleanup + commenting 2016-05-18 12:00:45 +02:00
marcel 30e8f0c96a code cleanup and commenting 2016-05-17 16:19:44 +02:00
marcel 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
sebastianw 4a836fd1f7 [task] started to implement data processing step for checking corrupted GSE files 2016-05-13 14:56:42 +02:00
marcel 019b801603 code rearrange and minor processing changes 2016-05-12 14:01:18 +02:00
sebastianw f09af16120 [task] started to implement data processing step for checking corrupted GSE files 2016-05-12 10:08:29 +02:00
sebastianw a2b0854345 Merged branch develop into master 2016-05-11 14:51:30 +02:00
sebastianw 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
marcel 8a79addb4e Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-05-11 12:02:43 +02:00
sebastianw 67c11558f3 Merged branch develop into master 2016-05-11 12:02:37 +02:00
marcel 46c152b7a1 improved speed on writing to file (write instead of writelines) 2016-05-11 12:02:09 +02:00
sebastianw 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
sebastianw 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
sebastianw 63ac0107d0 [edit] implemented a plotting method for pdf dictionaries 2016-05-11 06:01:26 +02:00
sebastianw 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
sebastianw 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
sebastianw 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
marcel d8a764db31 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-05-04 10:22:06 +02:00
marcel f58c5a5f9d merge correction 2016-05-04 10:21:39 +02:00
sebastianw fd27a43110 fixing import problems 2016-05-03 15:09:51 +02:00
sebastianw 41991c5d81 [edit] further restructuring and bugfixing 2016-05-03 13:54:59 +02:00
sebastianw a82c1d39c6 [fix] fixing obvious problems in advance 2016-05-03 09:35:31 +02:00
sebastianw ecb3670aeb Merge branch 'master' into develop
Conflicts:
	scripts/pylot-reasses-pilot-event.py
2016-05-03 08:58:33 +02:00
sebastianw 210d39882d further development on the reassessment routines for PILOT data 2016-05-03 08:46:13 +02:00
sebastianw ae0c08eeb2 Merge branch 'master' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot 2016-05-02 14:10:41 +02:00
sebastianw 8cb4f11bf8 [edit] implementing reassessment functions 2016-05-02 14:10:11 +02:00
marcel ec42e1bd15 added first version of fmtomo_parallel script 2016-05-02 12:08:58 +02:00
marcel dbe47690eb Merged branch develop into master 2016-05-02 11:31:17 +02:00
marcel 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
sebastianw 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
sebastianw 72fa9e8feb [install] did some work on the implementation of an installation script 2016-04-29 11:50:28 +02:00
sebastianw 28fc226750 [update] update installation script in order to distribute current version 2016-04-28 15:20:46 +02:00
sebastianw df44979337 [reorganize] some reorganization done to hand program to partner 2016-04-28 14:18:42 +02:00
sebastianw 37f9292c39 renamed class method 2016-04-28 14:03:32 +02:00
sebastianw c489fad6ba [bugfix] comparison should not through an KeyError due to missing picks 2016-04-12 14:50:21 +02:00
sebastianw 416f4c7aa7 [bugfix] special method __nonzero__ should always return type bool 2016-04-12 14:48:57 +02:00
sebastianw 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
sebastianw 4a9c02e1d1 [closes 195] in principle comparing automatic and manual picks works 2016-04-12 04:55:04 +02:00
sebastianw 9359338e81 [refs #195] make autoPyLoT export automatic picks in QuakeML format 2016-04-11 13:59:32 +02:00
sebastianw 9519372247 [bugfix] autopick accidently interchanged latest and earliest possible pick 2016-04-11 13:57:59 +02:00
sebastianw 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
sebastianw 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
sebastianw 2a8729c39b [refs #195] changed some default parameters for plotting the histograms 2016-04-08 14:35:20 +02:00
sebastianw f15e27e81d [refs #195] hitsogram plots implemented for expectation and standard deviation 2016-04-07 16:29:29 +02:00
sebastianw b5345bb5d3 [refs #195] implementation of histogram plots 2016-04-07 15:47:11 +02:00
sebastianw 27e334609c [refs #195] plotting method for Comparison object implemented 2016-04-06 11:27:09 +02:00
sebastianw 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
sebastianw a475b366d4 [adresses #195] comparison dictionaries can now be compiled from QuakeML files 2016-03-31 14:29:29 +02:00
sebastianw 5fcaddb028 [adresses #195] started to implement comparison function 2016-03-31 09:00:49 +02:00
sebastianw 1fecec1696 [adresses #195] read_data now working correctly on QuakeML data 2016-03-31 08:50:09 +02:00
sebastianw bd2bad7367 [adresses #195] task related new function introduced 2016-03-30 15:25:06 +02:00
sebastianw 76788c0223 [refs #195] initial import of new interfaces module 2016-03-30 11:45:49 +02:00
sebastianw 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
sebastianw d7cfd0d176 WALL-E: Einmal aufräumen und zurück! 2016-03-30 08:14:58 +02:00
sebastianw a2640e3126 reformatting code 2016-03-30 07:00:31 +02:00
sebastianw 320b7b7219 [bugfix] pick blocker was not reset after phase was picked 2016-03-29 14:42:51 +02:00
sebastianw 2d66248cf9 [fixes #172] now also in overview all horizontals are plotted 2016-03-29 14:06:57 +02:00
sebastianw 4409a9c3ce [fixes #179] plotting of picks preserved after filtering 2016-03-29 12:09:26 +02:00
sebastianw 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
sebastianw 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
sebastianw 14048d6784 [edit] reformat string only if certain prefix is found 2016-03-29 11:00:31 +02:00
sebastianw 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
sebastianw e164b1f168 Merged branch develop into 190 2016-03-29 08:47:20 +02:00
sebastianw 040c21dc13 [adresses #190] read information on the picker if available 2016-03-29 08:47:03 +02:00
sebastianw 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
sebastianw 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
sebastianw a1c79b554a Merge branch '174' into develop 2016-03-25 05:08:09 +01:00
sebastianw 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
sebastianw c1c2aa4b7c [bugfix] value has to be returned in either case 2016-03-23 12:01:46 +01:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 7225da87db [edit] reformatted code
Code indentation and PEP 8 violations automatically reduced with IDE tool
2016-03-22 08:42:09 +01:00
sebastianw 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
sebastianw d954c3bbe8 [edit] restructuring autopicking module
renamed several function and classes, moved script files to scripts
2016-03-21 11:14:16 +01:00
sebastianw b8d680f54f 189 Channels shown in wrong order. 2016-03-18 15:35:12 +01:00
sebastianw 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
sebastianw a5fe838514 added a str representation for the pdf class 2016-03-09 06:22:26 +01:00
sebastianw f3467221cc finished implementation of summation of two independent variables represented by a pdf 2016-03-09 06:21:48 +01:00
sebastianw 2de79eac77 [change] moved recursive function for broadcasting pdf in a new shape into the class' body 2016-03-09 06:19:41 +01:00
sebastianw c651b5ca78 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-03-08 20:36:12 +01:00
sebastianw 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
sebastianw 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
sebastianw 9f7f00314a [closes #187] pdf methods for some values like expectation and plotting ready 2016-03-04 14:13:44 +01:00
sebastianw e6b5848f36 [add] untested implementations of standard deviation and probability value determination methods to class ProbabilityDensityFunction 2016-03-04 06:27:11 +01:00
sebastianw 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
sebastianw 4606f84809 [new] implementing comparison methods into pdf class 2016-03-03 15:14:17 +01:00
sebastianw 18785edf68 [fixes #186] filteroptions are only parsed if they are not NoneType 2016-03-03 14:02:49 +01:00
sebastianw 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
sebastianw c2168dbef3 [fixes #185] filtering of waveforms now conserved for picking 2016-03-03 11:12:27 +01:00
sebastianw 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
sebastianw 848d11270b [fixes #181] now picking on horizontal components 1, 2 and N,E is possible 2016-03-02 13:37:40 +01:00
sebastianw 827a0da210 [fix] imports to obspy's read_events changed due to deprecated naming of function readEvents 2016-03-02 13:36:18 +01:00
sebastianw c14650d33c [change] changed filter settings for local seismic data 2016-03-02 13:34:24 +01:00
sebastianw c09a3271f9 make use of new option to getSNR 2016-03-02 11:08:14 +01:00
sebastianw 8c7a2af2db [fix] do not try to proceed if no picks are available 2016-03-02 11:07:32 +01:00
sebastianw 5e26519d66 [fix] avoid usage of hardly programmed indices 2016-03-02 11:06:31 +01:00
sebastianw ddc682de95 [bugfix] selected file filter should be evaluated 2016-03-02 11:04:11 +01:00
sebastianw 96ea0d7ac3 improved readability of formula 2016-03-01 12:26:56 +01:00
sebastianw e7b454bae8 [edit] just style related changes 2016-02-16 08:47:42 +01:00
sebastianw 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
sebastianw 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
sebastianw d5e16d64da [edit] implemented method to derive limits for the special methods for addition and subtraction 2016-02-15 20:15:54 +01:00
sebastianw 2956f3b733 [edit] subclassing has been substituted by classmethod fromPick opportunity for creating a PDF object 2016-02-15 20:15:54 +01:00
sebastianw e7a5e388f6 [edit] implementation of probability density function interface ready for testing 2016-02-15 20:15:54 +01:00
sebastianw 303a5f9cf0 [edit] probability density function superclass implemented due to the different character of these functions 2016-02-15 20:15:54 +01:00
sebastianw 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
sebastianw 5170a0b1c6 [new] implementation of a probability density function representation of the pick (untested) 2016-02-01 06:13:17 +01:00
sebastianw 70f2761003 [reformat] reformatted indentation 2016-02-01 06:11:25 +01:00
sebastianw 3cbb6138e0 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2016-01-29 07:24:45 +01:00
sebastianw 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
sebastianw 44f19f02d8 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-12-10 13:17:23 +01:00
sebastianw 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
sebastianw 79829706be Merge commit 'a9d5f74a032bfa63ac167f5cc4c1d8772126a3ff' into develop
Conflicts:
	pylot/core/util/utils.py
2015-12-03 15:28:34 +01:00
sebastianw 0d8324a4ae Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-12-03 15:25:24 +01:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 5f8569c7d9 [bugfix] now catching all cases 2015-11-30 09:53:55 +01:00
sebastianw 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
sebastianw 3f91fddd3e [new] added attribute autopicks to and modified corresponding handling methods in class MainWindow 2015-11-30 09:50:47 +01:00
sebastianw ae21c9a149 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-26 05:18:10 +01:00
sebastianw 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
sebastianw f1cee0cbfd [fixes #168] now any TypeError is handled by try ... except clause 2015-11-24 11:30:58 +01:00
sebastianw 7a9c44198f [bugfix] currently set data structure now selected in QComboBox widget 2015-11-24 11:05:19 +01:00
sebastianw 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
sebastianw cffca858aa Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-23 15:07:50 +01:00
sebastianw 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
sebastianw 4fdcf1cf60 [bugsearch] trying to fix UnpicklingError by clearing GUI element containing attributes 2015-11-23 12:11:04 +01:00
sebastianw 1f1d0aa118 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-23 11:41:14 +01:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw ed17272999 [bugfix] attribute was unset before using property setter 2015-11-14 11:46:46 +01:00
sebastianw bb3e068232 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-13 14:05:39 +01:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 8ae692db70 [new] added a locate button to the toolbar in the GUI (not working yet) 2015-11-09 08:53:26 +01:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 5ee85d89a3 Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop 2015-11-05 09:17:29 +01:00
sebastianw afb7a189ad [new] preparing new modules for location routines planned to be implemented 2015-11-05 09:17:20 +01:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 2201c3ea4d [modified] restructured filterWaveformData method in order to make the GUI more intuitive 2015-10-30 08:39:51 +01:00
sebastianw a2047aa37b [disabled] P and S buttons preliminary removed due to unclear functionality 2015-10-30 08:37:00 +01:00
sebastianw 809b6bea61 make use of the new __nonzero__ method 2015-10-30 08:33:05 +01:00
sebastianw 0cd427486c [modified] updateUi method for the FilterOptionsDlg has been restructured and simplified 2015-10-30 06:16:00 +01:00
sebastianw 9b1f7541fd [added] isSorted function for iterables 2015-10-30 06:12:23 +01:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 0fa701a878 general code clean-up 2015-10-19 05:32:10 +02:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 130dc8db4e [bugfix] wrong functions import fixed 2015-09-22 10:31:37 +02:00
sebastianw 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
sebastianw 34d31a1aa8 Merge branch 'develop' 2015-09-18 09:54:43 +02:00
sebastianw ff2b50f615 made some changes to make the code more idiomatic and renamed method convertPicks4PyLoT to updatePicks 2015-09-18 09:54:29 +02:00
sebastianw 2b42583999 debugged some code fragments while trying to solve the load event data problem 2015-09-17 17:55:40 +02:00
sebastianw 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
sebastianw f5fa4f4faf Python 3 compatibility 2015-09-07 10:03:12 +02:00
sebastianw efd8f1f0c6 Merge branch 'develop' of ariadne:/data/git/pylot into 176 2015-09-05 09:46:05 +02:00
sebastianw e9c4987ca0 Merge branch 'develop' of ariadne:/data/git/pylot into develop 2015-09-05 09:41:52 +02:00
sebastianw 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
sebastianw 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
sebastianw cc0b1e0a5b 176 open event failure 2015-09-03 13:21:46 +02:00
sebastianw 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
sebastianw c940b092d0 Merge branch 'master' into develop 2015-08-31 13:47:22 +02:00
sebastianw 7588ad3c5b resolved conflicts 2015-08-31 13:45:25 +02:00
sebastianw 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
sebastianw 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
sebastianw 497ca39c91 reformatted data.py to meet coding conventions 2015-08-28 10:15:28 +02:00
sebastianw 038caf4d54 reformat code 2015-08-28 09:05:50 +02:00
sebastianw 6597c881a6 reformatting code 2015-08-27 15:42:51 +02:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 5d970fde1e [closes #164] test 2015-08-18 11:28:38 +02:00
sebastianw b1736358b7 [closes #164] test 2015-08-18 11:23:04 +02:00
sebastianw 70d9389f4b [closes #164] test 2015-08-18 11:13:16 +02:00
sebastianw f844f7b316 [closes #164] test 2015-08-18 11:09:34 +02:00
sebastianw 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
sebastianw d9cb3517cc [closes #160] the picking window has now a home button for easy reset of zoom 2015-07-21 08:10:15 +02:00
sebastianw 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
sebastianw 0b02e8c213 Merge branch 'export-and-save-picks' into develop 2015-07-18 16:13:37 +02:00
sebastianw 0b6fbd22c5 reformatting code to meet coding conventions 2015-07-18 16:13:11 +02:00
sebastianw f4f744e22c export and save picks implemented successfully 2015-07-18 16:11:20 +02:00
sebastianw fc86179c39 [closes #145], [addresses #146] this commit introduces the handling of picks as obspy event objects 2015-07-18 16:09:50 +02:00
sebastianw 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
sebastianw 2115864d5c revert RELEASE-VERSION manually 2015-07-14 08:32:05 +02:00
sebastianw 1e58a86110 [bugfix] forgot to commit changed imports due to class naming changes in [49bf0ecd3c] 2015-07-14 08:10:49 +02:00
sebastianw 49bf0ecd3c make the naming of the Thread self explaining 2015-07-14 08:08:02 +02:00
sebastianw 092852d745 fix import error on debian machine 2015-07-13 15:15:37 +02:00
sebastianw 8802267628 fix zooming issue after S Pick is set 2015-07-13 10:03:43 +02:00
sebastianw e31890d8fc export and save picks to hard drive 2015-07-13 09:24:16 +02:00
sebastianw 108d6c75d6 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-07-13 06:41:02 +02:00
sebastianw da22dcce90 renaming run_autopicking to autopickstation 2015-07-13 06:40:51 +02:00
sebastianw 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
sebastianw 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
sebastianw ae563454af Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-07-10 09:23:05 +02:00
sebastianw 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
sebastianw f704d8b258 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-07-09 11:37:11 +02:00
sebastianw 398a25f902 non-working commit of autoPyLoT functionality in overview window 2015-07-09 11:37:03 +02:00
sebastianw 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
sebastianw 1bee360bbb use get methods rather than directly access attributes 2015-07-08 15:14:05 +02:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 05d38f583f corrected names for the output format to write event information on disk 2015-07-08 14:57:22 +02:00
sebastianw 173724ee5a make use of the __version__ variable other than updating the RELEASE_VERSION file 2015-07-07 14:27:29 +02:00
sebastianw 3320cd64a4 switching components enabled in overview window 2015-07-07 14:21:11 +02:00
sebastianw 6078338757 added a splash screen 2015-07-07 12:14:18 +02:00
sebastianw cf944358dd removed unnecessary apply button 2015-07-07 11:23:29 +02:00
sebastianw ca1b41511c draw picks from main window to the picking window 2015-07-07 11:23:01 +02:00
sebastianw d53a3dad04 make the test work again 2015-07-07 11:22:19 +02:00
sebastianw 960f9ca71a use only the high resolution icon 2015-07-07 11:21:06 +02:00
sebastianw b8c92ed551 preparing to parse the picks to the picking window 2015-07-07 11:02:46 +02:00
sebastianw b8aabfce99 implement changes proposed by deprecation warning from matplotlib 2015-07-07 10:49:42 +02:00
sebastianw a8fe4b7419 give variable declaration a sense 2015-07-07 10:47:55 +02:00
sebastianw 5507a22865 actually draw picks into the overview window 2015-07-07 10:46:27 +02:00
sebastianw 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
sebastianw 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
sebastianw dd8766277a last four commits might not work without the imports coming with this one 2015-07-07 10:39:51 +02:00
sebastianw 5d2900510e added methods for drawing picks to the main window 2015-07-07 10:39:01 +02:00
sebastianw 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
sebastianw 4990e33d27 added utility functions for pick handling 2015-07-07 10:33:14 +02:00
sebastianw 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
sebastianw 29de650b4e reformatting code to avoid mixing up whitespace and tabulator characters 2015-07-06 10:57:34 +02:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw a5c1f68f03 [bugfix] draw all picked phases not only the actually picked one 2015-07-02 10:37:31 +02:00
sebastianw 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
sebastianw 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
sebastianw a46b0db583 new method to return the traceID for given channel names 2015-07-02 10:32:35 +02:00
sebastianw f77ba344c3 make the implementation of the picking dialog widget initialization method better readable 2015-07-02 10:31:39 +02:00
sebastianw 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
sebastianw 1af88fbe85 default values changed to the defaults from autopylot 2015-06-29 16:23:46 +02:00
sebastianw 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
sebastianw 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
sebastianw 0fcd6fab9d clean-up to meet coding conventions 2015-06-29 16:14:11 +02:00
sebastianw a46fb88282 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-06-28 19:35:08 +02:00
sebastianw 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
sebastianw e542aa70d9 doctesting added without having doctests inserted (pending) 2015-06-25 10:36:45 +02:00
sebastianw 4292197818 [bugfix] switching between zooming types now does not cause weird mouse event behavior anymore 2015-06-25 10:35:58 +02:00
sebastianw 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
sebastianw a383f8c769 [bugfix] labels are now drawn correctly after picking an onset 2015-06-25 10:31:55 +02:00
sebastianw 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
sebastianw 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
sebastianw b42f88605b the main application window now opens in fullscreen mode 2015-06-25 10:25:08 +02:00
sebastianw 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
sebastianw 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
sebastianw 311b3f1de1 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-06-24 14:33:30 +02:00
sebastianw 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
sebastianw 0d3fb8be93 [bugfix] false indentation corrected (broken program logic fixed) 2015-06-24 14:31:43 +02:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 2c9ad97a4a avoid weird behavior of the picking window 2015-06-23 13:26:37 +02:00
sebastianw 37e50b12e6 use more reliable hard coded sample phase names 2015-06-23 13:25:27 +02:00
sebastianw 03219e69d6 substract the mean of the waveform data within the noise window prior to picking 2015-06-23 13:24:47 +02:00
sebastianw dec3e733a2 use settings and defaults rather than hard coded parameters 2015-06-23 13:23:31 +02:00
sebastianw ca4c5edb18 make the code more readable 2015-06-23 13:22:30 +02:00
sebastianw b1990e6e1c filter waveform with default parameter for selected phase prior to initial phase identification 2015-06-23 13:22:01 +02:00
sebastianw 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
sebastianw f1c7f00193 new local variable reused in plotting command for noise level positioning while plotting 2015-06-23 13:12:20 +02:00
sebastianw c1818622de [bugfix] obsolete plotting command causing the plot to appear differently than desired 2015-06-23 13:09:03 +02:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 231a8b0244 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-06-23 08:49:34 +02:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 30bc8ccd82 reformatting code to avoid indentation inconsistencies 2015-06-22 11:06:53 +02:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 883fdf6bf5 just cleaning up the code to meet coding conventions 2015-06-12 09:36:52 +02:00
sebastianw c5ce958a41 just cleaning up the code to meet coding conventions 2015-06-12 09:31:58 +02:00
sebastianw c5da8fd994 changed usage signature of some function from module utils and the corresponding calls 2015-06-11 10:12:50 +02:00
sebastianw 546e919dc9 code clean-up following several conventions 2015-06-11 10:07:21 +02:00
sebastianw 3d8bea8f7e deleted obsolete module 2015-06-11 10:02:44 +02:00
sebastianw 63849177be package active will provide capabilities for processing reflection seismic surveys automatically 2015-06-11 05:36:56 +02:00
sebastianw 77b7d26902 selectable phases should be edited elsewhere not in the combobox itself 2015-06-11 05:34:07 +02:00
sebastianw e6e38dbb95 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-06-10 15:49:15 +02:00
sebastianw 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
sebastianw 864cb112bc usage changed due to release [1d70a23] 2015-06-10 15:47:40 +02:00
sebastianw b3ea4229a4 implement opportunity to apply different kind of event data to the data object 2015-06-10 15:46:37 +02:00
sebastianw 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
sebastianw ba7ab07473 catch non string type input for filename construction 2015-06-10 15:43:43 +02:00
sebastianw 3cb73fb948 alternative for storing event data (discussable) 2015-06-10 15:41:37 +02:00
sebastianw 0721e225a7 never return values for without a meaning 2015-06-10 15:40:36 +02:00
sebastianw e6b0c2b470 zero xings are now be derived from demeaned data 2015-06-10 15:37:58 +02:00
sebastianw 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
sebastianw 0c76c496fb Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-05-28 12:14:29 +02:00
sebastianw c86adb4e6e preparing storing the picks and making the GUI work more intuitively 2015-05-28 12:14:16 +02:00
sebastianw 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
sebastianw 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
sebastianw b9ce5b4f41 try to read lists of files not wildcards 2015-05-20 11:29:55 +02:00
sebastianw 6dc0b206e9 changed string representation of data object 2015-05-20 11:20:37 +02:00
sebastianw 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
sebastianw 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
sebastianw 9a4677c794 bugfix: deleted default value for suffix 2015-05-20 10:33:59 +02:00
sebastianw 5f8b6de1ec bugfix: method hasParam did not return any value 2015-05-20 10:23:47 +02:00
sebastianw 82540c50af changed argument parser and glob call to search directory 2015-05-20 10:01:19 +02:00
sebastianw b46f085a74 added option to process single event 2015-05-20 09:59:06 +02:00
sebastianw 4994168247 number of arguments changed, filenames not necessary for starting 2015-05-20 09:43:32 +02:00
sebastianw 5badf2ba34 implementation of different data structure type handling 2015-05-20 09:38:25 +02:00
sebastianw 56a0563709 implementation of PilotDataStructure as subclass to GenericDataStructure 2015-05-18 13:12:12 +02:00
sebastianw 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
sebastianw 7cab62b97e release version committed to avoid conflicting files while update 2015-05-04 12:05:14 +02:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 8bf9b55288 task: create development frame for autoPyLoT 2015-04-22 12:46:24 +02:00
sebastianw ca8081b7aa debugging: return the exception text whenever an error occurs - makes debugging much easier 2015-04-22 12:38:10 +02:00
sebastianw 58aad840c8 task: read also old autoPILOT parameter files 2015-04-22 12:22:34 +02:00
sebastianw 4b641f1b3c reversed polarity in picking mode 2015-04-21 08:21:59 +02:00
sebastianw 463535f01a improved flexibility of the GUI actions (Matplotlib) implementation 2015-04-21 08:16:32 +02:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw c15716388d new zoom icon added 2015-04-07 15:00:53 +02:00
sebastianw d21798f633 test pickingdialog and prepare figures for the poster 2015-04-07 15:00:00 +02:00
sebastianw 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
sebastianw b243be8075 task: implementation of picking (work in progress) 2015-04-02 18:48:06 +02:00
sebastianw e35d6b9371 bugfix: modified icon management and corrected usage of references 2015-04-02 18:36:21 +02:00
sebastianw 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
sebastianw 5b52f718fe mutable default arguments may cause problems as unexpected default behavior 2015-03-30 06:04:24 +02:00
sebastianw 814906ef65 module restructured: beginning with general utils followed by utils concerning obspy event creation 2015-03-30 05:55:54 +02:00
sebastianw 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
sebastianw ae57381733 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2015-03-19 15:38:13 +01:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 54916fa421 Merge branch 'filter-handling' into develop
Conflicts:
	pylot/core/util/widgets.py
2015-03-06 09:14:51 +01:00
sebastianw 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
sebastianw b23c9d1104 initialized new widget and window for picking (work in progress) 2015-03-01 19:59:41 +01:00
sebastianw 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
sebastianw c5f9842c37 added a toolbar (work in progress) 2015-02-23 14:47:38 +01:00
sebastianw d9b685eebb display more detailed status messages 2015-02-23 14:46:18 +01:00
sebastianw cb114dc696 bugfix: displayed status message has not been updated properly 2015-02-23 14:45:47 +01:00
sebastianw 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
sebastianw cc002c9460 bugfix: wrong return type expectation corrected 2015-02-23 14:35:00 +01:00
sebastianw 4184fcffdc make waveform filtering work (in progress) 2015-02-20 08:38:26 +01:00
sebastianw 4344a7c8a6 unnecessary code overhead; return type is clear anyway (different return type for PyQt!!!) 2015-02-20 08:37:21 +01:00
sebastianw b10d8606cc at least print error messages to screen (helps debugging ^^) 2015-02-20 08:36:20 +01:00
sebastianw 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
sebastianw 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
sebastianw 5496b2deaa bugfix: use get and set methods instead of directly changes values of attributes 2015-02-20 08:28:24 +01:00
sebastianw 757a6d784b better use call to the classes method then returning a value 2015-02-18 15:35:54 +01:00
sebastianw cdb8af56b3 bugfix: avoid empty parts of the data display 2015-02-18 15:35:12 +01:00
sebastianw abbe9cb2c4 bugfix: missed to call get method before trying to fetch an item 2015-02-18 15:34:21 +01:00
sebastianw 693362a278 normalize waveform data to avoid overlapping 2015-02-18 15:32:37 +01:00
sebastianw dd360bd9cc code clean up 2015-02-18 15:32:01 +01:00
sebastianw 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
sebastianw 82ac85d743 bugfix: return value of QFileDialog method calls must be handled carefully 2015-02-18 15:30:24 +01:00
sebastianw 5c9f17bce3 bugfix: attribute was of wrong kind for which the successive call raised an exception 2015-02-18 15:27:50 +01:00
sebastianw d15441900e bugfixes in order to make the GUI work 2015-02-17 13:17:01 +01:00
sebastianw 091ab23b90 version string changed for testing reasons 2015-02-16 10:32:19 +01:00
sebastianw 8acd84976e optimization of the codes outer appearance 2015-02-16 10:31:25 +01:00
sebastianw fa6db084b8 Data object restructured for convenience; fixed problems in the class logic; restructured imports 2015-02-16 10:30:35 +01:00
sebastianw 2b8c60a3d4 now only Signal is imported from PySide avoiding overhead by importing SIGNAL additionally 2015-02-16 10:28:28 +01:00
sebastianw d477467b02 method renamed to avoid misunderstanding 2015-02-16 10:27:32 +01:00
sebastianw 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
sebastianw 0e73f21bda imports restructured and optimized 2015-02-16 10:24:17 +01:00
sebastianw be0bf20382 cross-correlation analysis 2015-02-16 07:01:41 +01:00
sebastianw d32b401508 changed due to testing 2015-02-13 11:36:44 +01:00
sebastianw 759697add8 problem with the creation of a valid resource identifier fixed (still problematic, see #145) 2015-02-13 11:36:09 +01:00
sebastianw 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
sebastianw 1b86d3bfa4 nothing changed 2015-02-13 11:32:00 +01:00
sebastianw cdd24e23fb added missing method for GenericDataStructure 2015-02-13 11:31:20 +01:00
sebastianw e66e0701a4 catching a problem with sloppy formatted GSE data 2015-02-13 11:30:45 +01:00
sebastianw 47f0fcb030 corrected wrong logic of the routine 2015-02-13 11:29:32 +01:00
sebastianw 6a59bee73d the call to the parents method makes no sense - deleted; typo corrected 2015-02-13 11:28:58 +01:00
sebastianw 3508d00c28 catch case where no filename for the actual opened event is defined 2015-02-13 11:24:27 +01:00
sebastianw 2b5e8216ba new method the get the latest event that has been opened see also [7e3bcef] 2015-02-13 11:23:01 +01:00
sebastianw 922cb6a807 recursive call to openWaveFormData deleted 2015-02-13 11:20:29 +01:00
sebastianw 81ce161744 automatic reformatting of the code 2015-02-13 11:19:10 +01:00
sebastianw 30503185e4 initialize all attributes that might be used in startup methods (bugfix) 2015-02-13 11:17:18 +01:00
sebastianw 7e3bcefd19 only store the last 5 events 2015-02-13 11:16:20 +01:00
sebastianw 1c40cb3852 bugfix: wrong call to a method 2015-02-13 11:15:48 +01:00
sebastianw 35e477c13f by default the last opened event is loaded on restart 2015-02-13 11:14:17 +01:00
sebastianw 903e87e1e1 usage of DATASTRUCTURE modified 2015-02-13 11:13:21 +01:00
sebastianw b07f1b5b78 picks.py deleted new classes are not needed; ~obspy.core.event.Pick object used instead 2015-02-11 13:11:12 +01:00
sebastianw bec1ee1716 new function added: createAmplitude - routine for convenient ~obspy.core.event.Amplitude object creation 2015-02-11 08:19:13 +01:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw d3199a5798 implementation of reading and plotting seismograms (work in progress) 2015-02-07 09:05:08 +01:00
sebastianw 7092f6e8b5 the MainWindow now should give the right component in the title 2015-02-07 09:03:03 +01:00
sebastianw bc87c12cfa new attribute dispComponent added to the MainWindow class to control the displayed component 2015-02-04 14:50:49 +01:00
sebastianw 401c09d0b4 added new methods to the MPLWidget class to control the axes labels 2015-02-04 14:49:49 +01:00
sebastianw 36675d4a92 code clean up 2015-01-29 08:53:01 +01:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 8eb69822b1 re-organization of the MainWindow methods (for convenience only) 2015-01-29 08:41:38 +01:00
sebastianw a8330b6d91 PilotDataStructure's method expandDataPath return the actual datapath as SeiscompDataStructure's does 2015-01-27 05:22:06 +01:00
sebastianw 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
sebastianw 1accc92421 Merge branch 'develop' 2015-01-27 05:01:45 +01:00
sebastianw 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
sebastianw 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
sebastianw 23fa136dc5 get data from the NewEvtDlg dialog for event creation 2015-01-23 10:21:34 +01:00
sebastianw 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
sebastianw ef50c3d4d8 bugfix: single element tuple declaration was wrong 2015-01-21 16:07:43 +01:00
sebastianw 538c2e2dff Merge branch 'add-save' 2015-01-20 14:04:12 +01:00
sebastianw 19eaa171fd Merge branch 'master' into devGUI 2015-01-20 14:03:22 +01:00
sebastianw b4c19acd99 release version change due to testing 2015-01-20 14:02:56 +01:00
sebastianw 45fb1935ef added FormatError to convenience imports of package util 2015-01-20 14:02:29 +01:00
sebastianw 540891f3d7 preferences panel works for me; settings saved properly 2015-01-20 13:58:23 +01:00
sebastianw 4769b447a8 added help menu to the menubar 2015-01-20 13:56:15 +01:00
sebastianw ff98371a04 add recent events to file menu 2015-01-20 13:55:15 +01:00
sebastianw 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
sebastianw 9bbbe89b36 add recent events to file menu 2015-01-20 13:46:16 +01:00
sebastianw 2961867c10 insert assert statement in Picker.py 2014-12-19 10:50:50 +01:00
sebastianw 1d61b4936c add save data method 2014-12-18 13:49:16 +01:00
sebastianw 6be85efa1f Merge branch 'develop' 2014-12-18 13:36:05 +01:00
sebastianw f5ab88909f Merge branch 'add-save' into develop 2014-12-18 13:35:23 +01:00
sebastianw d46d5c2bb0 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2014-12-17 12:17:02 +01:00
sebastianw f0d60de745 add save data method 2014-12-17 12:16:32 +01:00
sebastianw 92ed582c01 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into add-save 2014-12-17 12:01:07 +01:00
sebastianw c5e55fd867 Merge branch 'installation'
Conflicts:
	pylot/RELEASE-VERSION
2014-12-17 08:00:07 +01:00
sebastianw e6301af2bb Merge branch 'devFilterWidget' into develop 2014-12-17 07:53:32 +01:00
sebastianw 9d1a78222e PropertiesDlg changed: retrieve additional information about the user, use QSettings to store the derived parameters 2014-12-17 07:52:55 +01:00
sebastianw 3fe1e3906e OUTPUTFORMATS in defaults defined; manage available formats just from here 2014-12-17 06:37:36 +01:00
sebastianw 8213cdc575 PropertiesDlg added to the MainWindow (not tested yet) 2014-12-17 06:33:34 +01:00
sebastianw 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
sebastianw 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
sebastianw 3c9865c767 add station selection 2014-12-11 09:43:59 +01:00
sebastianw d665e47d02 get values for filter parameters from widget 2014-12-09 05:25:43 +01:00
sebastianw 9e7f20a9fb create a working MainWindow 2014-12-08 11:38:24 +01:00
sebastianw 223c992f20 Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop 2014-12-08 11:02:04 +01:00
sebastianw 4bb75d17fb remove variables which are attributes of classes 2014-12-08 11:01:47 +01:00
sebastianw ef8bd6572e create a working MainWindow 2014-12-08 10:26:14 +01:00
sebastianw 04e28943d5 remove variables which are attributes of classes 2014-12-08 08:53:58 +01:00
sebastianw 32eee12f25 using the new implementation of the AutoPicking object 2014-12-08 08:48:33 +01:00
sebastianw 752811c8fd implemented method getTimeArray in the same fashion as used in run_makeCF.py 2014-12-08 08:45:43 +01:00
sebastianw 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
sebastianw 70a700101b Merge branch 'devGUI' into develop 2014-12-05 10:27:42 +01:00
sebastianw 5650f7bfc7 started to implement read capability for matlab binary phases files (AUTO- and PHASES.mat) 2014-12-05 10:26:37 +01:00
sebastianw 9603f7127c imports corrected; menu definition changed 2014-12-04 05:13:32 +01:00
sebastianw 609005433a added verbose output functionality 2014-12-02 12:07:02 +01:00
sebastianw e6ac337466 testing GUI; execution updates RELEASE-VERSION 2014-12-01 12:46:04 +01:00
sebastianw 553bb9990b loading data by initialization of a Data object (not working yet) 2014-12-01 12:45:20 +01:00
sebastianw 41684cd282 filterOptions has now a buttonBox 2014-12-01 12:44:25 +01:00
sebastianw 3e559f61da fnConstructor now works on eventIDs also 2014-12-01 12:43:49 +01:00
sebastianw d7a4692afc tried to get filter options popup working (not working yet) 2014-12-01 12:42:50 +01:00
sebastianw ec1cc26b8c new method okToContinue written in order to prevent accidental dataloss 2014-12-01 12:41:56 +01:00
sebastianw dc43a3520d do not "save" actions as Attributes of the MainWindow 2014-12-01 12:39:56 +01:00
sebastianw 4acf634f8d loadData changed; now uses information from the sender to evaluate the fname to read 2014-12-01 12:37:52 +01:00
sebastianw 9d38ed9771 new QSettings added 2014-12-01 12:36:23 +01:00
sebastianw 746b073572 changed imports as some were not necessary and others are now mandatory 2014-12-01 12:34:44 +01:00
sebastianw fc3e1a613e added quit functionality 2014-12-01 08:40:35 +01:00
sebastianw 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
sebastianw d405e9e6f9 debug GUI 2014-11-28 11:15:49 +01:00
sebastianw 9dc57e3977 icon for P and S phase selection added 2014-11-28 09:19:16 +01:00
sebastianw 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
sebastianw 1702051d8f Merge commit '8ed281ae2d9e45c842d93da99f641842cdfb8bb4' into installation 2014-11-27 10:59:55 +01:00
sebastianw d47623ed65 implementation of standard icons corrected 2014-11-27 10:59:34 +01:00
sebastianw 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
sebastianw 094213bd21 method createAction implemented in order to create menu entries 2014-11-27 10:13:17 +01:00
sebastianw 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
sebastianw 4b7bfc6aa9 make GUI working even without actual data 2014-11-26 08:48:42 +01:00
sebastianw 4bb03d6418 all picks classes are now collected in the same module 2014-11-26 08:47:21 +01:00
sebastianw 9ff18c7425 changes made in order to get the GUI working for the first time 2014-11-26 08:46:16 +01:00
sebastianw 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
sebastianw 8cb638e5bc indentation fixed 2014-11-25 05:04:47 +01:00
sebastianw 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
sebastianw 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
sebastianw 9958c86287 fixed wrong usage of attribute wfdata 2014-11-21 10:06:04 +01:00
sebastianw 25921e3718 started to improve documentation in read/data 2014-11-21 10:05:27 +01:00
sebastianw 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
sebastianw 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
sebastianw c40aec192c test modules added and modified (not working yet) 2014-11-13 11:30:19 +01:00
sebastianw 8c66f1823a cleaning up main window for first test runs 2014-11-13 11:29:42 +01:00
sebastianw 86803cdff0 debugging UI problems to get the main application running 2014-11-06 15:07:05 +01:00
sebastianw 013c948b33 fix convenience import problems 2014-11-06 15:05:56 +01:00
sebastianw 7fd191dcc6 component testing scripts added 2014-10-30 13:38:41 +01:00
sebastianw 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
sebastianw bff84ede81 moved QtPyLoT.py (main program) to the base directory 2014-10-30 13:36:19 +01:00
sebastianw 3b613d8330 see ticket #129 (future changes very likely) 2014-10-30 08:13:05 +01:00
sebastianw da18039c87 line added 2014-10-27 12:19:48 +01:00
sebastianw 224c6b625c FilterOptionsDialog processes parameter filter option of type FilterOption 2014-10-27 12:19:04 +01:00
sebastianw 185b308166 adding new package containing picking relevant data types 2014-10-27 12:16:14 +01:00
sebastianw 4f440d282d added a string representation for data type FilterOptions 2014-10-27 12:14:59 +01:00
sebastianw c3e072e952 trying to implement generic data structure import 2014-10-27 12:12:48 +01:00
sebastianw d4bf29e4ff avoid using python keywords as format as variable name; empty method definition for data plotting 2014-10-27 12:10:35 +01:00
sebastianw 32cf20b81d avoid imports within class definitions 2014-10-27 12:06:30 +01:00
sebastianw 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
sebastianw 77e7f666f0 added 'TestType' to plotting options (only for testing) 2014-10-27 11:57:34 +01:00
sebastianw c41eb36a34 widget name changed to match the actual QtGUI type name 2014-10-27 11:56:44 +01:00
sebastianw 2d776f84da deleted unnecessary import 2014-10-27 11:55:39 +01:00
sebastianw 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
sebastianw 1266ced058 modification: PropertiesDlg started (not working) 2014-07-03 10:21:36 +02:00
sebastianw 29700e793e modification: fixed qt-resources alias for the offline help alternative 2014-07-03 10:19:51 +02:00
sebastianw ff39d97b82 modification: url of the wiki-page changed to full domain (certificate validation issue) 2014-07-03 10:18:42 +02:00
sebastianw a079bd331b deletion: line deleted contain call to a not implemented method 2014-07-03 10:17:25 +02:00
sebastianw 0cee4cd644 modified: imports adjusted to only those used in the code really 2014-07-03 10:15:25 +02:00
sebastianw 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
sebastianw 00f52c444a file head fixed 2014-06-11 15:21:30 +02:00
sebastianw 4c8174f5ae convenience imports completed 2014-06-11 15:20:55 +02:00
sebastianw 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
sebastianw 46f5e55c8e improved imports for better debugging 2014-06-11 05:49:53 +02:00
sebastianw cb80170ccf some non-functional snippets deleted to promote GUI debugging 2014-06-11 05:48:21 +02:00
sebastianw e7507a325f fixed usage of keyword arguments; 2014-06-11 05:43:27 +02:00
sebastianw e659e13a0e FilterOptionsWidget debugged; next it will be tested as a QDockWidget (QMainWindow necessary) 2014-06-11 05:38:41 +02:00
sebastianw cb7eb481d9 improved imports for better debugging 2014-06-10 16:37:07 +02:00
sebastianw 3278470deb Started to work on ticket #122 2014-05-14 11:45:45 +02:00
sebastianw 307e960d34 pushbutton layout implemented (variable number of buttons according to the number of stations used) 2014-05-09 15:00:08 +02:00
sebastianw d9ca0141de alphabetic order of convenience imports 2014-04-11 19:40:11 +02:00
sebastianw fb2553e980 check main case; corrected usage of import 2014-04-11 19:39:29 +02:00
sebastianw 6af43fc9fd bugfix: imports corrected;
imports updated, layout of 'FilterOptionsDock' started
2014-04-10 09:34:13 +02:00
sebastianw 8df11078b4 bugfix: private methods name corrected;
set default values instead of 'None'
2014-04-10 09:31:16 +02:00
sebastianw bead7a24c3 documentation updated in order to automatically provide online documentation via sphinx.ext.autodoc 2014-04-01 16:49:28 +02:00
sebastianw 0dec3eb7f0 unified class naming 2014-04-01 16:48:16 +02:00
sebastianw 36531c9923 convenience imports added 2014-04-01 16:47:24 +02:00
sebastianw 88b2a319fd added status label; not sure how to implement loading of data (different types of databases) 2014-04-01 16:46:10 +02:00
sebastianw ef8adc6c0a doc strings corrected 2014-03-31 13:01:51 +02:00
sebastianw faacfc423c resources file added in order to provide binary media file for the User Interfaces 2014-03-31 13:00:57 +02:00
sebastianw c26782bf7c imports fixed and classes renamed for better readability 2014-03-31 12:59:52 +02:00
sebastianw e6b49cfdb3 module pylot.core.util.connection added: contains routines for web and network utilization 2014-03-31 12:58:58 +02:00
sebastianw b049dda90f imports fixed; doc string as RST added 2014-03-31 12:57:08 +02:00
sebastianw 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
sebastianw 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
sebastianw 0af8ab2b08 holds now all widgets' classes used in the main application 2014-03-28 05:28:16 +01:00
sebastianw 90936bd47a emphasize modular structure by outsourcing widgets and errors 2014-03-28 05:25:46 +01:00
sebastianw dac3be5110 package wide imports for convenience 2014-03-27 21:29:41 +01:00
sebastianw 5b044a3f14 container module for error handling added 2014-03-27 15:34:42 +01:00
sebastianw 253a49c06b implementation of the PyLoT icon 2014-03-19 12:24:41 +01:00
sebastianw fbbfcbcaea make use of new module widgets, set a matplotlib figure the central GUI element 2014-03-19 12:16:41 +01:00
sebastianw e347e8eef9 implement new module widgets 2014-03-19 12:15:30 +01:00
sebastianw 9a2d127e30 added class MPLWidget in order to create updatable Matplotlib Figures within a Qt GUI 2014-03-19 12:14:54 +01:00
sebastianw 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
sebastianw ac27a8ef2e clean-up 2014-03-13 13:26:13 +01:00
sebastianw c83a11a2c3 moved class FilterOptions to the read module 2014-03-13 13:25:37 +01:00
sebastianw 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
sebastianw d0b3f0ee5d cleanup: module naming re-structured 2014-02-21 23:39:42 +01:00
sebastianw 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
sebastianw e38b917623 removing QtDesigner project files due to decision to code the PyQt stuff by ourselves 2014-02-19 14:58:45 +01:00
sebastianw 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
sebastianw ede06550cd reorganized initialization to IO-type class SeisCompDataStructure; see also ticket #118 2014-02-18 09:38:40 +01:00
sebastianw c3ec80d947 planned imports of PyLoT of not yet existing PyLoT classes commented from pylot/__init__.py 2014-02-18 09:35:55 +01:00
sebastianw f9d8173b2f class AutoPickParameter is now working; work on ticket #119 not finished yet (closure pending) 2014-02-18 09:33:36 +01:00
sebastianw 5a093ed736 AutoPickParamter class modified; not working at the moment (!) 2014-02-15 08:09:55 +01:00
sebastianw 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
sebastianw 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
sebastianw 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
sebastianw 25351d3827 changes made during workshop 2014-01-30 13:11:44 +01:00
sebastianw 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
sebastianw dcc3881720 permissions repaired and QtPyLoT.py started with some MainWindow stuff 2014-01-10 05:45:03 +01:00
sebastianw e05c3d56bc initialized software versioning similar to obspy 2014-01-09 10:43:40 +01:00
sebastianw 32a1c8bcd3 commit master 2013-12-09 13:34:01 +01:00
sebastianw 33d10300f5 commit staged changes 2013-12-09 13:31:14 +01:00
sebastianw 336572bfc3 stage all unstaged files 2013-12-09 13:28:13 +01:00
sebastianw 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
sebastianw 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
sebastianw a484709bc4 removing file created by accident 2013-11-08 15:08:04 +01:00
sebastianw e92c00af48 initial commit for the first blank files
preparing git spare initialization on remote system
2013-11-08 15:05:39 +01:00
sebastianw 5d4084ac8a no message 2013-11-08 14:31:09 +01:00
sebastianw 6c363d34ff updated contacts in README 2013-11-08 10:33:33 +01:00
sebastianw 91cd80bdb5 changed the README text to match the context 2013-10-11 06:01:12 +02:00
sebastianw 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
View File
@@ -0,0 +1,4 @@
*.pyc
*~
.idea
pylot/RELEASE-VERSION
Executable
+4158
View File
File diff suppressed because it is too large Load Diff
+111 -2
View File
@@ -1,2 +1,111 @@
# PyLoT # PyLoT
Python picking and Location Tool
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
Executable
+561
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
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
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
View 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
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
View File
Binary file not shown.
+19
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
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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

+110182
View File
File diff suppressed because it is too large Load Diff
+109998
View File
File diff suppressed because it is too large Load Diff
+3
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
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
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
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
+53
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
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
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
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
View File
@@ -0,0 +1 @@
# -*- coding: utf-8 -*-
+1
View File
@@ -0,0 +1 @@
# -*- coding: utf-8 -*-
+871
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/]
: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
+1
View File
@@ -0,0 +1 @@
# -*- coding: utf-8 -*-
+943
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
+616
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'],
}
+84
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
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
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