Software: InterSpec

Begonnen von DG0MG, 12. August 2021, 17:39

⏪ vorheriges - nächstes ⏩

DG0MG

"InterSpec gamma radiation analysis software" ist eine Software, die auf verschiedenen Plattformen (Windows, Linux, MacOS) zur Verfügung steht, aktuell weiterentwickelt wird und kostenfrei ist.

Download: https://github.com/sandialabs/InterSpec/releases

Die Software muss nicht installiert werden, einfach das ZIP auspacken und die EXE starten.
Die Windows-Version ist auf einem 32-Bit-System nicht lauffähig.

Einen kurzen Überblick über alle Funktionen gibt dieses PDF: https://sandialabs.github.io/InterSpec/tutorials/brief_analysis_intro/brief_ana_overview_InterSpec_Oct2018.pdf
"Bling!": Irgendjemand Egales hat irgendetwas Egales getan! Schnell hingucken!

Prospektor

Ich arbeite sehr gerne mit Interspec und habe neulich dieses Video hier gefunden, in dem der Entwickler eine ausführliche Demo mit Funktionen gibt. Gerade die Tastenkombinationen etc. sind beim Arbeiten echt viel wert  :)


Henri

Läuft auch unter Linux! :yahoo:  (und angeblich sogar unter Android und iOS...)

Da ich ein wenig gesucht habe, weil ich zuerst nicht wußte, wie ich das Programm unter Linux starten soll:

- man lädt sich das Archiv runter
- entpackt es
- darin befindet sich neben vielem anderen eine Datei "InterSpec"
- diese macht man ausführbar
- und führt sie aus.

Man braucht nichts installieren, keine root-Rechte, und das binary muss sich auch nicht in $PATH befinden.
Und man kann sich parallel zur "stable" Version schon mal den release candidate für die nächste anschauen und einfach parallel betreiben.

Schick! :)

Henri

Nun habe ich das sehr gute oben verlinkte Schulungsvideo angesehen, von dem wirklich jede einzelne Minute sehenswert ist, und fasse hier noch mal kurz die Grundfunktionen zusammen:

- Man kann zwei Vordergrund- und ein Hintergrundspektrum importieren, wobei diese automatisch anhand der Messdauer "normalisiert" werden. Dh. habe ich ein 1-Stunden Vordergrundspektrum und 10 Stunden Hintergrund, teilt die Software jeden Kanalinhalt des Hintergrundspektrums durch 10. Dieser Faktor lässt sich aber beliebig verändern. Es werden sehr viele verschiedene Dateiformate für Im- und Export unterstützt.

- Es wird eine riesige Nuklidbibliothek mitgeliefert. Man kann die Peaks beliebiger Nuklide unter seine Spektren legen und schauen, ob das vermutete Nuklid dabei ist. Zu jedem Peak gibt es einen tooltip-Text mit Erläuterungen.

- Alternativ gibt es eine halbautomatische Nukliderkennung: man markiert die interessanten Peaks und kann sich anzeigen lassen, welches Nuklid Peaks in der Nähe hat. Und sich für beliebige in Frage kommende Nuklide dann die Peaks einblenden.

- Es gibt ein Werkzeug zur Bestimung der Detektoreffizienz. Hat man seinen Detektor präzise charakterisiert, kann man die nuklidrelevanten Peaks markieren und sich dann die Aktivität ausrechnen lassen.

- Es ist auch eine sehr große Bibliothek für Abschirmmaterialien dabei. Normalerweise haben die Nuklidpeaks (unter Einbeziehung der Detektoreffizienz) definierte Höhenverhältnisse. Ist eine Abschirmung vorhanden, werden die niedrigen Energien stärker gefiltert als die höheren. Ist also das Nuklid und das Abschirmmaterial bekannt, errechnet die Software nicht nur die Aktivität des Nuklids hinter der Abschirmung, sondern auch die Dicke der vorhandenen Abschirmung!  Außerdem lässt sich simulieren, wie sich eine bestimmte Abschirmung auf das Aussehen des Spektrums auswirken würde.

- Gleiches gilt für Zerfallsreihen. Bei bekannter Detektoreffizienz kann man das Alter von ursprünglich reinen Nukliden berechnen. Wenn man also z.B. ursprünglich chemisch reines Th-232 hatte, kann aus der Höhe der Peaks der Töchter der Zeitpunkt der Reinigung des Th bestimmt werden.

- Es gibt eine Vielzahl kleiner "Helferlein": Umrechnen von Einheiten, Dosisleistungsberechnung anhand bekannter Aktivität (auch hinter Abschirmung), ... eigentlich werden kaum Wünsche offen gelassen. Und nicht nur der Funktionsumfang ist erstaunlich, die Bedienung ist auch sehr komfortabel.


Essentiell ist, wie schon geschrieben, ein gut charakterisierter Detektor. Also eine möglichst präzise Energiekalibrierung und eine möglichst gute Effizienzbestimmung.

Die Software entstammt zwar aus einem düsteren Kapitel der Menschheitsgeschichte (Herstellung von Kernwaffen), basiert aber auf OpenSource Software und hat für die allermeisten Komponenten den Quelltext verfügbar. Außerdem ist die Bedienung über einen Webbrowser möglich. Es wird versprochen, dass sie nicht "nach Hause telefoniert". Kosten tut sie auch nichts. Und man kann sich auf Wunsch sogar alles in "Bq" statt in "Ci" anzeigen lassen :yahoo:

Henri

Hallo!

Ich habe eine Frage zu den Dateiformaten, die Interspec importieren kann. Ich finde leider nirgendwo eine Dokumentation hierzu, weder in der Interspec Hilfe noch auf deren Github-Seite.

Meine Spektren konvertiere ich zur Zeit ins Theremino-Format, um sie importieren zu können. Dort gibt es ja auch eine Zeile "Total time: 12345". Jedoch ignoriert  Interspec diese anscheinend, ich erhalte beim Import die Meldung "Measurement did not contain Live Time, so setting this to Real Time".

Habt ihr auch das Problem, dass die Angabe im Theremino-Header nicht ausgewertet wird? Was macht man dagegen?

Mich würde auch interessieren, ob es irgendwo Infos gibt, welche Formate überhaupt in Interspec importiert werden können.

Viele Grüße!

Henri


opengeiger.de

Neben den youTubes von Will Johnson kenn ich nur noch dieses Dokument als Anleitung:
https://www.osti.gov/servlets/purl/1597194
(Links oben auf View conference klicken).

Ansonsten hab ich einfach rumprobiert. Das unten angehängte File hab ich einfach mal mit Excel als Test für den Import erzeugt und dann als Tabstop getrenntes .txt File gespeichert. In der ersten Zeile steht "Total time: 1234", das hab ich einem Theremino File entnommen, das er ja auch lesen kann. Das "1234" nimmt er als Messzeit in Sekunden und setzt immer Live Time und Real Time gleich auf diesen Wert. Was da der Unterschied zwischen "Real" und "Live" sein soll, weiß ich nicht. In der näcshten Spalte steht Energy und Counts als Spalten-Überschrift und da drunter kommen dann die Spaltenwerte, erst Energie, dann die Counts. Beim Radiacode muss man Energy weglassen und dann auch die erste Spalte. Das was der Radiacode als DataPoint rausgibt sind die Counts. Die Kalibrierung auf die Energie kann man dann in Interspec machen.

Wenn man dieses testImport File geladen hat, kann man damit ausprobieren, wie die anderen Formate aussehen, die er so lesen kann. Dazu markiert man das File im Spectrum Manager und kann es dann exportieren. Die Formate, die er exportieren kann, kann man dann mal im Internet googeln und wenn es ASCII-basierte Formate sind, dann kann man sie auch mal mit nem Editor anschauen. Mir hat aber bisher das Format in testImport.txt im Anhang ausgereicht.

Es gibt auch auf github noch gewisse Infos, die man da rausziehen kann, wenn man sich in der Programmierwelt etwas auskennt:
https://github.com/sandialabs/InterSpec

insbesondere das hier noch:
https://github.com/sandialabs/InterSpec/blob/master/README.md

Die Beschreibung der Library, welche die Spektrum-Files liest, heisst SpecUtils, die Beschreibung ist hier zu finden:
https://github.com/sandialabs/SpecUtils/blob/master/README.md

PS: Hab grad nochmal nachgeschaut zum Thema Live Time: Es gibt wohl Detektoren, die immer mal wieder mit dem Prozessieren der Daten beschäftigt sind und in der Zeit keine Pulse zählen. Die normale Zeit läuft dabei aber weiter. Das kann man wohl damit korrigieren.

Henri

Hallo Bernd,

Danke für die Antwort!

Ich bin jetzt auch ein wenig weiter, seit ein paar Minuten. Beim Import des Thermino Files kommt zwar besagte Warnmeldung, aber nach Markieren des Peaks werden im Peak Manager schön die cps angezeigt.

