Reading experimental data in HDF5 formats¶
[1]:
from liso import open_run
[2]:
run = open_run("/home/jun/r0004")
run.info()
# of macro pulses: 524
Control channels (8):
- XFEL.MAGNETS/MAGNET.ML/QI.63.I1D/KICK_MRAD.SP
- XFEL.MAGNETS/MAGNET.ML/QI.64.I1D/KICK_MRAD.SP
- XFEL.RF/LLRF.CONTROLLER/VS.A1.I1/AMPL.SAMPLE
- XFEL.RF/LLRF.CONTROLLER/VS.A1.I1/PHASE.SAMPLE
- XFEL.RF/LLRF.CONTROLLER/VS.AH1.I1/AMPL.SAMPLE
- XFEL.RF/LLRF.CONTROLLER/VS.AH1.I1/PHASE.SAMPLE
- XFEL.RF/LLRF.CONTROLLER/VS.GUN.I1/AMPL.SAMPLE
- XFEL.RF/LLRF.CONTROLLER/VS.GUN.I1/PHASE.SAMPLE
Diagnostic channels (5):
- XFEL.DIAG/CAMERA/OTRC.64.I1D/IMAGE_EXT_ZMQ
- XFEL.DIAG/CHARGE.ML/TORA.25.I1/CHARGE.ALL
- XFEL.SDIAG/BAM/47.I1/LOW_CHARGE.RESOLUTION
- XFEL.SDIAG/BAM/47.I1/LOW_CHARGE_SINGLEBUNCH_ARRIVAL_TIME.1
- XFEL.SDIAG/BAM/47.I1/SINGLEBUNCH_NUMBER_FOR_ARRIVAL_TIME_HISTORY.1
Obtain general information¶
[3]:
run.pulse_ids[:10]
[3]:
array([911342622, 911342674, 911342984, 911343000, 911343016, 911343082,
911343088, 911343218, 911343344, 911343350], dtype=uint64)
[4]:
run.control_channels
[4]:
frozenset({'XFEL.MAGNETS/MAGNET.ML/QI.63.I1D/KICK_MRAD.SP',
'XFEL.MAGNETS/MAGNET.ML/QI.64.I1D/KICK_MRAD.SP',
'XFEL.RF/LLRF.CONTROLLER/VS.A1.I1/AMPL.SAMPLE',
'XFEL.RF/LLRF.CONTROLLER/VS.A1.I1/PHASE.SAMPLE',
'XFEL.RF/LLRF.CONTROLLER/VS.AH1.I1/AMPL.SAMPLE',
'XFEL.RF/LLRF.CONTROLLER/VS.AH1.I1/PHASE.SAMPLE',
'XFEL.RF/LLRF.CONTROLLER/VS.GUN.I1/AMPL.SAMPLE',
'XFEL.RF/LLRF.CONTROLLER/VS.GUN.I1/PHASE.SAMPLE'})
[5]:
run.diagnostic_channels
[5]:
frozenset({'XFEL.DIAG/CAMERA/OTRC.64.I1D/IMAGE_EXT_ZMQ',
'XFEL.DIAG/CHARGE.ML/TORA.25.I1/CHARGE.ALL',
'XFEL.SDIAG/BAM/47.I1/LOW_CHARGE.RESOLUTION',
'XFEL.SDIAG/BAM/47.I1/LOW_CHARGE_SINGLEBUNCH_ARRIVAL_TIME.1',
'XFEL.SDIAG/BAM/47.I1/SINGLEBUNCH_NUMBER_FOR_ARRIVAL_TIME_HISTORY.1'})
Access a single macropulse data¶
[6]:
# From index
pid, data = run.from_index(2)
assert pid == run.pulse_ids[2]
data
[6]:
{'XFEL.RF/LLRF.CONTROLLER/VS.A1.I1/PHASE.SAMPLE': 1.9274961,
'XFEL.RF/LLRF.CONTROLLER/VS.AH1.I1/AMPL.SAMPLE': 15.162286,
'XFEL.RF/LLRF.CONTROLLER/VS.A1.I1/AMPL.SAMPLE': 136.52525,
'XFEL.MAGNETS/MAGNET.ML/QI.63.I1D/KICK_MRAD.SP': 1065.1,
'XFEL.RF/LLRF.CONTROLLER/VS.GUN.I1/PHASE.SAMPLE': -47.904385,
'XFEL.RF/LLRF.CONTROLLER/VS.AH1.I1/PHASE.SAMPLE': -178.22366,
'XFEL.MAGNETS/MAGNET.ML/QI.64.I1D/KICK_MRAD.SP': -1.248001e-07,
'XFEL.RF/LLRF.CONTROLLER/VS.GUN.I1/AMPL.SAMPLE': 56.67717,
'XFEL.DIAG/CAMERA/OTRC.64.I1D/IMAGE_EXT_ZMQ': array([[0, 0, 0, ..., 1, 0, 0],
[0, 1, 0, ..., 0, 1, 2],
[0, 0, 1, ..., 0, 0, 1],
...,
[0, 0, 0, ..., 3, 0, 0],
[0, 1, 1, ..., 0, 0, 0],
[3, 0, 2, ..., 0, 0, 1]], dtype=uint16),
'XFEL.SDIAG/BAM/47.I1/SINGLEBUNCH_NUMBER_FOR_ARRIVAL_TIME_HISTORY.1': 1,
'XFEL.SDIAG/BAM/47.I1/LOW_CHARGE_SINGLEBUNCH_ARRIVAL_TIME.1': 2.9433162,
'XFEL.SDIAG/BAM/47.I1/LOW_CHARGE.RESOLUTION': 35.056053,
'XFEL.DIAG/CHARGE.ML/TORA.25.I1/CHARGE.ALL': 0.25935}
[7]:
# From macropulse ID
pid, data = run.from_id(911342984)
assert pid == 911342984
Access channel data¶
[8]:
image_channel = run.channel("XFEL.DIAG/CAMERA/OTRC.64.I1D/IMAGE_EXT_ZMQ")
[9]:
img_data = image_channel.numpy()
img_data.shape
[9]:
(524, 1750, 2330)