From 878bbdcea977178288b6d73ce874354fd4203ab3 Mon Sep 17 00:00:00 2001 From: Graham McVicker <mcvicker@sanger.ac.uk> Date: Fri, 21 May 2004 15:11:12 +0000 Subject: [PATCH] store each density feature as it is created rather than building a list per seq_region - smaller memory footprint (but repeats still leaking mem) --- .../density_feature/percent_gc_calc.pl | 24 +++++-------- .../density_feature/repeat_coverage_calc.pl | 36 ++++++++----------- .../density_feature/snp_lite_density.pl | 11 ++---- 3 files changed, 26 insertions(+), 45 deletions(-) diff --git a/misc-scripts/density_feature/percent_gc_calc.pl b/misc-scripts/density_feature/percent_gc_calc.pl index a92980555d..1e5bb90adc 100644 --- a/misc-scripts/density_feature/percent_gc_calc.pl +++ b/misc-scripts/density_feature/percent_gc_calc.pl @@ -115,32 +115,26 @@ foreach my $slice ( @$slices ) { my $blocksize = $density_type->block_size(); $current_start = 1; - my @density_features=(); - while($current_start <= $slice->end()) { $current_end = $current_start+$blocksize-1; if( $current_end > $slice->end() ) { - $current_end = $slice->end(); + $current_end = $slice->end(); } my $sub_slice = $slice->sub_Slice( $current_start, $current_end ); my $gc = $sub_slice->get_base_count()->{'%gc'}; - push @density_features, Bio::EnsEMBL::DensityFeature->new - (-seq_region => $slice, - -start => $current_start, - -end => $current_end, - -density_type => $density_type, - -density_value => $gc); + my $df = Bio::EnsEMBL::DensityFeature->new + (-seq_region => $slice, + -start => $current_start, + -end => $current_end, + -density_type => $density_type, + -density_value => $gc); + + $dfa->store($df); $current_start = $current_end+1; } - - $dfa->store(@density_features); - print "Created ",scalar @density_features, " %GC density features "; - print "for seq_region ", $slice->seq_region_name(),"\n"; - - # print_features(\@density_features); } } diff --git a/misc-scripts/density_feature/repeat_coverage_calc.pl b/misc-scripts/density_feature/repeat_coverage_calc.pl index 709b0e407d..32eae04324 100644 --- a/misc-scripts/density_feature/repeat_coverage_calc.pl +++ b/misc-scripts/density_feature/repeat_coverage_calc.pl @@ -107,12 +107,10 @@ foreach my $slice ( @$slices ) { my $blocksize = $density_type->block_size(); $current_start = 1; - my @density_features=(); - while($current_start <= $slice->end()) { $current_end = $current_start+$blocksize-1; if( $current_end > $slice->end() ) { - $current_end = $slice->end(); + $current_end = $slice->end(); } my $this_block_size = $current_end - $current_start + 1; @@ -122,35 +120,29 @@ foreach my $slice ( @$slices ) { my $rr = Bio::EnsEMBL::Mapper::RangeRegistry->new(); foreach my $repeat (@{$sub_slice->get_all_RepeatFeatures()}){ - $rr->check_and_register("1",$repeat->start,$repeat->end); + $rr->check_and_register("1",$repeat->start,$repeat->end); } my $count = 0; my $non_repeats = $rr->check_and_register("1",1,$this_block_size); if( defined $non_repeats ) { - foreach my $non_repeat ( @$non_repeats ) { - $count += ($non_repeat->[1]-$non_repeat->[0])+1; - } - } - + foreach my $non_repeat ( @$non_repeats ) { + $count += ($non_repeat->[1]-$non_repeat->[0])+1; + } + } - print "repeat-> ".$count." are none repeat regions out of $this_block_size\n"; my $percentage_repeat = (($this_block_size-$count)/$this_block_size)*100; - push @density_features, Bio::EnsEMBL::DensityFeature->new - (-seq_region => $slice, - -start => $current_start, - -end => $current_end, - -density_type => $density_type, - -density_value => $percentage_repeat); + my $df = Bio::EnsEMBL::DensityFeature->new + (-seq_region => $slice, + -start => $current_start, + -end => $current_end, + -density_type => $density_type, + -density_value => $percentage_repeat); + + $dfa->store($df); $current_start = $current_end + 1; } - - $dfa->store(@density_features); - print STDERR "Created ",scalar @density_features," repeat density features "; - print STDERR "for ",$slice->seq_region_name(),"\n"; - -# print_features(\@density_features); } } diff --git a/misc-scripts/density_feature/snp_lite_density.pl b/misc-scripts/density_feature/snp_lite_density.pl index 48d9e51882..c382c89fd5 100644 --- a/misc-scripts/density_feature/snp_lite_density.pl +++ b/misc-scripts/density_feature/snp_lite_density.pl @@ -85,8 +85,6 @@ foreach my $slice (@$top_slices){ $current_start = 1; - my @density_features=(); - print "SNP densities for ".$slice->seq_region_name(). " with block size $block_size\n"; @@ -104,14 +102,13 @@ foreach my $slice (@$top_slices){ # # How many snps fall into this subslice # - foreach my $snp (@{$sub_slice->get_all_SNPs()}){ if( $snp->start >= 1 ) { - $count++ + $count++ } } - push @density_features, Bio::EnsEMBL::DensityFeature->new + my $df = Bio::EnsEMBL::DensityFeature->new (-seq_region => $slice, -start => $current_start, -end => $current_end, @@ -120,10 +117,8 @@ foreach my $slice (@$top_slices){ $current_start = $current_end + 1; + $dfa->store($df); } - $dfa->store(@density_features); - print "Created ", scalar @density_features, " snp density features.\n"; - # print_features(\@density_features); } -- GitLab