Die abgeleiteten Tabellen (Kapitel 5.3) sind die physische Basis des Datenbank-systems. Um die Datenbank nutzen zu können, muss eine Anwendungsebene im-plementiert werden, die Methoden zur Datenspeicherung und -abfrage bereitstellt.
Die Implementierung erfolgte in Java (www.java.com ). Im Anhang befindet sich die Datei DBTools.jar, die den Programmcode enthält. Abbildung 38 zeigt die schematische Darstellung der Java-Klassen in UML (http://www.uml.org ) und in Tabelle 20 sind alle Hauptmethoden kurz beschrieben.
Es gibt neun Klassen, die jeweils für spezifische Aufgaben konzipiert sind. Die Objekte der Klasse „Feature“ enthalten alle notwendigen Informationen zu einem feature, wie u. a. den locus tag, Start- und Stoppposition und ggf. die Übersetzung in Aminosäuren. Da alle kodierenden Eigenschaften der DNA-Sequenz, die mit Start- und Stoppposition angegeben werden können, als feature betrachtet werden, sind auch RNAs oder Operons features. Feature-Objekte werden von der Klasse
„EMBLParser“ erzeugt. Die Klasse „EMBLParser“ enthält die Methoden, die zum Einlesen einer EMBL-Datei und zum Erstellen eines Feature-Objektes notwendig sind. Außerdem gibt es die Klassen „Experiment“, „ExperimentalData“ und
„FastaResult“, die ebenfalls Methoden zum Einlesen und Filtern der für die jewei-ligen Objekte notwendigen Daten (Kapitel 5.2) breitstellen.
Die zentrale Klasse, die das Speichern von Daten in das Datenbanksystem über einen jdbc:postgresql-Treiber (http://jdbc.postgresql.org) realisiert, ist der
„DBconnector“. Für jede der acht Tabellen gibt es in der „DBconnector“-Klasse eine eigene Methode zur Datenspeicherung. Die Methoden insertAnnotation(), insertOrganism(), insertSequence() und insertFeature() werden mit einem Feature-Objekt aufgerufen.
Die insert-Methoden insertExperiment(), insertExperimentalData() und insert FastaResult() benötigen jeweils spezifische Objekte (Experiment, Experimental Data und FastaResult) mit denen sie aufgerufen werden können.
Abbildung 38: UML-Diagramm der entwickelten Java Methoden zum Zugriff auf die Datenbank
Mit der Klasse „Clustering“ werden Methoden bereitgestellt, die direkt mit den features auf der DNA-Sequenz arbeiten. Die Methode calculate_close_ORFs() berechnet für einen Organismus und einen vorgegebenen maximalen Abstands-wert der Gene Operone. Dies stellt eine rein sequenzbasierte, einfache Operonvorhersage dar. Dabei werden diejenigen benachbarten Gene eines Stran-ges als Operon bezeichnet, die eine geringere Distanz, als den maximalen Ab-standswert zueinander haben.
Tabelle 20: Kurzbeschreibung aller in einer Klasse implementierten Methoden
Klasse Methodenname Kurzbeschreibung
Clustering
close_orfs() Prüft, ob zwei ORFs auf dem gleichen Strang nah beieinander sind
divergent_orfs() Prüft, ob zwei ORFs auf unterschiedlichen Strängen nah beieinander sind
calculate_close_orfs() Berechnet alle benachbarten, co-linearen ORFs und speichert sie als Feature Operon in der DB ab
calculate_divergent_orfs() Berechnet alle benachbarten divergenten ORFs und gibt sie in einer Datei aus calculate_Pch() Berechnet Paare von nah benachbarten
ORFs in verschiedenen Organismen und gibt sie in einer Datei aus
DBconnector
insertOrganism() Speichert einen Organismus in der DB insertSequence() Speichert eine Sequenz in der DB insertAnnotation() Speichert eine Annotation in der DB insertFeature() Speichert ein Feature in der DB
insertExperimentalData() Speichert experimentelle Werte in der DB insertExperiment() Speichert Informationen zu einem
Experi-ment in der DB
insertSim() Speichert Informationen zu einer Homolo-gie in der DB
insertFeatSimAssign() Legt die Verknüpfung zwischen zwei Fea-tures und der Homologie an
DBquestioner
getFeatPos() Liefert ein Java-Objekt mit allen feature-Positionen eines Organismus
getSequenceIndex() Liefert für einen Organismus die zugehörige SequenzID
getLastIndex() Liefert den letzten vergebenen Index für eine Tabelle
getFeatureIndex() Liefert für einen locustag die FeatureID getProteinFastaOneOrg() Schreibt eine multi-Fasta-Datei mit den
Proteinsequenzen für alle CDS eines Orga-nismus
getProteinFastaAllOrgs() Schreibt eine multi-Fasta-Datei mit den Proteinsequenzen für alle CDS in der DB getNucleotideFastaOneOrg() Schreibt eine multi Fasta-Datei mit den
Nukleotidsequenzen für alle CDS eines Organismus
Klasse Methodenname Kurzbeschreibung
DBquestioner
getNucleotideSequence() Liefert einen String mit einer
Nukleotidsequenz eines Organismus von frei wählbaren Positionen
getGFF() Schreibt eine GFF-Datei mit allen regulier-ten Genen über einem angegeben Schwell-wert
getOperonGFF() Schreibt eine GFF-Datei mit allen Operons (Artemis Tag: operon)
getAllGFF() Schreibt eine GFF-Datei mit allen regulier-ten Genen (Artemis Tag: high, low, undef) format() Formatiert eine Fasta-Datei, so dass genau
60 Zeichen in einer Zeile sind
getHomologsForFeature() Liefert ein Objekt, dass die Homologen features für ein feature enthält
EMBLParser
parseEMBLonce() Liest eine EMBL-Datei und speichert alle relevanten Informationen in der DB oder schreibt sie als Dateien
Experiment
extractCDS() Liest alle Informationen für ein Protein-feature und speichert sie in einem Protein- feature-Objekt
extractRNA() Liest alle Informationen für ein RNA-feature und speichert sie in einem RNA- feature-Objekt
parseExperiment() Liest Experimentinformationen ein und speichert sie in der DB
Experimental Data
parseExperimentalData() Liest Werte eines microarray-Experimentes ein und speichert sie in der DB
FastaResult parseFastaResult() Liest eine FASTA-Result-Datei ein und speichert die Daten in der DB
Feature Klasse zum Erzeugen von feature-Objekten
Der „DBquestioner“ erlaubt das Auslesen von Daten aus der Datenbank. Neben den Standardabfragen der einzelnen Tabellen, wurden vier Methoden entwickelt, die spezifischere Ausgaben erzeugen. GFF-Dateien sind eine Möglichkeit struktu-riert Positionen einer Nukleotidsequenz abzuspeichern und eignen sich als Einga-bedateien für genomische Visualisierungs-Werkzeuge, wie z. B. Artemis (Rutherford et al., 2000) oder DNAPlotter (Carver et al., 2009). Gene, die in ei-nem Experiment einen gewissen Expressionswert überschreiten werden durch getGFF() als Datei ausgegeben. Mit Hilfe von getAllGFF() wird die GFF-Ausgabedatei „experiment.gff“ erzeugt, die alle Gene mit Expressionswerte über 5 mit „high“, unter 3 mit „low“ und dazwischen mit undefiniert markiert. Die Me-thode getOperonGFF() erstellt aus allen features, die in der Datenbank mit Featuretyp „Operon“ versehen sind die GFF-Datei „operon.gff“ mit der
Markie-rung „operon“. Mit Hilfe von Artemis oder dem DNAPlotter und einer entspre-chend angepassten Options-Datei, die für jede Markierung eine Farbe vergibt, lassen sich die regulierten Gene (Abbildung 47) bzw. Operone (Abbildung 48, 49 ) visuell darstellen (Kapitel 9.1, „experiment.gff“,
„operon.gff“) Dazu werden die GFF-Dateien zur EMBL-Datei des korrespondie-renden Organismus hinzu geladen.