Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7779[/thread]

needelman wunsch/smith waterman

Leser: 1


<< |< 1 2 3 4 >| >> 35 Einträge, 4 Seiten
Gast Gast
 2006-03-09 15:01
#63683 #63683
hi,
vielleicht kann mir ja hier irgendwer weiterhelfen. mein kumpel und ich wir beide haben uns schon stundenlang denn kopf zerbrochen warum es nicht funktioniert bzw. wie man es anders lösen könnte.

also folgendes problem:
wir sollen für das smith waterman und needleman wunsch verfahren die optimalen lokalen bzw. globalen alignment bestimmen.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
print "Zugrunde liegende Aehnlichkeitsmatrix"."\n\n";
print " |A C G T | -\n";
print "A|2 -1 -1 -1 |-1\n";
print "C|-1 2 -1 -1 |-1\n";
print "G|-1 -1 2 -1 |-1\n";
print "T|-1 -1 -1 2 |-1\n";
print "-|-1 -1 -1 -1|-1\n";

@xSeq=("A","A","G","G","C","C","T","T");
@ySeq=("A","C","G","T","A","C","T","T");

$LM[0][0]=0;
$x=@xSeq;
$y=@ySeq;


print "\n\n\n";
print " ";
foreach $kiwi(@xSeq)
{
print "$kiwi";
}
print "\n"." ".$LM[0][0];

#### x-Achse mit 0 füllen ####
for ($i=1;$i<=$x;$i++)
{
$LM[$i][0]=0;
}

#### y-Achse mit 0 füllen ####
for ($j=1;$j<=$y;$j++)
{
$LM[0][$j]=0;
print $LM[0][$j];
}


print "\n";

for ($i=1;$i<=$x;$i++)
{
print $ySeq[$i-1]."0";
#### wert ermitteln ####
for ($j=1;$j<=$y;$j++)
{
$a=$j-1;
$s=$i-1;
if ($xSeq[$a] eq $ySeq[$s])
{
$tauscher[0]=$LM[$i-1][$j-1]+2;
}
else
{
$tauscher[0]=$LM[$i-1][$j-1]-1;
}
$tauscher[1]=$LM[$i-1][$j]-1;
$tauscher[2]=$LM[$i][$j-1]-1;
$tauscher[3]=-1000;

#### höchsten wert ermitteln ####
for ($v=0;$v<3;$v++)
{
if ($tauscher[$v] > $tauscher[$v+1])
{
$tauscher[$v+1]=$tauscher[$v]
}
else{}
}

#### wert einsetzen ####
if ($tauscher[$v] > 0)
{
$LM[$i][$j]=$tauscher[$v];
}
else
{
$LM[$i][$j]=0
}

print $LM[$i][$j];
}
print "\n";
}
print "\n"."\n"."\n";

#### höchster Wert ####
$Hwert[0]=0;
$e=1;
for ($i=0;$i<=$x;$i++)
{
for ($j=0;$j<=$y;$j++)
{
@Hwert[$e]=$LM[$i][$j];
$e=$e+1;
}
}

for ($v=0;$v<$#Hwert;$v++)
{
if ($Hwert[$v] >= $Hwert[$v+1])
{
$Hwert[$v+1]=$Hwert[$v]
}
else{}
}
$Hochw=$Hwert[$#Hwert];
print $Hwert[$#Hwert];

#### Optimale align ####
for ($i=1;$i<=$x;$i++)
{
$z=0;
for ($j=1;$j<=$y;$j++)
{
if ($Hochw eq $LM[$i][$j])
{
$Ugabe=$Hochw;
$q=$j;
$w=$i;
for ($k=0;$k<=10000;$k++)
{

$abbruch=0;


if ($Ugabe eq $LM[$w-1][$q]-1)

{$qwe=$LM[$w-1][$q]-1;

$align[$z]="-$ySeq[$w-1]|"."1";

$Ugabe=$LM[$w-1][$q];

$z=$z+1;

$w=$w-1;

if ($w eq 0){$k=10000;}else{}

}

else

{

$abbruch=1;

if (($Ugabe eq $LM[$w-1][$q-1]+2) || ($Ugabe eq $LM[$w-1][$q-1]-1))

{$o=$o+1;

$align[$z]="$xSeq[$q-1]$ySeq[$w-1]|";

$Ugabe=$LM[$w-1][$q-1];

$z=$z+1;

$q=$q-1;

$w=$w-1;

if ($w eq 0){$k=10000;}else{}

if ($q eq 0){$k=10000;}else{}

}else{}

}


if ($Ugabe eq $LM[$w][$q-1]-1)

{

$align[$z]="$xSeq[$q-1]-|"."2";

$Ugabe=$LM[$w][$q-1];

$z=$z+1;

$q=$q-1;

if ($q eq 0){$k=10000;}else{}

}

else

{


if ($abbruch eq 1){}else{

if (($Ugabe eq $LM[$w-1][$q-1]+2) || ($Ugabe eq $LM[$w-1][$q-1]-1))

{$o=$o+1;

$align[$z]="$xSeq[$w-1]$ySeq[$q-1]|";

$Ugabe=$LM[$w-1][$q-1];

$z=$z+1;

$q=$q-1;

$w=$w-1;

if ($w eq 0){$k=10000;}else{}

if ($q eq 0){$k=10000;}else{}

}else{}}


}


}
}
else{}
}
}
renee
 2006-03-09 15:37
#63684 #63684
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was funktioniert nicht?? Fehlermeldungen?? Am besten auch mal Wiki:use strict verwenden. Falls ihr ein fremdes Modul benutzen dürft, ist vielleicht CPAN:Bio::Tools::pSW die richtige Wahl!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
stef23
 2006-03-09 15:56
#63685 #63685
User since
2006-03-09
14 Artikel
BenutzerIn
[default_avatar]
das programm läuft so die matrix wird korrekt aufgebaut und ausgerechnet. das einzige was nicht klappt ist, dass der aligntment teilweise fehlerhaft ausgegeben wird.
lichtkind
 2006-03-09 15:58
#63686 #63686
User since
2004-03-22
5680 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
genau ein paar mehr tips wären hilfreich bei hilfe
und vorweg viele ecken unden kann man hier kürzen zb

print "\n"."\n"."\n"; -> print "\n\n\n";

$z=$z+1; -> $z++;

if ($w eq 0){$k=10000;}else{} -> $k=10000 if $w == 0;

du willst sicherlich numerischen vergleich ausserdem ELSE IST OPTIONAL

for ($i=1;$i<=$x;$i++) -> for my $i (1..$x)

dieses ist auch deswegen besser weil du dasnn saubere scopes der iteratorvariablen hast

if ($abbruch eq 1){}else{ -> unless ($abbruch eq 1){

probier das mal aus das programm wird wesentlich kürzer überschaubarer und fehler kann man dann auch leichter finden
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
lichtkind
 2006-03-09 16:05
#63687 #63687
User since
2004-03-22
5680 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
was meinst du der output sieht doch ok aus?
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
renee
 2006-03-09 16:07
#63688 #63688
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dann zeig mal ein paar Beispiele wie es bei Dir aussieht und wie es aussehen sollte...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
lichtkind
 2006-03-09 16:15
#63689 #63689
User since
2004-03-22
5680 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ich würde eh besser berechnung vom output trennen dann wird vieles einfacher, und noch ein tip. den kopf würd ich so ausgeben:

print <<EOP;
Zugrunde liegende Aehnlichkeitsmatrix

| A C G T | -
A| 2 -1 -1 -1 |-1
C|-1 2 -1 -1 |-1
G|-1 -1 2 -1 |-1
T|-1 -1 -1 2 |-1
-|-1 -1 -1 -1 |-1
EOP

ausserdem kann man werte auch direkt tauschen:

($a,$b) = ($b, $a);

ich mach dir angebot i schreibe es mal um und ich kriege die 223 zeilen auf unter 80 im moment sind es 150\n\n

<!--EDIT|lichtkind|1141914851-->
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
lichtkind
 2006-03-09 17:25
#63690 #63690
User since
2004-03-22
5680 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ok damit es nicht untergeht mach ich nochmal ein post

ich bin grad bei 130 zeilen liegt auch daran das ich spüarsamer neuzeilenverwende aber auch an der codeweise weil ich glaube das ganze ding ist nicht effektiv gelöst
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
lichtkind
 2006-03-09 18:22
#63691 #63691
User since
2004-03-22
5680 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ok update ich bin bei 107 zeilen und würde gerne mal wissen wofür dieses align berechnet wird denn davon wird nichts augegeben die komplette ausgabe mache ich grad mit

$" = "";
print "\n\n\n @xSeq\n @{$LM[0]}\n";
print "$ySeq[$_-1]@{$LM[$_]}\n" for 1..$x;
print "\n\n\n$Hochw";
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
lichtkind
 2006-03-09 18:37
#63692 #63692
User since
2004-03-22
5680 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
oh mann statt höchsten wert direkt zu suchen maps du alles in liste statt und suchst sie dann durch. wozu kopierst du das um? 103 zeilen
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
<< |< 1 2 3 4 >| >> 35 Einträge, 4 Seiten



View all threads created 2006-03-09 15:01.