Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

Re^2: What is wrong in this code???

by Anonymous Monk
on Dec 07, 2012 at 21:06 UTC ( #1007825=note: print w/replies, xml ) Need Help??

in reply to Re: What is wrong in this code???
in thread What is wrong in this code???

Thanks, but that is not what I need. What I must have, is the number of A, C, T, G and - per POSITION. So the output would be something like:
POS #1 A:150 | T:50 | G:0 | C:20 | -:30 POS 21 A:80 | T:60 | G:40 | C:20 | -:0 etc

So the numbers must add up the number of sequences, each time...

Replies are listed 'Best First'.
Re^3: What is wrong in this code???
by Kenosis (Priest) on Dec 07, 2012 at 22:50 UTC

    My apologies; I did misunderstand. The following should work:

    use strict; use warnings; my %sequences; while (<>) { my $i = 1; for my $char ( split '', (split)[1] ) { $sequences{ $i++ }{$char}++; } } for my $pos ( sort { $a <=> $b } keys %sequences ) { my @charCount; while ( my ( $char, $count ) = each %{ $sequences{$pos} } ) { push @charCount, "$char:$count"; } print "POS #$pos " . ( join ' | ', @charCount ) . "\n"; }

    This is the output:

    POS #1 a:4 POS #2 q:1 | b:3 POS #3 c:4 POS #4 x:1 | d:2 | z:1 POS #5 e:4 POS #6 f:4 POS #7 c:1 | a:1 | b:1 | d:1 POS #8 h:4 POS #9 i:4 POS #10 j:4

    Run on this data:

    12 abcdefahij 12 abcdefbhij 12 aqcxefchij 12 abczefdhij
Re^3: What is wrong in this code???
by Anonymous Monk on Dec 07, 2012 at 21:33 UTC
    use strict; use warnings; while (<>) { my %sequences; for my $char ( split '', (split)[1] ) { $sequences{$char}++; } print "$_ => $sequences{$_}", "\n" for keys %sequences; }

    Note how I declared the hash inside the loop. Scoping variables correctly is the easiest way to reset them.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1007825]
[marioroy]: Discipulus Cool. Also cool is seeing "use integer" run 1.36x faster.
[marioroy]: ... on my laptop versus no integer.
[marioroy]: Contrary to the documentation, it made a difference and I have floating point hw.
[Discipulus]: have you noticed the other interesting thread? Computing pi to multiple precision

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (8)
As of 2017-10-24 07:33 GMT
Find Nodes?
    Voting Booth?
    My fridge is mostly full of:

    Results (286 votes). Check out past polls.