Dear Sirs,
The codes below gives this result:
ATGC GGGG A:2 2 T:1 1 C:1 1 G:2 5 _____END_____
which I found strange, because the value for first row of second column should be 0.
For example in the element of @array = GGGG, it takes the value of the first element of the array @pwmA (i.e 2) instead of 0.
That is:
ATGC GGGG A:2 0 <---------------- the intended value T:1 1 C:1 1 G:2 5 _____END_____
My question is how can I avoid my code of taking first element of the array, at the same time giving a zero when the @array strings doesn't match any of @pwmA element?
Thanks so much for your time.
Hope to hear from you again. Regards, Edward WIJAYA SINGAPORE
Code:
#!/usr/bin/perl -w use strict;
my @array = qw(ATGC GGGG); my @pwmA = ( 2, 0, 0, 1 ); my @pwmT = ( 4, 1, 1, 0 ); my @pwmC = ( 0, 0, 0, 1 ); my @pwmG = ( 1, 1, 2, 1 );
my @pvalueA=(); my @pvalueT=(); my @pvalueC=(); my @pvalueG=();
my $lmerSB; my $scA; my $scT; my $scC; my $scG; my $valA; my $valT; my $valC; my $valG;
foreach my $lmers (@array)
{ my @base_scoreA=(); my @base_scoreT=(); my @base_scoreC=(); my @base_scoreG=();
for (my $k=0; $k<=$#pwmA; $k++) { chomp($lmers); $lmerSB= substr($lmers,$k,1);
while ($lmerSB =~ /a/ig){ $valA=$pwmA[$k]; push(@base_scoreA,$valA); $scA = sumArray(@base_scoreA); } while ($lmerSB =~ /t/ig){ $valT=$pwmT[$k]; push(@base_scoreT,$valT); $scT = sumArray(@base_scoreT); }
while ($lmerSB =~ /c/ig){ $valC=$pwmC[$k]; push(@base_scoreC,$valC); $scC = sumArray(@base_scoreC); }
while ($lmerSB =~ /g/ig){ $valG=$pwmG[$k]; push(@base_scoreG,$valG); $scG = sumArray(@base_scoreG); } } push(@pvalueA,$scA); push(@pvalueT,$scT); push(@pvalueC,$scC); push(@pvalueG,$scG); }
print "@array\n"; print "A: @pvalueA\n"; print "T: @pvalueT\n"; print "C: @pvalueC\n"; print "G: @pvalueG\n";
sub sumArray{ my @params = @_; my $Key; my $Total=0;
foreach $Key (@params) { $Total += $Key; } return $Total; }
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>