Automatische Überwachung, Archivierung und Auswertung von Messdaten

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Mmmm
User
Beiträge: 2
Registriert: Freitag 6. April 2018, 09:15

Guten Morgen zusammen,

da dies mein erster Post in diesem Forum ist, seid bitte nicht zu hart mit mir. Auch, falls dieser Post im falschen Themenbereich gelandet ist.

Bei mir auf der Arbeit haben wir eine Messvorrichtung, die 10 Kraftkanäle und 2 weitere Kanäle mitschreibt. Die nenne ich jetzt zum Verständnis mal A, B und F1-F10. Diese ist so eingestellt, dass sie nach gewissen Intervallen (z.B. alle 10 Minuten) alle 12 Kanäle in eine separate txt-Datei speichert. Neben den F-Mitschrieben sowie den Temperaturmitschrieben ist der Bruchzeitpunkt wichtig. Bisher handhaben wir es so, dass regelmäßig geschaut wird, ob eine Probe gebrochen ist, alle Messwerte mit einem Makro in Excel überführt werden und anschließend eine händische Auswertung in Excel erfolgt. Da es um eine riesige Anzahl an Proben geht und außerdem Excel nicht die Schnellste Methode ist, möchte ich das ganze gern in Python automatisieren. Falls es wichtig ist: Die Steuerung der Messungen läuft über Catman.

Hierfür zunächst meine Erfahrungen in Python, bevor ich berichte was ich mir vorstelle und wobei ich Hilfe benötige:
Meine Versuchsauswertungen erfolgen in 90% der Fälle in Python mit Pandas, Numpy, Stats und Matplotlib. Auch wenn meine Codes meistens sehr Chaotisch sind funktioniert das alles sehr gut. Ich würde behaupten, dass ich für meine Zwecke gut genug mit diesen Paketen umgehen kann.
Keine Erfahrung habe ich mit GUIs (außer mal das Grundprinzip angeschaut und ein Paar Test-Programme erstellt) und OOP.

Was ich mir vorstelle:
Ich benötige ein Tool, was wirklich jeder bedienen kann. Dieses soll drei Funktionen erfüllen.
1. Überwachung der Messung: Auf Knopfdruck soll es in gewissen Intervallen die aktuellste txt-Datei auslesen, prüfen ob die Werte im zulässigen Bereich sind, und eine Benachrichtigung (z.B. per Mail) versenden, falls dies nicht der Fall ist. Die Rohdateien bestehen aus zwei Zeilen, wobei die erste Zeile die Benennungen der Messkanäle und die zweite Zeile die Messwerte sind.
2. Archivierung der Daten: Zum einen sollen alle Messwerte aus den einzelnen txt-Dateien in eine große überführt werden. Zum anderen soll über eine Eingabe eines Start- und Endzeitpunkts (Datum und Uhrzeit) sowie der Wahl von Messkanälen (ideal per Checkbox, z.B. F1, F2, F5, A, B) eine Datei mit den Werten dieser Kanäle in dem gewählten Zeitraum erstellt werden (für Diagramme in Latex).
3. Auswertung der Daten: Es soll in einer separaten Datei jeweils der Bruchzeitpunkt (siehe 1.) für den entsprechenden Messkanal dokumentiert werden. Mithilfe der Daten aus 2. soll die mittleren Kraft und die mittleren Werte für die Kanäle A und B über den Prüfzeitraum berechnet werden und ebenfalls in der Datei mit dem Bruchzeitpunkt dokumentiert werden. Es soll eine PNG-Datei erstellt werden, in der die in 2. gewählten Messdaten geplottet werden, wobei die Labels der Kurven benannt werden können (entsprechend der Probenkennung).
und für kürzere Berichte in Word ein Plot der Kurven als Bild erstellt werden, wobei die Namen der Kurven (Kraftkanäle) benannt werden können (Probennamen). Zudem soll diese Datei die entsprechende Dauer bis zum Bruch sowie die Mittelwerte der Messkurven enthalten.

Ich bin mir nicht sicher, ob soweit klar ist was ich benötige :P
Nun zu meinen Fragen.
Wie bereits erwähnt, habe ich bisher Versuchsauswertungen immer in kleinen "Programmen" gemacht, die allerdings immer nur für eine spezielle Messdatei funktionieren. Der Grund: Es hat sich nicht gelohnt das allgemeiner zu verfassen.
Wie sollte ich vorgehen, wenn ich das kleine Projekt systematisch, effizient und funktionierend angehen werde?
Ich habe noch nie ein Programm erstellt, welches quasi im "Dauerbetrieb" ist, und erstrecht nicht mit GUI.

Aus dem Grund kann ich leider keinen Beispielcode einfügen, da keiner vorliegt.

