Skip to content

Commit e6420ad

Browse files
committed
Initial implementation
1 parent d586089 commit e6420ad

24 files changed

+1038
-0
lines changed

Charts/odin-xspress/.helmignore

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Patterns to ignore when building packages.
2+
# This supports shell glob matching, relative path matching, and
3+
# negation (prefixed with !). Only one pattern per line.
4+
.DS_Store
5+
# Common VCS dirs
6+
.git/
7+
.gitignore
8+
.bzr/
9+
.bzrignore
10+
.hg/
11+
.hgignore
12+
.svn/
13+
# Common backup files
14+
*.swp
15+
*.bak
16+
*.tmp
17+
*.orig
18+
*~
19+
# Various IDEs
20+
.project
21+
.idea/
22+
*.tmproj
23+
.vscode/

Charts/odin-xspress/Chart.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: v2
2+
name: odin-xspress
3+
description: IOC and Odin deployment for Xspress
4+
5+
type: application
6+
version: 0.3.1
7+
home: https://github.com/diamondlightsource/odin-helm-charts
8+
9+
dependencies:
10+
- name: ioc-instance
11+
version: 5.0.0
12+
repository: "oci://ghcr.io/epics-containers/charts"
13+
import-values:
14+
- child: ioc-instance
15+
parent: ioc-instance
Lines changed: 345 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,345 @@
1+
[
2+
{
3+
"fr_setup": {
4+
"fr_ready_cnxn": "tcp://127.0.0.1:10001",
5+
"fr_release_cnxn": "tcp://127.0.0.1:10002"
6+
},
7+
"meta_endpoint": "tcp://*:10008"
8+
},
9+
{
10+
"plugin": {
11+
"load": {
12+
"index": "xspress",
13+
"name": "XspressProcessPlugin",
14+
"library": "/odin/lib/libXspressProcessPlugin.so"
15+
}
16+
}
17+
},
18+
{
19+
"plugin": {
20+
"load": {
21+
"index": "view",
22+
"name": "LiveViewPlugin",
23+
"library": "/odin/lib/libLiveViewPlugin.so"
24+
}
25+
}
26+
},
27+
{
28+
"plugin": {
29+
"load": {
30+
"index": "blosc",
31+
"name": "BloscPlugin",
32+
"library": "/odin/lib/libBloscPlugin.so"
33+
}
34+
}
35+
},
36+
{
37+
"plugin": {
38+
"load": {
39+
"index": "hdf",
40+
"name": "FileWriterPlugin",
41+
"library": "/odin/lib/libHdf5Plugin.so"
42+
}
43+
}
44+
},
45+
{
46+
"plugin": {
47+
"connect": {
48+
"index": "xspress",
49+
"connection": "frame_receiver"
50+
}
51+
}
52+
},
53+
{
54+
"plugin": {
55+
"connect": {
56+
"index": "view",
57+
"connection": "xspress"
58+
}
59+
}
60+
},
61+
{
62+
"plugin": {
63+
"connect": {
64+
"index": "blosc",
65+
"connection": "xspress"
66+
}
67+
}
68+
},
69+
{
70+
"plugin": {
71+
"connect": {
72+
"index": "hdf",
73+
"connection": "blosc"
74+
}
75+
}
76+
},
77+
{
78+
"xspress": {
79+
"live_view": "view"
80+
}
81+
},
82+
{
83+
"view": {
84+
"live_view_socket_addr": "tcp://0.0.0.0:15500",
85+
"dataset_name": "live",
86+
"frame_frequency": 0,
87+
"per_second": 20
88+
}
89+
},
90+
{
91+
"hdf": {
92+
"process": {
93+
"number": 1,
94+
"rank": 0
95+
},
96+
"file": {
97+
"postfix": "_A"
98+
}
99+
}
100+
},
101+
{
102+
"hdf": {
103+
"file": {
104+
"first_number": 1
105+
}
106+
}
107+
},
108+
{{- range $channel_idx_in_file, $e := until (int $.Values.numChannels) }}
109+
{{- $ctx := merge (dict "channel_idx" (add (mul . $.Value.channelPerFile) $channel_idx_in_file) "odinDataCount" $.Values.odinDataCount ) $ }}
110+
{
111+
"hdf": {
112+
"dataset": {
113+
"mca_{{ .channel_idx }}": {
114+
"datatype": "uint32",
115+
"dims": [1, 4096],
116+
"chunks": [1, 1, 4096],
117+
"compression": "blosc"
118+
}
119+
}
120+
}
121+
},
122+
{{- end }}
123+
{
124+
"store": {
125+
"index": "mca",
126+
"value": [
127+
{
128+
"plugin": {
129+
"disconnect": "all"
130+
}
131+
},
132+
{
133+
"plugin": {
134+
"disconnect": {
135+
"index": "xspresslist",
136+
"connection": "frame_receiver"
137+
}
138+
}
139+
},
140+
{
141+
"plugin": {
142+
"connect": {
143+
"index": "xspress",
144+
"connection": "frame_receiver"
145+
}
146+
}
147+
},
148+
{
149+
"plugin": {
150+
"connect": {
151+
"index": "view",
152+
"connection": "xspress"
153+
}
154+
}
155+
},
156+
{
157+
"plugin": {
158+
"connect": {
159+
"index": "blosc",
160+
"connection": "xspress"
161+
}
162+
}
163+
},
164+
{
165+
"plugin": {
166+
"connect": {
167+
"index": "hdf",
168+
"connection": "blosc"
169+
}
170+
}
171+
},
172+
{
173+
"hdf": {
174+
"delete_datasets": true
175+
}
176+
},
177+
{
178+
"hdf": {
179+
"dataset": {
180+
"mca_0": {
181+
"datatype": "uint32",
182+
"chunks": [
183+
256,
184+
1,
185+
4096
186+
],
187+
"dims": [
188+
1,
189+
4096
190+
],
191+
"compression": "blosc",
192+
"indexes": true
193+
}
194+
}
195+
}
196+
},
197+
{
198+
"hdf": {
199+
"dataset": {
200+
"mca_1": {
201+
"datatype": "uint32",
202+
"chunks": [
203+
256,
204+
1,
205+
4096
206+
],
207+
"dims": [
208+
1,
209+
4096
210+
],
211+
"compression": "blosc",
212+
"indexes": true
213+
}
214+
}
215+
}
216+
},
217+
{
218+
"hdf": {
219+
"dataset": {
220+
"mca_2": {
221+
"datatype": "uint32",
222+
"chunks": [
223+
256,
224+
1,
225+
4096
226+
],
227+
"dims": [
228+
1,
229+
4096
230+
],
231+
"compression": "blosc",
232+
"indexes": true
233+
}
234+
}
235+
}
236+
},
237+
{
238+
"hdf": {
239+
"dataset": {
240+
"mca_3": {
241+
"datatype": "uint32",
242+
"chunks": [
243+
256,
244+
1,
245+
4096
246+
],
247+
"dims": [
248+
1,
249+
4096
250+
],
251+
"compression": "blosc",
252+
"indexes": true
253+
}
254+
}
255+
}
256+
}
257+
]
258+
}
259+
},
260+
{
261+
"store": {
262+
"index": "list",
263+
"value": [
264+
{
265+
"plugin": {
266+
"disconnect": "all"
267+
}
268+
},
269+
{
270+
"plugin": {
271+
"disconnect": {
272+
"index": "xspress",
273+
"connection": "frame_receiver"
274+
}
275+
}
276+
},
277+
{
278+
"plugin": {
279+
"connect": {
280+
"index": "xspresslist",
281+
"connection": "frame_receiver"
282+
}
283+
}
284+
},
285+
{
286+
"plugin": {
287+
"connect": {
288+
"index": "hdf",
289+
"connection": "xspresslist"
290+
}
291+
}
292+
},
293+
{
294+
"xspresslist": {
295+
"channels": [0, 1, 2, 3, 4
296+
],
297+
"frame_size": 4194304
298+
}
299+
},
300+
{
301+
"hdf": {
302+
"delete_datasets": true
303+
}
304+
},
305+
{
306+
"hdf": {
307+
"dataset": {
308+
"raw_0": {
309+
"datatype": "uint64",
310+
"chunks": [
311+
524288
312+
]
313+
},
314+
"raw_1": {
315+
"datatype": "uint64",
316+
"chunks": [
317+
524288
318+
]
319+
},
320+
"raw_2": {
321+
"datatype": "uint64",
322+
"chunks": [
323+
524288
324+
]
325+
},
326+
"raw_3": {
327+
"datatype": "uint64",
328+
"chunks": [
329+
524288
330+
]
331+
},
332+
"raw_4": {
333+
"datatype": "uint64",
334+
"chunks": [
335+
524288
336+
]
337+
}
338+
}
339+
}
340+
}
341+
]
342+
}
343+
}
344+
345+
]
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/bin/bash
2+
3+
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
4+
5+
export HDF5_PLUGIN_PATH=/odin/h5plugin
6+
7+
sleep 5
8+
9+
/odin/bin/frameProcessor \
10+
--ctrl=tcp://0.0.0.0:10004 \
11+
--config=$SCRIPT_DIR/fp{{ .idx | add1 }}.json \
12+
--log-config $SCRIPT_DIR/log4cxx.xml

0 commit comments

Comments
 (0)