X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=code_ruby%2Flib%2Fmaasha%2Fseq%2Ftrim.rb;h=2be3e56800a518a25ce5da5665053b0951d4de8e;hb=a5d19041b1dcfe481eef2747058f63173a36aaf3;hp=e7e9bb1daf6b019e77e78b8eabf44cad1abc2ea5;hpb=59c0c522f4a4452b0951f33794dc797c4bcaecfe;p=biopieces.git diff --git a/code_ruby/lib/maasha/seq/trim.rb b/code_ruby/lib/maasha/seq/trim.rb index e7e9bb1..2be3e56 100644 --- a/code_ruby/lib/maasha/seq/trim.rb +++ b/code_ruby/lib/maasha/seq/trim.rb @@ -23,6 +23,9 @@ # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< require 'inline' +require 'maasha/seq/backtrack' + +include BackTrack # Error class for all exceptions to do with Trim. class TrimError < StandardError; end @@ -96,6 +99,38 @@ module Trim self.subseq!(pos_left, pos_right - pos_left) end + # Method to locate a pattern in a sequence and trim all sequence to the left + # including the pattern. + def patmatch_trim_left!(pattern, options = {}) + match = self.patmatch(pattern, options) + + if match + stop = self.length + + self.seq = self.seq[match.pos + match.length .. stop] + self.qual = self.qual[match.pos + match.length .. stop] if self.qual + + return self + end + + nil + end + + # Method to locate a pattern in a sequence and trim all sequence to the right + # including the pattern. + def patmatch_trim_right!(pattern, options = {}) + match = self.patmatch(pattern, options) + + if match + self.seq = self.seq[0 ... match.pos] + self.qual = self.qual[0 ... match.pos] if self.qual + + return self + end + + nil + end + private # Method to check the arguments for trimming and raise on bad sequence, qualities,