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))
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()
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))
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))
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()
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))
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()
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()