[BioRuby] Parse big PDB use up all memory

Alex Gutteridge alexg at kuicr.kyoto-u.ac.jp
Thu Dec 13 03:49:04 UTC 2007


Hi,

Could you give some more details on what system and ruby/bioruby  
version you are running? The same script uses less than 20MB on my  
machine (ruby 1.8.6 / bioruby 1.1.0 / ubuntu linux), which doesn't  
seem so bad. Also 1w6k is biggish, but there are certainly bigger PDB  
files out there so if you're having trouble with this one then others  
will certainly be a problem.

In answer to your second question, yes you should be able to just  
extract the header (everything up to the ATOM records). But if you're  
really running out of memory just parsing that file then I suspect you  
have deeper issues. Anyway, the sample below works for me for parsing  
the header from 1w6k:

require 'bio'

serv = Bio::Fetch.new
entry = serv.fetch('pdb','1w6k')

header = ''
entry.each do |l|
   break if l.match(/^ATOM/)
   header << l
end

pdb = Bio::PDB.new(header)
p pdb.accession

On 13 Dec 2007, at 10:54, Yen-Ju Chen wrote:

> This is what I did:
>
> require 'bio'
> serv = Bio::Fetch.new()
> entry = serv.fetch('pdb', '1w6k')
> pdb = Bio::PDB.new(entry)
>
> The last step use up all memory and quit.
> The pdb file is quite big and I only need the information from header.
> Is it possible to do something like this ?
>
> pdb = Bio::PDB.new(entry[0-40000])
>
> Thanx for the help
> _______________________________________________
> BioRuby mailing list
> BioRuby at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioruby
>

Alex Gutteridge

Bioinformatics Center
Kyoto University




More information about the BioRuby mailing list