• Keine Ergebnisse gefunden

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.