From 82cc2d402135a13aa4ae1cc7f9ba2c535bef8e10 Mon Sep 17 00:00:00 2001 From: Patrick Meidl <pm2@sanger.ac.uk> Date: Thu, 17 Apr 2008 13:35:18 +0000 Subject: [PATCH] fixed bug in load_and_merge() when using --cache_method=build_cache_all --- modules/Bio/EnsEMBL/IdMapping/Cache.pm | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/modules/Bio/EnsEMBL/IdMapping/Cache.pm b/modules/Bio/EnsEMBL/IdMapping/Cache.pm index 1b41018c44..ebd6a8d72f 100644 --- a/modules/Bio/EnsEMBL/IdMapping/Cache.pm +++ b/modules/Bio/EnsEMBL/IdMapping/Cache.pm @@ -155,6 +155,9 @@ sub build_cache_by_slice { # write cache to file, then flush cache to reclaim memory my $size = $self->write_all_to_file($type); + # set cache method (required for loading cache later) + $self->cache_method('BY_SEQ_REGION'); + return $num_genes, $size; } @@ -199,6 +202,9 @@ sub build_cache_all { # write cache to file, then flush cache to reclaim memory my $size = $self->write_all_to_file($type); + # set cache method (required for loading cache later) + $self->cache_method('ALL'); + return $num_genes, $size; } @@ -1052,8 +1058,16 @@ sub read_and_merge { throw("Db type must be 'source' or 'target'."); } - foreach my $slice_name (@{ $self->slice_names($dbtype) }) { - $self->read_from_file("$dbtype.$slice_name"); + # read cache from single or multiple files, depending on caching strategy + my $cache_method = $self->cache_method; + if ($cache_method eq 'ALL') { + $self->read_from_file("$dbtype.ALL"); + } elsif ($cache_method eq 'BY_SEQ_REGION') { + foreach my $slice_name (@{ $self->slice_names($dbtype) }) { + $self->read_from_file("$dbtype.$slice_name"); + } + } else { + throw("Unknown cache method: $cache_method."); } $self->merge($dbtype); @@ -1196,6 +1210,13 @@ sub conf { } +sub cache_method { + my $self = shift; + $self->{'instance'}->{'cache_method'} = shift if (@_); + return $self->{'instance'}->{'cache_method'}; +} + + sub highest_common_cs { my $self = shift; $self->{'instance'}->{'hccs'} = shift if (@_); -- GitLab