511 KiB
Executable File
511 KiB
Executable File
In [1]:
!pwd/das/work/units/cristallina/p21147/analysis/analysis_maelo/Cristallina_Intro
In [1]:
%load_ext autoreload
%autoreload 2
%matplotlib widget
import re
from tqdm import tqdm
from collections import defaultdict
from typing import Optional
import os
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from scipy import stats
from sfdata import SFDataFiles, sfdatafile, SFScanInfo, SFProcFile
from cristallina.utils import ROI
import cristallina.utils as cu
import cristallina as crIn [2]:
run_number = 1
scan = cu.scan_info(run_number)In [3]:
cu.channel_names(run_number)Out [3]:
/sf/cristallina/applications/conda/envs/analysis_forge/lib/python3.10/site-packages/sfdata-0.3.2-py3.11.egg/sfdata/sfdatafile.py:84: UserWarning: Skipping channel "SARFE10-PBPS053:MOTOR_X2" since it caused DatasetNotInGroupError: Cannot get dataset "data" from: <HDF5 group "/SARFE10-PBPS053:MOTOR_X2" (0 members)> /sf/cristallina/applications/conda/envs/analysis_forge/lib/python3.10/site-packages/sfdata-0.3.2-py3.11.egg/sfdata/sfdatafile.py:84: UserWarning: Skipping channel "SAROP31-OPPI151:MOTOR_X.RBV" since it caused DatasetNotInGroupError: Cannot get dataset "data" from: <HDF5 group "/SAROP31-OPPI151:MOTOR_X.RBV" (0 members)> /sf/cristallina/applications/conda/envs/analysis_forge/lib/python3.10/site-packages/sfdata-0.3.2-py3.11.egg/sfdata/sfdatafile.py:84: UserWarning: Skipping channel "SAROP31-OPPI151:MOTOR_Y.RBV" since it caused DatasetNotInGroupError: Cannot get dataset "data" from: <HDF5 group "/SAROP31-OPPI151:MOTOR_Y.RBV" (0 members)>
['JF', 'JF_first_img', 'JF_info', 'JF_mean_img', 'JF_means', 'JF_std', 'JF_sum_img', 'S10CB01-RLLE-DSP:AMPLT-VS', 'S10CB01-RLLE-DSP:PHASE-VS', 'S10CB02-RLLE-DSP:AMPLT-VS', 'S10CB02-RLLE-DSP:PHASE-VS', 'S10CB03-RLLE-DSP:AMPLT-VS', 'S10CB03-RLLE-DSP:PHASE-VS', 'S10CB04-RLLE-DSP:AMPLT-VS', 'S10CB04-RLLE-DSP:PHASE-VS', 'S10CB05-RLLE-DSP:AMPLT-VS', 'S10CB05-RLLE-DSP:PHASE-VS', 'S10CB06-RLLE-DSP:AMPLT-VS', 'S10CB06-RLLE-DSP:PHASE-VS', 'S10CB07-RLLE-DSP:AMPLT-VS', 'S10CB07-RLLE-DSP:PHASE-VS', 'S10CB08-RLLE-DSP:AMPLT-VS', 'S10CB08-RLLE-DSP:PHASE-VS', 'S10CB09-RLLE-DSP:AMPLT-VS', 'S10CB09-RLLE-DSP:PHASE-VS', 'S20CB01-RLLE-DSP:AMPLT-VS', 'S20CB01-RLLE-DSP:PHASE-VS', 'S20CB02-RLLE-DSP:AMPLT-VS', 'S20CB02-RLLE-DSP:PHASE-VS', 'S20CB03-RLLE-DSP:AMPLT-VS', 'S20CB03-RLLE-DSP:PHASE-VS', 'S20CB04-RLLE-DSP:AMPLT-VS', 'S20CB04-RLLE-DSP:PHASE-VS', 'S30CB01-RLLE-DSP:AMPLT-VS', 'S30CB01-RLLE-DSP:PHASE-VS', 'S30CB02-RLLE-DSP:AMPLT-VS', 'S30CB02-RLLE-DSP:PHASE-VS', 'S30CB03-RLLE-DSP:AMPLT-VS', 'S30CB03-RLLE-DSP:PHASE-VS', 'S30CB04-RLLE-DSP:AMPLT-VS', 'S30CB04-RLLE-DSP:PHASE-VS', 'S30CB05-RLLE-DSP:AMPLT-VS', 'S30CB05-RLLE-DSP:PHASE-VS', 'S30CB06-RLLE-DSP:AMPLT-VS', 'S30CB06-RLLE-DSP:PHASE-VS', 'S30CB07-RLLE-DSP:AMPLT-VS', 'S30CB07-RLLE-DSP:PHASE-VS', 'S30CB08-RLLE-DSP:AMPLT-VS', 'S30CB08-RLLE-DSP:PHASE-VS', 'S30CB09-RLLE-DSP:AMPLT-VS', 'S30CB09-RLLE-DSP:PHASE-VS', 'S30CB10-RLLE-DSP:AMPLT-VS', 'S30CB10-RLLE-DSP:PHASE-VS', 'S30CB11-RLLE-DSP:AMPLT-VS', 'S30CB11-RLLE-DSP:PHASE-VS', 'S30CB12-RLLE-DSP:AMPLT-VS', 'S30CB12-RLLE-DSP:PHASE-VS', 'S30CB13-RLLE-DSP:AMPLT-VS', 'S30CB13-RLLE-DSP:PHASE-VS', 'S30CB14-RLLE-DSP:AMPLT-VS', 'S30CB14-RLLE-DSP:PHASE-VS', 'SARES30-CAMS156-XE:intensity', 'SARFE10-PBIG050-EVR0:CALCI', 'SARFE10-PBPG050:HAMP-INTENSITY-CAL', 'SARFE10-PBPG050:PHOTON-ENERGY-PER-PULSE-AVG', 'SARFE10-PBPS053:INTENSITY', 'SARFE10-PBPS053:XPOS', 'SARFE10-PBPS053:YPOS', 'SARFE10-PSSS059:FIT-COM', 'SARFE10-PSSS059:FIT-FWHM', 'SARFE10-PSSS059:FIT-RES', 'SARFE10-PSSS059:FIT-RMS', 'SARFE10-PSSS059:SPECT-COM', 'SARFE10-PSSS059:SPECT-RES', 'SARFE10-PSSS059:SPECT-RMS', 'SARFE10-PSSS059:SPECTRUM_X', 'SARFE10-PSSS059:SPECTRUM_Y', 'SARFE10-PSSS059:SPECTRUM_Y_SUM', 'SARFE10-PSSS059:processing_parameters', 'SINDI01-RLLE-DSP:AMPLT-VS', 'SINDI01-RLLE-DSP:PHASE-VS', 'SINEG01-RLLE-DSP:AMPLT-VS', 'SINSB01-RLLE-DSP:AMPLT-VS', 'SINSB01-RLLE-DSP:PHASE-VS', 'SINSB02-RLLE-DSP:AMPLT-VS', 'SINSB02-RLLE-DSP:PHASE-VS', 'SINSB03-RLLE-DSP:AMPLT-VS', 'SINSB03-RLLE-DSP:PHASE-VS', 'SINSB04-RLLE-DSP:AMPLT-VS', 'SINSB04-RLLE-DSP:PHASE-VS', 'SINXB01-RLLE-DSP:AMPLT-VS', 'SINXB01-RLLE-DSP:PHASE-VS', 'SARES30-CAMS156-XE:FPICTURE', 'JF16T03V01', 'SARCL02-MBND100:P-READ', 'SARES30-MCS2750:MOT_1.RBV', 'SARES30-MCS2750:MOT_2.RBV', 'SARES30-MCS2750:MOT_3.RBV', 'SARFE10-OATT053:ENERGY', 'SARFE10-OATT053:MOTOR_1.RBV', 'SARFE10-OATT053:MOTOR_2.RBV', 'SARFE10-OATT053:MOTOR_3.RBV', 'SARFE10-OATT053:MOTOR_4.RBV', 'SARFE10-OATT053:MOTOR_5.RBV', 'SARFE10-OATT053:MOTOR_6.RBV', 'SARFE10-OATT053:TRANS_RB', 'SARFE10-OATT053:TRANS_SP', 'SARFE10-PBPG050:PHOTON-ENERGY-PER-PULSE-DS', 'SARFE10-PBPG050:PHOTON-ENERGY-PER-PULSE-US', 'SARFE10-PBPS053:MOTOR_PROBE', 'SARFE10-PBPS053:MOTOR_X1', 'SAROP31-OAPU107:MOTOR_X.RBV', 'SAROP31-OAPU107:MOTOR_Y.RBV', 'SAROP31-OAPU149:MOTOR_X.RBV', 'SAROP31-OAPU149:MOTOR_Y.RBV', 'SAROP31-OATA150:MOTOR_1.RBV', 'SAROP31-OATA150:MOTOR_2.RBV', 'SAROP31-OATA150:MOTOR_3.RBV', 'SAROP31-OATA150:MOTOR_4.RBV', 'SAROP31-OATA150:MOTOR_5.RBV', 'SAROP31-OATA150:MOTOR_6.RBV', 'SAROP31-OATA150:TRANS_SP', 'SAROP31-ODMV152:BD.RBV', 'SAROP31-ODMV152:BU.RBV', 'SAROP31-ODMV152:TX.RBV', 'SAROP31-ODMV152:VS1.RBV', 'SAROP31-ODMV152:VS2.RBV', 'SAROP31-ODMV152:VS3.RBV', 'SAROP31-ODMV152:W_RX.RBV', 'SAROP31-ODMV152:W_RZ.RBV', 'SAROP31-ODMV152:W_X.RBV', 'SAROP31-ODMV152:W_Y.RBV', 'SAROP31-OKBH154:BD.RBV', 'SAROP31-OKBH154:BU.RBV', 'SAROP31-OKBH154:TX2.RBV', 'SAROP31-OKBH154:TY1.RBV', 'SAROP31-OKBH154:TY2.RBV', 'SAROP31-OKBH154:TY3.RBV', 'SAROP31-OKBH154:W_RX.RBV', 'SAROP31-OKBH154:W_RY.RBV', 'SAROP31-OKBH154:W_RZ.RBV', 'SAROP31-OKBH154:W_X.RBV', 'SAROP31-OKBH154:W_Y.RBV', 'SAROP31-OKBV153:BD.RBV', 'SAROP31-OKBV153:BU.RBV', 'SAROP31-OKBV153:TX1.RBV', 'SAROP31-OKBV153:TX2.RBV', 'SAROP31-OKBV153:TY1.RBV', 'SAROP31-OKBV153:TY2.RBV', 'SAROP31-OKBV153:TY3.RBV', 'SAROP31-OKBV153:W_RX.RBV', 'SAROP31-OKBV153:W_RY.RBV', 'SAROP31-OKBV153:W_RZ.RBV', 'SAROP31-OKBV153:W_X.RBV', 'SAROP31-OKBV153:W_Y.RBV', 'SAROP31-OLAS147:MOTOR_1.RBV', 'SAROP31-OOMH067:BD.RBV', 'SAROP31-OOMH067:BU.RBV', 'SAROP31-OOMH067:RY.RBV', 'SAROP31-OOMH067:TX.RBV', 'SAROP31-OOMH067:VS1.RBV', 'SAROP31-OOMH067:VS2.RBV', 'SAROP31-OOMH067:VS3.RBV', 'SAROP31-OOMH067:W_RX.RBV', 'SAROP31-OOMH067:W_RY.RBV', 'SAROP31-OOMH067:W_RZ.RBV', 'SAROP31-OOMH067:W_X.RBV', 'SAROP31-OOMH067:W_Y.RBV', 'SAROP31-OOMH084:W_RX.RBV', 'SAROP31-OOMH084:W_RY.RBV', 'SAROP31-OOMH084:W_RZ.RBV', 'SAROP31-OOMH084:W_X.RBV', 'SAROP31-OOMH084:W_Y.RBV', 'SAROP31-PBPS113:MOTOR_PROBE.RBV', 'SAROP31-PBPS113:MOTOR_X1.RBV', 'SAROP31-PBPS113:MOTOR_Y1.RBV', 'SAROP31-PPRM085:MOTOR_PROBE.RBV', 'SAROP31-PPRM113:MOTOR_PROBE.RBV', 'SAROP31-PSCR068:MOTOR_PROBE.RBV', 'SARUN03-UIND030:K_SET.VAL', 'SARUN04-UIND030:K_SET.VAL', 'SARUN05-UIND030:K_SET.VAL', 'SARUN06-UIND030:K_SET.VAL', 'SARUN07-UIND030:K_SET.VAL', 'SARUN08-UIND030:K_SET.VAL', 'SARUN09-UIND030:K_SET.VAL', 'SARUN10-UIND030:K_SET.VAL', 'SARUN11-UIND030:K_SET.VAL', 'SARUN12-UIND030:K_SET.VAL', 'SARUN13-UIND030:K_SET.VAL', 'SARUN14-UIND030:K_SET.VAL', 'SARUN15-UIND030:K_SET.VAL', 'SARUN:FELPHOTENE.VAL']
In [23]:
scan.readbacksOut [23]:
array([0])
In [39]:
scan.info['pulseIds']Out [39]:
[[18027050018, 18027051018]]
In [41]:
scan.info['pulseIds'][0][1] - scan.info['pulseIds'][0][0]Out [41]:
1000
In [6]:
JF = 'JF16T03V01'
PSSS_Y = 'SARFE10-PSSS059:SPECTRUM_Y'
GASMONITOR = 'SARFE10-PBIG050-EVR0:CALCI'In [9]:
scan[0][JF].data[0]Out [9]:
array([[ 1.9400723e-01, 3.8746792e-01, -3.2162413e-01, ...,
-3.0771542e-02, -2.2246270e-01, -1.5886860e-01],
[ 5.9779334e-01, -1.2918156e-01, 1.7123930e-02, ...,
4.7929460e-01, -1.1291032e-01, -1.5057071e-02],
[ 2.4136053e-01, 5.2310520e-01, 3.5945097e-01, ...,
4.5555338e-01, 4.4841704e-01, 1.1548842e-01],
...,
[ 2.9501557e-01, 1.4901014e-01, 7.4720460e-01, ...,
0.0000000e+00, 0.0000000e+00, 7.7488422e+02],
[ 7.0479155e-01, 5.7560408e-01, 5.9870780e-01, ...,
0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
[ 9.4347262e-01, -8.1681706e-02, 5.5027962e-01, ...,
0.0000000e+00, 0.0000000e+00, 0.0000000e+00]], dtype=float32)In [10]:
scan[0][JF].data.shapeOut [10]:
(1001, 1554, 1030)
In [14]:
pulse_number = 100
fig, ax = plt.subplots(1,1, constrained_layout=True)
ax.imshow(scan[0][JF].data[pulse_number],vmin=0,vmax=50)Out [14]:
<matplotlib.image.AxesImage at 0x2ac0f311fa30>
In [22]:
pulse_number = 100
fig, ax = plt.subplots(1,3, figsize=(10,5),constrained_layout=True)
ax[0].imshow(scan[0][JF].data[pulse_number],vmin=0,vmax=50)
ax[1].plot(scan[0][PSSS_Y].data[pulse_number])
ax[1].set_xlabel('Energy [eV]')
ax[1].set_ylabel('Amplitude [a.u.]')
ax[2].plot(scan[0][GASMONITOR].data[pulse_number],marker='x',markersize=10, color='red')Out [22]:
[<matplotlib.lines.Line2D at 0x2ac0faebed40>]
In [ ]: