Пример #1
0
 def onselect(vmin, vmax):
     global result, selected_index
     ax.cla()
     selected_index = np.where((X >= vmin) & (X <= vmax))
     optimizer = Optimize_powerlaw(
         args=(X[selected_index], Y[selected_index]),
         parameters=[0.1, 2.])
     result = optimizer.fitting()
     print "beta = {}, D = {}".format(beta, result['D'])
     ax.loglog(X, Y, ls='', marker='.', label=r'$\beta = %2.2f$' % beta,
             alpha=0.5)
     ax.loglog(X[selected_index], optimizer.fitted(X[selected_index]),
               ls='-', marker='', color='k',
               label=r'$D = %2.2f$' % result['D'])
     ax.legend(loc='best')
     ax.set_title('frames = {}, beta = {}'.format(frames, beta))
Пример #2
0
def mass_in_r_for_one_beta(beta, num_of_strings, L, frames, plot=True,
                           optimize=False, save_image=False, save_data=False):
    print "beta = %2.2f" % beta
    r = None
    rs = []
    Ms = []
    for s in tqdm(range(num_of_strings)):
        r, M = get_mass_in_r_for_one_string(L, frames, beta, r)
        rs.append(r)
        Ms.append(M)

    r = np.average(np.array(rs), axis=0)
    M = np.average(np.array(Ms), axis=0)

    if save_data:
        save_data.save("results/data/mass_in_r/beta=%2.2f_" % beta,
                       num_of_strings=num_of_strings,
                       beta=beta, L=L, frames=frames, r=r, M=M)

    if plot or save_image:
        fig, ax = plt.subplots()
        ax.loglog(r, M)
        ax.set_xlabel('Radius $r$ from the center of gravity')
        ax.set_ylabel('Mass in a circle with radius $r$')
        ax.set_title('$r$ vs. $M(r)$')

        if optimize:
            index_stop = len(r) - 5
            optimizer = Optimize_powerlaw(args=(r[:index_stop],
                                                M[:index_stop]),
                                        parameters=[0., 2.])
            result = optimizer.fitting()
            print "D = %f" % result['D']
            ax.loglog(r[:index_stop], optimizer.fitted(r[:index_stop]), lw=2,
                        label='D = %f' % result['D'])
            ax.legend(loc='best')

        if save_image:
            result_image_path = "results/img/mass_in_r/beta=%2.2f" % beta
            result_image_path += "_" + time.strftime("%y%m%d_%H%M%S")
            result_image_path += ".png"
            plt.savefig(result_image_path)
            plt.close()
            print "[saved] " + result_image_path
        else:
            plt.show()
Пример #3
0
    def onselect(vmin, vmax):
        global result, selected_index, ln, text
        if globals().has_key('ln') and ln:
            ln.remove()
            text.remove()

        selected_index = np.where((steps >= vmin) & (steps <= vmax))
        optimizer = Optimize_powerlaw(
            args=(steps[selected_index], R[selected_index]),
            parameters=[1., 0.5])
        result = optimizer.fitting()
        D = 1. / result['D']
        print "beta = {}, D = {}".format(beta, D)
        optimizer.c = result['c'] + 0.15
        X = steps[selected_index]
        Y = optimizer.fitted(X)
        ln, = ax.loglog(X, Y, ls='-', marker='', color='k')
        text = ax.text((X[0] + X[-1]) / 2., (Y[0] + Y[-1]) / 2.,
                       r'$D = %2.2f$' % D,
                       ha='center', va='bottom',
                       rotation=np.arctan(result['D']) * (180 / np.pi))
Пример #4
0
    def onselect(vmin, vmax):
        global result, selected_index, ln, text, D
        if globals().has_key('ln') and ln:
            ln.remove()
            text.remove()

        selected_index = np.where((r >= vmin) & (r <= vmax))
        optimizer = Optimize_powerlaw(
            args=(r[selected_index], M[selected_index]),
            parameters=[1., 0.5])
        result = optimizer.fitting()
        D = result['D']
        print "beta = {}, D = {}".format(beta, D)
        optimizer.c = result['c'] + 1.
        X = r[selected_index]
        Y = optimizer.fitted(X)
        ln, = ax.loglog(X, Y, ls='-', marker='', color='k')
        text = ax.text((X[0] + X[-1]) / 2., (Y[0] + Y[-1]) / 2.,
                       r'$D = %2.2f$' % D,
                       ha='center', va='bottom',
                       rotation=np.arctan(result['D']) * (180 / np.pi))
