From: martinahansen Date: Thu, 9 Dec 2010 15:45:35 +0000 (+0000) Subject: fixed cryptic bug in genbank.rb X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=af3dde95dc90c5846c960051f0119a8644b58c79;p=biopieces.git fixed cryptic bug in genbank.rb git-svn-id: http://biopieces.googlecode.com/svn/trunk@1177 74ccb610-7750-0410-82ae-013aeee3265d --- diff --git a/code_ruby/Maasha/lib/biopieces.rb b/code_ruby/Maasha/lib/biopieces.rb index 2a4a9b2..9cd86ed 100644 --- a/code_ruby/Maasha/lib/biopieces.rb +++ b/code_ruby/Maasha/lib/biopieces.rb @@ -643,7 +643,7 @@ at_exit do exit_status = $! ? $!.inspect : "OK" case exit_status - when /error/i + when /error|errno/i exit_status = "ERROR" when "Interrupt" exit_status = "INTERRUPTED" diff --git a/code_ruby/Maasha/lib/genbank.rb b/code_ruby/Maasha/lib/genbank.rb index a2ce72a..db8f98e 100644 --- a/code_ruby/Maasha/lib/genbank.rb +++ b/code_ruby/Maasha/lib/genbank.rb @@ -58,6 +58,7 @@ class Genbank # Iterator method for parsing Genbank entries. def each(hash_keys, hash_feats, hash_quals) while @entry = get_entry do + $stderr.puts @entry.first keys = get_keys(hash_keys) seq = get_seq @@ -65,11 +66,12 @@ class Genbank features.each do |record| keys.each_pair { |key,val| record[key] = val } - loc = Locator.new(record[:LOCATOR], seq) - record[:SEQ] = loc.subseq.seq - record[:STRAND] = loc.strand - record[:S_BEG] = loc.s_beg - record[:S_END] = loc.s_end + + loc = Locator.new(record[:LOCATOR], seq) + record[:SEQ] = loc.subseq.seq + record[:STRAND] = loc.strand + record[:S_BEG] = loc.s_beg + record[:S_END] = loc.s_end yield record end @@ -109,15 +111,16 @@ class Genbank # Method to get the DNA sequence from a Genbank entry and return # this as a Seq object. def get_seq - seq = Seq.new + seq = Seq.new(nil, "", "dna") i = @entry.size - while @entry[i] !~ /^ORIGIN/ + while @entry[i] and @entry[i] !~ /^ORIGIN/ + if @entry[i] =~ /^\s{0,8}\d+(.+)/ + seq.seq << $1.delete(" ") + end + i -= 1 end - - seq.seq = @entry[i + 1 .. @entry.size].join.delete( " 0123456789") - seq.type = "dna" seq end @@ -350,9 +353,12 @@ class Locator int_end = $2.to_i - 1 newseq = Seq.new(nil, @seq.seq[int_beg...int_end], "dna") - newseq.revcomp if comp - @subseq.seq << (order ? " " + newseq.seq : newseq.seq) + unless newseq.seq.nil? + newseq.revcomp if comp + + @subseq.seq << (order ? " " + newseq.seq : newseq.seq) + end when /^(\d+)$/ pos = $1.to_i - 1