def iterateFit(fit_func, fit_data): if (type(fit_data.peaks) == type(numpy.array([]))): # Calculate "regularized" image. regularized_image = fit_data.regularizer.regularizeImage(fit_data.image) #regularized_image = fit_data.regularizer.normalizeImage(fit_data.image) #regularized_image = fit_data.image # Fit to update peak locations. result = fit_func(regularized_image, fit_data.peaks, scmos_cal = fit_data.lg_scmos_cal) fit_peaks = multi_c.getGoodPeaks(result[0], 0.9*fit_data.threshold, 0.5*fit_data.sigma) # Remove peaks that are too close to each other & refit. fit_peaks = util_c.removeClosePeaks(fit_peaks, fit_data.sigma, fit_data.neighborhood) result = fit_func(regularized_image, fit_peaks, scmos_cal = fit_data.lg_scmos_cal) fit_peaks = multi_c.getGoodPeaks(result[0], 0.9*fit_data.threshold, 0.5*fit_data.sigma) fit_data.peaks = fit_peaks # FIXME: # For multi-peak finding to work correctly we should subtract the # peaks out of the actual image, not the regularized image, which # is what this is. fit_data.residual = result[1]
def iterateFit(fit_func, fit_data): if (type(fit_data.peaks) == type(numpy.array([]))): # Fit to update peak locations. result = fit_func(fit_data.image, fit_data.peaks) fit_peaks = multi_c.getGoodPeaks(result[0], 0.9*fit_data.threshold, 0.5*fit_data.sigma) # Remove peaks that are too close to each other & refit. fit_peaks = util_c.removeClosePeaks(fit_peaks, fit_data.sigma, fit_data.neighborhood) result = fit_func(fit_data.image, fit_peaks) fit_peaks = multi_c.getGoodPeaks(result[0], 0.9*fit_data.threshold, 0.5*fit_data.sigma) fit_data.peaks = fit_peaks fit_data.residual = result[1]