From 634b43de762bdb86a9623f1b87c4a2ed88ac0a87 Mon Sep 17 00:00:00 2001 From: Jack Harper Date: Thu, 27 Nov 2025 15:51:28 +0000 Subject: [PATCH 1/2] wip - data streaming docs --- doc/specific_iocs/dae/Datastreaming.md | 85 ++------ doc/specific_iocs/dae/ESSDSLayout.png | Bin 24543 -> 0 bytes doc/specific_iocs/dae/ESSDSLayout.xml | 109 ---------- doc/specific_iocs/dae/FUTUREISISDSLayout.png | Bin 31783 -> 0 bytes doc/specific_iocs/dae/FUTUREISISDSLayout.xml | 128 ------------ doc/specific_iocs/dae/ISISDSLayout.png | Bin 28057 -> 0 bytes doc/specific_iocs/dae/ISISDSLayout.xml | 195 +++++++++++------- .../Datastreaming---File-writing.md | 13 +- ...atastreaming--neutron-events-histograms.md | 11 + .../dae/datastreaming/Datastreaming-How-To.md | 39 ++++ .../Datastreaming-run-starts-stops.md | 2 + 11 files changed, 185 insertions(+), 397 deletions(-) delete mode 100644 doc/specific_iocs/dae/ESSDSLayout.png delete mode 100644 doc/specific_iocs/dae/ESSDSLayout.xml delete mode 100644 doc/specific_iocs/dae/FUTUREISISDSLayout.png delete mode 100644 doc/specific_iocs/dae/FUTUREISISDSLayout.xml delete mode 100644 doc/specific_iocs/dae/ISISDSLayout.png create mode 100644 doc/specific_iocs/dae/datastreaming/Datastreaming--neutron-events-histograms.md create mode 100644 doc/specific_iocs/dae/datastreaming/Datastreaming-run-starts-stops.md diff --git a/doc/specific_iocs/dae/Datastreaming.md b/doc/specific_iocs/dae/Datastreaming.md index 0c9eb84fe..45d637b52 100644 --- a/doc/specific_iocs/dae/Datastreaming.md +++ b/doc/specific_iocs/dae/Datastreaming.md @@ -1,4 +1,4 @@ -# Datastreaming +# Data Streaming ```{toctree} :glob: @@ -9,26 +9,21 @@ datastreaming/* ``` -The datastreaming system is being built as part of in-kind work to ESS. It will be the system that the ESS uses to take data and write it to file - basically their equivalent to the [ICP](/specific_iocs/DAE-and-the-ICP). The system may also replace the ICP at ISIS in the future. +The data streaming system is being built as a requirement for HRPD-X and possibly SANDALS-II, separate (and complementary) to the `MNeuData` project. It is architecturally similar to the system that the ESS uses to take data (neutron events, sample environment, and anything else that we can throw into a streaming platform) and write it to file. Previously ISIS aided development to the ESS' streaming pipeline as part of an in-kind project. The system will replace the ICP at ISIS. -In general the system works by passing both neutron and SE data into [Kafka](https://kafka.apache.org/) and having clients that either view data live (like Mantid) or write the data to file, additional information can be found [here](http://accelconf.web.cern.ch/AccelConf/icalepcs2017/papers/tupha029.pdf) and [here](https://iopscience.iop.org/article/10.1088/1742-6596/1021/1/012013). +In general this works by producing both neutron events and histograms, sample environment data, and other diagnostic data into a [Kafka](https://kafka.apache.org/) cluster and having clients (consumers in Kafka lingo!) that either view data live and act on it or write the data to a nexus file. Additional information can be found [here](http://accelconf.web.cern.ch/AccelConf/icalepcs2017/papers/tupha029.pdf) and [here](https://iopscience.iop.org/article/10.1088/1742-6596/1021/1/012013). -All data is passed into flatbuffers using [these schemas](https://github.com/ess-dmsc/streaming-data-types) - we have a tool called [saluki](https://github.com/ISISComputingGroup/saluki) which can deserialise these and make them human-readable after they've been put into Kafka. +All data is serialised into [Flatbuffers](https://flatbuffers.dev/) blobs using [these schemas](https://github.com/ess-dmsc/streaming-data-types) - we have a tool called [saluki](https://github.com/ISISComputingGroup/saluki) which can deserialise these and make them human-readable after they've been put into Kafka. -The datastreaming layout proposed looks something like this, not including the Mantid steps or anything before event data is collected: +Overall architecture is still being decided, but this is an initial idea of how it could look. -![](ESSDSLayout.png) + -## Datastreaming at ISIS - -Part of our in-kind contribution to datastreaming is to test the system in production at ISIS. Currently it is being tested in the following way, with explanations of each component below: - -![](ISISDSLayout.png) {#kafkacluster} ## The Kafka Cluster -There is a Kafka cluster at `livedata.isis.cclrc.ac.uk`. Port 31092 is used for the primary Kafka broker. +There is a (non-production!) Kafka cluster at `livedata.isis.cclrc.ac.uk:31092`. A web interface is available [here](https://reduce.isis.cclrc.ac.uk/redpanda-console/overview). :::{important} @@ -37,71 +32,19 @@ Automation team. See `\\isis\shares\ISIS_Experiment_Controls\On Call\autoreducti support information. ::: -### I want my own local instance of Kafka - -See {ref}`localredpanda` - -## Neutron Data - -The ICP on any instrument that is running in full event mode and with a DAE3 may stream neutron events into Kafka. - -This is controlled using flags in the `isisicp.properties` file: - -``` -isisicp.kafkastream = true -# if not specified, topicprefix will default to instrument name in code -isisicp.kafkastream.topicprefix = -# FIA team run their kafka cluster on port 31092, not 9092 -isisicp.kafkastream.broker = livedata.isis.cclrc.ac.uk:31092 -isisicp.kafkastream.topic.suffix.runinfo = _runInfo -isisicp.kafkastream.topic.suffix.sampleenv = _sampleEnv -isisicp.kafkastream.topic.suffix.alarms = _alarms -``` - -In the same file, you will also need to ensure the following properties are set: - -``` -isisicp.incrementaleventnexus = true - -# Event rate, can adjust up or down -isisicp.simulation.neventssim = 5000 +## How to/FAQs +See {ref}`datastreaminghowto` -# Ensure simulated data is switched on -isisicp.simulation.simulatedata = true -isisicp.simulation.simulatespec0 = true -isisicp.simulation.simulatebin0 = true -isisicp.simulation.spreadsimevents = true -``` - -You additionally need to ensure you are running in event mode. You can do this using the DAE tables `wiring_event_ibextest.dat`, `detector_ibextest.dat` & `spectra_ibextest.dat`. Copies of these tables can be found at: - -``` -\\isis\shares\ISIS_Experiment_Controls\event_mode_tables -``` +## Run starts/stops +See {ref}`dsrunstartstops` ## SE Data See [Forwarding Sample Environment](datastreaming/Datastreaming---Sample-Environment) +## Neutron events and histograms +See {ref}`dseventshistos` + ## Filewriting See [File writing](datastreaming/Datastreaming---File-writing) - -## System Tests - -:::{note} -These tests are not currently enabled. -::: - -Currently system tests are being run to confirm that the start/stop run and event data messages are being sent into -Kafka and that a Nexus file is being written with these events. The Kafka cluster and filewriter are being run in docker -containers for these tests and so must be run on a Windows 10 machine. To run these tests you will need to -install [docker for windows and add yourself as a docker-user](https://docs.docker.com/docker-for-windows/install/#install-docker-desktop-on-windows). - -## The future of streaming at ISIS - -After the in-kind work finishes and during the handover, there are some proposed changes that affect the layout and -integration of data streaming at ISIS. This diagram is subject to change, but shows a brief overview of what the future -system might look like: - -![](FUTUREISISDSLayout.png) diff --git a/doc/specific_iocs/dae/ESSDSLayout.png b/doc/specific_iocs/dae/ESSDSLayout.png deleted file mode 100644 index c8206fd47953ba3c39bcfa0bdabca6741f43f69b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24543 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