Also, wenn ich Dich richtig verstanden habe, erwartet das Programm zwei Angaben: einmal die Real Time, die die Gesamt-Messdauer darstellt, und einmal die Live Time, die nur die Zeitdauer umfasst, in der tatsächlich Pulse erfasst (aber nicht prozessiert wurden).

Das macht Sinn, weil ja viele MCAs mit Sample-Hold arbeiten, also das Signal zwischenspeichern, während die vergleichsweise langsame AD-Wandlung erfolgt. Und in der Zeit keine weiteren eingehenden Impulse registrieren. Mein uralter Canberra 8075 ist auch von dieser Sorte, allerdings wird die "Live Time" nicht extra erfasst. Bzw. er hat sogar einen entsprechenden Ausgang, den ich aber nicht beschaltet habe. Als Konversionszeit sind 1,5 µs angegeben. Bei den ca. 100 cps, die ich üblicherweise registriere, habe ich also 150 µs "Totzeit" pro Sekunde Messzeit. Das kann ich also sehr getrost vernachlässigen.

Und Theremino liefert auch nur die Total time an interspec, weshalb dieses natürlich sagt, da es keine Angaben zur Live time bekommt, setzt es einfach die Live time auf Real time.

Fazit: da bestand gar kein Problem! Musste man (ich) nur erst mal verstehen.

Viele Grüße!

Henri

opengeiger.de

Hmmmmh, also ich stell mir die Live Time eher so vor, dass der MCA immer wieder mal ne Totzeit hat, wo er nicht auf die eintreffenden digitalisierten Samples reagiert und die somit verloren gehen. Unter nem Sample&Hold versteh ich normalerweise was anderes.Ich kenn allerdings Deinen Canberra jetzt auch nicht. Ich hab zwar selbst auch noch so nen steinalten Canberra (Series 20), aber so genau hab ich den bisher noch nicht angeschaut. Aber mein Verständnis ist das, dass der ADC das Signal des Pulsshapers abtastet und dabei die Signalspannung solange konstant hält bis der ADC den analogen Abtastwert (Sample) gewandelt hat. Dieses konstant halten macht der Sample&Hold. Das ist nichts anderes als ein schneller Schalter, der für kurze Zeit eine Kapazität im Femtofarad-Bereich auf die Signalspannung aufläd und sie dann wieder von der Signalleitung abtrennt. Diese Kapazität speichert dann die Ladung und hält so die Spannung konstant. Dieser Sample&Hold ist aber Teil des ADC und sitzt hinter dem Analog-Eingang auf dem ADC Chip. Da man die Bandbreite des Pulsshapers im Profibereich heutzutage im Bereich von einigen 100nsec halten kann, wird der ADC mit einer Abtastrate von mehreren 100MHz laufen. Der Sample&Hold muss also nur für die Aperturzeit von grob 10nsec die Spannung konstant halten. Normalerweise versucht man hier auch ein äquidistantes Abtatsten mit einer festen Clock zu realisieren und vermeidet ein intermittierendes Abtasten, sonst bekommen diese ADCs oft auch Genauigkeitsprobleme. Wenn man dann den digitalen Abtastwert hat, muss jetzt der MCA triggern, sobald der Wert die untere Schwelle überschreitet und dann muss er den Wert des digitalen Samples der Größe nach in den richtigen Bin sortieren. Das macht normalerweise heute ein Prozessor. Da könnt ich mir dann vorstellen, dass der Prozessor mit dieser Aufgabe halt immer mal wieder pausieren muss, je nach dem was er sonst noch so alles tun soll, so dass dann einige Samples, die vom ADC kommen, nicht ins Histogramm ("Spektrum")einsortiert werden können und somit Counts verloren gehen. Aber die heutigen MCA Architekturen variieren da sicher auch enorm.

Also mal praktisch gesagt, wenn Du im Netz surfst und Forum liest, während Dein Rechner gerade den Theremino laufen hat, dann muss Dein Prozessor halt auch mal schnell was anderes tun als die Werte von der Soundkarte abzuholen...  :D 

Henri

Also, im Manual für den Canberra 8075 ADC-Einschub steht unter "Totzeit" (übersetzt): "... ist die Zeit, die der ADC beschäftigt ist, ein Eingangssignal zu konvertieren...". Wobei höhere eingestellte Verstärkung die Totzeit verlängert: von 4,1 µs (Minimum) auf 83,5 µs (Maximum). Die Totzeit liegt auch an einem Ausgang des Geräts an und kann vom angeschlossenen MCA ausgewertet werden.

