Im Rahmen meiner Studienarbeit sollte ein Verfahren zur schnellen Bestimmung von Diffusionsparametern aus dem Verfahren Fluorescence Recovery after Photobleaching erstellt werden. Das Projekt wurde aus verschiedenen Gründen als generische Struktur entwickelt und programmiert. Hierzu zählt eine Postgresql Datenbankanbindung in Matlab, sowie eine XML Verarbeitung auf der Technik von XSD Schemata. Da der Algorithmus für mehrere Datensätze verwendet wird, war hier die Chance das Verfahren effizienter über eine Parallelisierung auf Datenebene zu gestalten. Die Daten selbst sind 3D Messdaten, auf die die Funktion minimiert wird.
Das ganze System basiert auf einem Neural Gas Algorithmus für ein Vorinitialisierung des Mittelpunktes und andere grobe Näherungen der Parameter. Diese werden dann für eine Auswahl an Datensätzen via Gradientenabstieg grob weiter verfeinert und linear interpoliert. Mit diesen Initialisierungswerten wird dann jeder Datensatz ggf. auf mehrere parallele Matlabinstanzen verteilt und dann präzise gefittet. Sowohl die Originaldaten, wie auch die gefitteten Datensätze werden in verschiedene Arten visualisiert und innerhalb eines Postgresql Datenbank gespeichert, wobei hier das Problem der Speichermöglichkeit von Matrix- bzw. Vektordaten innerhalb des RDBMS nicht effizient möglich ist. Um das Problem einfach zu umgehen, werden die Matrix- und Vektordaten zuerst in das Hierarchical Data Format gespeichert und dann als BLOB-Datenfelder gespeichert, wobei direkt auch ein lokales Caching entsteht.
Die Komponenten für den Datenaustausch basiere auf XML und überführen Matlabobjekt in Javaobjekte, die per RMI dann entsprechend transferiert werden. Die Matlabinstanzen koordinieren sich über ein Multicastnetzwerk, dessen Protokoll ebenfalls XML basiert ist, so dass die Daten einfach per Mashall / Unmashall in Javaobjekte überführt und verarbeitet werden können. Sämtliche Komponenten basieren auf Matlab, XML und Java und gliedern sich somit ohne weitere Lizenzkosten in bestehende Matlabinstallationen ein.
Die Arbeit selbst steht unter der Common Creative Lizenzdie Codes unter der GPL Lizenz. Die Cluster- und XML-Toolbox befindet sich für Matlab 2007 (JRE 1.5) und ab 2008 (JRE 1.6) im SVN. Weiter Codes stelle ich bei Bedarf zur Verfügung und bitte dafür um eine kurze Nachricht.
Facebook
Twitter
Digg
Technorati
LinkedIn
Kommentieren