Fxxl0oc?(AoyPb0_zBMPv?c^VRl|xMyCIC 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 TxDq-7?g2P7XU*`YSMK}|Om0Tv diff --git a/doc/specific_iocs/dae/ESSDSLayout.xml b/doc/specific_iocs/dae/ESSDSLayout.xml deleted file mode 100644 index 100bbb424..000000000 --- a/doc/specific_iocs/dae/ESSDSLayout.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/specific_iocs/dae/FUTUREISISDSLayout.png b/doc/specific_iocs/dae/FUTUREISISDSLayout.png deleted file mode 100644 index fbf049db2cbdea9dfdec68b8f49cbf44141d3af4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31783 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 M-thZE9h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/specific_iocs/dae/ISISDSLayout.png b/doc/specific_iocs/dae/ISISDSLayout.png deleted file mode 100644 index c917f67e204eaf20a9a1a3d65f149a9f6626de0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28057 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 LQ^Q;X$7}xujC_@+ diff --git a/doc/specific_iocs/dae/ISISDSLayout.xml b/doc/specific_iocs/dae/ISISDSLayout.xml index 373ec0cd4..f20503e40 100644 --- a/doc/specific_iocs/dae/ISISDSLayout.xml +++ b/doc/specific_iocs/dae/ISISDSLayout.xml @@ -1,143 +1,184 @@ - - - - + + + - - - - - + + + + + + + - + - + - - - + + + - - + + - + - + - - - + + + - - - - - - - + - + - - + + - - - - + + - - + + + + - + - - + + - - - - - - - + + + + + - - + + - - + + - + + + + - - + + - - + + - - + + - + + + + + + + + + + + + + - - + + - + + + + + + + + + + - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - + - - + + + - - + + diff --git a/doc/specific_iocs/dae/datastreaming/Datastreaming---File-writing.md b/doc/specific_iocs/dae/datastreaming/Datastreaming---File-writing.md index 50de131e4..0a3794e94 100644 --- a/doc/specific_iocs/dae/datastreaming/Datastreaming---File-writing.md +++ b/doc/specific_iocs/dae/datastreaming/Datastreaming---File-writing.md @@ -2,17 +2,6 @@ The [filewriter](https://github.com/ess-dmsc/kafka-to-nexus) is responsible for taking the neutron and SE data out of Kafka and writing it to a nexus file. When the ICP ends a run it sends a config message to the filewriter, via Kafka, to tell it to start writing to file. -There is also a [filewriter written for the SuperMuSR project](https://github.com/STFC-ICD-Research-and-Design/supermusr-data-pipeline/tree/main/nexus-writer) which we may choose to use. +There is also a [filewriter written for the SuperMuSR project](https://github.com/STFC-ICD-Research-and-Design/supermusr-data-pipeline/tree/main/nexus-writer) which we may choose to use. This will be decided in [this ticket](https://github.com/ISISComputingGroup/DataStreaming/issues/2) We are currently figuring out topology on how to run this, ie one-per-instrument or a central one. For now it is not deployed or running anywhere. - -#### Adding ISIS data to the filewriter configuration -To add static data to the filewriter configuration without directly modifying the ICP's output to the `runInfo` topics a script will be used. Things like instrument name and other fields that do not change between instruments can be added here but there are a few gaps that will need to be streamed: -- Stuff in root of file - things like inst name that can be derived from topic are ok, things that cannot be, like experiment identifier, DAE modes etc -- Events in `detector1_events` - currently not being forwarded -- Sample environment is tricky - we need to know what blocks to put in the file template, it's not as simple as just going "anything with the PV prefix of IN:ZOOM" although we could add to the script to look at the forwarder status and check in the currently forwarded PVs -- Fields derived from detector events such as `total_counts` - -The general structure of the file can be written as this will likely not differ between instruments (at least not much) so this will be added in by the script that forwards to `ALL_runInfo` - -NB. I couldn't use the NeXus-Constructor for this as it no longer takes a NeXus file as an input, the version on master doesn't allow top-level fields or arbitrary groups, and there aren't many things in the ZOOM file for example that are in `/raw_data_1/instrument` which is where the NeXus constructor puts components by default. Because of events also being stored in the entry (`raw_data_1`), the NeXus-Constructor crashes when trying to output to a JSON file as it tries to write the events out which cannot be worked around unless you modify the source code to ignore that particular group. Even with this done the constructor is still quite unresponsive because of the amount of data in the in-memory NeXus file. diff --git a/doc/specific_iocs/dae/datastreaming/Datastreaming--neutron-events-histograms.md b/doc/specific_iocs/dae/datastreaming/Datastreaming--neutron-events-histograms.md new file mode 100644 index 000000000..c48e7a125 --- /dev/null +++ b/doc/specific_iocs/dae/datastreaming/Datastreaming--neutron-events-histograms.md @@ -0,0 +1,11 @@ +{#dseventshistos} +# Data streaming: Neutron events and histograms + + +## For DAE2/DAE3 instruments +The ICP (communicated to via the ISISDAE IOC) is responsible for communicating with the DAE2/DAE3 in terms of setting configuration, as well as streaming events and histograms from both. + + + +## For new instruments using FPGA-based acquisition electronics + diff --git a/doc/specific_iocs/dae/datastreaming/Datastreaming-How-To.md b/doc/specific_iocs/dae/datastreaming/Datastreaming-How-To.md index 1b3299252..c79b1d711 100644 --- a/doc/specific_iocs/dae/datastreaming/Datastreaming-How-To.md +++ b/doc/specific_iocs/dae/datastreaming/Datastreaming-How-To.md @@ -1,3 +1,4 @@ +{#datastreaminghowto} # Data streaming how-to guide This is a guide for basic operations using either the development or production Kafka clusters we use for data streaming at ISIS. @@ -24,3 +25,41 @@ This can be done through Redpanda console or via a Kafka API call. ## Run my own instance of Kafka/Redpanda This is done easily by running [this](https://docs.redpanda.com/redpanda-labs/docker-compose/single-broker/#run-the-lab) `docker-compose` file. + + +## Stream event data from the ISISICP +The ICP on any instrument that is running in full event mode and with a DAE3 may stream neutron events into Kafka. This can also be done in simulation mode. + +This is controlled using flags in the `isisicp.properties` file: + +``` +isisicp.kafkastream = true +# if not specified, topicprefix will default to instrument name in code +isisicp.kafkastream.topicprefix = +# FIA team run their kafka cluster on port 31092, not 9092 +isisicp.kafkastream.broker = livedata.isis.cclrc.ac.uk:31092 +isisicp.kafkastream.topic.suffix.runinfo = _runInfo +isisicp.kafkastream.topic.suffix.sampleenv = _sampleEnv +isisicp.kafkastream.topic.suffix.alarms = _alarms +``` + +In the same file, you will also need to ensure the following properties are set: + +``` +isisicp.incrementaleventnexus = true + +# Event rate, can adjust up or down +isisicp.simulation.neventssim = 5000 + +# Ensure simulated data is switched on +isisicp.simulation.simulatedata = true +isisicp.simulation.simulatespec0 = true +isisicp.simulation.simulatebin0 = true +isisicp.simulation.spreadsimevents = true +``` + +You additionally need to ensure you are running in event mode. You can do this using the DAE tables `wiring_event_ibextest.dat`, `detector_ibextest.dat` & `spectra_ibextest.dat`. Copies of these tables can be found at: + +``` +\\isis\shares\ISIS_Experiment_Controls\event_mode_tables +``` \ No newline at end of file diff --git a/doc/specific_iocs/dae/datastreaming/Datastreaming-run-starts-stops.md b/doc/specific_iocs/dae/datastreaming/Datastreaming-run-starts-stops.md new file mode 100644 index 000000000..fb3037243 --- /dev/null +++ b/doc/specific_iocs/dae/datastreaming/Datastreaming-run-starts-stops.md @@ -0,0 +1,2 @@ +{#dsrunstartstops} +# Data streaming: run starts/stops From 94dac7b3a5da4beba4683487b148ff1cebfbc89d Mon Sep 17 00:00:00 2001 From: Jack Harper Date: Thu, 27 Nov 2025 17:03:36 +0000 Subject: [PATCH 2/2] first draft - add diagram --- doc/specific_iocs/dae/Datastreaming.md | 4 +-- doc/specific_iocs/dae/ISISDSLayout.drawio.svg | 4 +++ doc/specific_iocs/dae/ISISDSLayout.xml | 33 +++++++++++++++---- ...atastreaming--neutron-events-histograms.md | 6 ++-- .../Datastreaming-run-starts-stops.md | 3 ++ 5 files changed, 39 insertions(+), 11 deletions(-) create mode 100644 doc/specific_iocs/dae/ISISDSLayout.drawio.svg diff --git a/doc/specific_iocs/dae/Datastreaming.md b/doc/specific_iocs/dae/Datastreaming.md index 45d637b52..5662c9d06 100644 --- a/doc/specific_iocs/dae/Datastreaming.md +++ b/doc/specific_iocs/dae/Datastreaming.md @@ -15,9 +15,9 @@ In general this works by producing both neutron events and histograms, sample en All data is serialised into [Flatbuffers](https://flatbuffers.dev/) blobs using [these schemas](https://github.com/ess-dmsc/streaming-data-types) - we have a tool called [saluki](https://github.com/ISISComputingGroup/saluki) which can deserialise these and make them human-readable after they've been put into Kafka. -Overall architecture is still being decided, but this is an initial idea of how it could look. +Overall architecture is still being decided, but this is an initial idea of how it could look: - +![](ISISDSLayout.drawio.svg) {#kafkacluster} diff --git a/doc/specific_iocs/dae/ISISDSLayout.drawio.svg b/doc/specific_iocs/dae/ISISDSLayout.drawio.svg new file mode 100644 index 000000000..6347821cd --- /dev/null +++ b/doc/specific_iocs/dae/ISISDSLayout.drawio.svg @@ -0,0 +1,4 @@ + + + +
hook for run starts/stops
NeXus File
EV44 events OR hs01 histograms, pulse metadata
fc00 forwarder config
f144 (and associated SE schemas), ev44, hs01, pulse meta, pl72 run starts, 6s4t runstopsĀ 
filewriter status x5f2
Kafka Cluster
Forwarded PV updates from monitor (f144 and others)
forwarder
Blockserver
Polls for block names
fc00 forwarder config - blocks and archived vals. runlog?
BSTOKAFKA
filewriter
UDP
FPGA streaming boards
(borzoi)~
process that
A) bridges FPGA UDP config and EPICS and
B) provides an interface very similar to ISISDAE

