debugged some code fragments while trying to solve the load event data problem

This commit is contained in:
Sebastian Wehling-Benatelli 2015-09-17 17:55:40 +02:00
commit 2b42583999
8 changed files with 58 additions and 31 deletions

View File

@ -36,7 +36,7 @@ from PySide.QtGui import QMainWindow, QInputDialog, QIcon, QFileDialog, \
QDialog, QErrorMessage, QApplication, QPixmap, QMessageBox, QSplashScreen, \
QActionGroup, QListWidget, QDockWidget
import numpy as np
from obspy.core import UTCDateTime
from obspy import UTCDateTime, readEvents
from pylot.core.read.data import Data
from pylot.core.read.inputs import FilterOptions, AutoPickParameter
@ -339,6 +339,8 @@ class MainWindow(QMainWindow):
return settings.value("data/dataRoot")
def loadData(self, fname=None):
if not self.okToContinue():
return
if fname is None:
action = self.sender()
if isinstance(action, QAction):
@ -348,16 +350,13 @@ class MainWindow(QMainWindow):
fname = QFileDialog().getOpenFileName(self,
caption=caption,
filter=filt)
self.setFileName(fname[0])
fname = fname[0]
else:
self.setFileName(unicode(action.data().toString()))
if not self.okToContinue():
return
else:
self.setFileName(fname)
fname = unicode(action.data().toString())
self.setFileName(fname)
self.data += Data(self, evtdata=self.getFileName())
self.updatePicks()
self.updateStatus('Event data loaded ...')
self.convertPicks4PyLoT()
self.drawPicks()
def getLastEvent(self):
return self.recentEvents[0]
@ -468,9 +467,6 @@ class MainWindow(QMainWindow):
def getPicks(self):
return self.picks
def updatePicks(self):
pass
def getPicksOnStation(self, station):
try:
return self.getPicks()[station]
@ -696,6 +692,25 @@ class MainWindow(QMainWindow):
raise Exception('FATAL: Should never occur!')
self.getPicks()[station] = stat_picks
def convertPicks4PyLoT(self):
evt = self.getData().getEvtData()
picks = {}
onsets = {}
for pick in evt.picks:
phase = {}
station = pick.waveform_id.station_code
mpp = pick.time
lpp = mpp + pick.time.upper_uncertainty
epp = mpp - pick.time.lower_uncertainty
spe = pick.time.uncertainty
phase['mpp'] = mpp
phase['epp'] = epp
phase['lpp'] = lpp
phase['spe'] = spe
onsets[pick.phase_hint] = phase
picks[station] = onsets
def drawPicks(self, station=None):
# if picks to draw not specified, draw all picks available
if not station:

View File

@ -7,8 +7,8 @@
#main settings#
/DATA/Insheim #rootpath# %project path
EVENT_DATA/LOCAL #datapath# %data path
2015.08_Insheim #database# %name of data base
e0013.241.15 #eventID# %event ID for single event processing
2013.02_Insheim #database# %name of data base
e0019.048.13 #eventID# %event ID for single event processing
/DATA/Insheim/STAT_INFO #invdir# %full path to inventory or dataless-seed file
PILOT #datastructure# %choose data structure
0 #iplot# %flag for plotting: 0 none, 1, partly, >1 everything

View File