Laut https://the.medusa.institute/display/GW/Dead+time%2C+live+time+and+real+time 
ist "live time" die "real time (Gesamtmessdauer)" abzüglich der Totzeit. Über die Erfassung der Totzeit (die gar nicht mal so trivial ist, wenn man es genau wissen möchte) schreibt die Seite auch was. Letztendlich, dass man das Gesamtsystem betrachten muss, nicht nur einzelne Komponenten, und oft um eine empirische Annäherung nicht herumkommt.

Zur Funktion des 8075 (grob gesagt): übersteigt die steigende Flanke des Eingangssignals einen Schwellwert, wird der Schalteingang geöffnet, das Signal lädt einen Kondensator, und der Signaleingang wird bei Wiederabfall auf 90% des Spitzenwerts wieder geschlossen. Der Kondensator wird dann über eine Präzisions-Konstantstromquelle entladen in Richtung auf -24V. Bei Erreichen der 90%-Schwelle wird ein 100 MHz Oszillator gestartet, bei Nulldurchgang wieder abgestellt. Die Anzahl der Perioden wird gezählt und repräsentiert die Peakhöhe. Dieser Wert wird in einen Datenpuffer geladen, damit der Signaleingang wieder freigeschaltet werden kann, und aus dem Puffer heraus dann  als 13-bit Wort auf einen parallelen Datenport gelegt und ein DATA READY pin geschaltet, damit sich der angeschlossene PC den Wert abholen kann. Der PC signalisiert über eine DATA ACCEPTED pin, dass er die Daten erhalten hat. Erst dann wird ein neuer Impuls gewandelt.

Somit hängt der "Durchsatz" des ADC tatsächlich einmal von der Konversionszeit ab (die variabel ist, weil die  Dauer zumindest des ersten Teils, das Laden und gerichtete Entladen des Speicherkondensators, direkt von der Signalamplitude abhängt), aber auch davon, wie schnell der angeschlossene PC (MCA) die Daten abruft.


Bemerkenswert ist, dass der 8075 keinen Prozessor hat und auch keinen fertigen ADC-Baustein. Das ist komplett gute alte Analogtechnik - nicht gerade schnell vielleicht, aber dafür mit einer bemerkenswerten Linearität und minimalen Drift.

Viele Grüße!

Henri

opengeiger.de

Ja, interessant! Ich hab mal geschaut, Dein 8075 Einschub gabs mindestens schon 1990. Im Manual von meinem Series 20 steht 1992. Ist also schon so dieselbe Epoche. Aber es kann wirklich sein, dass der ADC damals kein einzelner Chip war, sondern aus nem Input Gate mit Kondensator als Sample&Hold, 12 Komparatoren und anderen Einzel-Komponenten aufgebaut wurde. Im Series 20 ist der ADC ein 12bit Wandler (4k conversion gain hat man damals gesagt) der ne Wandlungsrate von 2usec erreichte also 500ksps. Die Zählrate im Multichannelbetrieb war aber nur 200kHz.

Die Aperturzeit des Wandlers wird durch das Gate am Eingang definiert, durch welches die Kapazität geladen wird, und das dann den Eingang wieder vom Pulse Stretcher Ausgang trennt. Das stellt dann das Sample&Hold Glied dar. Diese Aperturzeit will man so kurz wie möglich haben, sonst weiss der Wandler ja nicht welchen Analogwert er wandeln soll, wenn sich das Eingangssignal laufend ändert. Mit der kurzen Aperturzeit und dem Sample&Hold am Eingang wandelt der ADC also den analogen Spannungswert an der Kapazität (bei meinem Series 20 auch erst nachdem der Wert um 90% abgefallen ist) ganz in  aller Ruhe um. In der Zeit sind die Komparatorausgänge natürlich instabil und rippeln sich zurecht. Deswegen kommt am Ausgang noch ein Latch, das den Digitalwert der Komparatoren erst übernimmt, wenn das End of Conversion Signal kommt. Damit kann der Prozessor natürlich den ADC anhalten bis er mit dem Puls-Höhen-Sortieren fertig ist. Und dieser Digitalwert wird dann gehalten, bis zur nächsten EOC Flanke. Das heisst am Ausgang entsteht so der Digitalwert und wird mit einer Hold Time, die deutlich länger ist als die Aperturzeit bis zum nächsten Zyklus gehalten damit man keine Glitches am Digitalausgang bekommt. Durch den gesamten Ablauf wird die Wandlerrate von 2usec definiert. Diese Hold Time hat aber nichts mit dem Sample&Hold am Eingang zu tun.

