[Bioperl-l] Possible memory leak in Bio::SeqFeature::Gene::GeneStructure?

Stefan Kirov skirov at utk.edu
Wed Mar 30 12:25:26 EST 2005


Oops, actually Bio::SeqFeature::Gene::Transcript::parent does not allow 
as it is undef.... Either should be fixed ot DESTROY needs to directly 
undef $transcript->{parent}.

Hilmar Lapp wrote:

> Those modules probably can use some serious review. If there is a 
> cycle then Jason should be on the right path with overriding DESTROY, 
> but first one would need to know where the cycle is. I don't recall 
> one being there on purpose ...
>
> Sorry to not be of more help ...
>
>     -hilmar
>
> On Tuesday, March 29, 2005, at 01:14  PM, Stefan Kirov wrote:
>
>> I am working on the Entrezgene parser and tried to use 
>> Bio::SeqFeature::Gene::GeneStructure to describe NC/NT to NM and NP 
>> relationships. I am pretty much done with the parser (based on Mingyi 
>> Liu low lovel parser), but once I tried to parse a whole file (Homo 
>> sapiens) I ran out of memory. I think the problem might be 
>> Bio::SeqFeature::Gene::GeneStructure::add_Transcript.
>> Here is the code which I used to simulate the problem and the 
>> resulting report file. It seams adding Bio::SeqFeature::Gene::Exon to 
>> Bio::SeqFeature::Gene::Transcript do not contribute to the problem.
>> Any suggestions?
>> Stefan
>> Simulation 2    0MB
>> Simulation 3    1MB
>> Simulation 4    1MB
>> Simulation 5    1MB
>> Simulation 6    2MB
>> Simulation 7    2MB
>> Simulation 8    2MB
>> Simulation 9    2MB
>> Simulation 10    3MB
>> Simulation 11    3MB
>> Simulation 12    3MB
>> Simulation 13    4MB
>> Simulation 14    4MB
>> Simulation 15    4MB
>> Simulation 16    5MB
>> Simulation 17    5MB
>> Simulation 18    5MB
>> Simulation 19    5MB
>> Simulation 20    6MB
>> Simulation 21    6MB
>> Simulation 22    6MB
>> Simulation 23    7MB
>> Simulation 24    7MB
>> Simulation 25    7MB
>> Simulation 26    8MB
>> Simulation 27    8MB
>> Simulation 28    8MB
>> Simulation 29    9MB
>> Simulation 30    9MB
>> Simulation 31    9MB
>> Simulation 32    9MB
>> Simulation 33    10MB
>> Simulation 34    10MB
>> Simulation 35    10MB
>> Simulation 36    11MB
>> Simulation 37    11MB
>> Simulation 38    11MB
>> Simulation 39    12MB
>> Simulation 40    12MB
>> Simulation 41    12MB
>> Simulation 42    13MB
>> Simulation 43    13MB
>> Simulation 44    13MB
>> Simulation 45    13MB
>> Simulation 46    14MB
>> Simulation 47    14MB
>> Simulation 48    14MB
>> Simulation 49    15MB
>> Simulation 50    15MB
>> Simulation 51    15MB
>> Simulation 52    16MB
>> Simulation 53    16MB
>> Simulation 54    16MB
>> Simulation 55    16MB
>> Simulation 56    17MB
>> Simulation 57    17MB
>> Simulation 58    17MB
>> Simulation 59    18MB
>> Simulation 60    18MB
>> Simulation 61    18MB
>> Simulation 62    19MB
>> Simulation 63    19MB
>> Simulation 64    19MB
>> Simulation 65    19MB
>> Simulation 66    20MB
>> Simulation 67    20MB
>> Simulation 68    20MB
>> Simulation 69    21MB
>> Simulation 70    21MB
>> Simulation 71    21MB
>> Simulation 72    22MB
>> Simulation 73    22MB
>> Simulation 74    22MB
>> Simulation 75    23MB
>> Simulation 76    23MB
>> Simulation 77    23MB
>> Simulation 78    24MB
>> Simulation 79    24MB
>> Simulation 80    24MB
>> Simulation 81    24MB
>> Simulation 82    25MB
>> Simulation 83    25MB
>> Simulation 84    25MB
>> Simulation 85    26MB
>> Simulation 86    26MB
>> Simulation 87    26MB
>> Simulation 88    27MB
>> Simulation 89    27MB
>> Simulation 90    27MB
>> Simulation 91    27MB
>> Simulation 92    28MB
>> Simulation 93    28MB
>> Simulation 94    28MB
>> Simulation 95    29MB
>> Simulation 96    29MB
>> Simulation 97    29MB
>> Simulation 98    30MB
>> Simulation 99    30MB
>> Simulation 100    30MB
>> 6620    6650
>> use Bio::SeqFeature::Gene::Exon;
>> use Bio::SeqFeature::Gene::Transcript;
>> use Bio::SeqFeature::Gene::GeneStructure;
>> use strict;
>> use Devel::Cycle;
>>
>> my ($prevmem,$growth,$first);
>> for my $k (1..100) {
>> open (FREE, "free -m|");
>> my $buf=<FREE>;
>> my $buf=<FREE>;
>> my ($x1,$x2,$mem,$x3)=split(/\s+/,$buf,4);
>> if ($prevmem) {
>>     $growth+= $mem-$prevmem;
>>     print "Simulation $k\t$growth","MB\n";
>> }
>> else { $first=$mem;}
>> $prevmem=$mem;
>> for my $i (1..20) {
>> my $gstruct=new Bio::SeqFeature::Gene::GeneStructure;
>> for my $n (0..3) {
>> my $transcript=new 
>> Bio::SeqFeature::Gene::Transcript(-primary=>'memleak'.$n,
>>                                           
>> -start=>1,-end=>2000,-strand=>, -desc=>'test for memmory leaks');
>>
>>
>> foreach my $e (1.10) {
>>     my $exonobj=new 
>> Bio::SeqFeature::Gene::Exon(-start=>$e*10,-end=>$e*10+9,-strand=>1);
>>     $transcript->add_exon($exonobj);
>> }
>> $gstruct->add_transcript($transcript);
>> }
>> }
>> }
>> print 
>> "$first\t$prevmem\n";_______________________________________________
>> Bioperl-l mailing list
>> Bioperl-l at portal.open-bio.org
>> http://portal.open-bio.org/mailman/listinfo/bioperl-l
>

-- 
Stefan Kirov, Ph.D.
University of Tennessee/Oak Ridge National Laboratory
5700 bldg, PO BOX 2008 MS6164
Oak Ridge TN 37831-6164
USA
tel +865 576 5120
fax +865-576-5332
e-mail: skirov at utk.edu
sao at ornl.gov

"And the wars go on with brainwashed pride
For the love of God and our human rights
And all these things are swept aside"



More information about the Bioperl-l mailing list