计算 phi_c ,b_c ,Phi_c, flux_c ''' ssn_in = range_info.loc[:, 'ssn_delay'].values plt.figure(figsize=(8, 4)) plt.plot(range(len(delay_ssn)), delay_ssn, label='Data', c='b', lw=2, zorder=12) plt.plot(range(len(delay_ssn)), ssn_in, label='Smooth', c='r', lw=2) plt.legend() plt.show() phi_c = FUNC.ssn_phi(ssn_in) b_c = FUNC.ssn_b(ssn_in) Phi_c = FUNC.fit_obj_vary(0.274, phi_c, b_c) flux_c = np.array([]) for i in range(len(Phi_c)): flux_sig = FUNC.ffm_fun(0.274, Phi_c[i]) flux_c = np.append(flux_c, flux_sig) # print(range_info) range_info['phi_c'] = phi_c range_info['b_c'] = b_c range_info['Phi_c'] = Phi_c range_info['flux_c'] = flux_c range_info.to_csv(r'./output/info_test.csv')
def plot_pam(): pamSigphi = pd.read_csv(r'../ffm_Phi_1/output/pam_phi_sig.csv', header=0, index_col=0) pamTwopara = pd.read_csv(r'../sep_find_line_4/output/pam_info.csv', header=0, index_col=0) file = os.listdir(r'../input_data_0/pam_mon/') for i, name in enumerate(file): # 观测数据 df = pd.read_csv(r'../input_data_0/pam_mon/%s' % name, header=0, index_col=0) e = df.index.values flux = df.iloc[:, 0] # 不随能量变化的 phi 计算 出的通量 e_series = np.linspace(0.0085, 50, 1000) fluxSigpoint = FUNC.ffm_fun_all(e, pamSigphi.iloc[:, 0].values[i]) fluxSigseries = FUNC.ffm_fun_all(e_series, pamSigphi.iloc[:, 0].values[i]) # 模型计算出的 通量 Phi_point_c = FUNC.fit_obj_vary(e, pamTwopara.loc[:, 'phi_0'].values[i], pamTwopara.loc[:, 'b'].values[i]) fluxModlepoint = FUNC.ffm_fun_all(e, Phi_point_c) Phi_serier_c = FUNC.fit_obj_vary(e_series, pamTwopara.loc[:, 'phi_0'].values[i], pamTwopara.loc[:, 'b'].values[i]) fluxModleseries = FUNC.ffm_fun_all(e_series, Phi_serier_c) # SSN 计算出的结果 Phi_point_ssn = FUNC.fit_obj_vary(e, pamTwopara.loc[:, 'phi_c'].values[i], pamTwopara.loc[:, 'b_c'].values[i]) fluxSSNpoint = FUNC.ffm_fun_all(e, Phi_point_ssn) Phi_series_ssn = FUNC.fit_obj_vary( e_series, pamTwopara.loc[:, 'phi_c'].values[i], pamTwopara.loc[:, 'b_c'].values[i]) fluxSSNseries = FUNC.ffm_fun_all(e_series, Phi_series_ssn) # LIS flux_lis = FUNC.LIS_5(e_series) # 误差 sig_err_point = (fluxSigpoint - flux) / flux mod_err_point = (fluxModlepoint - flux) / flux ssn_err_point = (fluxSSNpoint - flux) / flux # 画图 plt.figure(figsize=(8, 6)) plt.style.use('fast') plt.style.use('seaborn-ticks') grid = plt.GridSpec(8, 6, hspace=0) ax_flux = plt.subplot(grid[0:5, 0:6]) plt.scatter(e, flux, marker='o', label='PAMELA', facecolors='none', edgecolor='k', alpha=0.8, s=40, zorder=100) plt.scatter(e, fluxSSNpoint, marker='D', s=15, facecolors='none', edgecolor='orange', alpha=1, label='FFM', zorder=101) plt.plot(e_series, flux_lis, 'r--', color='m', label='LIS', lw=2.5, zorder=10, alpha=0.5) plt.plot(e_series, fluxSigseries, 'r-', color='dodgerblue', label='FIT', alpha=0.8, lw=2.5, zorder=11) plt.plot(e_series, fluxModleseries, color='lime', label='MODEL', alpha=0.8, lw=2.5, zorder=1) ax_err = plt.subplot(grid[5:8, 0:6], sharex=ax_flux) plt.scatter(e, ssn_err_point * 100, marker='D', facecolor='none', edgecolors='orange', label='FFM', s=15, alpha=0.8) plt.scatter(e, sig_err_point * 100, marker='o', facecolor='none', edgecolors='dodgerblue', label='FIT', s=15, alpha=0.8) plt.scatter(e, mod_err_point * 100, marker='o', facecolor='none', edgecolors='lime', label='MODEL', s=15, alpha=0.8) ax_err.set_ylim(-30, 30) ax_err.grid(True, ls='-.', which='both', alpha=0.2) ax_err.tick_params(axis='both', direction='in', which='both') ax_err.set_ylabel(r'$(F_{pre}-F_{obs})/F_{obs}$ (%)', fontsize='10') ax_err.legend(loc='upper right') # ###################################################################### periods_list = list(pamTwopara.index) ax_flux.set_title('E-Flux Periods: %s' % periods_list[i], fontsize=10, weight='bold', style='italic') ax_err.set_xlabel('Kinetic Energy (GeV)', fontsize='10') ax_flux.set_ylabel('Flux $(m^{2}.s.sr.GeV)^{-1}$ ', fontsize='10') ax_flux.set_xscale('log') ax_flux.set_yscale('log') ax_err.set_xlim(0.0885, 115) ax_flux.set_ylim(0.2, 30000) ax_flux.tick_params(axis='both', direction='in', which='both') ax_flux.legend(loc='upper right') plt.savefig(r'./output/flux/pamela/periods_%s.png' % periods_list[i], dpi=250) plt.savefig(r'./output/flux/pamela/gif/periods_%d.png' % i, dpi=250) # 保存路径; plt.cla() plt.close("all") print('PAMELA %s' % periods_list[i], '完成 ==>') print('PAMELA 结束')
print(phi_lr) print(len(phi_lr)) """ 保存LR计算出的phi_lr 计算 flux_lr (log) """ df_info_lr = df_info.loc['1977-06-01':'2020-01-01', :] print(len(df_info_lr)) df_info_lr['phi_lr'] = phi_lr print(df_info_lr) df_info_lr.plot(y='phi_lr') b_c = df_info.loc['1977-06-01':'2020-01-01', 'b_c'].values Phi_lr = FUNC.fit_obj_vary(0.274, phi_lr, b_c) flux_lr = FUNC.ffm_fun_all(0.274 * np.ones(len(Phi_lr)), Phi_lr) # ============================================================== ''' 平滑flux ''' print('==============================================================') phi_pos = np.array([FUNC.LR_postive(para[i]) for i in range(len(para))]) Phi_pos = FUNC.fit_obj_vary(0.274, phi_pos, b_c) flux_pos = FUNC.ffm_fun_all(0.274 * np.ones(len(Phi_pos)), Phi_pos) phi_neg = np.array([FUNC.LR_negative(para[i]) for i in range(len(para))]) Phi_neg = FUNC.fit_obj_vary(0.274, phi_neg, b_c) flux_neg = FUNC.ffm_fun_all(0.274 * np.ones(len(Phi_neg)), Phi_neg) df_flux = pd.DataFrame(np.vstack((flux_pos, flux_neg, Phi_pos, Phi_neg)).T,