PLEASE DOWNLOAD THE ENTIRE CODE FROM RESPONSE TO GRANDFATHER AND ALSO FIRST FEW LINES OF THE FIRST AND THE SECOND FILE
I have the following code and I need to print the unique elements of array of array or array of hash whatever you call "push(@{$genes_number{$k}}, $current_line[ 1 ])"
I know how to do it with a simple array. I originally wrote the subroutine to count each unique element of @genes_number array. Then I said ok, lets expand the code by looping through the keys of %gc_ag hash and print out all counts at each keys. But as the data structure got more complex I stuck.
The goal is to find Xs and print some thing like the following where 5 to 18 are the keys of %gc_ag hash and 1..10 for each row is the numbers determined by $j in the sub routine which are the frequency of $current_line [ 1 ] if $current_line [ 8 ] is greater than each value of %gc_ag hash. It does not matter if header line for column or rows are not printed as long as the order is correct.my %genes_number =(); while(<INPUT1>){ chomp; my @current_line = split /\t/; #%gc_ag hash has sotred the keys and values # read from another file. Keys are 5 to 18 # and values are some numbers for each #key explained in read more foreach my $k (sort {$a<=>$b} keys %gc_ag) { if ($current_line[3] == $k && $current_line[8] > $gc_a +g{$k} ) { # push(@genes_number, $current_line[1]); # this was my original array that was used in # in the sub. Now the sub needs to be changed # according to the following array of hash push(@{$genes_number{$k}}, $current_line[1]); } } } #################################### ###########subroutine############### sub count_unique { @genes_number = @_; my %count; map { $count{$_}++ } @genes_number; #print them out: map {push our @arr, ${count{$_}}} sort keys(%count); for (my $j=1; $j<10; $j++){ my $counter =0; foreach my $element(@arr) { if ($element >=$j) { $counter++; } } print "$j\t$counter\n"; } my $i =0; $i += keys %count; # print $i; return %count; }
5 6 7 8 9 10 11 12 13 14 15 16 17 18
1 X X X X X X X X X X X X X X
2 X X X X X X X X X X X X X X
3 X X X X X X X X X X X X X X
4 X X X X X X X X X X X X X X
5 X X X X X X X X X X X X X X
6
7
8
9
10 X X X X X X X X X X X X X X
Here is the %gc_ag content Key => value 5=> 3.85 6=> 4.45 7=> 7.76 8=> 10.12 9=> 11.41 . . . . . . 18=>118.21 Here is an example of INPUT1 - There are 9 columns from 0 to 8 4750739 A209.EF064282 53 11 0.474968 -33.2 S 4750739 165.834 44.7 3383536 A209.EF064282 55 11 0.500083 -32.4 A 3383536 323.299 49 2634649 A209.EF064282 57 10 0.394855 -32 S 2634649 335.989 70.8 2923929 A209.EF064282 59 10 0.440602 -32.6 A 2923929 182.191 56.2 2756668 A209.EF064282 61 10 0.439497 -32.2 S 2756668 195.982 51 2961071 A209.EF064282 63 11 0.446359 -32.9 A 2961071 89.8963 23.8 3553101 A209.EF064282 65 11 0.414364 -33.2 S 3553101 101.563 23.9 3837211 A209.EF064282 67 10 0.432963 -32 A 3837211 57.7682 28.5 1832375 A209.EF064282 69 10 0.395152 -32 S 1832375 190.361 33 3357379 A209.EF064282 71 9 0.361169 -30.7 A 3357379 65.9899 18.5 5143976 A209.EF064282 73 8 0.384216 -30.1 S 5143976 44.6272 18.3 5734641 A209.EF064282 75 9 0.370324 -30.7 A 5734641 43.0392 11.8 5472474 A209.EF064282 77 10 0.426362 -31.9 S 5472474 28.6393 22.5 1601877 A209.EF064282 79 11 0.426462 -31.9 A 1601877 59.4263 18.3 5994790 A209.EF064282 81 11 0.42787 -32.5 S 5994790 310.741 76.1 548705 A209.EF064282 83 12 0.495855 -33.9 A 548705 140.423 36.2 5325020 A209.EF064282 85 13 0.546329 -35.6 S 5325020 865.633 111.4 4729214 A209.EF064282 87 13 0.288539 -35.6 A 4729214 892.606 179.7 4408466 A209.EF064282 89 12 0.542443 -34.8 S 4408466 980.892 210.5 3566139 A209.EF064282 91 13 0.543212 -36 A 3566139 1194.33 242.3 3039069 A209.EF064282 93 12 0.531238 -35.1 S 3039069 1089.02 230.2 4623003 A209.EF064282 95 11 0.263011 -33.9 A 4623003 962.656 152.5 1900108 A209.EF064282 97 11 0.29847 -33.6 S 1900108 582.385 95.9 2359581 AAA5.EF064268 53 10 0.459265 -34.3 S 2359581 937.563 279 1134470 AAA5.EF064268 57 11 0.490045 -35.4 S 1134470 1020.77 221.2 2509174 AAA5.EF064268 63 10 0.453891 -34.8 A 2509174 1312.34 218.9 936416 AAA5.EF064268 65 11 0.604597 -35.6 S 936416 1739.83 446 5531538 AAA5.EF064268 67 11 0.613992 -35 A 5531538 1798.19 342.8 219161 AAA5.EF064268 69 12 0.554714 -35.3 S 219161 1244 261.1 712591 AAA5.EF064268 71 10 0.487708 -33.6 A 712591 1389.5 285.4 1680312 AAA5.EF064268 73 9 0.386673 -32 S 1680312 369.067 149.6 4841444 AAA5.EF064268 75 10 0.393024 -32.1 A 4841444 678.501 182.4 944270 AAA5.EF064268 77 10 0.378516 -32.7 S 944270 251.284 51.6 2374708 AAA5.EF064268 79 10 0.435592 -33.2 A 2374708 393.509 95.6 2586120 AAA5.EF064268 81 12 0.517054 -33.9 S 2586120 174.005 33.5 961718 AAA5.EF064268 83 12 0.521711 -34.2 A 961718 130.586 35.2 1308189 AAA5.EF064268 85 12 0.508754 -34.4 S 1308189 198.439 38.5 4235432 AAA5.EF064268 89 11 0.493991 -33.6 S 4235432 143.679 45.5 4419845 AAA5.EF064268 91 12 0.54374 -33.6 A 4419845 94.904 38.7 3574638 AAA5.EF064268 93 11 0.435695 -33.3 S 3574638 128.873 28.9 4513350 AAA5.EF064268 95 11 0.510312 -33.3 A 4513350 94.0746 27.5 1246411 AAA5.EF064268 97 11 0.510547 -33.2 S 1246411 136.292 40.8 2976971 AAA5.EF064268 99 11 0.490249 -33.1 A 2976971 409.191 84.8 1670085 AAA5.EF064268 101 9 0.384792 -32.2 S 1670085 399.819 116 4116324 AAA5.EF064268 103 10 0.430863 -32.6 A 4116324 640.385 168.2 3297170 AAA5.EF064268 105 9 0.357768 -31.7 S 3297170 504.307 103.3 1990703 AAA5.EF064268 107 10 0.414288 -32.3 A 1990703 779.137 241.4
In reply to Print Uniqe elements of arry of hash by sesemin
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |