Wiki source code of DEMO - Working with FLASH data
Version 41.2 by sndueste on 2025/02/05 11:21
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | Experimental data is recorded as HDF files[[~[link~]>>doc:FLASHUSER.Data Acquisition and controls.Data Access at FLASH (DAQ, gpfs,\.\.\.).Offline data analysis (DAQ).The FLASH HDF5 structure.WebHome]] on the GPFS file system[[~[link~]>>doc:ASAP3.ASAP3 Data Storage for PETRA III]]. 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 | \\ | ||
10 | |||
11 | {{info}} | ||
12 | === There are different options that help you to work with the FLASH HDF5 data in Python === | ||
13 | |||
14 | * The currently developed option for large data sets: [[the FAB package>>url:https://hasfcpkg.desy.de/fab/fab.html||shape="rect"]] ... see below | ||
15 | * 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"]] | ||
16 | |||
17 | (% class="Object" %)See also the collection of Demo data and sample scripts : [[doc:FLASHUSER.Data Acquisition and controls.DAQ and controls overview.Offline data analysis (DAQ).Collection of HDF5 sample data from different beamlines.WebHome]] | ||
18 | {{/info}} | ||
19 | |||
20 | \\ | ||
21 | |||
22 | [[~[~[image:attach:image2023-9-29_11-1-37.png~]~]>>url:https://hasfcpkg.desy.de/fab/fab.html||shape="rect"]] | ||
23 | |||
24 | \\ | ||
25 | |||
26 | {{expand title="older ideas ..."}} | ||
27 | (% class="Object" %)(object oriented) [[https:~~/~~/gitlab.desy.de/christopher.passow/fdh-builder>>url:https://gitlab.desy.de/christopher.passow/fdh-builder.git||shape="rect"]] | ||
28 | |||
29 | ---- | ||
30 | |||
31 | === TODO === | ||
32 | |||
33 | (% class="task-list" %) | ||
34 | ((( | ||
35 | {{task reference="/Tasks/Task_18" status="InProgress"}} | ||
36 | Short descriptions including Links: → as Text\\ | ||
37 | |||
38 | (% class="task-list" %) | ||
39 | ((( | ||
40 | |||
41 | |||
42 | {{task reference="/Tasks/Task_19" status="InProgress"}} | ||
43 | GPFS | ||
44 | {{/task}} | ||
45 | |||
46 | {{task reference="/Tasks/Task_40" status="InProgress"}} | ||
47 | Access rights | ||
48 | {{/task}} | ||
49 | |||
50 | {{task reference="/Tasks/Task_41" status="InProgress"}} | ||
51 | Gamma Portal | ||
52 | {{/task}} | ||
53 | |||
54 | {{task reference="/Tasks/Task_42" status="InProgress"}} | ||
55 | Maxwell | ||
56 | {{/task}} | ||
57 | |||
58 | {{task reference="/Tasks/Task_20" status="InProgress"}} | ||
59 | JupyterHub | ||
60 | {{/task}} | ||
61 | |||
62 | {{task reference="/Tasks/Task_21" status="InProgress"}} | ||
63 | conda ? | ||
64 | {{/task}} | ||
65 | |||
66 | {{task reference="/Tasks/Task_36" status="InProgress"}} | ||
67 | explain install from channel instead of fixed environment, but can use environment file from example repository | ||
68 | {{/task}} | ||
69 | ))) | ||
70 | {{/task}} | ||
71 | ))) | ||
72 | |||
73 | \\ | ||
74 | |||
75 | (% class="task-list" %) | ||
76 | ((( | ||
77 | {{task reference="/Tasks/Task_22" status="InProgress"}} | ||
78 | distribution | ||
79 | |||
80 | (% class="task-list" %) | ||
81 | ((( | ||
82 | |||
83 | |||
84 | {{task reference="/Tasks/Task_23" status="InProgress"}} | ||
85 | channel (where to host?) | ||
86 | {{/task}} | ||
87 | |||
88 | {{task reference="/Tasks/Task_24" status="InProgress"}} | ||
89 | environment file (repository with examples) | ||
90 | {{/task}} | ||
91 | ))) | ||
92 | {{/task}} | ||
93 | ))) | ||
94 | |||
95 | \\ | ||
96 | |||
97 | (% class="task-list" %) | ||
98 | ((( | ||
99 | {{task reference="/Tasks/Task_25" status="InProgress"}} | ||
100 | Documentation | ||
101 | |||
102 | (% class="task-list" %) | ||
103 | ((( | ||
104 | |||
105 | |||
106 | {{task reference="/Tasks/Task_26" status="InProgress"}} | ||
107 | here VS repository VS sphinx | ||
108 | {{/task}} | ||
109 | ))) | ||
110 | {{/task}} | ||
111 | ))) | ||
112 | |||
113 | \\ | ||
114 | |||
115 | (% class="task-list" %) | ||
116 | ((( | ||
117 | {{task reference="/Tasks/Task_27" status="InProgress"}} | ||
118 | Binder | ||
119 | |||
120 | (% class="task-list" %) | ||
121 | ((( | ||
122 | |||
123 | |||
124 | {{task reference="/Tasks/Task_28" status="InProgress"}} | ||
125 | examples with Stefan | ||
126 | {{/task}} | ||
127 | ))) | ||
128 | {{/task}} | ||
129 | ))) | ||
130 | |||
131 | \\ | ||
132 | |||
133 | (% class="task-list" %) | ||
134 | ((( | ||
135 | {{task reference="/Tasks/Task_29" status="InProgress"}} | ||
136 | Screencast | ||
137 | |||
138 | (% class="task-list" %) | ||
139 | ((( | ||
140 | |||
141 | |||
142 | {{task reference="/Tasks/Task_30" status="InProgress"}} | ||
143 | login in jupyter hub | ||
144 | {{/task}} | ||
145 | |||
146 | {{task reference="/Tasks/Task_31" status="InProgress"}} | ||
147 | login maxwell display | ||
148 | {{/task}} | ||
149 | |||
150 | {{task reference="/Tasks/Task_32" status="InProgress"}} | ||
151 | use slix | ||
152 | {{/task}} | ||
153 | |||
154 | {{task reference="/Tasks/Task_33" status="InProgress"}} | ||
155 | use hdfview plugin in jupterLab | ||
156 | {{/task}} | ||
157 | |||
158 | {{task reference="/Tasks/Task_34" status="InProgress"}} | ||
159 | create conda env with flashh5 | ||
160 | {{/task}} | ||
161 | ))) | ||
162 | {{/task}} | ||
163 | ))) | ||
164 | |||
165 | \\ | ||
166 | |||
167 | \\ | ||
168 | |||
169 | ---- | ||
170 | |||
171 | ==== under review ==== | ||
172 | |||
173 | \\ | ||
174 | |||
175 | {{code language="bash"}} | ||
176 | conda create -n flashh5 python=3.10 # 3.10 not necessary, but would prefer 3.8 or higher | ||
177 | source activate flashh5 | ||
178 | conda install ipython numpy pandas #TODO: fix dependcies | ||
179 | conda install -c https://www.desy.de/~cpassow/condarepo/ flashh5 | ||
180 | |||
181 | ## on jhub | ||
182 | conda install ipykernel | ||
183 | python -m ipykernel install --user --name flashh5 --display-name "flashh5" | ||
184 | |||
185 | |||
186 | ## to remove on jhub | ||
187 | ## delete from: /home/$USER/.local/share/jupyter/kernels/ | ||
188 | {{/code}} | ||
189 | |||
190 | \\ | ||
191 | |||
192 | {{code language="py" title="moved to repository?"}} | ||
193 | class RunDirectory: | ||
194 | |||
195 | def get_run_table(): # more or less information? RunComment | Number of Files | start & stop time ? | ||
196 | ... | ||
197 | |||
198 | def get_run(daq, run_number): # daq is not needed! | ||
199 | |||
200 | ... | ||
201 | |||
202 | |||
203 | class Run: # constructor optional without RunDirectory or use there self.path | ||
204 | |||
205 | def get_files(): | ||
206 | ... | ||
207 | |||
208 | def get_channels(): # of file #1 | ||
209 | ... | ||
210 | |||
211 | def get_start_time(): # better as attribute? | ||
212 | ... | ||
213 | |||
214 | def get_stop_time(): # which? | better as attribute? | ||
215 | ... | ||
216 | |||
217 | def to_df(daq_map): # to_df(daq_map, slice) slice=[0:4] -> throw Exception | ||
218 | ... | ||
219 | |||
220 | def to_series(channel): | ||
221 | ... | ||
222 | |||
223 | def to_array(channel): | ||
224 | ... | ||
225 | {{/code}} | ||
226 | |||
227 | {{code language="py" title="ideas"}} | ||
228 | run.to_df(daq_map) | ||
229 | run.to_series(daq_adr or daq_map) # on channel only? | ||
230 | run.to_array(daq_adr) # on channel only? | ||
231 | |||
232 | ## interesting? | ||
233 | # run.to_dask(daq_map) | ||
234 | # run.to_xarray(daq_map) | ||
235 | {{/code}} | ||
236 | |||
237 | \\ | ||
238 | |||
239 | \\ | ||
240 | {{/expand}} |