UncertRadio

Software zur Berechnung charakteristischer Grenzen nach ISO 11929 für Aktivitätsmessungen

Die Software UncertRadio ermöglicht die automatisierte Berechnung der charakteristischen Grenzen einer Aktivitätsbestimmung entsprechend DIN ISO 11929. Im Detail werden die Aktivitätskonzentration bzw. die spezifische Aktivität mit der dazugehörigen kombinierten Standardmessunsicherheit, ihrem Unsicherheiten-Budget und den Werten der Erkennungsgrenze und der Nachweisgrenze ermittelt. Die Unsicherheiten der einzelnen Ergebnisgrößen werden nach ISO GUM mithilfe einer numerisch durchgeführten Fortpflanzung der Unsicherheiten der Eingangsgrößen berechnet.

UncertRadio lässt sich für vielfältige Anwendungen der Alpha-, Beta- und Gammamessung, aber auch der Dosimetrie einsetzen. Die Software kann die charakteristischen Grenzen simultan für bis zu drei Radionuklide ermitteln, deren Ergebniswerte, z.B. Aktivitätsmesswerte, durch das Messverfahren bedingt voneinander abhängig sind. Es ist auch für die Auswertung bei modernen Verfahren der Flüssigkeitsszintillationsmessung von z.B. Strontium-Isotopen verwendbar.

UncertRadio Monte-Carlo Ergebnisseite

