TextData: Arbeit mit Datenreihen in Textform (ASCII-Files)
Als Physiker hat man des öfteren mal Daten von einem Experiment und möchte diese verarbeiten. Üblicherweise liegen die Datenreihen in irgendeiner Form als Textdatei vor. Für das Format dieser gibt es grobe Vorstellungen, die sich in Details unterschiedlich stark unterscheiden.
Hier kommt PERL in seiner Bedeutung als Practical Data Extraction and Report Language zum Einsatz: Ich habe den Versuch unternommen, einen Satz von Programmen (Bibliotheken) für die Arbeit mit allen Arten von (üblicherweise...) auftretenden sog. "ASCII Files" zu erstellen. Perl ist dafür nicht das schnellste Werkzeug, aber beim flexiblen Verarbeiten von Text nunmal in seinem Element
Außerdem sind die mir bisher untergekommenen Messdaten nicht so umfangreich, als dass die Laufzeit der Filter/Berechnungen ins Gewicht fallen würde. Das sage ich als Benutzer eines Laptops mit schlappen 366MHz im Jahre 2005 (Update: auch im Jahr 2006;-)...
Dieses Paket beinhaltet zum Einen Perl-Module für die generelle Ein-/Ausgabe und Verarbeitung der Dateien und zu Anderen einen guten Satz an Programmen, die dann tatsächlich auch etwas tun: filtern, drin rumrechnen, Extrema finden, TeX-Tabellen erstellen...
Ich versuche, die ganze Geschichte hier weitgehend plattformunabhängig zu gestalten - für Hinweise auf Probleme auf Windows/Mac/???-Systemen bin ich daher besonders dankbar. Sonstige Fehler möchte ich natürlich auch kennen und korrigieren.
Download
tar.bz2: TextData v1.9.0 (19.08.2008) (sig)
Installation
Siehe Datei INSTALL und besser auch gleich Param.pm installieren - das ist nicht absolut notwendig, aber so manches Programm wird doch erst mit der Möglichkeit, seine Parameter zu beeinflussen, sinnvoll.
Wesentliche Neuigkeiten in Version 1.9:
- Verbessertes txdsort, nun stabil und mehrstufig (Sortieren nach mehreren Spalten).
- Mehr Unterstüzuung für --black .
- txdinfo zeigt Spaltenzahl.
- Formel Parser überarbeitet.
Wesentliche Neuheiten in Version 1.8:
- Umbenanntes Programm: txdsection ist nun txdrows, das Gegenstück zu txdcolumns (Auswahl einer Gruppe von Zeilen)
- txdfilter: --empty (positiver Schalter zum Erlauben von leeren Zeilen) und --black (Entfernen von Leerraum an Anfang und Ende von Zeilen)
- txdtotex:
- --cfont, Wahl der Schrift
- --numform, Angabe eines Nummerformats (Rundung, Exponentenschreibweise...)
- --cmath, Zelleninhalte im Formelsatz, konvertiert Exponenten: 1e+4 wird zu 1\E{4} (\E[1] sollte definiert sein, z.B. als 10^{#1})
- --placement, spezielle Wünsche zur Platzierung der Tabelle (als LaTeX float, also z.B. hb, !h, ...)
- --block, ordentliche Ausrichtung der Zahlen einer Spalte untereinander (am Komma/Punkt) und zusammen als Block links, rechts oder mittig
- --convert, mach Punkte zu Kommata und umgekehrt (deutsche oder englische Zahlen)
- --dot, wichtig für --block: Das Komma / der Punkt zum Ausrichten; --dot=. oder --dot=,
- txdcalc:
- Formeln können einen Rückgabewert erzeugen (Anweisung: return Zahl); wenn dieser wahr (weder Null noch undefiniert) ist, so wird der aktuelle Datensatz verworfen
- Die Konstanten (@C, --const) werden evaluiert, d.h. 1/3 oder pi() funktionieren wie gedacht
- --beforecode, beliebiger Programmtext, der vor dem Lesen der Daten ausgeführt wird
- leere Zeilen werden erhalten (z.B. zum Trennen von Scans für Gnuplots pm3d)
- Ausgabe von @A wirklich nur, wenn --justcalc gegeben
Wesentliche Neuheiten in Version 1.7
- anfänglicher Hack einer Gauss-Zufallsroutine in Calc (Rauschen zu Ausdrücken hinzufügen)
- File::ReadHead() speichert gelesene Zeilen in einem Puffer (damit sie bei STDIN nicht verloren sind)
- Fehler mit Anführungszeichen im Kopfparsing behoben
- Version Modul hinzugefügt (Versionstest zur Laufzeit)
- neues Programm: txdsection, die transponierte Variante zu txdcolumn... (einen Zeilenbereich extrahieren)
Wesentliche Neuheiten in Version 1.6:
- TextData::File::Write() wurde weiter aufgesplittet, um auf offene Dateien oder auch nur den Datenteil schreiben zu können
- Quelltextdokumentation bereinigt
- txdcalc kann nun Daten aus verschiedenen Dateien durch verschiedene Spalten korrelieren
- txdnorm kann normalisierte Spalte anhängen (anstatt alte Spalte ersetzen)
Wesentliche Neuheiten in Version 1.5:
- Fehlerbhebung in TextData::Calc -A0 wurde nicht zu $A->[0]
- txdcalc kennt "just calc" und "aftercode" - Damit kann man nun im Grunde beliebige Berechnungen auf den Daten durchführen und deren Ergebnisse präsentieren, ohne weiter mit den Datenreihen zu arbeiten.
- Neu: txdmean zur Berechnung der Mittelwerte der Spalten (auch Varianz)
- Neu: rohes txdearthhistogram für einen (zu) speziellen Zweck...
Wesentliche Neuheiten in Version 1.4:
- TextData::Calc unterstützt nun auch mehrzeilige Formeln
- txdfilter kann einzelne Spaltentitel verändern
- txdcolumns akzeptiert auch columns-Parameter anstatt nur rohe Kommandozeilenargumente zur Auswahl
Wesentliche Neuheiten in Version 1.3:
- Vereinheitlichung der Standard-Parameter in den Skripten (nun immer --strict/-S, --text/-T, --numform/-N falls anwendbar)
- Ausweitung der mehrere-Dateien-in-einer-Pipe-Unterstützung soweit es Sinn macht (also alle außer txdconstruct)
- Neue Skripte: txdsort zum Sortieren und txdbaseline für Baseline-Korrektur (Grundrauschen)
Wesentliche Neuheiten in Version 1.2:
- Unterstützung für mehrere Dateien in einer Pipe (hintereinander, getrennt durch ASCII-Steuerzeichen 2, 3 und 4) dort, wo es Sinn macht; dies macht auch überhaupt Sinn mit der FilterGUI (auch Kommandozeile), welche hier noch erscheinen wird.
- Neues Skript: txdnorm zum Normalisieren von Daten
Wozu gibt's denn sonst Standards?
Letzte Modifikation dieser Seite: Monday, 07-Mar-2011 09:58:02 CET