Changes for page DEMO - Working with FLASH data
Last modified by makuadm on 2026-01-07 06:21
Summary
-
Page properties (2 modified, 0 added, 0 removed)
Details
- Page properties
-
- Title
-
... ... @@ -1,1 +1,1 @@ 1 -DEMO - Documentation1 +DEMO - Working with FLASH data - Content
-
... ... @@ -1,65 +1,208 @@ 1 -(% style="list-style-type: square;" %) 2 -* Short descriptions including Links: 3 -(% style="list-style-type: square;" %) 4 -** GPFS 5 -** JupyterHub 6 -** conda ? 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. 7 7 8 -(% style="list-style-type: square;" %) 9 -* Links Repository 10 -(% style="list-style-type: square;" %) 11 -** including Method Description 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] 12 12 13 13 \\ 14 14 15 -(% style="list-style-type: square;" %) 16 -* Links to Binder 7 +{{expand title="TEST - How to login JupyterHub"}} 17 17 9 + 10 +{{view-file att--filename="tmp.mp4" height="250"/}} 11 +{{/expand}} 12 + 18 18 \\ 19 19 20 20 \\ 21 21 22 - Questions:17 +---- 23 23 24 -(% style="list-style-type: square;" %) 25 -* for whom 26 -* where Maxwell / local / extern 27 -* distribution\\ 28 -(% style="list-style-type: square;" %) 29 -** channel? 30 -(% style="list-style-type: square;" %) 31 -*** where official hosted (DESY, privat, conda-forge) 32 -** enviroment? 33 -(% style="list-style-type: square;" %) 34 -*** via files / already created? 19 +=== TODO === 35 35 21 +(% class="task-list" %) 22 +((( 23 +{{task reference="/Tasks/Task_18" status="InProgress"}} 24 +Short descriptions including Links: → as Text\\ 25 + 26 +(% class="task-list" %) 27 +((( 28 + 29 + 30 +{{task reference="/Tasks/Task_19" status="InProgress"}} 31 +GPFS 32 +{{/task}} 33 + 34 +{{task reference="/Tasks/Task_40" status="InProgress"}} 35 +Access rights 36 +{{/task}} 37 + 38 +{{task reference="/Tasks/Task_41" status="InProgress"}} 39 +Gamma Portal 40 +{{/task}} 41 + 42 +{{task reference="/Tasks/Task_42" status="InProgress"}} 43 +Maxwell 44 +{{/task}} 45 + 46 +{{task reference="/Tasks/Task_20" status="InProgress"}} 47 +JupyterHub 48 +{{/task}} 49 + 50 +{{task reference="/Tasks/Task_21" status="InProgress"}} 51 +conda ? 52 +{{/task}} 53 + 54 +{{task reference="/Tasks/Task_36" status="InProgress"}} 55 +explain install from channel instead of fixed environment, but can use environment file from example repository 56 +{{/task}} 57 +))) 58 +{{/task}} 59 +))) 60 + 36 36 \\ 37 37 63 +(% class="task-list" %) 64 +((( 65 +{{task reference="/Tasks/Task_22" status="InProgress"}} 66 +distribution 67 + 68 +(% class="task-list" %) 69 +((( 70 + 71 + 72 +{{task reference="/Tasks/Task_23" status="InProgress"}} 73 +channel (where to host?) 74 +{{/task}} 75 + 76 +{{task reference="/Tasks/Task_24" status="InProgress"}} 77 +environment file (repository with examples) 78 +{{/task}} 79 +))) 80 +{{/task}} 81 +))) 82 + 83 +\\ 84 + 85 +(% class="task-list" %) 86 +((( 87 +{{task reference="/Tasks/Task_25" status="InProgress"}} 88 +Documentation 89 + 90 +(% class="task-list" %) 91 +((( 92 + 93 + 94 +{{task reference="/Tasks/Task_26" status="InProgress"}} 95 +here VS repository VS sphinx 96 +{{/task}} 97 +))) 98 +{{/task}} 99 +))) 100 + 101 +\\ 102 + 103 +(% class="task-list" %) 104 +((( 105 +{{task reference="/Tasks/Task_27" status="InProgress"}} 106 +Binder 107 + 108 +(% class="task-list" %) 109 +((( 110 + 111 + 112 +{{task reference="/Tasks/Task_28" status="InProgress"}} 113 +examples with Stefan 114 +{{/task}} 115 +))) 116 +{{/task}} 117 +))) 118 + 119 +\\ 120 + 121 +(% class="task-list" %) 122 +((( 123 +{{task reference="/Tasks/Task_29" status="InProgress"}} 124 +Screencast 125 + 126 +(% class="task-list" %) 127 +((( 128 + 129 + 130 +{{task reference="/Tasks/Task_30" status="InProgress"}} 131 +login in jupyter hub 132 +{{/task}} 133 + 134 +{{task reference="/Tasks/Task_31" status="InProgress"}} 135 +login maxwell display 136 +{{/task}} 137 + 138 +{{task reference="/Tasks/Task_32" status="InProgress"}} 139 +use slix 140 +{{/task}} 141 + 142 +{{task reference="/Tasks/Task_33" status="InProgress"}} 143 +use hdfview plugin in jupterLab 144 +{{/task}} 145 + 146 +{{task reference="/Tasks/Task_34" status="InProgress"}} 147 +create conda env with flashh5 148 +{{/task}} 149 +))) 150 +{{/task}} 151 +))) 152 + 153 +\\ 154 + 155 +\\ 156 + 157 +---- 158 + 159 +==== under review ==== 160 + 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 +\\ 179 + 38 38 {{code language="py" title="moved to repository?"}} 39 39 class RunDirectory: 40 40 41 - def get_run_table(): 183 + def get_run_table(): # more or less information? RunComment | Number of Files | start & stop time ? 42 42 ... 43 43 44 - def get_run(daq, run_number): 186 + def get_run(daq, run_number): # daq is not needed! 187 + 45 45 ... 46 46 47 47 48 -class Run: 191 +class Run: # constructor optional without RunDirectory or use there self.path 49 49 50 50 def get_files(): 51 51 ... 52 52 53 - def get_channels(): # of file #1 ?196 + def get_channels(): # of file #1 54 54 ... 55 55 56 - def get_start_time(): 199 + def get_start_time(): # better as attribute? 57 57 ... 58 58 59 - def get_stop_time(): # which? 202 + def get_stop_time(): # which? | better as attribute? 60 60 ... 61 - 62 - def to_df( channel_map):204 + 205 + def to_df(daq_map): # to_df(daq_map, slice) slice=[0:4] -> throw Exception 63 63 ... 64 64 65 65 def to_series(channel): ... ... @@ -70,12 +70,13 @@ 70 70 {{/code}} 71 71 72 72 {{code language="py" title="ideas"}} 73 -run.to_df( channel_map)74 -run.to_series( channel_stringorchannel_map) # on channel only?75 -run.to_array( channel_string) # on channel only?216 +run.to_df(daq_map) 217 +run.to_series(daq_adr or daq_map) # on channel only? 218 +run.to_array(daq_adr) # on channel only? 76 76 77 -# run.to_dask(dict) 78 -# run.to_xarray(dict) 220 +## interesting? 221 +# run.to_dask(daq_map) 222 +# run.to_xarray(daq_map) 79 79 {{/code}} 80 80 81 81 \\