diff --git a/pes_to_spec/test/offline_analysis.py b/pes_to_spec/test/offline_analysis.py index 6cb2a52bdadb5b9f883b8012a662c4edce03015a..11966b7475f3d334ace2d200a944826e2929888d 100755 --- a/pes_to_spec/test/offline_analysis.py +++ b/pes_to_spec/test/offline_analysis.py @@ -368,6 +368,12 @@ def main(): total_unc = np.sqrt(np.mean(spec_pred["total_unc"]**2, axis=(-1, -2))) median_unc = np.median(spec_pred["total_unc"], axis=(-1, -2)) + # sums + first, last = model.get_low_resolution_range() + pes_select_t = np.concatenate([-pes_raw_t[ch][:, first:last] for ch in pes_raw_t], axis=-1) + sum_pes = np.sum(pes_select_t, axis=(-1)) + sum_spec = np.sum(spec_raw_int_t, axis=(-1)) + q = dict(chi2_prepca=chi2_prepca, ndof=spec_data_pca.shape[-1]*np.ones_like(chi2_prepca), xgm_flux_t=xgm_flux_t[:,0], @@ -375,7 +381,9 @@ def main(): nopca_unc=nopca_unc, total_unc=total_unc, median_unc=median_unc, - root_mean_squared_pca_unc=np.sqrt((spec_pred["expected_pca_unc"][:, 0, :]**2).mean(axis=-1)) + root_mean_squared_pca_unc=np.sqrt((spec_pred["expected_pca_unc"][:, 0, :]**2).mean(axis=-1)), + sum_pes=sum_pes, + sum_spec=sum_spec, ) q.update({f'res_prepca_{k}': res_prepca[:, k] for k in range(res_prepca.shape[1]) diff --git a/pes_to_spec/test/prepare_plots.py b/pes_to_spec/test/prepare_plots.py index 49f8f314c6f02668bc188407871b84fd065d59eb..cb70826f291ed2fe7cc8f114e1fe87bab2681d69 100755 --- a/pes_to_spec/test/prepare_plots.py +++ b/pes_to_spec/test/prepare_plots.py @@ -31,12 +31,13 @@ def plot_final(df: pd.DataFrame, smooth: bool, filename: str): ax = fig.add_subplot(gs[0, 0]) if smooth: ax.plot(df.energy, df.spec_smooth, c='b', lw=3, label="Grating spectrometer (smoothened)") + Y = np.amax(df.spec_smooth) else: ax.plot(df.energy, df.spec, c='b', lw=3, label="Grating spectrometer") + Y = np.amax(df.spec) ax.plot(df.energy, df.prediction, c='r', ls='--', lw=3, label="Prediction") ax.fill_between(df.energy, df.prediction - 1*df.unc, df.prediction + 1*df.unc, facecolor='gold', alpha=0.5, label="68% unc. (total)") ax.fill_between(df.energy, df.prediction - 1*df.unc_pca, df.prediction + 1*df.unc_pca, facecolor='magenta', alpha=0.5, label="68% unc. (PCA only)") - Y = np.amax(df.spec) ax.legend(frameon=False, borderaxespad=0, loc='upper left') ax.set_title(f"Beam intensity: {df.beam_intensity.iloc[0]:.1f} mJ", loc="left") ax.spines['top'].set_visible(False) @@ -44,7 +45,7 @@ def plot_final(df: pd.DataFrame, smooth: bool, filename: str): ax.set( xlabel="Photon energy [eV]", ylabel="Intensity [a.u.]", - ylim=(0, 1.3*Y)) + ylim=(0, 1.2*Y)) plt.tight_layout() fig.savefig(filename) plt.close(fig) @@ -133,6 +134,50 @@ def plot_chi2_intensity(df: pd.DataFrame, filename: str): fig.savefig(filename) plt.close(fig) +def plot_pes_vs_spec_intensity(df: pd.DataFrame, filename: str): + fig = plt.figure(figsize=(12, 8)) + gs = GridSpec(1, 1) + ax = fig.add_subplot(gs[0, 0]) + sns.scatterplot(x=df.sum_spec, y=df.sum_pes, + s=20, + alpha=0.4, + c="tab:red", + #size=df.root_mean_squared_pca_unc, + #sizes=(20, 200), + ax=ax) + ax = plt.gca() + ax.set(title=f"", + xlabel=r"Total grating spec. intensity [a.u.]", + ylabel="Total PES intensity [a.u.]", + ) + ax.spines['top'].set_visible(False) + ax.spines['right'].set_visible(False) + plt.tight_layout() + fig.savefig(filename) + plt.close(fig) + +def plot_xgm_vs_spec_intensity(df: pd.DataFrame, filename: str): + fig = plt.figure(figsize=(12, 8)) + gs = GridSpec(1, 1) + ax = fig.add_subplot(gs[0, 0]) + sns.scatterplot(x=df.sum_spec, y=df.xgm_flux_t*1e-3, + s=20, + alpha=0.4, + c="tab:red", + #size=df.root_mean_squared_pca_unc, + #sizes=(20, 200), + ax=ax) + ax = plt.gca() + ax.set(title=f"", + xlabel=r"Total grating spec. intensity [a.u.]", + ylabel="XGM pulse intensity [mJ]", + ) + ax.spines['top'].set_visible(False) + ax.spines['right'].set_visible(False) + plt.tight_layout() + fig.savefig(filename) + plt.close(fig) + def plot_rmse_intensity(df: pd.DataFrame, filename: str): fig = plt.figure(figsize=(12, 8)) gs = GridSpec(1, 1) @@ -425,6 +470,9 @@ if __name__ == '__main__': fast_range=fast_range, Ne1s=Ne1s, label=label, refs=refs, counts_to_mv=counts_to_mv) + plot_pes_vs_spec_intensity(pd.read_csv(f'{indir}/quality.csv'), f'pes_vs_spec_intensity.pdf') + plot_xgm_vs_spec_intensity(pd.read_csv(f'{indir}/quality.csv'), f'xgm_vs_spec_intensity.pdf') + plot_chi2(pd.read_csv(f'{indir}/quality.csv'), f'chi2_prepca.pdf') plot_chi2_intensity(pd.read_csv(f'{indir}/quality.csv'), f'intensity_vs_chi2_prepca.pdf') plot_unc_intensity(pd.read_csv(f'{indir}/quality.csv'), f'intensity_vs_unc.pdf')