Seite 1 von 3

kann man das mit purebasic?

Verfasst: 06.12.2005 14:16
von ArminF
Ich (Biologe von Beruf) versuche ein Programm zu erstellen, das 3 Dinge kann:

1. eine Abfolge von Zeichen, die aus 20 verschiedenen Buchstaben bestehen kann und ca. 8 Stellen lang ist, in eine Abfolge von Zeichen, die aus 4 verschiedenen Buchstaben bestehen kann umzuwandeln. Jeder der 20 verschiedenen Buchstaben definiert dabei einen bzw. mehrere dreistelligen Codes, die aus den 4 verschiedenen Buchstaben aufgebaut sind. Macht also aus einer 8-stelligen Buchstabenabfolge mehrere 24-stellige Buchstabenabfolgen.

2. Diese 24-stelligen Buchstabenabfolgen sollen in einer langen Sequenz, die wiederum aus 4 verschiedenen Buchstaben aufgebaut sind, gesucht werden.

3. Bei Übereinstimmung der 24-stelligen Buchstabenabfolge soll vom Beginn derselben eine definierte Anzahl von Buchstaben der langen Sequenz markiert werden.

Oder mit was-vorne-rein-soll-und-hinter-raus-soll-Worten gesprochen:

Eingabe: 1. eine lange Buchstabenabfolge, die aus 4 verschiedenen Zeichen besteht; 2. eine lange Buchstabenabfolge, die aus 20 verschiedenen Zeichen besteht, von welcher die ersten acht Buchstaben „übersetzt“ werden sollen und zum Suchen in der langen Buchstabenabfolge benutzt werden sollen
Ergebnis: Die Abfolge der Buchstaben, die aus 4 verschiedenen Zeichen aufgebaut ist und durch die Buchstabensequenz, die aus 20 Zeichen aufgebaut ist, in ihrer Länge (und Sequenz) definiert ist.

Ist so etwas möglich?? Dachte ich erkundige mich mal bevor ich mit PureBasic herumbastle und das gar nicht gehen kann.

PS. Hab versucht das alles ohne biologische Fachausdrücke erklären. Für die es interessiert oder eine Ahnung davon haben: die 20 Buchstaben sind die einzelnen Aminosäuren, die vier Buchstaben die Nucleotide der DNA. Aber wenn ich das im Text eingebaut hätte, wäre das sehr unverständlich :shock: geworden, oder?!

PS2. ok ich gestehe ich bin was basic und ähnliches angeht etwas angestaubt. Hab mich vor mehr als 10 jahren das letzte mal damit beschäftigt. Aber ein bißchen was ist schon noch hängen geblieben...

lieben gruß

armin

Verfasst: 06.12.2005 14:36
von freedimension
Klar ist das möglich, solange wie du die Algorithmen dafür hast (nach dem Beschriebenen ist das aber sehr trivial). Alles andere ist ja reine Ein- und Ausgabe von Daten was wahrlich keine besonderen Ansprüche an die Technik stellt ;)

Re: kann man das mit purebasic?

Verfasst: 06.12.2005 14:52
von permafrust
Wenn das wirklich so simpel ist, wie es klingt, dann ist eine Sprache
wie PureBasic sogar außerordentlich gut geeignet. Sie ist leicht
erlernbar und es können sehr schnell brauchbare Ergebnisse
erreicht werden.

Um welche Datenmengen geht es denn hier? Wenn ich mir DNA-Analysen
so vorstelle, dürfte da einiges zusammen kommen und die Algorithmen
sollten dann auf Geschwindigkeit optimiert werden.

Falls du Hilfe benötigst - einfach hier melden! :)

Re: kann man das mit purebasic?

Verfasst: 06.12.2005 15:08
von ArminF
permafrust hat geschrieben:Wenn das wirklich so simpel ist, wie es klingt, dann ist eine Sprache
wie PureBasic sogar außerordentlich gut geeignet. Sie ist leicht
erlernbar und es können sehr schnell brauchbare Ergebnisse
erreicht werden.

Um welche Datenmengen geht es denn hier? Wenn ich mir DNA-Analysen
so vorstelle, dürfte da einiges zusammen kommen und die Algorithmen
sollten dann auf Geschwindigkeit optimiert werden.

