Seite 2 von 3

Verfasst: 06.12.2005 20:47
von Zaphod
da die kodierung von aminosäuren in dna ja redundant ist, würde ich die aminosäuren eher in einem integer array speichern, deren werte symbolisch für die aminosäuren stehen. damit ist es dann später einfacher alle permutationen der dna sequenz aufzubauen, die eine bestimmte aminosäure-sequenz kodieren, weil man dann später nichtmehr mit stringvergleichen hantieren muß.

Verfasst: 06.12.2005 22:03
von ArminF
Zaphod hat geschrieben:da die kodierung von aminosäuren in dna ja redundant ist, würde ich die aminosäuren eher in einem integer array speichern, deren werte symbolisch für die aminosäuren stehen. damit ist es dann später einfacher alle permutationen der dna sequenz aufzubauen, die eine bestimmte aminosäure-sequenz kodieren, weil man dann später nichtmehr mit stringvergleichen hantieren muß.

sach mal bissu biologe oder doch eher informatiker? :D

also wenn ich das jetzt richtig verstanden habe meinst du man sollte sozusagen alle möglichen DNA-Sequenzen, die für die 8-stellige AS-Sequenz codieren können erstellen und dann mit diesen Versionen nach dem Treffer suchen?
Na ja, ich muß mich jetzt erst mal dran machen, in PureBasic einzusteigen und mir selbiges beizubringen. Um die Feinheiten kümmere ich mich anschließend... :lol:

Verfasst: 06.12.2005 22:13
von Zaphod
informatiker, aber bei der dna realisierung macht es ja keinen unterschied ;)

war mal sowas wie ein hobby von mir, habe nur leider sehr viel vergessen. sehr schade, wo es doch da grade wieder so richtig interessant wird durch die debatte, welche bedeutung die bisher vernachlässigten intronen in der dna haben.

Verfasst: 08.12.2005 13:45
von ArminF
Mahlzeit! :D

...das Programm macht gute Fortschritte. Bin auf einem guten Weg.

Jetzt stellt sich bei mir die Frage, wie ich folgendes Problem lösen kann:

Gegeben ist:
1. Definierte Anzahl von Zeichen
(hier z.b. a1, a2, a3, a4 - b1 - c1, c2, c3 - d1, d2, d3, d4, d5)
2. Die Zeichen stehen in einer definierten Reihenfolge hintereinander
(a b c d)

Gesucht wird:
NICHT die Anzahl aller möglichen Kombinationen (die beträgt ja 4*1*3*5=60), sondern der Text aller Kombinationen
(z.b. "a1 b1 c1 d1", "a1 b1 c1 d2", "a1 b1 c1 d3" etc. bis zu "a4 b1 c3 d5")

Wie kann ich mein Programm dazu bringen, daß es mir alle 60 möglichenStrings erstellt und unter verschiedenen (automatisch fortlaufenden) namen als Variabel speichert?

Mittägliche Grüße

Armin

Verfasst: 08.12.2005 14:18
von Kiffi
Hai ArminF,

nachfolgend ein Code, der Dein Problem lösen könnte (wenn ich es richtig
verstanden habe). Kann man vielleicht auch anders (kürzer und schneller)
lösen. Mir ging es aber darum, für's erste einen Anfänger-kompatiblen
Code zu schreiben.

Code: Alles auswählen

a_untergrenze = 1
a_obergrenze  = 4

b_untergrenze = 1
b_obergrenze  = 1

c_untergrenze = 1
c_obergrenze  = 3

d_untergrenze = 1
d_obergrenze  = 5

Dim a$(a_obergrenze)
Dim b$(b_obergrenze)
Dim c$(c_obergrenze)
Dim d$(d_obergrenze)

For lCounter = a_untergrenze To a_obergrenze
  a$(lCounter)="a" + Str(lCounter)
Next 

For lCounter = b_untergrenze To b_obergrenze
  b$(lCounter)="b" + Str(lCounter)
Next 

For lCounter = c_untergrenze To c_obergrenze
  c$(lCounter)="c" + Str(lCounter)
Next 

For lCounter = d_untergrenze To d_obergrenze
  d$(lCounter)="d" + Str(lCounter)
Next 

lCounter = 0

For lCounter_A = a_untergrenze To a_obergrenze
  For lCounter_B = b_untergrenze To b_obergrenze
    For lCounter_C = c_untergrenze To c_obergrenze
      For lCounter_D = d_untergrenze To d_obergrenze
        lCounter + 1
        Debug Str(lCounter) + ": " + a$(lCounter_A) + " " + b$(lCounter_B) + " " + c$(lCounter_C) + " " + d$(lCounter_D)
      Next 
    Next
  Next
Next
Grüße ... Kiffi

Verfasst: 08.12.2005 14:23
von ArminF
dankeschön!

dass die sechzig verschiedenen ergebnisse als Addition der Strings ins Programm einfließen, dürfte ich noch erledigt bekommen. sieht aber sehr schön aus *freu*

Verfasst: 08.12.2005 14:49
von ArminF
Kiffi hat geschrieben:Hai ArminF,

nachfolgend ein Code, der Dein Problem lösen könnte (wenn ich es richtig
verstanden habe). Kann man vielleicht auch anders (kürzer und schneller)
lösen. Mir ging es aber darum, für's erste einen Anfänger-kompatiblen
Code zu schreiben.



Grüße ... Kiffi

hab mir das ganze gerade mal durch den kopf gehen lassen. hatte allerdings ein etwas unglückliches beispiel gewählt mit a1 bis a4 etc. - a1 sollte z.B. für einen String namens "CCT" stehen, a2 für "CCG", a3 für "CCA" und a4 für "CCC". Daher ist das mit der Ober-Untergrenzen-Geschichte eher gestorben für mich, oder? :(

Verfasst: 08.12.2005 15:29
von Kiffi
> - a1 sollte z.B. für einen String namens "CCT" stehen, a2 für "CCG", a3 für
> "CCA" und a4 für "CCC".

ReplaceString() ist Dein Freund.

einfach folgende Zeile:

Code: Alles auswählen

myString$ = Str(lCounter) + ": " + a$(lCounter_A) + " " + b$(lCounter_B) + " " + c$(lCounter_C) + " " + d$(lCounter_D)
durch folgendes ersetzen:

Code: Alles auswählen

        myString$ = Str(lCounter) + ": " + a$(lCounter_A) + " " + b$(lCounter_B) + " " + c$(lCounter_C) + " " + d$(lCounter_D)
        myString$ = ReplaceString(myString$, "a1", "CCT")
        myString$ = ReplaceString(myString$, "a2", "CCG")
        ; und so weiter [...]
        Debug myString$
Grüße ... Kiffi

Verfasst: 08.12.2005 17:10
von ArminF
*pling* solangsam ist der groschen gefallen bei mir...

wenn ich jetzt noch herausbekommen, wie ich dieses komplett-durchlaufen aller möglicher kombinationen auf 8 Aminosäuren beschränke, dann hab ich es geschafft und kann hier demnächst ein programm präsentieren...

Verfasst: 13.12.2005 11:37
von ArminF
Programm ist fertig. Dummerweise nur zu groß für die Demoversion :lol:

Na ja egal ich guck mal ob ich das noch hier hereingestellt bekomme, und dann kann man sich das mal angucken ob das so funktionieren sollte.

Werd den selben Spaß wahrscheinlich mit TurboPascal ausprobieren, da hab ich ne Vollversion von...