next up previous contents
Nächste Seite: Konvertierung von CML in Aufwärts: Implementierung Vorherige Seite: Speicherung der Atome zur   Inhalt


Berechnung der Bindungen

Die eigentliche Berechnung der Bindungen wird durch die END-Zeile der PDB-Datei ausgelöst. Mit der Methode makeBonds() wird mit der Berechnung der Bindungen begonnen. Sie liefert einen Vektor zurück, der alle Bindungen als Bond-Objekte enthält. Der Methode wird einen Boolean-Parameter übergeben, der angibt, ob die Flagge -c gesetzt ist oder nicht. Dementsprechend werden dann die Bindungen der Nicht-Standardgruppen berechnet.

Berechnung der Bindungen
public Vector makeBonds(Boolean conect) {
    // Rueckgabevektor, der alle Bindungen enthaelt
    Vector result = new Vector(100, 100);
    // jedes Residue wird getrennt betrachtet
    for (int i = 0; i < size(); i++) {
        // aktuelles Residue
        Residue residue_1 = (Residue) elementAt(i);
        // Falls Flagge -c gesetzt und Residue Standardgruppe
        if (conect.booleanValue() ? 
          ((Atom) residue_1.elementAt(0)).getStandard() : true){	    
            // Berechnung innerhalb des Residue
            Vector bondBox = residue_1.bonds();
            if (!bondBox.isEmpty())
                result.addAll(bondBox);
            // Berechnung der Bindung zum naechsten Residue
            if (i+1 < size()) {
                Residue residue_2 = (Residue) elementAt(i+1);
                if (conect.booleanValue() ?
                  ((Atom) residue_2.elementAt(0)).getStandard()
                  : true) {
                    Bond bond = residue_1.bonds(residue_2);
                    if (! (bond == null))
                        result.add(bond);
                }
            }
        }
    }
    return result;
}

Die Methode makeBonds() ist im Quellcode 6.9 abgebildet. Die Bindungen werden für jeden einzelnen Aminosäurerest gesondert berechnet. Realisiert wird dies mit der Methode bonds(). Die Berechnung findet aber nicht statt, wenn die Flagge -c beim Aufruf gesetzt wurde und es sich bei der Aminosäurerest um eine Nicht-Standardgruppe handelt. Nachdem die Bindungen innerhalb des Restes berechnet wurden, werden die Bindungen zum darauffolgendem Aminosäurerest mit der Methode bonds(Residue) berechnet. Dies geschieht bei gesetzter Flagge auch nur, wenn beide Reste aus Standardgruppen bestehen. Andernfalls sind die Bindungen in den CONECT-Zeilen der PDB-Datei angegeben und wurden bereits in den DOM-Tree aufgenommen. Die Methoden bonds() bzw. bonds(Residue) sind ähnlich wie die zuvor erläuterte Methode aufgebaut. Bei jedem Atom-Element wird anhand der übrigen Elemente überprüft, ob die beiden Atome eine Bindung eingehen. Dies wird mit der Methode bondguess() der Atom-Klasse realisiert. Gehen zwei Atome eine Bindung ein, wird ein entsprechendes Bond-Objekt erzeugt. Dieses wird dann im Rückgabevektor abgelegt oder direkt zurückgegeben.


next up previous contents
Nächste Seite: Konvertierung von CML in Aufwärts: Implementierung Vorherige Seite: Speicherung der Atome zur   Inhalt
Oliver Krone 2003-04-28