def plot_generated(): s = 0 cpm_points, cpm_data = r_cpm(s) angles_deg_errors = [0 for i in range(4)] vertical_error = 0 horizontal_error = 0 angles = [0, 38, 67, 180] signals, profile = generate_profile_signals( SAMPLES_IN_ROUND, angles=angles, cpm_points=cpm_points, vertical_error=vertical_error, horizontal_error=horizontal_error, angles_deg_errors=angles_deg_errors) signals = np.array(average(signals, SAMPLES_IN_ROUND)) profile = remove_radius(profile) signals = [s * -1 for s in signals] angles = [0, 38, 67, 180] ozono = ozono_f_coeff(signals, angles[0:3]) hybrid = hybrid_f_coeff(signals, angles=angles[0:3]) jansen2 = jansen_roundness_f_coeff(signals, angles) filtered_ozono = filter_fft(ozono, include_ecc=False) filtered_hybrid = filter_fft(hybrid, include_ecc=False) filtered_jansen2 = filter_fft(jansen2, include_ecc=False) o = get_roundness_profile(filtered_ozono) h = get_roundness_profile(filtered_hybrid) ar2 = get_roundness_profile(filtered_jansen2) offset = 0.40 r_max = 0.3 step = 0.1 f = 1 offset = 0.40 # polar_plot(profile, None, offset * f, True, None, f * r_max, f * 0.1, f, False) polar_plot(o, "Ozono", offset, False, None, r_max=r_max, step=step) polar_plot(h, "4 probe hybrid", offset, False, None, r_max=r_max, step=step) polar_plot(ar2, "4 probe LS", offset, False, None, r_max=r_max, step=step) plt.legend() plt.show()
def cpm_generated(): s = 0.1 cpm_points, cpm_data = r_cpm(s) gen_cpm = [[i[0] for i in cpm_points], [i[1] for i in cpm_points]] plot_cpms([gen_cpm], ["Center point movement"]) plt.show() return # cpm_points = circle_cpm(104.20) signals, profile = generate_profile_signals(SAMPLES_IN_ROUND, cpm_points=cpm_points) signals = np.array(average(signals)) advanced = advanced_roundness_f_coeff(signals, [0, 38, 67]) advanced2 = advanced_roundness_f_coeff(signals, [0, 38, 67, 180]) ozono = ozono_f_coeff(signals, [0, 38, 67]) hybrid = hybrid_f_coeff(signals, angles=[0, 38, 67]) filtered_advanced = filter_fft(advanced) filtered_advanced2 = filter_fft(advanced2) filtered_ozono = filter_fft(ozono) filtered_hybrid = filter_fft(hybrid) s = [signals[0], signals[2]] angles = [0, 67] ozono_cpm = get_cpm(s, angles, filtered_ozono) hybrid_cpm = get_cpm(s, angles, filtered_hybrid) ar_cpm = get_cpm(s, angles, filtered_advanced) ar2_cpm = get_cpm(s, angles, filtered_advanced2) plot_cpms([gen_cpm, ozono_cpm, hybrid_cpm, ar_cpm, ar2_cpm], [ "Generated", "Ozono", "Jansen (3 probes)", "Jansen (4 probes)", "Hybrid" ]) plt.show()
def plot_incorrectangles(): s = 0 cpm_points, cpm_data = r_cpm(s) angles_deg_errors = [0 for i in range(4)] vertical_error = 0 horizontal_error = 0 signals, profile = generate_profile_signals( SAMPLES_IN_ROUND, cpm_points=cpm_points, vertical_error=vertical_error, horizontal_error=horizontal_error, angles_deg_errors=angles_deg_errors) signals = np.array(average(signals)) profile = remove_radius(profile) signals = [s * -1 for s in signals] # advanced = advanced_roundness_f_coeff(signals, [0, 38, 67]) # advanced1 = advanced_roundness_f_coeff(signals, [0, 37.06875, 65.88984375, 179.41640625]) advanced1 = advanced_roundness_f_coeff( signals, [0, 37.06875, 65.88984375, 179.41640625]) advanced2 = advanced_roundness_f_coeff(signals, [0, 38, 67, 180]) filtered_advanced1 = filter_fft(advanced1, include_ecc=False) filtered_advanced2 = filter_fft(advanced2, include_ecc=False) h = get_roundness_profile(filtered_advanced1) h2 = get_roundness_profile(filtered_advanced2) offset = 0.45 polar_plot(profile, "Actual profile", offset) polar_plot(h2, "Angles with errors", offset) polar_plot(h, "Determined angles", offset) plt.show()
def montecarlo_single(n=0): print(n) if not os.path.exists("res/"): os.makedirs("res/") errors = False if errors: mu = 10 * 0.1 sigma = 10 * 0.03 s = nr(mu, sigma) cpm_points, cpm_data = r_cpm(s) angles_deg_errors = [nr(0, 0.25) for i in range(4)] vertical_error = nr(0, 0.35) horizontal_error = nr(0, 0.25) else: mu = 0 sigma = 0 cpm_points, cpm_data = r_cpm(0) angles_deg_errors = [0 for i in range(4)] vertical_error = 0 horizontal_error = 0 signals, profile = generate_profile_signals( SAMPLES_IN_ROUND, cpm_points=cpm_points, vertical_error=vertical_error, horizontal_error=horizontal_error, angles_deg_errors=angles_deg_errors) # add probe scaling error signals = np.array(average(signals)) advanced = advanced_roundness_f_coeff(signals, [0, 38, 67]) advanced2 = advanced_roundness_f_coeff(signals, [0, 38, 67, 180]) ozono = ozono_f_coeff(signals, [0, 38, 67]) hybrid = hybrid_f_coeff(signals, angles=[0, 38, 67]) filtered_ozono = filter_fft(ozono, include_ecc=True) filtered_hybrid = filter_fft(hybrid, include_ecc=True) filtered_advanced = filter_fft(advanced, include_ecc=True) filtered_advanced2 = filter_fft(advanced2, include_ecc=True) errors = { "SAMPLES_IN_ROUND": SAMPLES_IN_ROUND, "cpm_data": cpm_data, "vertical_error": vertical_error, "horizontal_error": horizontal_error, "angles_deg_errors": angles_deg_errors } res = { "ozono": list(filtered_ozono[0:FILTERLEVEL]), "hybrid": list(filtered_hybrid[0:FILTERLEVEL]), "advanced": list(filtered_advanced[0:FILTERLEVEL]), "advanced2": list(filtered_advanced2[0:FILTERLEVEL]) } d = {"res": res, "errors": errors} if True: with open( "res/res-mu{}-sigma{}-{}.pickle".format( mu, sigma, uuid.uuid4()), "wb") as f: f.write(pickle.dumps(d))
def plot_generated(): # cpm_points = r_cpm(1.00) # cpm_points = circle_cpm(1.20) errors = False if errors: s = nr(0.1, 0.03) cpm_points, cpm_data = r_cpm(s) angles_deg_errors = [nr(0, 0.5) for i in range(4)] vertical_error = nr(0, 0.35) horizontal_error = nr(0, 0.25) else: s = 0 cpm_points, cpm_data = r_cpm(s) angles_deg_errors = [0 for i in range(4)] vertical_error = 0 horizontal_error = 0 signals, profile = generate_profile_signals( SAMPLES_IN_ROUND, cpm_points=cpm_points, vertical_error=vertical_error, horizontal_error=horizontal_error, angles_deg_errors=angles_deg_errors) # probe scale error if errors: signals = [[i + nr(0, 0.003) for i in signal] for signal in signals] signals = np.array(average(signals)) profile = remove_radius(profile) signals = [s * -1 for s in signals] advanced = advanced_roundness_f_coeff(signals, [0, 38, 67]) advanced2 = advanced_roundness_f_coeff(signals, [0, 38, 67, 180]) ozono = ozono_f_coeff(signals, [0, 38, 67]) hybrid = hybrid_f_coeff(signals, angles=[0, 38, 67]) filtered_ozono = filter_fft(ozono, include_ecc=False) filtered_hybrid = filter_fft(hybrid, include_ecc=False) filtered_advanced = filter_fft(advanced, include_ecc=False) filtered_advanced2 = filter_fft(advanced2, include_ecc=False) # print(ecc) # print(np.abs(ecc)) # print(np.angle(ecc)) barchart(filtered_ozono) plt.show() # barchart(advanced) # plt.show() ar = get_roundness_profile(filtered_advanced) ar2 = get_roundness_profile(filtered_advanced2) o = get_roundness_profile(filtered_ozono) h = get_roundness_profile(filtered_hybrid) offset = 0.30 polar_plot(profile, "Actual profile", offset, True) # polar_plot(profile, "Actual profile", offset) polar_plot(o, "Ozono", offset) polar_plot(h, "Hybrid four point", offset) polar_plot(ar, "Advanced roundness (3 probes)", offset) polar_plot(ar2, "Advanced roundness (4 probes)", offset) plt.show()
def plots_generated(): # signals = np.array(average(SIGNALS)) X = [] e_ar = [] e_ar2 = [] e_ozono = [] e_hybrid = [] diam = 100 l = 0 h = 10 for ecc in np.linspace(l, h, 11): signals, profile = generate_profile_signals(ecc=(ecc / 100) * diam) signals = np.array(average(signals)) advanced = advanced_roundness_f_coeff(signals, [0, 38, 67]) advanced2 = advanced_roundness_f_coeff(signals, [0, 38, 67, 180]) ozono = ozono_f_coeff(signals, [0, 38, 67]) hybrid = hybrid_f_coeff(signals, angles=[0, 38, 67]) filtered_ozono = filter_fft(ozono) filtered_hybrid = filter_fft(hybrid) ar = get_roundness_profile(advanced) ar2 = get_roundness_profile(advanced2) o = get_roundness_profile(filtered_ozono) h = get_roundness_profile(filtered_hybrid) X.append(ecc / diam) # e_ar.append(RRMSE(profile, ar)) # e_ar2.append(RRMSE(profile, ar2)) # e_ozono.append(RRMSE(profile, o)) # e_hybrid.append(RRMSE(profile, h)) e_ar.append(RPPE(profile, ar)) e_ar2.append(RPPE(profile, ar2)) e_ozono.append(RPPE(profile, o)) e_hybrid.append(RPPE(profile, h)) polar_plot(profile, "Actual profile", True, title="Roundness profile e={}% of d".format(ecc)) polar_plot(o, "Ozono", False, title="Roundness profile e={}% of d".format(ecc)) polar_plot(h, "Hybrid four point", False, title="Roundness profile e={}% of d".format(ecc)) polar_plot(ar, "Advanced roundness (3 probes)", False, title="Roundness profile e={}% of d".format(ecc)) polar_plot(ar2, "Advanced roundness (4 probes)", False, title="Roundness profile e={}% of d".format(ecc)) plt.show() # plt.savefig("profile_{}.png".format(ecc)) # plt.clf() # plt.plot(X, e_ar, label="ar") plt.plot(X, e_ar2, label="ar2") plt.plot(X, e_ozono, label="ozono") plt.plot(X, e_hybrid, label="hybrid") plt.legend() plt.show()