Exemple #1
0
def get_int_var(masked_spectrum, distance, wavelength):
    propagation_array = get_propagation_array(masked_spectrum.shape, distance,
                                              wavelength)
    propagated = propagation_array * masked_spectrum
    reconstructed = get_shifted_idft(propagated)
    intensity = get_intensity(reconstructed)
    fitness = intensity.var()
    return fitness
Exemple #2
0
def get_int_var(masked_spectrum, distance, wavelength):
    propagation_array = get_propagation_array(masked_spectrum.shape, distance,
        wavelength)
    propagated = propagation_array * masked_spectrum
    reconstructed = get_shifted_idft(propagated)
    intensity = get_intensity(reconstructed)
    fitness = intensity.var()
    return fitness
Exemple #3
0
def get_lowpass_var(masked_spectrum, distance):
    propagation_array = get_propagation_array(masked_spectrum.shape, distance)
    propagated = propagation_array * masked_spectrum
    lowpass_mask = get_lowpass_mask(propagated.shape, .4)
    propagated = lowpass_mask * propagated
    reconstructed = get_shifted_idft(propagated)
    intensity = get_intensity(reconstructed)
    fitness = intensity.var()
    return fitness
Exemple #4
0
def get_lowpass_var(masked_spectrum, distance):
    propagation_array = get_propagation_array(masked_spectrum.shape, distance)
    propagated = propagation_array * masked_spectrum
    lowpass_mask = get_lowpass_mask(propagated.shape, .4)
    propagated = lowpass_mask * propagated
    reconstructed = get_shifted_idft(propagated)
    intensity = get_intensity(reconstructed)
    fitness = intensity.var()
    return fitness
Exemple #5
0
def get_peak_coords(spectrum):
    # TODO: must select by position not by intensity
    shape = spectrum.shape
    center = [dim / 2. for dim in shape]

    intensity = get_intensity(spectrum)
    circles = [(-get_distance(center, circle[1]), circle[0], circle[1])
        for circle in get_circles(intensity, 2, 20)]
    circles.sort()
    peak = circles[0][2]
    peaks_row = (peak[0] - center[0]) / float(center[0])
    peaks_col = (peak[1] - center[1]) / float(center[1])
    return peaks_row, peaks_col
Exemple #6
0
def get_peak_coords(spectrum):
    # TODO: must select by position not by intensity
    shape = spectrum.shape
    center = [dim / 2. for dim in shape]

    intensity = get_intensity(spectrum)
    circles = [(-get_distance(center, circle[1]), circle[0], circle[1])
               for circle in get_circles(intensity, 2, 20)]
    circles.sort()
    peak = circles[0][2]
    peaks_row = (peak[0] - center[0]) / float(center[0])
    peaks_col = (peak[1] - center[1]) / float(center[1])
    return peaks_row, peaks_col
Exemple #7
0
def get_auto_mask(spectrum,
                  softness=0,
                  radious_scale=.8,
                  zero_scale=1.3,
                  cuttop=0,
                  centered=True):
    """
    Try to filter spurious data out.
    """
    shape = spectrum.shape
    rows, cols = shape
    center = (rows / 2., cols / 2.)
    intensity = get_intensity(spectrum)

    circles = get_circles(intensity, 3, 50)
    circles = sorted([(circle[1], circle[0], circle[2]) for circle in circles
                      if get_distance(center, circle[0]) > 10])[-2:]
    circles = sorted([(circle[1], circle[0], circle[2]) for circle in circles])
    virtual_order, real_order = circles
    zero_order = (center, 0, 0)
    peak_center, peak_height, peak_radious = real_order

    peak_radious = min([(abs(shape[0] / 3.5 - peak[2]), peak[2])
                        for peak in circles])[1]

    windowmaker = lambda x: np.kaiser(x, softness)
    window = get_holed_window(windowmaker, peak_radious * radious_scale)
    mask = get_mask(shape, window, peak_center)

    zerowindow = get_holed_window(windowmaker, peak_radious * zero_scale)
    zeromask = 1 - get_mask(shape, zerowindow, zero_order[0])
    mask *= zeromask

    masked_intensity = mask * intensity

    cutoff = masked_intensity > (masked_intensity.max() -
                                 masked_intensity.ptp() * cuttop)
    mask[cutoff] = 0
    masked = mask * spectrum

    if centered:
        masked = get_centered(masked, peak_center)
        mask = get_centered(mask, peak_center)
        centered = get_centered(intensity, peak_center)

    return mask, masked, centered
Exemple #8
0
def get_auto_mask(spectrum, softness=0, radious_scale=.8, zero_scale=1.3,
        cuttop=0, centered=True):
    """
    Try to filter spurious data out.
    """
    shape = spectrum.shape
    rows, cols = shape
    center = (rows / 2., cols / 2.)
    intensity = get_intensity(spectrum)

    circles = get_circles(intensity, 3, 50)
    circles = sorted([(circle[1], circle[0], circle[2])
        for circle in circles
            if get_distance(center, circle[0]) > 10])[-2:]
    circles = sorted([(circle[1], circle[0], circle[2])
        for circle in circles])
    virtual_order, real_order = circles
    zero_order = (center, 0, 0)
    peak_center, peak_height, peak_radious = real_order

    peak_radious = min([(abs(shape[0] / 3.5 - peak[2]), peak[2])
        for peak in circles])[1]

    windowmaker = lambda x: np.kaiser(x, softness)
    window = get_holed_window(windowmaker, peak_radious * radious_scale)
    mask = get_mask(shape, window, peak_center)

    zerowindow = get_holed_window(windowmaker, peak_radious * zero_scale)
    zeromask = 1 - get_mask(shape, zerowindow, zero_order[0])
    mask *= zeromask

    masked_intensity = mask * intensity

    cutoff = masked_intensity > (masked_intensity.max()
        - masked_intensity.ptp() * cuttop)
    mask[cutoff] = 0
    masked = mask * spectrum

    if centered:
        masked = get_centered(masked, peak_center)
        mask = get_centered(mask, peak_center)
        centered = get_centered(intensity, peak_center)

    return mask, masked, centered