Hallo Leute,
ich habe neulich zufällig einen Wettbewerb gefunden, in dem man ein Programm entwerfen soll, welches DNA-Sequenzen (mit Buchstaben-Blöcken als Gene) analysieren können soll.
Der Wettbewerb ist schon einige Zeit abgeschlossen, doch als Übung ist das sicherlich nicht ganz schlecht.
Ich brauche allerdings etwas Hilfestellung bei der Herangehnsweise. Erstmal der Link zu dem Wettbewerb.
Ich habe bereits einige Funktionen zum Einlesen der Sequenzen geschrieben und Aufgabe 1 gelöst (Buchstaben ermitteln). Aufgabe 2 (Häufigkeit von einem Baustein zählen) habe ich zwar noch nicht implementiert, allerdings denke ich nicht, dass es ein großes Problem ist, da man lediglich die Sequenz in Teilsequenzen mit Trennzeichen ("Baustein") zerlegen muss und anschließend durchzählen. Ggf. kann man auch direkt die Häufigkeit des Bausteins zählen, wobei die Unterteilung in kleinere Teilsequenzen vermutkich sinnvoll ist, um später weitere Bausteine zu ermitteln.
Nun kommt meine eigentliche Schwierigkeit: Für alle folgenden Aufgaben muss ich vorher bestimmen, wie ein Baustein aussieht und dann diese ermitteln.
Ich habe zwar die Vermutung, dass ein Baustein aus 2-6 Zeichen besteht, allerdings weiß ich das nicht genau und es könnte in einer Sequenz auch Bausteine mit größerer Zeichenanzahl geben. Zudem weiß ich einfach nicht, wie ich da herangehen soll, um die Bausteine zu ermitteln. Ich KÖNNTE einfach von z.B. 6 Zeichen ausgehen und dann alle Buchstabenkombinationen durchtesten, ob diese in dem String vorkommen und immer weiter durchprobieren, bis kein Baustein mehr unidentifiziert ist, allerdings ist das so rechenaufwendig, dass ich eine effektivere Methode suche. Wie kann ich einen unbekannten Baustein bestimmen?
Ich benötige nur eine allgemeine Herangehnsweise, da ich dann den Code (vorerst) selber entwerfen möchte. Ich schreibe das Programm übrigens in Java - Java kenne ich von den nicht-webbasierten-Script-/Programmier-Sprachen am besten.
Ich würde mich über eure Hilfe natürlich sehr freuen und sobald ich das Programm fertig habe, auf euren Wunsch hin, hier veröffentlichen.
LG
ich habe neulich zufällig einen Wettbewerb gefunden, in dem man ein Programm entwerfen soll, welches DNA-Sequenzen (mit Buchstaben-Blöcken als Gene) analysieren können soll.
Der Wettbewerb ist schon einige Zeit abgeschlossen, doch als Übung ist das sicherlich nicht ganz schlecht.
Ich brauche allerdings etwas Hilfestellung bei der Herangehnsweise. Erstmal der Link zu dem Wettbewerb.
Ich habe bereits einige Funktionen zum Einlesen der Sequenzen geschrieben und Aufgabe 1 gelöst (Buchstaben ermitteln). Aufgabe 2 (Häufigkeit von einem Baustein zählen) habe ich zwar noch nicht implementiert, allerdings denke ich nicht, dass es ein großes Problem ist, da man lediglich die Sequenz in Teilsequenzen mit Trennzeichen ("Baustein") zerlegen muss und anschließend durchzählen. Ggf. kann man auch direkt die Häufigkeit des Bausteins zählen, wobei die Unterteilung in kleinere Teilsequenzen vermutkich sinnvoll ist, um später weitere Bausteine zu ermitteln.
Nun kommt meine eigentliche Schwierigkeit: Für alle folgenden Aufgaben muss ich vorher bestimmen, wie ein Baustein aussieht und dann diese ermitteln.
Ich habe zwar die Vermutung, dass ein Baustein aus 2-6 Zeichen besteht, allerdings weiß ich das nicht genau und es könnte in einer Sequenz auch Bausteine mit größerer Zeichenanzahl geben. Zudem weiß ich einfach nicht, wie ich da herangehen soll, um die Bausteine zu ermitteln. Ich KÖNNTE einfach von z.B. 6 Zeichen ausgehen und dann alle Buchstabenkombinationen durchtesten, ob diese in dem String vorkommen und immer weiter durchprobieren, bis kein Baustein mehr unidentifiziert ist, allerdings ist das so rechenaufwendig, dass ich eine effektivere Methode suche. Wie kann ich einen unbekannten Baustein bestimmen?
Ich benötige nur eine allgemeine Herangehnsweise, da ich dann den Code (vorerst) selber entwerfen möchte. Ich schreibe das Programm übrigens in Java - Java kenne ich von den nicht-webbasierten-Script-/Programmier-Sprachen am besten.
Ich würde mich über eure Hilfe natürlich sehr freuen und sobald ich das Programm fertig habe, auf euren Wunsch hin, hier veröffentlichen.
LG