Wiki source code of DEMO - Working with FLASH data

Version 51.1 by makuadm on 2026-01-07 06:02

Hide last authors
sndueste 42.5 1 Experimental data is recorded as HDF files[[~[link~]>>doc:FS-FLASH USER tmp.Data Acquisition and controls 1.DAQ and controls overview.Offline data analysis (DAQ).The FLASH HDF5 structure.WebHome]] on the GPFS file system[[~[link~]>>https://docs.desy.de/asap3/]]. The access rights are linked to the user's DESY account and can be managed by the PI via the GAMMA portal[[~[link~]>>url:https://gamma-portal.desy.de/||shape="rect"]]. The experimental data can be downloaded via the GAMMA portal, but it is advised to use the DESY computing infrastructure. Access point are via ssh, Maxwell-Display Server[[~[link~]>>url:https://confluence.desy.de/display/MXW/Maxwell+Cluster||shape="rect"]] or JuyterHub[[~[link~]>>url:https://confluence.desy.de/display/MXW/JupyterHub+on+Maxwell||shape="rect"]]. We recommend using the JupyterHub for data exploration and the SLURM resources for high performances computing - see FAB for easy usage of the infrastructure.
cpassow 21.1 2
sndueste 38.1 3 {{info title="How to login JupyterHub"}}
makuadm 43.1 4 === ===
cpassow 26.1 5
sndueste 38.1 6 {{view-file att--filename="tmp.mp4" height="150"/}}
7 {{/info}}
cpassow 26.1 8
sndueste 35.1 9 {{info}}
sndueste 41.1 10 === There are different options that help you to work with the FLASH HDF5 data in Python ===
sndueste 35.1 11
sndueste 39.1 12 * The currently developed option for large data sets: [[the FAB package>>url:https://hasfcpkg.desy.de/fab/fab.html||shape="rect"]] ... see below
13 * and for smaller projects:  (% class="Object" %)[[https:~~/~~/gitlab.desy.de/christopher.passow/flash-daq-hdf>>url:https://gitlab.desy.de/christopher.passow/flash-daq-hdf||shape="rect"]]
sndueste 35.1 14
sndueste 42.4 15 (% class="Object" %)See also the collection of Demo data and sample scripts : [[doc:FS-FLASH USER tmp.Data Acquisition and controls 1.DAQ and controls overview.Offline data analysis (DAQ).Collection of HDF5 sample data from different beamlines.WebHome]]
sndueste 35.1 16 {{/info}}
17
cpassow 26.1 18
sndueste 36.1 19 [[~[~[image:attach:image2023-9-29_11-1-37.png~]~]>>url:https://hasfcpkg.desy.de/fab/fab.html||shape="rect"]]
sndueste 33.1 20
sndueste 34.1 21 {{expand title="older ideas ..."}}
sndueste 36.1 22 (% class="Object" %)(object oriented) [[https:~~/~~/gitlab.desy.de/christopher.passow/fdh-builder>>url:https://gitlab.desy.de/christopher.passow/fdh-builder.git||shape="rect"]]
sndueste 33.1 23
cpassow 21.1 24 ----
25
26 === TODO ===
27
cpassow 22.1 28 (% class="task-list" %)
29 (((
makuadm 43.1 30 {{task reference="/Tasks/Task_18" status="InProgress" completeDate="" createDate="2026-01-06" reporter=""}}
sndueste 41.3 31 Short descriptions including Links:   → as Text
makuadm 43.1 32 \\
cpassow 22.1 33 {{/task}}
34 )))
35
cpassow 8.1 36
cpassow 22.1 37 (% class="task-list" %)
38 (((
39 {{task reference="/Tasks/Task_22" status="InProgress"}}
40 distribution
cpassow 21.1 41
cpassow 22.1 42 (% class="task-list" %)
43 (((
44
45
makuadm 46.1 46 {{task reference="/Tasks/Task_23" status="InProgress" completeDate="" createDate="2026-01-06" reporter=""}}
cpassow 22.1 47 channel  (where to host?)
48 {{/task}}
49
makuadm 51.1 50 {{task reference="/Tasks/Task_24" status="InProgress" completeDate="" createDate="2026-01-07" reporter=""}}
cpassow 22.1 51 environment file (repository with examples)
52 {{/task}}
53 )))
54 {{/task}}
55 )))
56
cpassow 21.1 57
cpassow 22.1 58 (% class="task-list" %)
59 (((
makuadm 50.1 60 {{task reference="/Tasks/Task_25" status="InProgress" completeDate="" createDate="2026-01-07" reporter=""}}
cpassow 22.1 61 Documentation
makuadm 50.1 62 \\
cpassow 22.1 63 {{/task}}
64 )))
65
cpassow 2.1 66
cpassow 22.1 67 (% class="task-list" %)
68 (((
makuadm 49.1 69 {{task reference="/Tasks/Task_27" status="InProgress" completeDate="" createDate="2026-01-07" reporter=""}}
cpassow 22.1 70 Binder
makuadm 49.1 71 \\
cpassow 22.1 72 {{/task}}
73 )))
74
cpassow 2.1 75
cpassow 22.1 76 (% class="task-list" %)
77 (((
makuadm 48.1 78 {{task reference="/Tasks/Task_29" status="InProgress" completeDate="" createDate="2026-01-07" reporter=""}}
cpassow 22.1 79 Screencast
makuadm 48.1 80 \\
cpassow 22.1 81 {{/task}}
82 )))
83
cpassow 2.1 84
cpassow 15.1 85
cpassow 21.1 86 ----
cpassow 2.1 87
cpassow 21.1 88 ==== under review ====
cpassow 4.1 89
90
cpassow 8.1 91 {{code language="bash"}}
cpassow 9.1 92 conda create -n flashh5 python=3.10 # 3.10 not necessary, but would prefer 3.8 or higher
cpassow 8.1 93 source activate flashh5
cpassow 10.1 94 conda install ipython numpy pandas #TODO: fix dependcies
cpassow 8.1 95 conda install -c https://www.desy.de/~cpassow/condarepo/ flashh5
96
97 ## on jhub
cpassow 11.1 98 conda install ipykernel
cpassow 8.1 99 python -m ipykernel install --user --name flashh5 --display-name "flashh5"
100
101
cpassow 11.1 102 ## to remove on jhub
103 ## delete from: /home/$USER/.local/share/jupyter/kernels/
cpassow 8.1 104 {{/code}}
105
sndueste 41.3 106 {{code language="py" title="
107 moved to repository?"}}
cpassow 4.1 108 class RunDirectory:
109
cpassow 21.1 110 def get_run_table(): # more or less information? RunComment | Number of Files | start & stop time ?
cpassow 4.1 111 ...
112
cpassow 21.1 113 def get_run(daq, run_number): # daq is not needed!
114
cpassow 4.1 115 ...
116
117
cpassow 25.1 118 class Run: # constructor optional without RunDirectory or use there self.path
cpassow 4.1 119
cpassow 7.1 120 def get_files():
cpassow 4.1 121 ...
122
cpassow 18.1 123 def get_channels(): # of file #1
cpassow 4.1 124 ...
125
cpassow 8.1 126 def get_start_time(): # better as attribute?
cpassow 4.1 127 ...
128
cpassow 8.1 129 def get_stop_time(): # which? | better as attribute?
cpassow 4.1 130 ...
cpassow 12.1 131
cpassow 19.1 132 def to_df(daq_map): # to_df(daq_map, slice) slice=[0:4] -> throw Exception
cpassow 4.1 133 ...
134
cpassow 7.1 135 def to_series(channel):
cpassow 4.1 136 ...
137
cpassow 7.1 138 def to_array(channel):
cpassow 4.1 139 ...
140 {{/code}}
141
cpassow 6.1 142 {{code language="py" title="ideas"}}
cpassow 10.1 143 run.to_df(daq_map)
144 run.to_series(daq_adr or daq_map) # on channel only?
145 run.to_array(daq_adr) # on channel only?
cpassow 5.1 146
cpassow 21.1 147 ## interesting?
cpassow 10.1 148 # run.to_dask(daq_map)
149 # run.to_xarray(daq_map)
cpassow 5.1 150 {{/code}}
151
cpassow 30.1 152
sndueste 41.3 153
sndueste 33.1 154 {{/expand}}