in reply to Sort array using a ranking system from separate hash
#!/usr/bin/perl use warnings; use strict; use Data::Dumper; my @AoA =( [qw(TTVVRRRDR KFRQLLWFH RSQSPRRRR CSPHHTALR WIRTPPAYR VVRRR +DRGR HISCLTFGR RTPSPRRRR NTNMGLKFR LVSFGVWIR)], [qw(AILCWGELM TVLEYLVSF GLKFRQLLW LSFLPSDFF LLSFLPSDF LLWFH +ISCL MQLFHLCLI QLFHLCLII ATVELLSFL ALRQAILCW)], [qw(TTVVRRRDR CSPHHTALR WIRTPPAYR NVNMGLKIR LVSFGVWIR HISCL +TFGR)], [qw(CSPHHTALR YVNTNMGLK WIRTPPAYR TLPETTVVR HISCLTFGR NTNMG +LKIR WGMDIDPYK LVSFGVWIR)], ); #calculate histogram my %histo; foreach my $rowref (@AoA) { foreach my $elem (@$rowref) { $histo{$elem}++; } } print Dumper \%histo; #sort each array according to the histogram foreach my $rowref (@AoA) { @$rowref = sort{my $A = $histo{$a}; my $B = $histo{$b}; $A <=> $B} @$rowref; #edit guess should be $B<=> +$A } print Dumper \@AoA; __END__ $VAR1 = { 'WGMDIDPYK' => 1, 'YVNTNMGLK' => 1, 'MQLFHLCLI' => 1, 'KFRQLLWFH' => 1, 'HISCLTFGR' => 3, 'NTNMGLKIR' => 1, 'LVSFGVWIR' => 3, 'QLFHLCLII' => 1, 'VVRRRDRGR' => 1, 'WIRTPPAYR' => 3, 'LLSFLPSDF' => 1, 'TVLEYLVSF' => 1, 'CSPHHTALR' => 3, 'NTNMGLKFR' => 1, 'LLWFHISCL' => 1, 'LSFLPSDFF' => 1, 'AILCWGELM' => 1, 'TTVVRRRDR' => 2, 'NVNMGLKIR' => 1, 'RSQSPRRRR' => 1, 'ALRQAILCW' => 1, 'GLKFRQLLW' => 1, 'ATVELLSFL' => 1, 'TLPETTVVR' => 1, 'RTPSPRRRR' => 1 }; $VAR1 = [ [ 'KFRQLLWFH', 'RSQSPRRRR', 'VVRRRDRGR', 'RTPSPRRRR', 'NTNMGLKFR', 'TTVVRRRDR', 'CSPHHTALR', 'WIRTPPAYR', 'HISCLTFGR', 'LVSFGVWIR' ], [ 'AILCWGELM', 'TVLEYLVSF', 'GLKFRQLLW', 'LSFLPSDFF', 'LLSFLPSDF', 'LLWFHISCL', 'MQLFHLCLI', 'QLFHLCLII', 'ATVELLSFL', 'ALRQAILCW' ], [ 'NVNMGLKIR', 'TTVVRRRDR', 'CSPHHTALR', 'WIRTPPAYR', 'LVSFGVWIR', 'HISCLTFGR' ], [ 'YVNTNMGLK', 'TLPETTVVR', 'NTNMGLKIR', 'WGMDIDPYK', 'CSPHHTALR', 'WIRTPPAYR', 'HISCLTFGR', 'LVSFGVWIR' ] ];
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Sort array using a ranking system from separate hash
by Sandy_Bio_Perl (Beadle) on Aug 08, 2016 at 10:39 UTC |