From d6e9c6eaa05d6df4c78eb6ebc6b39ca68a950360 Mon Sep 17 00:00:00 2001 From: Chris Fields Date: Fri, 9 Aug 2013 15:19:25 -0500 Subject: [PATCH] fix for hash randomization bug in Bio::Map for perl 5.18.0 --- Bio/Map/Mappable.pm | 10 +++++----- t/Map/Map.t | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Bio/Map/Mappable.pm b/Bio/Map/Mappable.pm index 75ae4808f..5bffbad6f 100755 --- a/Bio/Map/Mappable.pm +++ b/Bio/Map/Mappable.pm @@ -499,7 +499,7 @@ sub _compare { $required{$self} = 1; } } - my @required = keys %required; + my @required = sort keys %required; foreach my $compare (@compares) { if ($compare->isa('Bio::Map::PositionI')) { @@ -601,9 +601,9 @@ sub _compare { } my @groups; - GROUPS: foreach my $group_range (keys %all_groups) { # sort keys %all_groups might help, but causes test fails + GROUPS: foreach my $group_range (sort keys %all_groups) { my $group = $all_groups{$group_range}; - my @group = values %{$group}; + my @group = sort values %{$group}; #print "* in group $group_range, there are ", scalar(@group), " members\n"; @group >= $min_pos_num or next; @@ -615,14 +615,14 @@ sub _compare { my $mappable = $pos->element || next; $mappables{$mappable} = 1; } - keys %mappables >= $min_pables_num or next; + keys %mappables >= $min_pables_num || next; my %maps; foreach my $pos (@group) { my $map = $pos->map || next; $maps{$map->unique_id} = 1; } - keys %maps >= $min_map_num or next; + keys %maps >= $min_map_num || next; foreach my $required (@required) { exists $mappables{$required} or next GROUPS; diff --git a/t/Map/Map.t b/t/Map/Map.t index 0f765495b..e44bb1946 100644 --- a/t/Map/Map.t +++ b/t/Map/Map.t @@ -319,11 +319,11 @@ my $pos; my $predictions = [$perfect_prediction, $good_prediction, $ok_prediction, $bad_prediction]; ok my @groups = $factor->overlapping_groups($predictions, -relative => $gene_rel); is @groups, 2; - is ${$groups[0]}[0], $pos7; - is ${$groups[1]}[0], $pos6; - is ${$groups[1]}[1], $pos5; - is ${$groups[1]}[2]->toString($gene_rel), $pos4->toString($gene_rel); - is ${$groups[1]}[3]->toString($gene_rel), $pos3->toString($gene_rel); + is ${$groups[1]}[0], $pos7; + is ${$groups[0]}[0], $pos6; + is ${$groups[0]}[1], $pos5; + is ${$groups[0]}[2]->toString($gene_rel), $pos4->toString($gene_rel); + is ${$groups[0]}[3]->toString($gene_rel), $pos3->toString($gene_rel); ok my $di = $factor->disconnected_intersections($predictions, -relative => $gene_rel, -min_mappables_num => 3); my @di = $di->get_positions; is @di, 1; -- 2.11.4.GIT