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
end
- pos_beg += 1
+ pos_end += 1
end
+
+ pos_beg += 1
end
if pick_longest