Merge branch 'feature/port-to-python-3.9.0' of ssh://ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into feature/port-to-python-3.9.0
This commit is contained in:
commit
21f4567236
36
README.md
36
README.md
@ -66,20 +66,34 @@ PyLoT has been tested on Mac OSX (10.11), Debian Linux 8 and on Windows 10.
|
|||||||
|
|
||||||
#### Features:
|
#### Features:
|
||||||
|
|
||||||
- event organisation in project files and waveform visualisation
|
- centralize all functionalities of PyLoT and control them from within the main GUI
|
||||||
- consistent manual phase picking through predefined SNR dependant zoom level
|
- handling multiple events inside GUI with project files (save and load work progress)
|
||||||
- consistent automatic phase picking routines using Higher Order Statistics, AIC and Autoregression
|
- GUI based adjustments of pick parameters and I/O
|
||||||
- interactive tuning of auto-pick parameters
|
- interactive tuning of parameters from within the GUI
|
||||||
- uniform uncertainty estimation from waveform's properties for automatic and manual picks
|
- call automatic picking algorithm from within the GUI
|
||||||
- pdf representation and comparison of picks taking the uncertainty intrinsically into account
|
- comparison of automatic with manual picks for multiple events using clear differentiation of manual picks into 'tune' and 'test-set' (beta)
|
||||||
- Richter and moment magnitude estimation
|
- manual picking of different (user defined) phase types
|
||||||
- location determination with external installation of [NonLinLoc](http://alomax.free.fr/nlloc/index.html)
|
- phase onset estimation with ObsPy TauPy
|
||||||
|
- interactive zoom/scale functionalities in all plots (mousewheel, pan, pan-zoom)
|
||||||
|
- array map to visualize stations and control onsets (beta feature, switch to manual picks not implemented)
|
||||||
|
|
||||||
#### Known issues:
|
##### Platform support:
|
||||||
|
- Python 3 support
|
||||||
|
- Windows support
|
||||||
|
|
||||||
- Sometimes an error might occur when using Qt
|
##### Performance:
|
||||||
|
- multiprocessing for automatic picking and restitution of multiple stations
|
||||||
|
- use pyqtgraph library for better performance on main waveform plot
|
||||||
|
|
||||||
We hope to solve these with the next release.
|
##### Visualization:
|
||||||
|
- pick uncertainty (quality classes) visualization with gradients
|
||||||
|
- pick color unification for all plots
|
||||||
|
- new icons and stylesheets
|
||||||
|
|
||||||
|
#### Known Issues:
|
||||||
|
- some Qt related errors might occur at runtime
|
||||||
|
- filter toggle not working in pickDlg
|
||||||
|
- PyLoT data structure requires at least three parent directories for waveform data directory
|
||||||
|
|
||||||
## Staff
|
## Staff
|
||||||
|
|
||||||
|
4580
icons_rc_3.py
4580
icons_rc_3.py
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,11 +1,8 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
import sys, os, traceback
|
||||||
import multiprocessing
|
import multiprocessing
|
||||||
import os
|
from PySide2.QtCore import QThread, Signal, Qt, Slot, QRunnable, QObject
|
||||||
import sys
|
from PySide2.QtWidgets import QDialog, QProgressBar, QLabel, QHBoxLayout, QPushButton
|
||||||
import traceback
|
|
||||||
|
|
||||||
from PySide.QtCore import QThread, Signal, Qt, Slot, QRunnable, QObject
|
|
||||||
from PySide.QtGui import QDialog, QProgressBar, QLabel, QHBoxLayout
|
|
||||||
|
|
||||||
|
|
||||||
class Thread(QThread):
|
class Thread(QThread):
|
||||||
@ -27,7 +24,7 @@ class Thread(QThread):
|
|||||||
if self.redirect_stdout:
|
if self.redirect_stdout:
|
||||||
sys.stdout = self
|
sys.stdout = self
|
||||||
try:
|
try:
|
||||||
if self.arg is not None:
|
if self.arg:
|
||||||
self.data = self.func(self.arg)
|
self.data = self.func(self.arg)
|
||||||
else:
|
else:
|
||||||
self.data = self.func()
|
self.data = self.func()
|
||||||
@ -43,13 +40,24 @@ class Thread(QThread):
|
|||||||
|
|
||||||
def showProgressbar(self):
|
def showProgressbar(self):
|
||||||
if self.progressText:
|
if self.progressText:
|
||||||
# # generate widget if not given in init
|
|
||||||
# if not self.pb_widget:
|
|
||||||
# self.pb_widget = ProgressBarWidget(self.parent())
|
|
||||||
# self.pb_widget.setWindowFlags(Qt.SplashScreen)
|
|
||||||
# self.pb_widget.setModal(True)
|
|
||||||
|
|
||||||
self.pb_widget.label.setText(self.progressText)
|
# generate widget if not given in init
|
||||||
|
if not self.pb_widget:
|
||||||
|
self.pb_widget = QDialog(self.parent())
|
||||||
|
self.pb_widget.setWindowFlags(Qt.SplashScreen)
|
||||||
|
self.pb_widget.setModal(True)
|
||||||
|
|
||||||
|
# add button
|
||||||
|
delete_button = QPushButton('X')
|
||||||
|
delete_button.clicked.connect(self.exit)
|
||||||
|
hl = QHBoxLayout()
|
||||||
|
pb = QProgressBar()
|
||||||
|
pb.setRange(0, 0)
|
||||||
|
hl.addWidget(pb)
|
||||||
|
hl.addWidget(QLabel(self.progressText))
|
||||||
|
if self.abortButton:
|
||||||
|
hl.addWidget(delete_button)
|
||||||
|
self.pb_widget.setLayout(hl)
|
||||||
self.pb_widget.show()
|
self.pb_widget.show()
|
||||||
|
|
||||||
def hideProgressbar(self):
|
def hideProgressbar(self):
|
||||||
@ -67,7 +75,6 @@ class Worker(QRunnable):
|
|||||||
'''
|
'''
|
||||||
Worker class to be run by MultiThread(QThread).
|
Worker class to be run by MultiThread(QThread).
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def __init__(self, fun, args,
|
def __init__(self, fun, args,
|
||||||
progressText=None,
|
progressText=None,
|
||||||
pb_widget=None,
|
pb_widget=None,
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user