McCode to Kafka monitor data converter
Convert McCode style monitor output files to FlatBuffer histograms for Kafka.
Background
McStas
McStas is one of the Monte Carlo ray tracing suites of McCode. It is used to simulate neutron scattering instruments and experiments. McStas can output monitor data in a text format that can be reformulated for transmission to Kafka.
The monitor data format contains a header, comprised of simulation parameters and metadata,
and then either a number-of-dependent-variables (N) plus 1 by number of independent-variable-observations (M)
2D array in the case of one independent-variable;
or N times M by L arrays in the case of two independent variables, where the second independent-variable
has L observations.
The dependent variables always include I, I_err, and N, from which the simulated cross section
can be calculated as I/N and its uncertainty as I_err/N for each observation.
FlatBuffers
The European Spallation Source (ESS) data acquisition system uses FlatBuffers for data serialization. The exact schema used by ESS are part of the streaming-data-types library, exposed to python via ess-streaming-data-types.
One of the types defined in the streaming-data-types library, da00, can be used to represent
related datasets, including histograms and their axes.
This module can encode McStas histograms as da00 messages and send them to a Kafka stream.
The histograms can then be retrieved by a kafka-to-nexus file writer
for inclusion in a NeXus data file.
Motivation
The motivation for this project is to be able to use the McStas simulation output directly in the ESS data acquisition system, without having to keep track of monitor files in addition to the produced NeXus file.
This will enable storing beam-monitor data in the same file as the simulated event data, even in cases where the beam-monitor data is not available from the running simulation because it was produced in an earlier saved-run. E.g., in the case of a MCPL saved primary-spectrometer simulation, the beam-monitor data is not available during later simulations of the sample and secondary-spectrometer, but is required for the final data reduction.
Usage
The mccode-to-kafka script is used to convert McStas monitor files to FlatBuffer histograms and send them to Kafka.
It is intended to be used as a command-line tool, but can also be used as a python module.
$ mccode-to-kafka --help
usage: mccode-to-kafka [-h] [-n NAME [NAME ...]] [--source SOURCE] [--broker BROKER] root
Send histograms to Kafka
positional arguments:
root The root directory or file to send
options:
-h, --help show this help message and exit
-n NAME [NAME ...], --name NAME [NAME ...]
The names of the histograms to send
--source SOURCE The source name to use
--broker BROKER The broker to send to
Expected usage is to specify the root directory of the McStas simulation output, and the names of the histograms to send.
The names of the histograms are the names of the monitor files, without the .dat extension.
$ mccode-to-kafka -n monitor0 monitor1 --broker localhost:9092 /path/to/simulation/output
Metadata
Release files for mccode-to-kafka 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| mccode_to_kafka-0.5.0.tar.gz | 24.6 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mccode_to_kafka-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 35.7 kB
Release files / mccode_to_kafka-0.5.0.tar.gz
| Download URL | mccode_to_kafka-0.5.0.tar.gz |
|---|---|
| Size | 24.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7bc1f7fe86d17d79ae33174ccec9a4ec1436bfef8dc49c1a93d49a28628a6a74
|
|
BLAKE2b-256 checksum How to use checksums |
49d546bdd0b3c2b2a4bca5e551cfe1cca41a144b5f814708d931da790422ad7b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 9, 2026.
Transparency logRelease files / mccode_to_kafka-0.5.0-py3-none-any.whl
| Download URL | mccode_to_kafka-0.5.0-py3-none-any.whl |
|---|---|
| Size | 11.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5edcea91c7f8e86d7e3c261a61bfc1a810641768cb185c932f685a083fcdce39
|
|
BLAKE2b-256 checksum How to use checksums |
d41f0d0f97a1cf15fd1eb46c02162a2dd141baef23669afae4e9b9631d32ad76
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 9, 2026.
Transparency logSecurity for mccode-to-kafka 0.5.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for mccode_to_kafka-0.5.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 9, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.