]> git.donarmstrong.com Git - biopieces.git/commitdiff
fixed cryptic bug in genbank.rb
authormartinahansen <martinahansen@74ccb610-7750-0410-82ae-013aeee3265d>
Thu, 9 Dec 2010 15:45:35 +0000 (15:45 +0000)
committermartinahansen <martinahansen@74ccb610-7750-0410-82ae-013aeee3265d>
Thu, 9 Dec 2010 15:45:35 +0000 (15:45 +0000)
git-svn-id: http://biopieces.googlecode.com/svn/trunk@1177 74ccb610-7750-0410-82ae-013aeee3265d

code_ruby/Maasha/lib/biopieces.rb
code_ruby/Maasha/lib/genbank.rb

index 2a4a9b2de3802392142cac5524b4d13440467379..9cd86edc9aacf9dd6e142ab4eb3fc8cfa9557792 100644 (file)
@@ -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"
index a2ce72ad33a584d57e610da2afef28661178ae6f..db8f98e08b6fcd4ede1cbbc547fe4ccab372c422 100644 (file)
@@ -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