/*------------------------------------------------------------- Copyright (C) 2000 Alessandro Macri. All Rights Reserved. Permission to use, copy, modify, and distribute this software and its documentation for NON-COMMERCIAL purposes and without fee is hereby granted provided that this copyright notice appears in all copies. THE AUTHOR AND PUBLISHER MAKE NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. THE AUTHORS AND PUBLISHER SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. -------------------------------------------------------------*/ import java.io.*; public class Aminos { private int size; private String[] name; private double[][] matrix; private String[] dns; // Konstruktor: // Tabelle der Aminosäuren wird aus eingelesen. // Zu Beginn enthält die Datei das Schlüsselwort "DNS"gefolgt von den Namen // der DNS. Der Beginn der Aminosäurendaten wird durch das Schlüsselwort // "MATRIX" gekennzeichnet. // Der Rest der Dateie nthält in der ersten Spalte den Namen der Aminosäure, // in der zweiten bis letzten Spalte dann das obere rechte Dreieck der // Ähnlichkeitsmatrix (einschließlich der Diagonalen). Die Matrix // beschreibt die Ähnlichkeit zweier Aminosäuren, d.h. der Eintrag [i,j] // gibt ein Maß für die Abweichung beim Übergang von Aminosäure i zur // Aminosäure j, z.B. auf Grund eines Fehlers im genetischen Code. // Als Aminosäure Nr. 0 gilt das STOP-Symbol. Dieses erhält für alle Positionen // als Fehler den Mittelwert aller anderen Matrixeinträge Aminos (File datei) { int i,j,pos1,pos2,zähler=0,anzDNS=0,länge; double temp; String zeile; BufferedReader ein; // Nachzählen, wieviele Zeilen in der Datei verzeichnet sind ... try { ein=new BufferedReader(new FileReader(datei)); while((zeile=ein.readLine())!=null) { zähler++; if(zeile.equals("MATRIX")) { anzDNS=zähler-2; zähler=0; } } ein.close(); if(anzDNS==0) fehler("Fehler: Namen der DNS fehlen in der Aminosäurendatei"); // ... Alles initialisieren ... this.size=zähler+1; this.name=new String[zähler+1]; this.dns=new String[anzDNS]; this.matrix=new double[zähler+1][zähler+1]; ein=new BufferedReader(new FileReader(datei)); // ... zu Beginn noch die Namen der DNS einlesen ... if(!(zeile=ein.readLine()).equals("DNS")) fehler("Fehler: Schlüsselwort DNS fehlt in der Aminosäurendatei"); for(i=0; i