コード例 #1
0
ファイル: fractal_dim.py プロジェクト: ssh0/growing-string
 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
ファイル: mass_in_r_run.py プロジェクト: ssh0/growing-string
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
ファイル: mass_in_r.py プロジェクト: ssh0/growing-string
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
ファイル: fractal_dim.py プロジェクト: ssh0/growing-string
 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
ファイル: mass_in_r_eden.py プロジェクト: ssh0/growing-string
    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
ファイル: count_bending.py プロジェクト: ssh0/growing-string
                plot=False,
                frames=1000,
                beta=0.,
                pre_function=count_bend)
    pairs, bend1, bend2 = np.array(main.pre_func_res).T
    steps = range(len(pairs))

    # fig, ax = plt.subplots()
    # ax.plot(steps, pairs, label="straight")
    # ax.plot(steps, bend1, label="bend1")
    # ax.plot(steps, bend2, label="bend2")
    # ax.set_xlabel("Step")
    # ax.set_ylabel("Number of pairs")
    # ax.legend(loc="best")
    # plt.show()

    # pairsがべき乗則に従いそう。
    # フィッティングを行う。
    optimizer = Optimize_powerlaw(args=(steps, pairs), parameters=[0., 1.])
    result = optimizer.fitting()
    print "D = %f" % result['D']
    # # D ≒ 1.0

    fig, ax = plt.subplots()
    ax.plot(steps, pairs, label="straight")
    ax.plot(steps, optimizer.fitted(steps), label='D = %f' % result['D'])
    ax.set_xlabel("Step")
    ax.set_ylabel("Number of pairs")
    ax.legend(loc="best")
    plt.show()
コード例 #10
0
ファイル: mass_in_r_eden.py プロジェクト: ssh0/growing-string
    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()
コード例 #11
0
    Ds = []

    for result_data_path in result_data_paths:
        data = np.load(result_data_path)
        beta = data['beta']
        num_of_strings = data['num_of_strings']
        L = data['L']
        frames = data['frames']
        r = data['r']
        M = data['M']

        # ax.loglog(r, M, label=r'$\beta = %2.2f$' % beta)

        index_stop = len(r) - 20
        optimizer = Optimize_powerlaw(args=(r[:index_stop], M[:index_stop]),
                                      parameters=[0.1, 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'])
        Ds.append(result['D'])

    ax.plot(range(11), Ds)
    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')

    result_image_path = "results/img/mass_in_r/raw"
    result_image_path += "_" + current_time
    result_image_path += ".png"
コード例 #12
0
ファイル: count_bending.py プロジェクト: ssh0/growing-string
if __name__ == '__main__':
    main = Main(Lx=60, Ly=60, size=[3,] * 1, plot=False, frames=1000,
                beta=0.,
                pre_function=count_bend)
    pairs, bend1, bend2 = np.array(main.pre_func_res).T
    steps = range(len(pairs))

    # fig, ax = plt.subplots()
    # ax.plot(steps, pairs, label="straight")
    # ax.plot(steps, bend1, label="bend1")
    # ax.plot(steps, bend2, label="bend2")
    # ax.set_xlabel("Step")
    # ax.set_ylabel("Number of pairs")
    # ax.legend(loc="best")
    # plt.show()

    # pairsがべき乗則に従いそう。
    # フィッティングを行う。
    optimizer = Optimize_powerlaw(args=(steps, pairs), parameters=[0., 1.])
    result = optimizer.fitting()
    print "D = %f" % result['D']
    # # D ≒ 1.0

    fig, ax = plt.subplots()
    ax.plot(steps, pairs, label="straight")
    ax.plot(steps, optimizer.fitted(steps), label='D = %f' % result['D'])
    ax.set_xlabel("Step")
    ax.set_ylabel("Number of pairs")
    ax.legend(loc="best")
    plt.show()
コード例 #13
0
ファイル: radius_eden.py プロジェクト: ssh0/growing-string
    X = np.average(self.lattice_X[pos])
    Y = np.average(self.lattice_Y[pos])
    r = np.sqrt(np.sum((self.lattice_X[pos] - X) ** 2
                       + (self.lattice_Y[pos] - Y) ** 2) / N)
    return r


if __name__ == '__main__':

    fig, ax = plt.subplots()

    main = Radius()
    main.execute()
    radius_of_rotation = main.post_func_res

    steps = np.arange((len(radius_of_rotation)))
    ax.loglog(steps, radius_of_rotation)

    c_start = 100
    optimizer = Optimize_powerlaw(args=(steps[c_start:],
                                        radius_of_rotation[c_start:]),
                                  parameters=[0., 0.5])
    result = optimizer.fitting()
    ax.loglog(steps[c_start:], optimizer.fitted(steps[c_start:]), lw=2,
              label='D = %f' % result['D'])
    ax.set_xlabel('Steps N')
    ax.set_ylabel('Radius of rotation')
    ax.set_title('Raidus of rotation')
    ax.legend(loc='best')
    plt.show()
コード例 #14
0
ファイル: radius_eden.py プロジェクト: ssh0/growing-string
        np.sum((self.lattice_X[pos] - X)**2 + (self.lattice_Y[pos] - Y)**2) /
        N)
    return r


if __name__ == '__main__':

    fig, ax = plt.subplots()

    main = Radius()
    main.execute()
    radius_of_rotation = main.post_func_res

    steps = np.arange((len(radius_of_rotation)))
    ax.loglog(steps, radius_of_rotation)

    c_start = 100
    optimizer = Optimize_powerlaw(args=(steps[c_start:],
                                        radius_of_rotation[c_start:]),
                                  parameters=[0., 0.5])
    result = optimizer.fitting()
    ax.loglog(steps[c_start:],
              optimizer.fitted(steps[c_start:]),
              lw=2,
              label='D = %f' % result['D'])
    ax.set_xlabel('Steps N')
    ax.set_ylabel('Radius of rotation')
    ax.set_title('Raidus of rotation')
    ax.legend(loc='best')
    plt.show()