identifierString
wird intern via strfind
verarbeitet, d.h. in den ersten drei Zeilen wird nach dem Vorkommen der via identifierString
definierten Zeichenkette gesucht.
Um möglichst automatisch eine große Zahl verschiedener Datenformate einlesen (und erkennen) zu können, gibt es die Konfigurationsdatei trEPRload.ini
, die im selben Verzeichnis wie die Funktionsdatei trEPRload.m
liegen muß. Diese Datei ist in ihren Kommentaren dokumentiert.
Die Idee hinter der Funktion trEPRload
ist, möglichst viele verschiedene Dateiformate einlesen zu können. Die Funktion trEPRload
fungiert dabei lediglich als Vermittler zwischen den Dateien und den entsprechenden Routinen, die speziell zum Einlesen der Dateien geschrieben wurden.
Um aber eigenständig erkennen zu können, um welchen Dateityp es sich gerade handelt, gibt es die Konfigurationsdatei trEPRload.ini
, die für jeden unterstützten Dateitypen entsprechende Parameter vorhält.
Momentan gibt es drei Parameter:
identifierString
gesucht, um das Dateiformat zu identifizieren.identifierString
die Dateiendung, da es nicht einfach ist, anderweitig den Typ einer Binärdatei zu bestimmen.
Jeder Block mit einer Definition für einen Dateitypen wird durch einen eineindeutigen Bezeichner in eckigen Klammern (wie bei ini
-Dateien üblich) eingeleitet.
Ansonsten können beliebige Kommentare in die Datei geschrieben werden, etwa zur weiteren Beschreibung einzelner Formate oder für Hinweise auf die (manchmal notwendige) Reihenfolge der Definition gewisser Dateiformate.
Wichtiger Hinweis zur Reihenfolge der Formatdefinitionen: Die Einleseroutine trEPRload
testet in der Reihenfolge der Definition die entsprechenden Dateiformate. Wenn also zwei identifierStrings
überschneidende Bestandteile haben (bzw. konkret: wenn einer davon eine Untermenge des anderen ist), dann ist es wichtig, daß das Format mit dem entsprechend längeren identifierString
zuerst definiert wird.
Sobald eine entsprechende Matlab-Routine geschrieben wurde, die ein bislang nicht unterstützes Dateiformat einlesen kann, kann ein korrespondierender Block in der trEPRload.ini
-Datei hinzugefügt werden.
Hinweis für das Erstellen neuer Formate: An all diejenigen, die selbst (ASCII-)Dateiformate designen, wie das zuweilen beim Schreiben von Meßprogrammen vorkommt: Wesentlich ist eine eindeutige Identifizierbarkeit des jeweiligen Formates innerhalb der ersten drei Zeilen. Das läßt sich am Sinnvollsten durch eine entsprechende eineindeutige Kennung (wie den Namen des Dateiformates) lösen. Ob diese Kennung in einem Kommentar steht oder nicht, hängt vom Dateiformat ab, beeinflußt aber nicht die Funktion der trEPRload
-Routine.1)
Hinweis: Bei der hier wiedergegebenen Version der Datei muß es sich nicht zwangsläufig um die letztaktuelle Version handeln. Sie ist vielmehr als Beispiel und Veranschaulichung gedacht.
% Configuration file for the trEPRload function of the trEPR toolbox % % (c) 2010-2011, Till Biskup <till@till-biskup.de> % % Each file format that is recognized by the trEPRload function % has its own entry in this file. The format of this entry is as follows: % % [<file format>] % type = <ascii|binary> % identifierString = <string that can be used to identify the file> % function = <function that is used to handle the file> % parameters = <additional parameters passed to the function> % combineMultiple = <true|false> whether routine can combine multiple files % % In case of binary file formats, "identifierString" is the extension % (with leading dot). [ascii_save_2Dspectrum] type = ascii identifierString = ascii_save_2Dspectrum function = trEPRasciiLoad [ascii_save_spectrum] type = ascii identifierString = ascii_save_spectrum function = trEPRasciiLoad [ascii_save_timeslice] type = ascii identifierString = ascii_save_timeslice function = trEPRasciiLoad % Format used in Berlin for transient data. fsc2 files are generally simple % ascii data files with different header depending on the actual script % used to measure. Here, the program is included in the header of the file % together with a bunch of the most important parameters. [fsc2] type = ascii identifierString = fsc2 function = trEPRfsc2Load [iniFileWrite] type = ascii identifierString = iniFileWrite function = iniFileRead [metaGen] type = ascii identifierString = metaGen function = metaGenFileRead % should be replaced by a call to a more general function % because metaGenFileRead and iniFileRead are nearly identical % Format used in Freiburg for transient data. Compatible to gnuplot % with special headers derived from the speksim format (see there). % Every time slice is saved to a single file together with a time axis. % % IMPORTANT: gnuplot has to be defined before speksim due to the % nearly identical identifier string. [gnuplot] type = ascii identifierString = # Source : transient function = trEPRgnuplotLoad combineMultiple = true % Format used in Freiburg for transient data. Directly written by the % transient spectrometer. Every time slice is saved to a single file. % % IMPORTANT: speksim has to be defined after gnuplot due to the % nearly identical identifier string. [speksim] type = ascii identifierString = Source : transient function = trEPRspeksimLoad combineMultiple = true % Format Bruker Xepr writes when exporting TREPR datasets to ASCII [BrukerTREPRASCII] type = ascii identifierString = index Time [ns] Field [G] function = trEPRbrukerASCIIload combineMultiple = false [BrukerBES3T] type = binary identifierString = .DTA function = trEPRbrukerBES3Tload % Unzipped version of the format used from the new versions of the % trEPR toolbox to save the data. [xml] type = ascii identifierString = <?xml version="1.0" encoding="utf-8"?> function = xmlRead % Format used from the new versions of the trEPR toolbox to save the data. % % It is basically a XML file that was zipped to save disk space. [xmlzip] type = binary identifierString = .zip function = xmlZipRead
identifierString
wird intern via strfind
verarbeitet, d.h. in den ersten drei Zeilen wird nach dem Vorkommen der via identifierString
definierten Zeichenkette gesucht.