go ahead... be a heretic
Perl Monks 

preview page

by vroom
 | log BrowserUk out | BrowserUk |  The Monastery Gates | Super Search | 
 | Seekers of Perl Wisdom | Meditations | PerlMonks Discussion | Library | 
 | Obfuscation | Poetry | Cool Uses For Perl | Snippets | Code | Q&A | 
 | Perl News | Reviews | Tutorials | Newest Nodes | Offering Plate | 

on Mar 01, 2000 at 01:52 GMT ( #11911=strangedoc: print w/ replies, xml ) Need Help??

Re: More efficient way to lookup with 2 AoA's.

Like everyone says--whenever you need to do a lookup in Perl: Think hashes,

#! perl -slw
use strict;
use Data::Dumper;

my @gene_score = (
         [ "gene_name_0", "score_0" ],
         [ "gene_name_1", "score_1" ],
#            ...
         [ "gene_name_400", "score_400" ]
);

my @gene_start_stop_chr = (
         [ "gene_name_0", "start_0", "stop_0", "chr_0" ],
         [ "gene_name_1", "start_1", "stop_1", "chr_1" ],
#            ...
          [ "gene_name_400", "start_400", "stop_400", "chr_400" ],
          [ "gene_name_30000", "start_30000", "stop_30000", "chr_30000" ]
);

## Build a hash from the lookup array
my %gene_start_stop_chr = map{ 
    $_->[ 0 ] => [ @{ $_ }[ 1 .. 3 ] ] 
} @gene_start_stop_chr;

## Use it to map the inputs to results
my @results = map{
    [ 
        $_->[ 0 ], 
        $_->[ 1 ], 
        @{ $gene_start_stop_chr{ $_->[ 0 ] } } 
    ]
} @gene_score;

print Dumper \@results;
__END__
P:\test>377857
$VAR1 = [
          [
            'gene_name_0',
            'score_0',
            'start_0',
            'stop_0',
            'chr_0'
          ],
          [
            'gene_name_1',
            'score_1',
            'start_1',
            'stop_1',
            'chr_1'
          ],
          [
            'gene_name_400',
            'score_400',
            'start_400',
            'stop_400',
            'chr_400'
          ]
        ];

Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"Think for yourself!" - Abigail
"Memory, processor, disk in that order on the hardware side. Algorithm, algoritm, algorithm on the code side." - tachyon
</p>


If something looked unlike you expected it to you might need to check out Writeup Formatting Tips

Title:
Your text:


  • Are you posting in the right place? Check out Where should I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags Currently these include the following: a, b, big, blockquote, br, caption, center, col, colgroup, dd, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, li, ol, p, pre, readmore, small, span, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul.
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible editor intervention).
  • Want more info? What shortcuts can I use for linking to other information? or Writeup Formatting Tips are good places to start.
XP Nodelet
You have 37 votes left today.
Tick tock
Tue Jul 27 17:08:52 2004
Jul 27, 2004 at 21:08 GMT
Chatterbox
BrowserUk says posts Edit view
  • Plus 64 archived


How do I use this? | Other CB clients
Other Users
Others romping around the monastery: (41)
tye
BrowserUk
Zaxo
grinder
demerphq
davorg
hardburn
bart
atcroft
jryan
davis
CountZero
Joost
castaway
blue_cowdawg
rir
pbeckingham
waswas-fng
Paladin
jZed
leriksen
iguanodon
Art_XIV
Anneq
xmath
bmann
KPeter0314
wufnik
bmcatt
integral
Stevie-O
tedrek
baphomet
hsinclai
ryantate
ngomong
maetrics
woltz
BioGeek
im2
nzgrover
As of 2004-07-27 21:03 GMT