Abbildung 1: Beispiel der mit der Monte-Carlo-Simulation mittels gewichteter linearer Ausgleichungsrechnung (WLS) nach [ISO 11929-2:2025](https://www.iso.org/standard/90840.html) erzielten Ergebnisse. Die drei dargestellten Verteilungen beziehen sich, von oben nach unten, auf die Ergebnisgröße, die Erkennungsgrenze sowie die Nachweisgrenze. Die in Blau gezeigten Kurven stellen die analytisch berechneten Gauß-Funktionen [ISO 11929-1:2025](https://www.iso.org/standard/90839.html) dar. Die gestrichelten senkrechten Linien zeigen die unteren und oberen Grenzen des Abdeckungsintervalls, wobei der Mittelwert zwischen ihnen angezeigt wird (obere Grafik); die Erkennungsgrenze (mittlere Grafik); sowie sowohl die Erkennungs- als auch die Nachweisgrenze (untere Grafik).

Die Software unterscheidet zwei mögliche analytische Ansätze, die sich in den Gleichungen zur Auswertung unterscheiden:

  • Verfahren ohne lineare Entfaltung: die Grundgleichung ist linear in nur einer (verfahrensbezogenen) Nettozählrate (Kanisch, 2016a),

  • Verfahren mit linearer Entfaltung: die Gleichungen verwenden zusätzlich ein lineares Least-squares-Verfahren für z. B. Abkling- oder Aufbaukurven mehrerer Zählraten (Kanisch, 2016b).

Alternativ kann die Auswertung für beide Varianten auch mithilfe der Monte Carlo-Simulation erfolgen. Dies entspricht einer Unsicherheits-Fortpflanzung ganzer Verteilungen nach GUM Supplements 1 und 2 und ist dann im Vorteil, wenn die Verteilung der Ergebnisgröße deutlich von der einer Normalverteilung abweicht.

Das bedeutet allerdings auch, dass der Nutzer die erforderlichen Gleichungen zur Auswertung formulieren können muss. Ein besonderer Vorteil ist jedoch, dass keine partiellen Ableitungen einzugeben sind. Zum besseren Verständnis der Datenhandhabung innerhalb der Software und der hinterlegten Gleichungen und Funktionen ist eine umfangreiche Sammlung von Anwendungsbeispielen als Projektdateien beigefügt.

Viele der Anwendungsbeispiele stammen aus der Arbeitsgruppe „AK-SIGMA“ des „Fachverbandes für Strahlenschutz“, den Messanleitungen der Leitstellen und aus der Literatur. Diese Beispiele haben, ebenso wie die im Beiblatt 1 zur DIN ISO 11929 (2014) und die in der neueren ISO 11929-4 genannten Beispiele, wesentlich zur Validierung von UncertRadio beigetragen.

Die UncertRadio HTML-Dokumentation ist in jeder UncertRadio-Installation enthalten. Auf sie kann direkt im Programm über diverse Hilfe-Buttons zugegriffen werden. Des Weiteren ist sie auch auf [GitHub Pages](https://openbfs.github.io/UncertRadio/latest/de) verfügbar.

An dieser Stelle wird den Anwendern, vor allem aus den in der Überwachung der Umweltradioaktivität nach AVV-IMIS tätigen Kreisen der Leitstellen und Messstellen, gedankt. Durch Rückmeldungen und neue Anforderungen ist wesentlich zur Weiterentwicklung von UncertRadio und seiner praktischen Anwendbarkeit beigetragen worden.

Die aktuelle Version ist 2.7.2.

Seit der Version 2.5.1 steht der Quellcode online zur Einsicht zur Verfügung und kann aus den Quellen erstellt werden. Eine entsprechende Anleitung findet sich weiter unten. Für Windows werden weiterhin vorkompilierte Pakete bereitgestellt. Diese bestehen aus einem gepackten Archiv mit allen benötigten Dateien. Dieses muss zur Nutzung nur entpackt werden. Im Anschluss kann das Programm mit der „UncertRadio.exe“ Datei im Unterverzeichnis „bin/“ gestartet werden.

Die Version 2.4.32 ist die letzte Version, die mit einem Windows-Installationsprogramm bereitgestellt wurde.

Von der Version 2.1.4 (2017) bis 2.4.32 bestand der Download aus einer einzelnen ausführbaren Datei, welche alle erforderlichen Komponenten der Software enthält (Hilfedateien, kurze Installationsanleitung, Sammlung validierter Beispielprojekte). Zusätzlich wurde eine kurze Anleitung zur Verwendung der Software zum Download bereitgestellt. Die private oder kommerzielle Nutzung der Software ist kostenlos.

Seit der Version 1.08 (2013) kann UncertRadio als Schnittstelle zwischen der Software zur Datenerfassung und der Übertragung charakteristischer Werte in ein modernes Laborinformationssystem verwendet werden. Dabei wird das CSV-Format für den Datenimport und -export genutzt.

Der Programmautor ist Günter Kanisch. Kontaktperson für Fragen und Vorschläge ist Dr. Marc-Oliver Aust vom „Bundeskoordinationsamt für Fisch und Fischereiprodukte, Krebstiere, Mollusken und marine Algen“ des Thünen-Instituts für Fischökologie.

WICHTIGER HINWEIS:

UncertRadio ist Freie Software und kann unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation, Version 3 der Lizenz oder jeder späteren veröffentlichten Version, weiterverbreitet und/oder modifiziert werden.

UncertRadio wird in der Hoffnung, dass es nützlich sein wird, aber OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Siehe die GNU General Public License für weitere Details.

Eine Kopie der GNU General Public License sollte zusammen mit diesem Programm erhalten worden sein. Falls nicht, siehe <https://www.gnu.org/licenses/>.

Das Programm wurde vom Autor nach derzeitigem Stand von Wissenschaft, Normung und Technik entwickelt und bezüglich der Richtigkeit der mathematischen Behandlung der eingegebenen Modell-Gleichungen validiert. Trotzdem wird vom Autor, vom TI und vom BMUV keine Gewährleistung für die Richtigkeit der damit vom Anwender erzielten Ergebnisse gegeben und keine Haftung für daraus resultierende Ansprüche Dritter übernommen.

Wie man zitiert

Bei Verwendung von UncertRadio sollten die folgenden Publikationen zitiert werden:

KANISCH, G.; OBER, F.; Aust, M.O.: **UncertRadio**: Software for determining characteristic limits in accordance to DIN EN ISO 11929 for radioactivity measurements
Journal of Open Source Software (JOSS) 21(22), 7398, 2026
https://doi.org/10.21105/joss.07398

KANISCH, G.: Generalized evaluation of environmental radioactivity measurements with UncertRadio. Part I: Methods without linear unfolding.
Appl. Radiat. Isot. 110, 2016, 28–41
https://dx.doi.org/10.1016/j.apradiso.2015.12.003

KANISCH, G.: Generalized evaluation of environmental radioactivity measurements with UncertRadio. Part II: Methods with linear unfolding.
Appl. Radiat. Isot. 110, 2016, 74–86
https://dx.doi.org/10.1016/j.apradiso.2015.12.046

UncertRadio aus den Quellen erstellen

Voraussetzungen für Windows

MSYS2 unter https://www.msys2.org/ herunterladen und installieren

MSYS2 UCRT64-Umgebung starten und das System aktualisieren

pacman -Syuu

MSYS2 UCRT64-Terminal bei Bedarf neu starten

Erforderliche Werkzeuge und Programme installieren

pacman -S git make mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-gcc-fortran mingw-w64-ucrt-x86_64-gtk3 mingw-w64-ucrt-x86_64-plplot mingw-w64-ucrt-x86_64-wxwidgets3.2-msw mingw-w64-ucrt-x86_64-lapack mingw-w64-ucrt-x86_64-python-sphinx mingw-w64-ucrt-x86_64-python-myst-parser

Wichtiger Hinweis:

Wir sind auf die UCRT64-Umgebung umgestiegen, wie von MSYS2 [vorgeschlagen](https://www.msys2.org/docs/environments/). Das Kompilieren von UncertRadio mit der MINGW64-Umgebung sollte funktionieren, wenn der Schalter -G „MinGW Makefiles“ verwendet wird. Dennoch müssen Sie die entsprechenden Programme mit pacman -S … installieren.

Voraussetzungen für Linux

Die folgenden Werkzeuge einschließlich der Entwicklungsbibliotheken müssen installiert sein:

Zum Erstellen der Dokumentation werden die folgenden zusätzlichen Werkzeuge benötigt:

  • python3

  • python-sphinx >= 8.0

  • myst-parser

Die meisten dieser Werkzeuge sind über den Paketmanager üblicher Linux-Distributionen verfügbar.

Wir konnten UncertRadio erfolgreich mit den folgenden Distributionen kompilieren:

  • Arch Linux

    pacman -Syu
    pacman -S base-devel git cmake gcc-fortran lapack gtk3 python-sphinx python-myst-parser
    

    Hinweis: Arch Linux stellt plplot nicht in seinen Repositorys bereit. Daher muss es aus den [Quellen](https://plplot.sourceforge.net/documentation.php) kompiliert werden. Alternativ kann das [AUR-Paket](https://aur.archlinux.org/packages/plplot) verwendet werden. Bitte lesen und verstehen Sie die offiziellen Informationen über die möglichen Gefahren der Nutzung von Software aus dem [AUR](https://wiki.archlinux.org/title/Arch_User_Repository):

    git clone https://aur.archlinux.org/plplot.git
    cd plplot
    makepkg -si
    
  • Debian 13 (trixie) / Ubuntu 24.04

    Die folgenden Programme müssen einfach installiert werden:

    apt-get update && apt-get upgrade
    apt-get install build-essential gfortran git libgtk-3-dev libplplot-dev plplot-driver-cairo liblapack-dev python3-sphinx python3-myst-parser
    
  • Debian 12 (bookworm)

    apt-get update && apt-get upgrade
    apt-get install build-essential gfortran git libgtk-3-dev libplplot-dev plplot-driver-cairo liblapack-dev
    

    Hinweis: Um die Dokumentation unter Debian 12 zu erstellen, müssen Sie python-sphinx über pip installieren, da die Systemversion zu alt ist. Es wird empfohlen, eine virtuelle Umgebung zu verwenden:

    # Install pip and python venv
    apt-get install python3-pip python3.11-venv
    # Create and activate the virtual environment
    python3 -m venv venv
    source venv/bin/activate
    # Install the required packages
    pip install -r docs/requirements.txt
    
    # Optional build the documentation directly
    cd docs
    python3 make_docs.py
    

UncertRadio tatsächlich erstellen

Repository klonen:

git clone https://github.com/OpenBfS/UncertRadio.git

Nun sollte es möglich sein, UncertRadio zu erstellen.

cd UncertRadio
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j4

Der Schalter -DCMAKE_BUILD_TYPE kann weggelassen werden, um UR im debug-Modus zu kompilieren. Bei Verwendung der MSYS2 MINGW64-Umgebung müssen Sie den Generator mit -G „MinGW Makefiles“ ändern, aufgrund eines gtk3-fortran [Problems](https://github.com/vmagnin/gtk-fortran/issues/292):

cmake -B build -DCMAKE_BUILD_TYPE=Release -G "MinGW Makefiles"

Optimierungsoptionen

Standardmäßig wird UncertRadio mit Optimierungsgrad -O2 kompiliert, um die numerische Stabilität über verschiedene Prozessorarchitekturen hinweg zu sichern. Besitzen Sie einen modernen Prozessor und möchten aggressive Optimierungen (-O3 -ffast-math) für potenziell bessere Leistung aktivieren, können Sie Folgendes verwenden:

cmake -B build -DCMAKE_BUILD_TYPE=Release -DENABLE_OPTIMIZATION=ON

Hinweis: Aggressive Optimierungen können bei älteren Prozessoren zu Problemen mit der numerischen Genauigkeit führen. Bei unerwarteten Abweichungen bei den Selbsttests (siehe unten) sollte ohne dieses Flag kompiliert werden.

UncertRadio installieren (hauptsächlich für Windows gedacht)

Das Installationsverzeichnis kann mit der –prefix-Option angegeben werden:

cmake --install build --prefix=install

Ein Archiv zum Verteilen von UncertRadio erstellen:

tar -czvf UncertRadio.tar.gz install

Aktualisieren

Um die neueste Version zu erhalten, aktualisieren Sie einfach den main-Branch

git checkout main
git pull

Nun das Build- und Installationsverfahren neu starten (siehe oben).

Dokumentation erstellen

Die UncertRadio HTML-Dokumentation ist online auf [GitHub Pages](https://openbfs.github.io/UncertRadio/) verfügbar. Sie kann jedoch auf zwei Arten aus den Quelldateien erstellt werden. Der einfachste Weg ist, die CMake-Option BUILD_DOCS=T (Standard) einzuschließen und die Dokumentation zusammen mit dem Code zu erstellen.

cmake -B build -DBUILD_DOCS=T -DCMAKE_BUILD_TYPE=Release

Alternativ können Sie sie eigenständig erstellen, indem Sie die Datei make_docs.py im Ordner docs ausführen:

cd docs
python make_docs.py

Vorkompilierte Binärdateien

Wir stellen automatisch vorkompilierte Binärdateien zur Verfügung – Nachtbuilds und versionsgetaggte Releases – über GitHub Actions (angehängt an jedes GitHub Release):

  • Windows – verpackt in einem tar.gz-Archiv.

  • Linux – ein AppImage (UncertRadio_*.AppImage). Es wurde unter Debian 12 erstellt und sollte auf jeder modernen Linux-Distribution laufen.

Beide Binärdateien sind an das entsprechende GitHub Release ([Nachtbuild](https://github.com/OpenBfS/UncertRadio/releases/tag/Nightly_develop) oder versionsgetaggt) angehängt und können direkt von der [Releases Seite](https://github.com/OpenBfS/UncertRadio/releases) heruntergeladen werden. Es werden keine weiteren Build-Schritte benötigt, um das Programm zu starten. Bitte melden Sie Probleme oder Vorschläge über die GitHub [Issues](https://github.com/OpenBfS/UncertRadio/issues) Seite oder durch ein Pull Request.

UncertRadio starten

Nach dem Installationsschritt (oder dem Entpacken des Archivs) kann UncertRadio durch Ausführen der Binärdatei im bin-Unterordner des Installations-/Prefix-Verzeichnisses gestartet werden:

./bin/UncertRadio

Das Linux AppImage muss ausführbar gemacht und direkt gestartet werden:

chmod +x UncertRadio_*.AppImage
./UncertRadio_*.AppImage

Hinweis: Das AppImage erfordert eine kompatible FUSE-Implementierung. Installieren Sie diese mit dem Paketmanager Ihrer Distribution, z. B. apt-get install libfuse2 (Debian/Ubuntu), pacman -S fuse2 (Arch-basiert) oder dnf install fuse (Fedora).

Eingebaute Tests ausführen

Im examples-Verzeichnis sind etwa 70 Beispiele auf Deutsch und Englisch enthalten. Um zu prüfen, ob UncertRadio korrekt läuft, können Sie die eingebauten Tests starten, indem Sie „Optionen/QC-Batch-Test“ im Hauptmenü auswählen. Standardmäßig werden alle enthaltenen Projekte (in der enthaltenen BatListRef_v06.txt definiert) geöffnet und ihre Ergebnisse verglichen. Standardmäßig (und beim ersten Start dieses Dialogs) ist die Datei bereits ausgewählt. Das Feld für die Ausgabedatei kann leer bleiben. UncertRadio erstellt automatisch eine Ausgabedatei. Etwaige Abweichungen werden gemeldet.

Zusätzlich können alle oben genannten Projekttests sowie einige weitere integrierte Tests über die Kommandozeile ausgeführt werden.

./bin/UncertRadio run_tests

Hinweis zu Selbsttests und Optimierung: Wenn Selbsttests unerwartete Abweichungen melden, kann dies mit prozessorspezifischen Problemen der numerischen Präzision bei aggressiven Compiler-Optimierungen zusammenhängen. Versuchen Sie, erneut zu kompilieren, ohne den -DENABLE_OPTIMIZATION=ON-Schalter (der -O3 -ffast-math aktiviert) und verwenden Sie stattdessen den Standard-“-O2-Optimierungsgrad. Tritt ein Fehler auf, kontaktieren Sie uns bitte über die GitHub-[Issues](https://github.com/OpenBfS/UncertRadio/issues) Seite.

Um ein besseres Verständnis der Projektstruktur zu erlangen, können alle Projekte einzeln über den Dialog „Projekt öffnen“ geöffnet werden, der über das Hauptmenü oder das Symbol „Projekt laden“ zugänglich ist. Für die meisten der Projekte sind die erwarteten Ergebnisse auf der Beschreibungsregisterkarte enthalten.

Noch zu erledigen

  • [x] alle (alten) Lizenzinformationen sorgfältig korrigieren

    • [x] die Lizenzen der enthaltenen Bibliotheken hinzufügen

    • [x] eine Lizenz für UR2 hinzufügen

  • [x] die README-Datei ins Englische übersetzen

  • [x] Linux-Kompilieranweisungen hinzufügen

  • [x] Entwurf des JOSS-Papers hinzufügen (siehe paper-Branch)

  • [x] alle enthaltenen Beispiele überprüfen

  • [x] automatische Tests erstellen (teilweise erledigt, ./UncertRadio run_tests)

  • [x] eine Sphinx-Dokumentation erstellen und die (Windows-CHM-) Hilfedateien migrieren

  • [ ] die Dokumentation übersetzen (teilweise erledigt)

  • [x] die Dokumentation online veröffentlichen

  • [x] ein automatisches Build- und Upload-System für Windows-Binärdateien erstellen

  • [ ] den Funktions-Parser auf eine potenziell schnellere Version aktualisieren

  • [ ] das Logging-System refaktorisieren (teilweise erledigt)

  • [x] Linux-Binärdateien bereitstellen (als AppImage)

  • [x] nicht verwendete und nicht initialisierte Variablen entfernen

  • [x] die vollständige Übersetzung refaktorisieren und vereinfachen

  • [ ] GUI und Backend trennen (derzeit nicht möglich)

Bekannte Probleme

Das überlassen wir Ihnen ;) -> bitte nutzen Sie die [Issue-Seite](https://github.com/OpenBfS/UncertRadio/issues) oder erstellen Sie ein [Pull Request](https://github.com/OpenBfS/UncertRadio/pulls). Wir sind für jede Hilfe dankbar. Bitte beteiligen Sie sich.