Wiki source code of DEMO - Working with FLASH data

Version 45.1 by makuadm on 2026-01-06 21:19

Show last authors
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.
2
3 {{info title="How to login JupyterHub"}}
4 === ===
5
6 {{view-file att--filename="tmp.mp4" height="150"/}}
7 {{/info}}
8
9 {{info}}
10 === There are different options that help you to work with the FLASH HDF5 data in Python ===
11
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"]]
14
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]]
16 {{/info}}
17
18
19 [[~[~[image:attach:image2023-9-29_11-1-37.png~]~]>>url:https://hasfcpkg.desy.de/fab/fab.html||shape="rect"]]
20
21 {{expand title="older ideas ..."}}
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"]]
23
24 ----
25
26 === TODO ===
27
28 (% class="task-list" %)
29 (((
30 {{task reference="/Tasks/Task_18" status="InProgress" completeDate="" createDate="2026-01-06" reporter=""}}
31 Short descriptions including Links:   → as Text
32 \\
33 {{/task}}
34 )))
35
36
37 (% class="task-list" %)
38 (((
39 {{task reference="/Tasks/Task_22" status="InProgress"}}
40 distribution
41
42 (% class="task-list" %)
43 (((
44
45
46 {{task reference="/Tasks/Task_23" status="InProgress"}}
47 channel  (where to host?)
48 {{/task}}
49
50 {{task reference="/Tasks/Task_24" status="InProgress"}}
51 environment file (repository with examples)
52 {{/task}}
53 )))
54 {{/task}}
55 )))
56
57
58 (% class="task-list" %)
59 (((
60 {{task reference="/Tasks/Task_25" status="InProgress"}}
61 Documentation
62
63 (% class="task-list" %)
64 (((
65
66
67 {{task reference="/Tasks/Task_26" status="InProgress"}}
68 here VS repository VS sphinx
69 {{/task}}
70 )))
71 {{/task}}
72 )))
73
74
75 (% class="task-list" %)
76 (((
77 {{task reference="/Tasks/Task_27" status="InProgress"}}
78 Binder
79
80 (% class="task-list" %)
81 (((
82
83
84 {{task reference="/Tasks/Task_28" status="InProgress"}}
85 examples with Stefan
86 {{/task}}
87 )))
88 {{/task}}
89 )))
90
91
92 (% class="task-list" %)
93 (((
94 {{task reference="/Tasks/Task_29" status="InProgress"}}
95 Screencast
96
97 (% class="task-list" %)
98 (((
99
100
101 {{task reference="/Tasks/Task_30" status="InProgress"}}
102 login in jupyter hub
103 {{/task}}
104
105 {{task reference="/Tasks/Task_31" status="InProgress"}}
106 login maxwell display
107 {{/task}}
108
109 {{task reference="/Tasks/Task_32" status="InProgress"}}
110 use slix
111 {{/task}}
112
113 {{task reference="/Tasks/Task_33" status="InProgress" completeDate="" createDate="2026-01-06" reporter=""}}
114 use hdfview plugin in jupterLab
115 {{/task}}
116
117 {{task reference="/Tasks/Task_34" status="InProgress" completeDate="" createDate="2026-01-06" reporter=""}}
118 create conda env with flashh5
119 {{/task}}
120 )))
121 {{/task}}
122 )))
123
124
125
126 ----
127
128 ==== under review ====
129
130
131 {{code language="bash"}}
132 conda create -n flashh5 python=3.10 # 3.10 not necessary, but would prefer 3.8 or higher
133 source activate flashh5
134 conda install ipython numpy pandas #TODO: fix dependcies
135 conda install -c https://www.desy.de/~cpassow/condarepo/ flashh5
136
137 ## on jhub
138 conda install ipykernel
139 python -m ipykernel install --user --name flashh5 --display-name "flashh5"
140
141
142 ## to remove on jhub
143 ## delete from: /home/$USER/.local/share/jupyter/kernels/
144 {{/code}}
145
146 {{code language="py" title="
147 moved to repository?"}}
148 class RunDirectory:
149
150 def get_run_table(): # more or less information? RunComment | Number of Files | start & stop time ?
151 ...
152
153 def get_run(daq, run_number): # daq is not needed!
154
155 ...
156
157
158 class Run: # constructor optional without RunDirectory or use there self.path
159
160 def get_files():
161 ...
162
163 def get_channels(): # of file #1
164 ...
165
166 def get_start_time(): # better as attribute?
167 ...
168
169 def get_stop_time(): # which? | better as attribute?
170 ...
171
172 def to_df(daq_map): # to_df(daq_map, slice) slice=[0:4] -> throw Exception
173 ...
174
175 def to_series(channel):
176 ...
177
178 def to_array(channel):
179 ...
180 {{/code}}
181
182 {{code language="py" title="ideas"}}
183 run.to_df(daq_map)
184 run.to_series(daq_adr or daq_map) # on channel only?
185 run.to_array(daq_adr) # on channel only?
186
187 ## interesting?
188 # run.to_dask(daq_map)
189 # run.to_xarray(daq_map)
190 {{/code}}
191
192
193
194 {{/expand}}