Ich erwarte keine "Code"-Hilfe o.Ä. (auch wenn ich da vermutlich später Hilfe benötige). Ich würde mich allerdings sehr über Tipps und Anregungen zu den folgenden Punkten freuen:
- Wie gehe ich mit Plan vor? Wild drauf losschreiben hat mich dahin gebracht wo ich jetzt bin, und da komme ich nicht weiter.
- Welche Themen sollte ich mir noch einmal genauer anschauen, damit das kein Schuss ins blaue wird (GUI ist klar, aber was noch?)
- Sollte ich erst die Funktionen erstellen, die die oben gewünschten Punkte durchführen und das ganze anschließend im GUI verpacken, oder direkt alles in einem machen?
- Habe ich irgendwo völlig falsche Vorstellungen, wobei sich Erfahrene nur vor den Kopf hauen?

Wie gesagt: Ich bin über jede Anregung dankbar, der mir hilft, so vorzugehen, dass anschließend kein Chaos entsteht. Das ist mein erstes "größeres" Python-Projekt.

Vielen Dank im Voraus für eure Hilfe,
vielen Dank im Voraus für eure Kritik,
vielen Dank im Voraus für eure Sprüche á la "Mensch bist du blöd, so schwer ist das doch gar nicht", "Das ist ein völlig falscher Ansatz",

und liebe Grüße :)
Mmmm
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@Mmmm: wenn ich es richtig verstanden habe, werden hunderte Dateien geschrieben. Der erste Schritt wäre es also, sie in ein Format zu überführen, mit dem man einfach alle weiteren Aufgaben lösen kann. Da fällt einem zuerst einmal eine Datenbank ein. Die kann dann als zentrale Anlaufstelle für alle weiteren Programme dienen.

Überwachung hört sich für mich nach etwas an, das automatisch im Hintergrund läuft. Ein Knopfdruck hört sich da etwas seltsam an. Statt dessen wäre dann ein Programm, das alle x Minuten nach neuen Dateien sucht, diese in die Datenbank schreibt, die Daten prüft und bei Bedarf eMails verschickt.

Punkte 2 und 3 arbeiten dann auf der Datenbank. Wie die Bedingung da aussieht, kommt ganz auf den Anwendungsfall an. Excel kann Datenbanken direkt abfragen. Für LaTeX wäre das ein Kommandozeilen-Programm, das mit den passenden Parametern Diagramm-Daten erzeugt und zum Beispiel direkt aus dem LaTex-Dokument heraus aufgerufen wird. Für die weitere Auswertung kommt es dann darauf an, wie man arbeitet und wie komplex das ganze werden soll. Wie schon am Anfang beschrieben, wenn die ganze Auswertung einfach als SQL-Befehl geschrieben werden kann, dann benutzt man dafür am einfachsten weiterhin Excel mit ein paar Macros. Das ist bekannt, einfach zu bedienen, man bekommt schöne Diagramme und ist gut in Word integrierbar.
Mmmm
User
Beiträge: 2
Registriert: Freitag 6. April 2018, 09:15

@Sirius3 Danke für deine rasche Antwort!

Auf den Gedanken, eine Datenbank zu nutzen, bin ich tatsächlich nicht gekommen. Das kann allerdings auch daran liegen, dass ich damit bisher noch nie etwas zu tun hatte. Ich habe idR immer die Rohmessdaten behalten und direkt mit diesen gearbeitet. Da die Messwerte Von Start- bis Bruchzeitpunkt alle zueinander gehören, habe ich gedacht, es ist am simpelsten, die Messwerte z.B. als csv zusammen zu tragen.

Mit dem Gedanken einer Datenbank habe ich allerdings schon einmal gespielt, da im Rahmen meiner Arbeit (Diss) wahnsinnig viele Messwerte und natürlich auch komprimierte Ergebnisse anfallen. Damals habe ich mir SQLite einmal angeschaut, jedoch aus Zeitgründen aus den Augen verloren. Wäre SQLite eine Möglichkeit, oder sollte ich da einen anderen Ansatz wählen?

Zur Überwachung: "Auf Knopfdruck" ist eher bildlich gemeint. Aber im Grunde hast du es richtig beschrieben. Ich denke, es ist am einfachsten, wenn ich das ganze auslagere in ein eigenes Programm. Einfach starten und eine Schleife das ganze prüfen lassen :)
Was ich mir zutraue (sobald ich mich ein wenig in Datenbanken eingearbeitet habe): Die Messwerte (bzw. die neuen Messwerte) abspeichern/sammeln. Parallel dazu separat die Überwachung.
Emails habe ich mit Python noch nie versendet, Google hat mir gerade allerdings gezeigt, dass es dazu haufenweise Anleitungen im Internet gibt. Benötige ich dafür ein Mailprogramm, oder geht das auch ohne direkt in Python oder über webmail?

Wenn ich wie gerade beschrieben vorgehe, ist für mich die Auswertung auch kein Problem (abgesehen davon, dass ich gerne per GUI die Kanäle und den Zeitraum wählen möchte, aber ich denke das bekomme ich auch noch hin!)

In LaTeX füge ich die Diagramme direkt über die Messwerte ein, das ist einfach sauberer in der Darstellung. Falls es doch mal ein wenig komplexer wird bleibe ich bei Python und füge die anschließend als PDF ein :)

Danke schonmal, und schöne Grüße!
Antworten