Jetzt muss man aber noch eins sehen, das steht in meinem Manual zur Live Time drin (ich hänge den Ausschnitt dazu mal an), wenn man ein Stück Pechblende in die Kammer legt, dann kommen die Pulse ja so schnell, dass sich wegen des Pulsstretchers die Pulse überlagern und dieser PileUp-Effekt entsteht. Der MCA würde solche Pulse natürlich völlig falsch einsortieren. Daher müssen die eliminiert werden. Das machen der Theremino und der PRA auch mit mehr oder weniger intelligenten Algorithmen, die im Prozessor laufen. Wenn also Pulse zu schnell kommen, dann muss der Prozessor etliche Pulse verwerfen. Im Theremino und in PRA kann man sich das sogar anzeigen lassen, wieviel Prozent der Pulse verloren gehen und das ist ja hauptsächlich der Notwendigkeit des Pulse Stretching geschuldet. Und das wiederum macht man ja nur, damit der ADC genug Samples pro Puls liefern kann um die Pulshöhe richtig erfassen zu können. Das heißt jedoch, je höher die Aktivität der Probe, desto mehr Zeit verliert der Prozessor, wo er Pulse wegwerfen muss. Der Canberra macht das nun offensichtlich so, dass er die Zeit erfasst wo der MCA wirklich Pulse einsortieren kann und das nennt er Live Time. Da aber bei dem Wegwerfen überlagerter oder sonst wie gestörter Pulse die reale Zeit weiterläuft ergibt sich da eben ein Unterschied so dass zwischen Start und Stop der Messung und der Zeit wo er wirklich Pulse einsortiert hat, ein Unterschied ist.

Das müsste beim Theremino und beim PRA auch so sein. Eher noch schlimmer sogar, denn der Pulse Stratcher oder Pulse Shaper muss die Pulse ja viel mehr verlängern, damit so eine 192kSps Soundkarte, nen Puls auch mit mehr als 10 Samples aufnehmen kann. Da hat man dann aber keinen Live Time Counter, so dass man eben drauf achten muss, dass die Probe nicht zu viel Aktivität hat, dann ist die Real Time und die Live Time annähernd gleich, weil Pulse nur selten verworfen werden müssen. Naja und nen Video sollte man halt auch nicht gerade parallel zur Messung anschauen.

Die Profigeräte heute, die nehmen nun halt nen ADC mit mehreren Gbps Abtastrate und der schreibt dann per DMA ins Memory. Der Prozessor läuft auch mit ein paar GHz und da werkeln dann mehrere Cores parallel um das Pulshöhen-Spektrum zu erzeugen, da hat man solche Probleme nicht mehr. Und die Gefahr dass der User den Prozessor mit anderen Dingen auslastet, ist da ja auch nicht so hoch wie auf dem PC.  ;)

DL8BCN

Hallo, kurze, generelle Frage von einem Anfänger:
Welches Datenformat akzeptiert InterSpec?
In der Präsentation von Will Johnson steht: CNF, N42, CSV, TXT, LIS, SPE, SPC, ...
Ich kenne nur CSV und TXT.
Kann ich ein vom RC-101 exportiertes Spektrum direkt nutzen, oder wie war das noch mal?
Ich habe gesehen, daß die exportierten Spektrumfiles vom RC-101 im Format XML sind.
Das kann man so wohl direkt nicht importieren.
Ich weiß auch nicht, wie man ein XML-File in ein CSV oder Textfile konvertieren könnte :(

Rainer

DL8BCN

Ich habe mit Notepad ++ das xml file in .txt konvertiert.
Leider kommt eine Fehlermeldung in InterSpec:

opengeiger.de

So wie im Anhang muss das Spektrum vom Radiacode nach dem Editieren des XML aussehen. @DL8BCN: Lies mal die Beiträge weiter oben in dem Thread, da steht Einiges dazu drin.

DL8BCN

OK, ich kenne jemanden, der ist von Beruf Fachinformatiker.
Den Frage ich später mal um Hilfe...

DL8BCN

Hallo hat nun geklappt.
Nur die Kalibrierung stimmt noch nicht :(
Bei Polynomial müssen wohl andere Werte rein...
Im linearen Modus sieht es vieleicht noch besser aus.
Durch die wenigen Meßpunkte ist es aber sehr stufig.
Gibt es eine smoothing Funktion?