X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=code_ruby%2Flib%2Fmaasha%2Fseq.rb;h=c22ecec8948a0230079aacd05af1e552a168819e;hb=eb15b4040e0ceba1c3df40b7f0a597c469771cee;hp=a2d5bbac3462d44401d0e1d97a70101f1b7d3af4;hpb=a30677c14f1738f6a76e8c12f2e732cdef9958d6;p=biopieces.git diff --git a/code_ruby/lib/maasha/seq.rb b/code_ruby/lib/maasha/seq.rb index a2d5bba..c22ecec 100644 --- a/code_ruby/lib/maasha/seq.rb +++ b/code_ruby/lib/maasha/seq.rb @@ -136,7 +136,7 @@ class Seq @type = options[:type] @qual = options[:qual] - if @qual and @seq.length != @qual.length + if @seq and @qual and @seq.length != @qual.length raise SeqError, "Sequence length and score length mismatch: #{@seq.length} != #{@qual.length}" end end @@ -294,8 +294,8 @@ class Seq raise SeqError, "Missing seq_name" if self.seq_name.nil? or self.seq_name == '' raise SeqError, "Missing seq" if self.seq.nil? or self.seq.empty? - seq_name = self.seq_name.to_s - seq = self.seq.to_s + seq_name = self.seq_name + seq = self.seq.dup unless wrap.nil? seq.gsub!(/(.{#{wrap}})/) do |match| @@ -343,12 +343,14 @@ class Seq # Method to reverse the sequence. def reverse - Seq.new( + entry = Seq.new( seq_name: self.seq_name, seq: self.seq.reverse, type: self.type, qual: (self.qual ? self.qual.reverse : self.qual) ) + + entry end # Method to reverse the sequence. @@ -667,22 +669,26 @@ class Seq regex_start = Regexp.new(start_codons.join('|'), true) regex_stop = Regexp.new(stop_codons.join('|'), true) - while pos_beg and pos_beg < self.length - size_min - if pos_beg = self.seq.index(regex_start, pos_beg) - if pos_end = self.seq.index(regex_stop, pos_beg) - length = (pos_end - pos_beg) + 3 + while pos_beg = self.seq.index(regex_start, pos_beg) + pos_end = pos_beg + 3 + + while pos_end = self.seq.index(regex_stop, pos_end) + length = (pos_end - pos_beg) + 3 - if (length % 3) == 0 - if size_min <= length and length <= size_max - subseq = self.subseq(pos_beg, length) + if (length % 3) == 0 + if size_min <= length and length <= size_max + subseq = self.subseq(pos_beg, length) - orfs << [subseq, pos_beg, pos_end + 3] - end + orfs << [subseq, pos_beg, pos_end + 3] end + + break end - pos_beg += 1 + pos_end += 1 end + + pos_beg += 1 end if pick_longest