Пример #5
0
def main():
    N_r = 100
    fig, ax = plt.subplots()

    main = Count_in_r()
    r, M = count_point_in_r(main, main.strings[0], N_r)

    index_stop = len(r) - 10
    ax.loglog(r, M)
    optimizer = Optimize_powerlaw(args=(r[:index_stop],
                                        M[:index_stop]),
                                    parameters=[0., 2.])
    result = optimizer.fitting()
    print "D = %f" % result['D']
    ax.loglog(r[:index_stop], optimizer.fitted(r[:index_stop]), lw=2,
              label='D = %f' % result['D'])

    ax.set_xlabel('Radius $r$ from the center of gravity')
    ax.set_ylabel('Mass in a circle with radius $r$')
    ax.set_title('$r$ vs. $M(r)$')
    ax.legend(loc='best')
    plt.show()
Пример #6
0
def main():
    N_r = 100
    fig, ax = plt.subplots()

    main = Count_in_r()
    r, M = count_point_in_r(main, main.strings[0], N_r)

    index_stop = len(r) - 10
    ax.loglog(r, M)
    optimizer = Optimize_powerlaw(args=(r[:index_stop], M[:index_stop]),
                                  parameters=[0., 2.])
    result = optimizer.fitting()
    print "D = %f" % result['D']
    ax.loglog(r[:index_stop],
              optimizer.fitted(r[:index_stop]),
              lw=2,
              label='D = %f' % result['D'])

    ax.set_xlabel('Radius $r$ from the center of gravity')
    ax.set_ylabel('Mass in a circle with radius $r$')
    ax.set_title('$r$ vs. $M(r)$')
    ax.legend(loc='best')
    plt.show()
Пример #7
0
 def onselect(vmin, vmax):
     global result, selected_index
     ax.cla()
     selected_index = np.where((X >= vmin) & (X <= vmax))
     optimizer = Optimize_powerlaw(args=(X[selected_index],
                                         Y[selected_index]),
                                   parameters=[0.1, 2.])
     result = optimizer.fitting()
     print "beta = {}, D = {}".format(beta, result['D'])
     ax.loglog(X,
               Y,
               ls='',
               marker='.',
               label=r'$\beta = %2.2f$' % beta,
               alpha=0.5)
     ax.loglog(X[selected_index],
               optimizer.fitted(X[selected_index]),
               ls='-',
               marker='',
               color='k',
               label=r'$D = %2.2f$' % result['D'])
     ax.legend(loc='best')
     ax.set_title('frames = {}, beta = {}'.format(frames, beta))
Пример #8
0
    res = []
    for _r in r:
        res.append(len(np.where(dist < _r)[0]))
    return r, np.array(res)


if __name__ == '__main__':

    N_r = 100
    fig, ax = plt.subplots()

    main = Count_in_r()
    main.execute()
    r, res = count_point_in_r(main, N_r)

    ax.loglog(r, res)
    optimizer = Optimize_powerlaw(args=(r[:-20], res[:-20]),
                                  parameters=[0., 2.])
    result = optimizer.fitting()
    print "D = %f" % result['D']
    ax.loglog(r[:-20],
              optimizer.fitted(r[:-20]),
              lw=2,
              label='D = %f' % result['D'])

    ax.set_xlabel('Radius $r$ from the center of gravity')
    ax.set_ylabel('Mass in a circle with radius $r$')
    ax.set_title('$r$ vs. $M(r)$ on Eden model')
    ax.legend(loc='best')
    plt.show()
Пример #9
0
    R = np.sqrt(np.sum((x - X) ** 2 + (y - Y) ** 2) / N)
    r = np.logspace(2, int(np.log2(R)) + 1, num=N_r, base=2.)
    dist = np.sqrt((x - X) ** 2 + (y - Y) ** 2)
    res = []
    for _r in r:
        res.append(len(np.where(dist < _r)[0]))
    return r, np.array(res)


if __name__ == '__main__':

    N_r = 100
    fig, ax = plt.subplots()

    main = Count_in_r()
    main.execute()
    r, res = count_point_in_r(main, N_r)

    ax.loglog(r, res)
    optimizer = Optimize_powerlaw(args=(r[:-20], res[:-20]), parameters=[0., 2.])
    result = optimizer.fitting()
    print "D = %f" % result['D']
    ax.loglog(r[:-20], optimizer.fitted(r[:-20]), lw=2,
              label='D = %f' % result['D'])

    ax.set_xlabel('Radius $r$ from the center of gravity')
    ax.set_ylabel('Mass in a circle with radius $r$')
    ax.set_title('$r$ vs. $M(r)$ on Eden model')
    ax.legend(loc='best')
    plt.show()