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:
 | 
			
		||||
 | 
			
		||||
- 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)
 | 
			
		||||
- centralize all functionalities of PyLoT and control them from within the main GUI
 | 
			
		||||
- handling multiple events inside GUI with project files (save and load work progress)
 | 
			
		||||
- GUI based adjustments of pick parameters and I/O
 | 
			
		||||
- interactive tuning of parameters from within the GUI
 | 
			
		||||
- call automatic picking algorithm from within the GUI
 | 
			
		||||
- comparison of automatic with manual picks for multiple events using clear differentiation of manual picks into 'tune' and 'test-set' (beta)
 | 
			
		||||
- manual picking of different (user defined) phase types
 | 
			
		||||
- 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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										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 -*-
 | 
			
		||||
import sys, os, traceback
 | 
			
		||||
import multiprocessing
 | 
			
		||||
import os
 | 
			
		||||
import sys
 | 
			
		||||
import traceback
 | 
			
		||||
 | 
			
		||||
from PySide.QtCore import QThread, Signal, Qt, Slot, QRunnable, QObject
 | 
			
		||||
from PySide.QtGui import QDialog, QProgressBar, QLabel, QHBoxLayout
 | 
			
		||||
from PySide2.QtCore import QThread, Signal, Qt, Slot, QRunnable, QObject
 | 
			
		||||
from PySide2.QtWidgets import QDialog, QProgressBar, QLabel, QHBoxLayout, QPushButton
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Thread(QThread):
 | 
			
		||||
@ -27,7 +24,7 @@ class Thread(QThread):
 | 
			
		||||
        if self.redirect_stdout:
 | 
			
		||||
            sys.stdout = self
 | 
			
		||||
        try:
 | 
			
		||||
            if self.arg is not None:
 | 
			
		||||
            if self.arg:
 | 
			
		||||
                self.data = self.func(self.arg)
 | 
			
		||||
            else:
 | 
			
		||||
                self.data = self.func()
 | 
			
		||||
@ -43,13 +40,24 @@ class Thread(QThread):
 | 
			
		||||
 | 
			
		||||
    def showProgressbar(self):
 | 
			
		||||
        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()
 | 
			
		||||
 | 
			
		||||
    def hideProgressbar(self):
 | 
			
		||||
@ -67,7 +75,6 @@ class Worker(QRunnable):
 | 
			
		||||
    '''
 | 
			
		||||
    Worker class to be run by MultiThread(QThread).
 | 
			
		||||
    '''
 | 
			
		||||
 | 
			
		||||
    def __init__(self, fun, args,
 | 
			
		||||
                 progressText=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