Datenkonverter
Datenkonverter werden eine eindeutige Kombination von Makrozweig (z.B. "nmr") und Makroname (z.B. "Bruker") auf. Beim Verarbeiten neu hochgeladener Rohdaten wird zunächst versucht, die als analytics.MemFS vorliegenden Daten dem Konverter anzubieten, der durch die gewählte Analytikart und das Gerät vorgeschlagen wird. Gibt dieser einen Nullwert zurück (ist also nicht zur Konvertierung in der Lage), dann werden zunächst andere Konverter des betr. Makrozweigs probiert, schließlich alle anderen Kandidaten.
Das MemFS-Objekt bietet über Muster wie 'rawData.findAllFolderFiles("", "*.aqs")' oder 'rawData.findFolderFile(prefix + "/pdata/1", "procs.")' einfachen Zugriff auf bestimmte Dateinamen, so daß i.d.R. schnell einschieden werden kann, ob ein Konverter geeignet ist. In Einzelfällen muß über 'fileRaw.hasBytesAt(0, "RAW_")' auch auf die Dateiinhalte zugegriffen werden.
Ist ein passendes Skript gefunden, so baut dieses einen Rückgabewert vom Typ analytics.AbstractAnalyticalData auf, z.B.
- analytics.XYData: eine Liste von X/Y-Werten,
- analytics.SeqData: eine Datenreihe von Y-Werten auf einer X-Skala,
- analytics.ImageFiles: eine Sammlung von Bildern oder
- analytics.Multiple: eine Sammlung mehrerer analytics.AbstractAnalyticalData.
Bei Graphen gibt die Methode getIntPeakListForActiveDataRow() Zugriff auf Ergebnisse des eingebauten Peakfinders, um diese für eine für eine Auswertung zu nutzen (Peakliste) und diese in der Datenbanktabelle AnaXyData zu speichern. Auf diese Weise kann der Datensatz auch aufgrund des Signalmusters gefunden werden. Möchte man weitere Parameter in Eigenschaftswerten speichern, die dann im Formular angezeigt oder zur Filterung genutzt werden können, dann kann über die Methode getAnaDataProperty() auf eine Map zugegriffen werden, die diese Eigenschaften aufnimmt.
Data converters
Data converters are identified through a unique combination of the given macro branch (e.g. "nmr") and name (e.g. "Bruker"). When processing newly uploaded raw data, the data present as analytics.MemFS will first be offered to the macro defined by the chosen analytics type and device. If it returns a null value, i.e. is unable to process the data, other converters of the same macro branch will be tried, then all remaining ones.
The MemFS object allows to access files via patterns like 'rawData.findAllFolderFiles("", "*.aqs")' or 'rawData.findFolderFile(prefix + "/pdata/1", "procs.")' in a simple way, allowing a rapid decision if the data can be processed by the given converter. In some cases, the file content must be checked by commands like 'fileRaw.hasBytesAt(0, "RAW_")'.
If a suitable script is found, it will construct a return value of type analytics.AbstractAnalyticalData, e.g.
- analytics.XYData: a list of X/Y values,
- analytics.SeqData: a series of Y values for a given X range,
- analytics.ImageFiles: a collection of images or
- analytics.Multiple: a collection of multiple analytics.AbstractAnalyticalData.
In the case of graphs, the method getIntPeakListForActiveDataRow() gives access to the results of the internal peak finder, which can be used to generate a text report and can be stored in the database table AnaXyData, allowing peak pattern searches. To store additional parameters as properties, which can be displayed in the form or used for filtering, the method getAnaDataProperty() gives access to a property Map to store such information.