Falls du Hilfe benötigst - einfach hier melden! :)
Als Datenmengen denke ich an einen Bereich von ca. 10.000 Nucleotide (also Zeichenfolge mit 4 verschiedenen Buchstaben), in dem die kurze Sequenz gesucht werden soll...

Aber das sind ja schon mal ermutigende Antworten eurerseits. Werde mich mal etwas weiter in das Programm eingraben. Auf das Hilfsangebot komme ich natürlich gerne zurück, danke!

Verfasst: 06.12.2005 16:30
von Kaeru Gaman
die obergrenze für eine stringlänge ist 65535 zeichen (64KB)

das sollte also reichen für deine problemstellung.

(für das komplette menschliche genom wirds eng, da müßte man das mit Memory lösen.)

schau mal in der PB-Hilfe unter strings, u.a. FindString()

Verfasst: 06.12.2005 16:33
von ArminF
nene, das menschliche genom soll nicht durchsucht werden, das wäre wirklich ein wenig zu groß :))

...and by the way: zum durchsuchen des kompletten genoms gibts ja programme im internet.

Verfasst: 06.12.2005 16:50
von Zaphod
generell sollte das sich mit jeder existierenden programmiersprache umsetzen lassen, sogar mit turingsimulatoren.

Verfasst: 06.12.2005 17:16
von permafrust
>> generell sollte das sich mit jeder existierenden programmiersprache
>> umsetzen lassen, sogar mit turingsimulatoren.

... oder mit LISP ... oder mit 3AA ... :o

Mir wird schon ganz blümerant... :freak:

Verfasst: 06.12.2005 17:33
von ArminF
sodele. unabhängig davon mit welcher programmiersprache ich das jetzt machen werde hab ich mir mal überlegt wie ich vorgehen müßte:

(zur Erklärung: AS entspricht Aminosäure, DNA dürfte bekannt sein)

1. Eingabe der vorgegebenen Daten (AS-Sequenz mit 20 verschiedenen Buchstaben, lange DNA-Sequenz mit 4 verschiedenen Buchstaben)
2. das erste Zeichen der AS-Sequenz in DNA-Sequenz "umschreiben"
3. diese (dreistellige) DNA-Sequenz suchen.
4. Bei Treffer: zweites Zeichen der AS-Sequenz übersetzen (mehrere Möglichkeiten). An Stelle NACH der Übereinstimmung von 3. suchen
entweder kein Treffer: 2 Möglichkeit überprüfen (3., 4., 5. und 6. Möglichkeit) oder Treffer
5. Bei allen Versuchen bei 4. kein Treffer: wieder zurück zu 3., nächsten Treffer für dreistellige DNA-Sequenz suchen. Bei erfolgreicher Suche bei 4. die Befehle von oben wiederholen (übersetzen, suchen NACH der Übereinstimmung, alle Varianten prüfen)
6. Bei exakter Übereinstimmung der kurzen DNA-Sequenzkette anhand der AS-Sequenz berechnen, wie lang die DNA-Sequenz sein sollte (3x Betrag AS + 3). Die DNA-Sequenz der ensprechenden Länge als Ergebnis ausgeben, zusätzlich dazu die Länge dieser Sequenz berechnen.

(ich sag doch ich hab noch n bißchen Ahnung von dem Scheiß *sorry*, aber das Übersetzen in die Programmiersprache wird das wahre Abenteuer für mich) :D

Verfasst: 06.12.2005 17:41
von permafrust
Jo, so kannst du erstmal anfangen. Die Datenmengen sind eher im
Bereich "Peanuts" anzusiedeln.

Fang erstmal so an und probiere rum, bis du etwas hast, was funktioniert.
Falls erforderlich oder einfach nur so zum Spaß, kannst du deine
Algorithmen dann verbessern, z. Bsp. mit der Boyer-Moore Textsuche:

http://de.wikipedia.org/wiki/String-Mat ... lgorithmus

Damit kann die Anzahl der benötigten Vergleiche signifikant reduziert
werden; dein Programm läuft also wesentlich schneller.