@@ -173,9 +173,14 @@ def detect_peaks(dataset, minimum_number_of_peaks=30, prominence=10):
173173
174174 minor_peaks , _ = scipy .signal .find_peaks (new_spectrum , prominence = prominence )
175175
176- while len (minor_peaks ) > minimum_number_of_peaks :
177- prominence += 10
178- minor_peaks , _ = scipy .signal .find_peaks (new_spectrum , prominence = prominence )
176+ if len (minor_peaks ) < minimum_number_of_peaks :
177+ while len (minor_peaks ) < minimum_number_of_peaks :
178+ prominence /= 10
179+ minor_peaks , _ = scipy .signal .find_peaks (new_spectrum , prominence = prominence )
180+ else :
181+ while len (minor_peaks ) > minimum_number_of_peaks :
182+ prominence += 10
183+ minor_peaks , _ = scipy .signal .find_peaks (new_spectrum , prominence = prominence )
179184 return np .array (minor_peaks )+ start
180185
181186def peaks_element_correlation (spectrum , minor_peaks ):
@@ -468,6 +473,7 @@ def fit_model(spectrum, use_detector_efficiency=False):
468473 def residuals (pp , yy ):
469474 """ residuals for fit"""
470475 model = np .zeros (len (yy ))
476+ pp = np .abs (pp )
471477 for i in range (len (pp )- 4 ):
472478 model += peaks [i ]* pp [i ]
473479 if use_detector_efficiency :
@@ -481,8 +487,8 @@ def residuals(pp, yy):
481487 y = np .array (spectrum ) # .compute()
482488 [p , _ ] = scipy .optimize .leastsq (residuals , pin , args = (y ,), maxfev = 10000 )
483489
484- update_fit_values (spectrum .metadata ['EDS' ], peaks , p )
485- return np .array (peaks ), np .array (p )
490+ update_fit_values (spectrum .metadata ['EDS' ], peaks , np , abs ( p ) )
491+ return np .array (peaks ), np .abs (p )
486492
487493
488494def update_fit_values (out_tags , peaks , p ):
0 commit comments