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]