Compare commits
12 Commits
correlatio
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 9333ebf7f3 | |||
| 8c46b1ed18 | |||
| c743813446 | |||
| 41c9183be3 | |||
| ae6c4966a9 | |||
| e8a516d16b | |||
| f78315dec4 | |||
| 710ea57503 | |||
| 8aaad643ec | |||
| bc808b66c2 | |||
| 472e5b3b9e | |||
|
|
503ea419c4 |
14
PyLoT.py
Executable file → Normal file
14
PyLoT.py
Executable file → Normal file
@@ -716,14 +716,14 @@ class MainWindow(QMainWindow):
|
|||||||
self.tabs.addTab(wf_tab, 'Waveform Plot')
|
self.tabs.addTab(wf_tab, 'Waveform Plot')
|
||||||
self.tabs.addTab(array_tab, 'Array Map')
|
self.tabs.addTab(array_tab, 'Array Map')
|
||||||
self.tabs.addTab(events_tab, 'Eventlist')
|
self.tabs.addTab(events_tab, 'Eventlist')
|
||||||
self.tabs.addTab(spectro_tab, 'Spectro')
|
#self.tabs.addTab(spectro_tab, 'Spectro')
|
||||||
|
|
||||||
self.wf_layout.addWidget(self.no_data_label)
|
self.wf_layout.addWidget(self.no_data_label)
|
||||||
self.wf_layout.addWidget(self.wf_scroll_area)
|
self.wf_layout.addWidget(self.wf_scroll_area)
|
||||||
self.wf_scroll_area.setWidgetResizable(True)
|
self.wf_scroll_area.setWidgetResizable(True)
|
||||||
self.init_array_tab()
|
self.init_array_tab()
|
||||||
self.init_event_table()
|
self.init_event_table()
|
||||||
self.init_spectro_tab()
|
#self.init_spectro_tab()
|
||||||
self.tabs.setCurrentIndex(0)
|
self.tabs.setCurrentIndex(0)
|
||||||
|
|
||||||
self.eventLabel = QLabel()
|
self.eventLabel = QLabel()
|
||||||
@@ -1976,7 +1976,6 @@ class MainWindow(QMainWindow):
|
|||||||
self.dataPlot.activateObspyDMToptions(self.obspy_dmt)
|
self.dataPlot.activateObspyDMToptions(self.obspy_dmt)
|
||||||
if self.obspy_dmt:
|
if self.obspy_dmt:
|
||||||
self.prepareObspyDMT_data(eventpath)
|
self.prepareObspyDMT_data(eventpath)
|
||||||
self.dataPlot.activateCompareOptions(True)
|
|
||||||
|
|
||||||
def loadWaveformData(self):
|
def loadWaveformData(self):
|
||||||
'''
|
'''
|
||||||
@@ -2153,10 +2152,11 @@ class MainWindow(QMainWindow):
|
|||||||
self.wf_scroll_area.setVisible(len(plots) > 0)
|
self.wf_scroll_area.setVisible(len(plots) > 0)
|
||||||
self.no_data_label.setVisible(not len(plots) > 0)
|
self.no_data_label.setVisible(not len(plots) > 0)
|
||||||
for times, data, times_syn, data_syn in plots:
|
for times, data, times_syn, data_syn in plots:
|
||||||
self.dataPlot.plotWidget.getPlotItem().plot(times, data,
|
self.dataPlot.plotWidget.getPlotItem().plot(np.array(times), np.array(data),
|
||||||
pen=self.dataPlot.pen_linecolor)
|
pen=self.dataPlot.pen_linecolor,
|
||||||
|
skipFiniteCheck=True)
|
||||||
if len(data_syn) > 0:
|
if len(data_syn) > 0:
|
||||||
self.dataPlot.plotWidget.getPlotItem().plot(times_syn, data_syn,
|
self.dataPlot.plotWidget.getPlotItem().plot(np.array(times_syn), np.array(data_syn),
|
||||||
pen=self.dataPlot.pen_linecolor_syn)
|
pen=self.dataPlot.pen_linecolor_syn)
|
||||||
self.dataPlot.reinitMoveProxy()
|
self.dataPlot.reinitMoveProxy()
|
||||||
self.highlight_stations()
|
self.highlight_stations()
|
||||||
@@ -3096,7 +3096,7 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
if self.pg:
|
if self.pg:
|
||||||
if spe:
|
if spe:
|
||||||
if picks['epp'] and picks['lpp']:
|
if not self.plot_method == 'fast' and picks['epp'] and picks['lpp']:
|
||||||
pen = make_pen(picktype, phaseID, 'epp', quality)
|
pen = make_pen(picktype, phaseID, 'epp', quality)
|
||||||
self.drawnPicks[picktype][station].append(pw.plot([epp, epp], ylims,
|
self.drawnPicks[picktype][station].append(pw.plot([epp, epp], ylims,
|
||||||
alpha=.25, pen=pen, name='EPP'))
|
alpha=.25, pen=pen, name='EPP'))
|
||||||
|
|||||||
28
README.md
28
README.md
@@ -54,33 +54,14 @@ In order to run PyLoT you need to install:
|
|||||||
|
|
||||||
#### Some handwork:
|
#### Some handwork:
|
||||||
|
|
||||||
PyLoT needs a properties folder on your system to work. It should be situated in your home directory
|
Some extra information on error estimates (just needed for reading old PILOT data) and the Richter magnitude scaling
|
||||||
(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
|
relation
|
||||||
|
|
||||||
cp path-to-pylot/inputs/PILOT_TimeErrors.in path-to-pylot/inputs/richter_scaling.data ~/.pylot/
|
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.
|
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.
|
PyLoT has been tested on Mac OSX (10.11), Debian Linux 8 and on Windows 10/11.
|
||||||
|
|
||||||
## Release notes
|
## Release notes
|
||||||
|
|
||||||
@@ -89,6 +70,7 @@ PyLoT has been tested on Mac OSX (10.11), Debian Linux 8 and on Windows 10.
|
|||||||
- event organisation in project files and waveform visualisation
|
- event organisation in project files and waveform visualisation
|
||||||
- consistent manual phase picking through predefined SNR dependant zoom level
|
- consistent manual phase picking through predefined SNR dependant zoom level
|
||||||
- consistent automatic phase picking routines using Higher Order Statistics, AIC and Autoregression
|
- consistent automatic phase picking routines using Higher Order Statistics, AIC and Autoregression
|
||||||
|
- pick correlation correction for teleseismic waveforms
|
||||||
- interactive tuning of auto-pick parameters
|
- interactive tuning of auto-pick parameters
|
||||||
- uniform uncertainty estimation from waveform's properties for automatic and manual picks
|
- uniform uncertainty estimation from waveform's properties for automatic and manual picks
|
||||||
- pdf representation and comparison of picks taking the uncertainty intrinsically into account
|
- pdf representation and comparison of picks taking the uncertainty intrinsically into account
|
||||||
@@ -97,7 +79,7 @@ PyLoT has been tested on Mac OSX (10.11), Debian Linux 8 and on Windows 10.
|
|||||||
|
|
||||||
#### Known issues:
|
#### Known issues:
|
||||||
|
|
||||||
We hope to solve these with the next release.
|
Current release is still in development progress and has several issues. We are currently lacking manpower, but hope to assess many of the issues in the near future.
|
||||||
|
|
||||||
## Staff
|
## Staff
|
||||||
|
|
||||||
@@ -110,4 +92,4 @@ Others: A. Bruestle, T. Meier, W. Friederich
|
|||||||
|
|
||||||
[ObsPy]: http://github.com/obspy/obspy/wiki
|
[ObsPy]: http://github.com/obspy/obspy/wiki
|
||||||
|
|
||||||
August 2024
|
September 2024
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import os
|
import os
|
||||||
|
from functools import lru_cache
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import pyqtgraph as pg
|
import pyqtgraph as pg
|
||||||
@@ -25,14 +26,14 @@ def pick_linestyle_pg(picktype, key):
|
|||||||
:return: Qt line style parameters
|
:return: Qt line style parameters
|
||||||
:rtype:
|
:rtype:
|
||||||
"""
|
"""
|
||||||
linestyles_manu = {'mpp': (QtCore.Qt.SolidLine, 2.),
|
linestyles_manu = {'mpp': (QtCore.Qt.SolidLine, 2),
|
||||||
'epp': (QtCore.Qt.DashLine, 1.),
|
'epp': (QtCore.Qt.DashLine, 1),
|
||||||
'lpp': (QtCore.Qt.DashLine, 1.),
|
'lpp': (QtCore.Qt.DashLine, 1),
|
||||||
'spe': (QtCore.Qt.DashLine, 1.)}
|
'spe': (QtCore.Qt.DashLine, 1)}
|
||||||
linestyles_auto = {'mpp': (QtCore.Qt.DotLine, 2.),
|
linestyles_auto = {'mpp': (QtCore.Qt.DotLine, 2),
|
||||||
'epp': (QtCore.Qt.DashDotLine, 1.),
|
'epp': (QtCore.Qt.DashDotLine, 1),
|
||||||
'lpp': (QtCore.Qt.DashDotLine, 1.),
|
'lpp': (QtCore.Qt.DashDotLine, 1),
|
||||||
'spe': (QtCore.Qt.DashDotLine, 1.)}
|
'spe': (QtCore.Qt.DashDotLine, 1)}
|
||||||
linestyles = {'manual': linestyles_manu,
|
linestyles = {'manual': linestyles_manu,
|
||||||
'auto': linestyles_auto}
|
'auto': linestyles_auto}
|
||||||
return linestyles[picktype][key]
|
return linestyles[picktype][key]
|
||||||
@@ -80,6 +81,7 @@ def which(program, parameter):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
@lru_cache(maxsize=128)
|
||||||
def make_pen(picktype, phase, key, quality):
|
def make_pen(picktype, phase, key, quality):
|
||||||
"""
|
"""
|
||||||
Make PyQtGraph.QPen
|
Make PyQtGraph.QPen
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user