
Gap.pl -repair
--------------

Es passiert hin und wieder, dass eine GAP4-Datenbank fehlerhaft wird. Eine
Meldung wie "Database is not consistent. 126 problems detected." lst
Frustrationen aus, besonders weil meist keine unmittelbare Ursache fr das
Auftreten der Fehler zu erkennen ist. Die Datenstrukturen der GAP4-Datenbank
weisen in solchen Fllen unsinnige oder fehlende Eintrge auf, was fr den
Anwender nicht ohne Weiteres erkennbar oder einsehbar ist.

  [Fr den interessierten Leser:]
  GAP4-Datenbankfehler sind in der Regel schwierig zu verstehen, weil sie
  sehr eng mit der inneren Funktionsweise der GAP4-Datenbank zusammenhngen.
  Darum ist es ntzlich, die Organisationsweise einer GAP4-Datenbank zu
  kennen. Einige Kernpunkte sind hier aufgezhlt.
  - alle Objekte einer GAP4-Datenbank - das sind Contigs, Reads, Annotationen,
    Templates - werden durch einen Datensatz (= "Datenknoten") dargestellt.
    Ein Datenknoten ist ein Bndel mehrerer Wertefelder, mit dem alle Eigen-
    schaften des Contigs, des Reads etc. beschrieben werden.
  - alle Datenknoten sind in Ketten angeordnet. Beispielsweise besitzt jeder
    Read-Datenknoten einen Verweis auf die erste Annotation dieses Reads. Die
    erste Annotation verweist auf die zweite Annotation usw. Ein NULL-Verweis
    beendet die Kette. Die gleiche kettenfrmige Anordnung gilt fr die Reads
    eines Contigs: Ein Contig-Datenknoten verweist auf den ersten Read des
    Contigs. Der erste Read verweist auf den darauffolgenden zweiten Read usw.
  - Datenknoten werden niemals aus der Datenbank gelscht, auch wenn die
    Objekte nicht mehr existieren. Eine gelschte Annotation wird in die
    Kette von inaktiven Annotationen eingefgt. Solche Aktionen sind relativ
    aufwndig fr das GAP4-Programm: Die Datenkette erhlt zunchst eine
    "Umgehungsstrae", die den Knoten, der entfernt werden soll, von der
    Datenkette isoliert. Der freie Knoten wird anschlieend durch Umlenken
    der Verweise in die Kette inaktiver Annotations-Datenknoten eingefgt.
    Wenn bei dieser Aktion ein Abbruch oder Fehler auftritt, ist die GAP4-
    Datenbank meist inkonsistent. Das Lschen einer Annotation ist eine
    hufige Ursache von Datenbankinkonsistenzen.
  Hlt man sich diese Datenstrukturen vor Augen, lassen sich Fehlerbeschrei-
  bungen wie "Endlosschleife in einer Verweiskette", "verlorener Daten-
  knoten" besser verstehen.

Eine Reparatur der Fehler ist immer angeraten, weil sie oftmals Folgefehler
nach sich ziehen. Oft knnen bestimmte GAP4-Funktionen nicht mehr ausgefhrt
werden, wenn die Datenbank Fehler aufweist. Eine Fehlerkorrektur von nicht-
durchgngigen Contigs ist manchmal im Contig-Editor mglich, indem man die
Reads, die die Lcke flankieren, durch Aufdecken von "hidden data" verlngert.
Fr die Einsicht und Reparatur interner GAP4-Datenbankfehler wird vom Staden-
Package die Dialogfunktion "doctor database" zur Verfgung gestellt. Sie wird
allerdings nur Anwendern empfohlen, die sehr genau wissen, was sie tun. Es
besteht die groe Gefahr, dass nach einer Manipulation ber "doctor database"
zustzliche, mglicherweise gravierendere, Fehler auftreten.

Die Programmfunktion `Gap.pl -repair soll helfen, hufig auftretende GAP4-
Datenbankfehler zu beheben, ohne dass ein tieferes technisches Verstndnis
notwendig ist. Die Funktion analysiert die Datenbank auf Konsistenz und
leitet, falls Inkonsistenzen gefunden werden, eine Fehlerkorrektur ein.
Die Fehlertypen, die durch das Programm entdeckt und behoben werden knnen,
sind im Einzelnen:
- Annotationen mit Positionen auerhalb des Read-/Contigbereichs
- Annotationen, die keiner Datenkette angehren ("annotation neither used nor
  free")
- Doppelverweise auf Annotationen (speziell Referenz-Loops)
- Annotationen, die nicht in der Reihenfolge ihrer Position sortiert sind
  ("annotation leftwards of ...")

COMMAND LINE SYNTAX
 Gap.pl -repair <gapdb.v>

arguments:
 gapdb.v       GAP4 database: (folder/)database.version