@ -32,7 +32,7 @@ HYPOSAT #locrt# %location routine used ("HYPO
#common settings picker#
20 #pstart# %start time [s] for calculating CF for P-picking
100 #pstop# %end time [s] for calculating CF for P-picking
3.0 #sstart# %start time [s] after or before(-) P-onset for calculating CF for S-picking
1.0 #sstart# %start time [s] after or before(-) P-onset for calculating CF for S-picking
100 #sstop# %end time [s] after P-onset for calculating CF for S-picking
3 10 #bpz1# %lower/upper corner freq. of first band pass filter Z-comp. [Hz]
3 12 #bpz2# %lower/upper corner freq. of second band pass filter Z-comp. [Hz]
@ -65,11 +65,11 @@ ARH #algoS# %choose algorithm for S-onset
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
10 #Srecalcwin# %for AR-picker, window length [s] for recalculation of CF (2nd pick) (H)
6 #pickwinS# %for initial AIC and refined pick, length of S-pick window [s]
25 #pickwinS# %for initial AIC and refined pick, length of S-pick window [s]
5 0.2 3.0 3.0 #tsnrh# %for ARH/AR3, window lengths for SNR-and slope estimation [tnoise,tsafetey,tsignal,tslope] [s]
3.0 #aictsmoothS# %for AIC-picker, take average of samples for smoothing of AIC-function [s]
3.5 #aictsmoothS# %for AIC-picker, take average of samples for smoothing of AIC-function [s]
1.0 #tsmoothS# %for AR-picker, take average of samples for smoothing CF [s] (S)
0.4 #ausS# %for HOS/AR, artificial uplift of samples (aus) of CF (S)
0.2 #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
@ -81,16 +81,16 @@ ARH #algoS# %choose algorithm for S-onset
0.04 0.08 0.16 0.32 #timeerrorsS# %discrete time errors [s] corresponding to picking weights [0 1 2 3] for S
3 #minAICPslope# %below this slope [counts/s] the initial P pick is rejected
1.2 #minAICPSNR# %below this SNR the initial P pick is rejected
3 #minAICSslope# %below this slope [counts/s] the initial S pick is rejected
1.5 #minAICSSNR# %below this SNR the initial S pick is rejected
5 #minAICSslope# %below this slope [counts/s] the initial S pick is rejected
2.5 #minAICSSNR# %below this SNR the initial S pick is rejected
#check duration of signal using envelope function#
30 #minsiglength# %minimum required length of signal [s]
2.5 #noisefactor# %noiselevel*noisefactor=threshold
60 #minpercent# %required percentage of samples higher than threshold
#check for spuriously picked S-onsets#
1.5 #zfac# %P-amplitude must exceed at least zfac times RMS-S amplitude
1.0 #zfac# %P-amplitude must exceed at least zfac times RMS-S amplitude
#check statistics of P onsets#
35 #mdttolerance# %maximum allowed deviation of P picks from median [s]
45 #mdttolerance# %maximum allowed deviation of P picks from median [s]
#wadati check#
2.0 #wdttolerance# %maximum allowed deviation from Wadati-diagram
3.0 #wdttolerance# %maximum allowed deviation from Wadati-diagram

View File

@ -218,7 +218,7 @@ class AICcf(CharacteristicFunction):
def calcCF(self, data):
print 'Calculating AIC ...'
#print 'Calculating AIC ...' ## MP MP output suppressed
x = self.getDataArray()
xnp = x[0].data
nn = np.isnan(xnp)
@ -260,7 +260,7 @@ class HOScf(CharacteristicFunction):
y = np.power(xnp, 3)
y1 = np.power(xnp, 2)
elif self.getOrder() == 4: # this is kurtosis
print 'Calculating kurtosis ...'
#print 'Calculating kurtosis ...' ## MP MP output suppressed
y = np.power(xnp, 4)
y1 = np.power(xnp, 2)

View File

@ -18,6 +18,7 @@ calculated after Diehl & Kissling (2009).
:author: MAGS2 EP3 working group / Ludger Kueperkoch
"""
import numpy as np
import matplotlib.pyplot as plt
from pylot.core.pick.utils import getnoisewin, getsignalwin
@ -245,8 +246,7 @@ class AICPicker(AutoPicking):
if datafit[0] >= datafit[len(datafit) - 1]:
print 'AICPicker: Negative slope, bad onset skipped!'
return
self.slope = 1 / tslope * datafit[len(dataslope) - 1] - datafit[0]
self.slope = 1 / tslope * (datafit[len(dataslope) - 1] - datafit[0])
else:
self.SNR = None

View File

@ -43,7 +43,13 @@ def earllatepicker(X, nfac, TSNR, Pick1, iplot=None):
LPick = None
EPick = None
PickError = None
<<<<<<< Updated upstream
print ("earllatepicker: Get earliest and latest possible pick relative to most likely pick ...")
=======
# MP MP ++ output suppressed
#print 'earllatepicker: Get earliest and latest possible pick relative to most likely pick ...'
# MP MP --
>>>>>>> Stashed changes
x = X[0].data
t = np.arange(0, X[0].stats.npts / X[0].stats.sampling_rate,

View File

@ -386,6 +386,9 @@ class Data(object):
"""
return self.evtdata
def setEvtData(self, event):
self.evtdata = event
def applyEVTData(self, data, type='pick', authority_id='rub'):
"""
@ -447,7 +450,10 @@ class Data(object):
:param event:
"""
pass
if not self.isNew():
self.setEvtData(event)
else:
raise OverwriteError('Acutal event would be overwritten!')
applydata = {'pick': applyPicks,
'arrival': applyArrivals,

View File

@ -105,10 +105,10 @@ class MPLWidget(FigureCanvas):
for level in noiselevel:
self.getAxes().plot([time_ax[0], time_ax[-1]],
[level, level], '--k')
xlabel = 'seconds since {0}'.format(wfstart)
ylabel = ''
self.updateWidget(xlabel, ylabel, title)
self.setPlotDict(n, (station, channel))
xlabel = 'seconds since {0}'.format(wfstart)
ylabel = ''
self.updateWidget(xlabel, ylabel, title)
self.setXLims([0, wfend - wfstart])
self.setYLims([-0.5, n + 0.5])
if zoomx is not None: