def plot_residual_resample(a):
    N = len(a)

    a_norm = np.asarray(a) / np.sum(a)
    cumsum = np.cumsum(a_norm)
    cumsum = np.insert(cumsum, 0, 0)

    cmap = mpl.colors.ListedColormap([[0., .4, 1.],
                                      [0., .8, 1.],
                                      [1., .8, 0.],
                                      [1., .4, 0.]]*(int(N/4) + 1))

    with figsize(y=2):
        fig = plt.figure()
        ax = plt.gcf().add_axes([0.05, 0.475, 0.9, 0.15])
        norm = mpl.colors.BoundaryNorm(cumsum, cmap.N)
        bar = mpl.colorbar.ColorbarBase(ax, cmap=cmap,
                                         norm=norm,
                                         drawedges=False,
                                         spacing='proportional',
                                         orientation='horizontal')

        indexes = residual_resample(a_norm)
        bins = np.bincount(indexes)
        for i in range(1, N):
            n =  bins[i-1] # number particles in this sample
            if n > 0:
                b = np.linspace(cumsum[i-1], cumsum[i], n+2)[1:-1]
                plt.scatter(b, [.5]*len(b), s=60, facecolor='k', edgecolor='k')
        bar.set_ticks([])
        plt.title('residual resampling')
        end_interactive(fig)
def plot_multinomial_resample(a):
    N = len(a)

    cmap = mpl.colors.ListedColormap([[0., .4, 1.],
                                      [0., .8, 1.],
                                      [1., .8, 0.],
                                      [1., .4, 0.]]*(int(N/4) + 1))
    cumsum = np.cumsum(np.asarray(a) / np.sum(a))
    cumsum = np.insert(cumsum, 0, 0)

    with figsize(y=2):
        fig = plt.figure()
        ax = plt.gcf().add_axes([0.05, 0.475, 0.9, 0.15])
        norm = mpl.colors.BoundaryNorm(cumsum, cmap.N)
        bar = mpl.colorbar.ColorbarBase(ax, cmap=cmap,
                                         norm=norm,
                                         drawedges=False,
                                         spacing='proportional',
                                         orientation='horizontal')

        # make N subdivisions, and chose a random position within each one
        b = random(N)
        plt.scatter(b, [.5]*len(b), s=60, facecolor='k', edgecolor='k')
        bar.set_ticks([])
        plt.title('multinomial resampling')
        end_interactive(fig)
def plot_cumsum(a):

    with figsize(y=2):
        fig = plt.figure()
        N = len(a)

        cmap = mpl.colors.ListedColormap([[0., .4, 1.],
                                          [0., .8, 1.],
                                          [1., .8, 0.],
                                          [1., .4, 0.]]*(int(N/4) + 1))
        cumsum = np.cumsum(np.asarray(a) / np.sum(a))
        cumsum = np.insert(cumsum, 0, 0)

        #fig = plt.figure(figsize=(6,3))
        fig=plt.gcf()
        ax = fig.add_axes([0.05, 0.475, 0.9, 0.15])
        norm = mpl.colors.BoundaryNorm(cumsum, cmap.N)
        bar = mpl.colorbar.ColorbarBase(ax, cmap=cmap,
                                         norm=norm,
                                         drawedges=False,
                                         spacing='proportional',
                                         orientation='horizontal')
        if N > 10:
            bar.set_ticks([])
        end_interactive(fig)
Example #4
0
def plot_residual_resample(a):
    N = len(a)

    a_norm = np.asarray(a) / np.sum(a)
    cumsum = np.cumsum(a_norm)
    cumsum = np.insert(cumsum, 0, 0)

    cmap = mpl.colors.ListedColormap([[0., .4, 1.],
                                      [0., .8, 1.],
                                      [1., .8, 0.],
                                      [1., .4, 0.]]*(int(N/4) + 1))

    with figsize(y=2):
        fig = plt.figure()
        ax = plt.gcf().add_axes([0.05, 0.475, 0.9, 0.15])
        norm = mpl.colors.BoundaryNorm(cumsum, cmap.N)
        bar = mpl.colorbar.ColorbarBase(ax, cmap=cmap,
                                         norm=norm,
                                         drawedges=False,
                                         spacing='proportional',
                                         orientation='horizontal')

        indexes = residual_resample(a_norm)
        bins = np.bincount(indexes)
        for i in range(1, N):
            n =  bins[i-1] # number particles in this sample
            if n > 0:
                b = np.linspace(cumsum[i-1], cumsum[i], n+2)[1:-1]
                plt.scatter(b, [.5]*len(b), s=60, facecolor='k', edgecolor='k')
        bar.set_ticks([])
        plt.title('residual resampling')
        end_interactive(fig)
Example #5
0
def plot_multinomial_resample(a):
    N = len(a)

    cmap = mpl.colors.ListedColormap([[0., .4, 1.],
                                      [0., .8, 1.],
                                      [1., .8, 0.],
                                      [1., .4, 0.]]*(int(N/4) + 1))
    cumsum = np.cumsum(np.asarray(a) / np.sum(a))
    cumsum = np.insert(cumsum, 0, 0)

    with figsize(y=2):
        fig = plt.figure()
        ax = plt.gcf().add_axes([0.05, 0.475, 0.9, 0.15])
        norm = mpl.colors.BoundaryNorm(cumsum, cmap.N)
        bar = mpl.colorbar.ColorbarBase(ax, cmap=cmap,
                                         norm=norm,
                                         drawedges=False,
                                         spacing='proportional',
                                         orientation='horizontal')

        # make N subdivisions, and chose a random position within each one
        b = random(N)
        plt.scatter(b, [.5]*len(b), s=60, facecolor='k', edgecolor='k')
        bar.set_ticks([])
        plt.title('multinomial resampling')
        end_interactive(fig)
Example #6
0
def plot_cumsum(a):

    with figsize(y=2):
        fig = plt.figure()
        N = len(a)

        cmap = mpl.colors.ListedColormap([[0., .4, 1.],
                                          [0., .8, 1.],
                                          [1., .8, 0.],
                                          [1., .4, 0.]]*(int(N/4) + 1))
        cumsum = np.cumsum(np.asarray(a) / np.sum(a))
        cumsum = np.insert(cumsum, 0, 0)

        #fig = plt.figure(figsize=(6,3))
        fig=plt.gcf()
        ax = fig.add_axes([0.05, 0.475, 0.9, 0.15])
        norm = mpl.colors.BoundaryNorm(cumsum, cmap.N)
        bar = mpl.colorbar.ColorbarBase(ax, cmap=cmap,
                                         norm=norm,
                                         drawedges=False,
                                         spacing='proportional',
                                         orientation='horizontal')
        if N > 10:
            bar.set_ticks([])
        end_interactive(fig)