Stabilized AICPicker: if no minimum was found, try 1st derivative of AIC-CF.
This commit is contained in:
parent
ea68b38f7e
commit
85f0445e6b
@ -189,7 +189,7 @@ class AICPicker(AutoPicking):
|
|||||||
#remove offset
|
#remove offset
|
||||||
offset = abs(min(aic) - min(aicsmooth))
|
offset = abs(min(aic) - min(aicsmooth))
|
||||||
aicsmooth = aicsmooth - offset
|
aicsmooth = aicsmooth - offset
|
||||||
#get maximum of 1st derivative of CF (more stable!) as starting point
|
#get maximum of 1st derivative of AIC-CF (more stable!) as starting point
|
||||||
diffcf = np.diff(aicsmooth)
|
diffcf = np.diff(aicsmooth)
|
||||||
#find NaN's
|
#find NaN's
|
||||||
nn = np.isnan(diffcf)
|
nn = np.isnan(diffcf)
|
||||||
@ -200,12 +200,19 @@ class AICPicker(AutoPicking):
|
|||||||
diffcf = tap * diffcf * max(abs(aicsmooth))
|
diffcf = tap * diffcf * max(abs(aicsmooth))
|
||||||
icfmax = np.argmax(diffcf)
|
icfmax = np.argmax(diffcf)
|
||||||
|
|
||||||
#find minimum in front of maximum
|
#find minimum in AIC-CF front of maximum
|
||||||
lpickwindow = int(round(self.PickWindow / self.dt))
|
lpickwindow = int(round(self.PickWindow / self.dt))
|
||||||
for i in range(icfmax - 1, max([icfmax - lpickwindow, 2]), -1):
|
for i in range(icfmax - 1, max([icfmax - lpickwindow, 2]), -1):
|
||||||
if aicsmooth[i - 1] >= aicsmooth[i]:
|
if aicsmooth[i - 1] >= aicsmooth[i]:
|
||||||
self.Pick = self.Tcf[i]
|
self.Pick = self.Tcf[i]
|
||||||
break
|
break
|
||||||
|
#if no minimum could be found:
|
||||||
|
#search in 1st derivative of AIC-CF
|
||||||
|
if self.Pick is None:
|
||||||
|
for i in range(icfmax -1, max([icfmax -lpickwindow, 2]), -1):
|
||||||
|
if diffcf[i -1] >= diffcf[i]:
|
||||||
|
self.Pick = self.Tcf[i]
|
||||||
|
break
|
||||||
|
|
||||||
#quality assessment using SNR and slope from CF
|
#quality assessment using SNR and slope from CF
|
||||||
if self.Pick is not None:
|
if self.Pick is not None:
|
||||||
@ -233,7 +240,6 @@ class AICPicker(AutoPicking):
|
|||||||
if imax == 0:
|
if imax == 0:
|
||||||
print 'AICPicker: Maximum for slope determination right at the beginning of the window!'
|
print 'AICPicker: Maximum for slope determination right at the beginning of the window!'
|
||||||
print 'Choose longer slope determination window!'
|
print 'Choose longer slope determination window!'
|
||||||
pdb.set_trace()
|
|
||||||
return
|
return
|
||||||
islope = islope[0][0 :imax]
|
islope = islope[0][0 :imax]
|
||||||
dataslope = self.Data[0].data[islope]
|
dataslope = self.Data[0].data[islope]
|
||||||
|
Loading…
Reference in New Issue
Block a user