Wiki source code of DEMO - Working with FLASH data
Last modified by sndueste on 2025/03/20 12:32
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | Experimental data is recorded as HDF files[[~[link~]>>doc:FLASHUSER.Data Acquisition and controls.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:FLASHUSER.Data Acquisition and controls.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"}} | ||
31 | Short descriptions including Links: → as Text | ||
32 | |||
33 | (% class="task-list" %) | ||
34 | ((( | ||
35 | |||
36 | |||
37 | {{task reference="/Tasks/Task_19" status="InProgress"}} | ||
38 | GPFS | ||
39 | {{/task}} | ||
40 | |||
41 | {{task reference="/Tasks/Task_40" status="InProgress"}} | ||
42 | Access rights | ||
43 | {{/task}} | ||
44 | |||
45 | {{task reference="/Tasks/Task_41" status="InProgress"}} | ||
46 | Gamma Portal | ||
47 | {{/task}} | ||
48 | |||
49 | {{task reference="/Tasks/Task_42" status="InProgress"}} | ||
50 | Maxwell | ||
51 | {{/task}} | ||
52 | |||
53 | {{task reference="/Tasks/Task_20" status="InProgress"}} | ||
54 | JupyterHub | ||
55 | {{/task}} | ||
56 | |||
57 | {{task reference="/Tasks/Task_21" status="InProgress"}} | ||
58 | conda ? | ||
59 | {{/task}} | ||
60 | |||
61 | {{task reference="/Tasks/Task_36" status="InProgress"}} | ||
62 | explain install from channel instead of fixed environment, but can use environment file from example repository | ||
63 | {{/task}} | ||
64 | ))) | ||
65 | {{/task}} | ||
66 | ))) | ||
67 | |||
68 | |||
69 | (% class="task-list" %) | ||
70 | ((( | ||
71 | {{task reference="/Tasks/Task_22" status="InProgress"}} | ||
72 | distribution | ||
73 | |||
74 | (% class="task-list" %) | ||
75 | ((( | ||
76 | |||
77 | |||
78 | {{task reference="/Tasks/Task_23" status="InProgress"}} | ||
79 | channel (where to host?) | ||
80 | {{/task}} | ||
81 | |||
82 | {{task reference="/Tasks/Task_24" status="InProgress"}} | ||
83 | environment file (repository with examples) | ||
84 | {{/task}} | ||
85 | ))) | ||
86 | {{/task}} | ||
87 | ))) | ||
88 | |||
89 | |||
90 | (% class="task-list" %) | ||
91 | ((( | ||
92 | {{task reference="/Tasks/Task_25" status="InProgress"}} | ||
93 | Documentation | ||
94 | |||
95 | (% class="task-list" %) | ||
96 | ((( | ||
97 | |||
98 | |||
99 | {{task reference="/Tasks/Task_26" status="InProgress"}} | ||
100 | here VS repository VS sphinx | ||
101 | {{/task}} | ||
102 | ))) | ||
103 | {{/task}} | ||
104 | ))) | ||
105 | |||
106 | |||
107 | (% class="task-list" %) | ||
108 | ((( | ||
109 | {{task reference="/Tasks/Task_27" status="InProgress"}} | ||
110 | Binder | ||
111 | |||
112 | (% class="task-list" %) | ||
113 | ((( | ||
114 | |||
115 | |||
116 | {{task reference="/Tasks/Task_28" status="InProgress"}} | ||
117 | examples with Stefan | ||
118 | {{/task}} | ||
119 | ))) | ||
120 | {{/task}} | ||
121 | ))) | ||
122 | |||
123 | |||
124 | (% class="task-list" %) | ||
125 | ((( | ||
126 | {{task reference="/Tasks/Task_29" status="InProgress"}} | ||
127 | Screencast | ||
128 | |||
129 | (% class="task-list" %) | ||
130 | ((( | ||
131 | |||
132 | |||
133 | {{task reference="/Tasks/Task_30" status="InProgress"}} | ||
134 | login in jupyter hub | ||
135 | {{/task}} | ||
136 | |||
137 | {{task reference="/Tasks/Task_31" status="InProgress"}} | ||
138 | login maxwell display | ||
139 | {{/task}} | ||
140 | |||
141 | {{task reference="/Tasks/Task_32" status="InProgress"}} | ||
142 | use slix | ||
143 | {{/task}} | ||
144 | |||
145 | {{task reference="/Tasks/Task_33" status="InProgress"}} | ||
146 | use hdfview plugin in jupterLab | ||
147 | {{/task}} | ||
148 | |||
149 | {{task reference="/Tasks/Task_34" status="InProgress"}} | ||
150 | create conda env with flashh5 | ||
151 | {{/task}} | ||
152 | ))) | ||
153 | {{/task}} | ||
154 | ))) | ||
155 | |||
156 | |||
157 | |||
158 | ---- | ||
159 | |||
160 | ==== under review ==== | ||
161 | |||
162 | |||
163 | {{code language="bash"}} | ||
164 | conda create -n flashh5 python=3.10 # 3.10 not necessary, but would prefer 3.8 or higher | ||
165 | source activate flashh5 | ||
166 | conda install ipython numpy pandas #TODO: fix dependcies | ||
167 | conda install -c https://www.desy.de/~cpassow/condarepo/ flashh5 | ||
168 | |||
169 | ## on jhub | ||
170 | conda install ipykernel | ||
171 | python -m ipykernel install --user --name flashh5 --display-name "flashh5" | ||
172 | |||
173 | |||
174 | ## to remove on jhub | ||
175 | ## delete from: /home/$USER/.local/share/jupyter/kernels/ | ||
176 | {{/code}} | ||
177 | |||
178 | {{code language="py" title=" | ||
179 | moved to repository?"}} | ||
180 | class RunDirectory: | ||
181 | |||
182 | def get_run_table(): # more or less information? RunComment | Number of Files | start & stop time ? | ||
183 | ... | ||
184 | |||
185 | def get_run(daq, run_number): # daq is not needed! | ||
186 | |||
187 | ... | ||
188 | |||
189 | |||
190 | class Run: # constructor optional without RunDirectory or use there self.path | ||
191 | |||
192 | def get_files(): | ||
193 | ... | ||
194 | |||
195 | def get_channels(): # of file #1 | ||
196 | ... | ||
197 | |||
198 | def get_start_time(): # better as attribute? | ||
199 | ... | ||
200 | |||
201 | def get_stop_time(): # which? | better as attribute? | ||
202 | ... | ||
203 | |||
204 | def to_df(daq_map): # to_df(daq_map, slice) slice=[0:4] -> throw Exception | ||
205 | ... | ||
206 | |||
207 | def to_series(channel): | ||
208 | ... | ||
209 | |||
210 | def to_array(channel): | ||
211 | ... | ||
212 | {{/code}} | ||
213 | |||
214 | {{code language="py" title="ideas"}} | ||
215 | run.to_df(daq_map) | ||
216 | run.to_series(daq_adr or daq_map) # on channel only? | ||
217 | run.to_array(daq_adr) # on channel only? | ||
218 | |||
219 | ## interesting? | ||
220 | # run.to_dask(daq_map) | ||
221 | # run.to_xarray(daq_map) | ||
222 | {{/code}} | ||
223 | |||
224 | |||
225 | |||
226 | {{/expand}} |