AWallBuilder has asked for the wisdom of the Perl Monks concerning the following question:
I am trying to write a script to find the lowest common ancestor for a list of ids
I have a file with the parent of each id, and have parsed this into a Hash containing the parent of every id %HoPar. This code not shown, but working properly
Then I am making an array of ancestors for each id. Then in a final step I am comparing all of these ancestor arrays to find the intersection. This is where I am having problems, I'm not sure of the syntax to create the List::Compare object. Any help appreciated
my %HoAncestors; foreach my $qu (keys %HoTxHits) { # go through each taxid, get ancestors, then find the intersec +tion foreach my $taxid (@{$HoTxHits{$qu}}){ my $queryTaxid=$taxid; while ((exists $HoPar{$queryTaxid}) && ($HoPar{$queryT +axid} != 1)) { my $parent=$HoPar{$queryTaxid}; push (@{$HoAncestors{$taxid}},$parent); $queryTaxid=$parent; } } $lcm=List::Compare=>new(\ @intersection=$lcm->get_intersection; } }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Passing List::Compare a list of arrays
by hdb (Monsignor) on Jul 12, 2013 at 09:33 UTC | |
|
Re: Passing List::Compare a list of arrays
by rjt (Curate) on Jul 12, 2013 at 09:34 UTC | |
by AWallBuilder (Beadle) on Jul 12, 2013 at 10:57 UTC | |
|
Re: Passing List::Compare a list of arrays
by tobyink (Canon) on Jul 12, 2013 at 12:35 UTC | |
|
Re: Passing List::Compare a list of arrays
by kcott (Archbishop) on Jul 13, 2013 at 07:35 UTC |