@@ -1114,7 +1114,6 @@ def hamilton_segmenter(signal=None, sampling_rate=1000.):
11141114
11151115 beats = np .array (beats )
11161116
1117- lim = lim
11181117 r_beats = []
11191118 thres_ch = 0.85
11201119 adjacency = 0.05 * sampling_rate
@@ -1142,11 +1141,11 @@ def hamilton_segmenter(signal=None, sampling_rate=1000.):
11421141 try :
11431142 twopeaks = [pospeaks [0 ]]
11441143 except IndexError :
1145- pass
1144+ twopeaks = []
11461145 try :
11471146 twonegpeaks = [negpeaks [0 ]]
11481147 except IndexError :
1149- pass
1148+ twonegpeaks = []
11501149
11511150 # getting positive peaks
11521151 for i in range (len (pospeaks ) - 1 ):
@@ -1169,26 +1168,30 @@ def hamilton_segmenter(signal=None, sampling_rate=1000.):
11691168 error [1 ] = True
11701169
11711170 # choosing type of R-peak
1172- if not sum (error ):
1173- if posdiv > thres_ch * negdiv :
1174- # pos noerr
1175- r_beats .append (twopeaks [0 ][1 ] + add )
1176- else :
1177- # neg noerr
1178- r_beats .append (twonegpeaks [0 ][1 ] + add )
1179- elif sum (error ) == 2 :
1180- if abs (twopeaks [0 ][1 ]) > abs (twonegpeaks [0 ][1 ]):
1181- # pos allerr
1171+ n_errors = sum (error )
1172+ try :
1173+ if not n_errors :
1174+ if posdiv > thres_ch * negdiv :
1175+ # pos noerr
1176+ r_beats .append (twopeaks [0 ][1 ] + add )
1177+ else :
1178+ # neg noerr
1179+ r_beats .append (twonegpeaks [0 ][1 ] + add )
1180+ elif n_errors == 2 :
1181+ if abs (twopeaks [0 ][1 ]) > abs (twonegpeaks [0 ][1 ]):
1182+ # pos allerr
1183+ r_beats .append (twopeaks [0 ][1 ] + add )
1184+ else :
1185+ # neg allerr
1186+ r_beats .append (twonegpeaks [0 ][1 ] + add )
1187+ elif error [0 ]:
1188+ # pos poserr
11821189 r_beats .append (twopeaks [0 ][1 ] + add )
11831190 else :
1184- # neg allerr
1191+ # neg negerr
11851192 r_beats .append (twonegpeaks [0 ][1 ] + add )
1186- elif error [0 ]:
1187- # pos poserr
1188- r_beats .append (twopeaks [0 ][1 ] + add )
1189- else :
1190- # neg negerr
1191- r_beats .append (twonegpeaks [0 ][1 ] + add )
1193+ except IndexError :
1194+ continue
11921195
11931196 rpeaks = sorted (list (set (r_beats )))
11941197 rpeaks = np .array (rpeaks , dtype = 'int' )
0 commit comments