Wiki source code of DEMO - Working with FLASH data

Version 35.1 by sndueste on 2023-09-28 16:54

Hide last authors
cpassow 29.1 1 Experimental data is recorded as HDF files[link] on the GPFS file system[link]. The access rights[link to ACLs] are linked to the user's DESY account and can be managed by the PI via the GAMMA portal[link]. 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[link], Maxwell-Display Server[link] or JuyterHub[link]. We recommmend using the JupyterHub for data exploration and the SLURM resources[link] for high performances computing.
cpassow 21.1 2
cpassow 29.1 3 For simplified acccess we provide a conda module flashh5[link] which can be installed in a personal conda environment[link] on the Maxwell Cluster. Example on the usage can be found here [link - repo + binder]
4
cpassow 26.1 5 \\
6
sndueste 33.1 7 {{expand title="How to login JupyterHub"}}
cpassow 26.1 8
9
10 {{view-file att--filename="tmp.mp4" height="250"/}}
11 {{/expand}}
12
13 \\
14
sndueste 35.1 15 {{info}}
16 === Reference implementation (Python) ===
17
18 (imperative)  (% class="Object" %)[[https:~~/~~/gitlab.desy.de/christopher.passow/flash-daq-hdf>>url:https://gitlab.desy.de/christopher.passow/flash-daq-hdf||shape="rect"]]
19
20 (% class="Object" %)(object oriented) [[https:~~/~~/gitlab.desy.de/christopher.passow/fdh-builder>>url:https://gitlab.desy.de/christopher.passow/fdh-builder.git||shape="rect"]]
21
22 \\
23 {{/info}}
24
sndueste 33.1 25 link to Repos and Fab
26
cpassow 26.1 27 \\
28
sndueste 33.1 29 \\
30
31 \\
32
sndueste 34.1 33 {{expand title="older ideas ..."}}
sndueste 33.1 34 \\
35
cpassow 21.1 36 ----
37
38 === TODO ===
39
cpassow 22.1 40 (% class="task-list" %)
41 (((
42 {{task reference="/Tasks/Task_18" status="InProgress"}}
43 Short descriptions including Links:   → as Text\\
cpassow 2.1 44
cpassow 22.1 45 (% class="task-list" %)
46 (((
47
48
49 {{task reference="/Tasks/Task_19" status="InProgress"}}
50 GPFS
51 {{/task}}
52
cpassow 27.1 53 {{task reference="/Tasks/Task_40" status="InProgress"}}
54 Access rights
55 {{/task}}
56
57 {{task reference="/Tasks/Task_41" status="InProgress"}}
58 Gamma Portal
59 {{/task}}
60
61 {{task reference="/Tasks/Task_42" status="InProgress"}}
62 Maxwell
63 {{/task}}
64
sndueste 32.1 65 {{task reference="/Tasks/Task_20" status="InProgress"}}
cpassow 22.1 66 JupyterHub
67 {{/task}}
68
69 {{task reference="/Tasks/Task_21" status="InProgress"}}
70 conda ?
71 {{/task}}
cpassow 23.1 72
73 {{task reference="/Tasks/Task_36" status="InProgress"}}
74 explain install from channel instead of fixed environment, but can use environment file from example repository
75 {{/task}}
cpassow 22.1 76 )))
77 {{/task}}
78 )))
79
cpassow 8.1 80 \\
81
cpassow 22.1 82 (% class="task-list" %)
83 (((
84 {{task reference="/Tasks/Task_22" status="InProgress"}}
85 distribution
cpassow 21.1 86
cpassow 22.1 87 (% class="task-list" %)
88 (((
89
90
91 {{task reference="/Tasks/Task_23" status="InProgress"}}
92 channel  (where to host?)
93 {{/task}}
94
95 {{task reference="/Tasks/Task_24" status="InProgress"}}
96 environment file (repository with examples)
97 {{/task}}
98 )))
99 {{/task}}
100 )))
101
cpassow 21.1 102 \\
103
cpassow 22.1 104 (% class="task-list" %)
105 (((
106 {{task reference="/Tasks/Task_25" status="InProgress"}}
107 Documentation
cpassow 2.1 108
cpassow 22.1 109 (% class="task-list" %)
110 (((
111
112
113 {{task reference="/Tasks/Task_26" status="InProgress"}}
114 here VS repository VS sphinx
115 {{/task}}
116 )))
117 {{/task}}
118 )))
119
cpassow 2.1 120 \\
121
cpassow 22.1 122 (% class="task-list" %)
123 (((
124 {{task reference="/Tasks/Task_27" status="InProgress"}}
125 Binder
cpassow 2.1 126
cpassow 22.1 127 (% class="task-list" %)
128 (((
129
130
131 {{task reference="/Tasks/Task_28" status="InProgress"}}
132 examples with Stefan
133 {{/task}}
134 )))
135 {{/task}}
136 )))
137
cpassow 2.1 138 \\
139
cpassow 22.1 140 (% class="task-list" %)
141 (((
142 {{task reference="/Tasks/Task_29" status="InProgress"}}
143 Screencast
cpassow 15.1 144
cpassow 22.1 145 (% class="task-list" %)
146 (((
147
148
149 {{task reference="/Tasks/Task_30" status="InProgress"}}
150 login in jupyter hub
151 {{/task}}
152
153 {{task reference="/Tasks/Task_31" status="InProgress"}}
154 login maxwell display
155 {{/task}}
156
157 {{task reference="/Tasks/Task_32" status="InProgress"}}
158 use slix
159 {{/task}}
160
161 {{task reference="/Tasks/Task_33" status="InProgress"}}
162 use hdfview plugin in jupterLab
163 {{/task}}
164
165 {{task reference="/Tasks/Task_34" status="InProgress"}}
166 create conda env with flashh5
167 {{/task}}
168 )))
169 {{/task}}
170 )))
171
cpassow 2.1 172 \\
173
cpassow 15.1 174 \\
175
cpassow 21.1 176 ----
cpassow 2.1 177
cpassow 21.1 178 ==== under review ====
cpassow 4.1 179
180 \\
181
cpassow 8.1 182 {{code language="bash"}}
cpassow 9.1 183 conda create -n flashh5 python=3.10 # 3.10 not necessary, but would prefer 3.8 or higher
cpassow 8.1 184 source activate flashh5
cpassow 10.1 185 conda install ipython numpy pandas #TODO: fix dependcies
cpassow 8.1 186 conda install -c https://www.desy.de/~cpassow/condarepo/ flashh5
187
188 ## on jhub
cpassow 11.1 189 conda install ipykernel
cpassow 8.1 190 python -m ipykernel install --user --name flashh5 --display-name "flashh5"
191
192
cpassow 11.1 193 ## to remove on jhub
194 ## delete from: /home/$USER/.local/share/jupyter/kernels/
cpassow 8.1 195 {{/code}}
196
197 \\
198
cpassow 6.1 199 {{code language="py" title="moved to repository?"}}
cpassow 4.1 200 class RunDirectory:
201
cpassow 21.1 202 def get_run_table(): # more or less information? RunComment | Number of Files | start & stop time ?
cpassow 4.1 203 ...
204
cpassow 21.1 205 def get_run(daq, run_number): # daq is not needed!
206
cpassow 4.1 207 ...
208
209
cpassow 25.1 210 class Run: # constructor optional without RunDirectory or use there self.path
cpassow 4.1 211
cpassow 7.1 212 def get_files():
cpassow 4.1 213 ...
214
cpassow 18.1 215 def get_channels(): # of file #1
cpassow 4.1 216 ...
217
cpassow 8.1 218 def get_start_time(): # better as attribute?
cpassow 4.1 219 ...
220
cpassow 8.1 221 def get_stop_time(): # which? | better as attribute?
cpassow 4.1 222 ...
cpassow 12.1 223
cpassow 19.1 224 def to_df(daq_map): # to_df(daq_map, slice) slice=[0:4] -> throw Exception
cpassow 4.1 225 ...
226
cpassow 7.1 227 def to_series(channel):
cpassow 4.1 228 ...
229
cpassow 7.1 230 def to_array(channel):
cpassow 4.1 231 ...
232 {{/code}}
233
cpassow 6.1 234 {{code language="py" title="ideas"}}
cpassow 10.1 235 run.to_df(daq_map)
236 run.to_series(daq_adr or daq_map) # on channel only?
237 run.to_array(daq_adr) # on channel only?
cpassow 5.1 238
cpassow 21.1 239 ## interesting?
cpassow 10.1 240 # run.to_dask(daq_map)
241 # run.to_xarray(daq_map)
cpassow 5.1 242 {{/code}}
243
cpassow 4.1 244 \\
cpassow 30.1 245
246 \\
sndueste 33.1 247 {{/expand}}