kann man das mit purebasic?

Anfängerfragen zum Programmieren mit PureBasic.
ArminF
Beiträge: 46
Registriert: 06.12.2005 13:47
Wohnort: Glottertal

kann man das mit purebasic?

Beitrag 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
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag 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 ;)
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
permafrust
Beiträge: 23
Registriert: 11.11.2005 14:19

Re: kann man das mit purebasic?

Beitrag 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! :)
ArminF
Beiträge: 46
Registriert: 06.12.2005 13:47
Wohnort: Glottertal

Re: kann man das mit purebasic?

Beitrag 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!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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()
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
ArminF
Beiträge: 46
Registriert: 06.12.2005 13:47
Wohnort: Glottertal

Beitrag 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.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

generell sollte das sich mit jeder existierenden programmiersprache umsetzen lassen, sogar mit turingsimulatoren.
Benutzeravatar
permafrust
Beiträge: 23
Registriert: 11.11.2005 14:19

Beitrag 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:
ArminF
Beiträge: 46
Registriert: 06.12.2005 13:47
Wohnort: Glottertal

Beitrag 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
Benutzeravatar
permafrust
Beiträge: 23
Registriert: 11.11.2005 14:19

Beitrag 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.
Antworten