For new instruments
pl72 run starts/ 6s4t run stops
ISISDAE IOC
DCOM
NIVISA/Qxtream respectively
ISISICP
DAE2/DAE3
For existing dae2/dae3 insts
PV for block names in order
to construct pl72 run starts
ev44/hs00
(azawakh)
consumer soft ioc that provides areadetector live view from kafka stream/spectra plots over epics
IOCsĀ  - blocks and archived vals, maybe runlog
\ No newline at end of file diff --git a/doc/specific_iocs/dae/ISISDSLayout.xml b/doc/specific_iocs/dae/ISISDSLayout.xml index f20503e40..78d0f1048 100644 --- a/doc/specific_iocs/dae/ISISDSLayout.xml +++ b/doc/specific_iocs/dae/ISISDSLayout.xml @@ -1,6 +1,6 @@ - + @@ -35,7 +35,7 @@
- + @@ -72,10 +72,15 @@
+ + + + + - + - + @@ -117,7 +122,7 @@ - + @@ -138,13 +143,13 @@ - + - + @@ -182,6 +187,20 @@
+ + + + + + + + + + + + + +
diff --git a/doc/specific_iocs/dae/datastreaming/Datastreaming--neutron-events-histograms.md b/doc/specific_iocs/dae/datastreaming/Datastreaming--neutron-events-histograms.md index c48e7a125..d92ea0e5b 100644 --- a/doc/specific_iocs/dae/datastreaming/Datastreaming--neutron-events-histograms.md +++ b/doc/specific_iocs/dae/datastreaming/Datastreaming--neutron-events-histograms.md @@ -1,11 +1,13 @@ {#dseventshistos} # Data streaming: Neutron events and histograms - ## For DAE2/DAE3 instruments The ICP (communicated to via the ISISDAE IOC) is responsible for communicating with the DAE2/DAE3 in terms of setting configuration, as well as streaming events and histograms from both. - ## For new instruments using FPGA-based acquisition electronics +`borzoi` is responsible for communicating with the electronics and sending run starts/stops. It will have a similar interface to `ISISDAE` so we can drop-in replace it in the GUI.(?) + +## Live view, spectra plots etc. +These will be provided by a soft IOC (`azawakh`) which effectively consumes from event and histogram topics (and possibly run starts?) which will serve areaDetector and other PVs. diff --git a/doc/specific_iocs/dae/datastreaming/Datastreaming-run-starts-stops.md b/doc/specific_iocs/dae/datastreaming/Datastreaming-run-starts-stops.md index fb3037243..009f2f774 100644 --- a/doc/specific_iocs/dae/datastreaming/Datastreaming-run-starts-stops.md +++ b/doc/specific_iocs/dae/datastreaming/Datastreaming-run-starts-stops.md @@ -1,2 +1,5 @@ {#dsrunstartstops} # Data streaming: run starts/stops + +Run starts and stops will be dealt with by `borzoi` and the flatbuffers will be constructed in this process. It may need to be hooked onto by `ISISDAE` for older instruments using DAE2/DAE3 and the ISISICP. +