module BioDSL::Trim

Module containing methods for end trimming sequences with suboptimal quality scores.

Public Instance Methods

quality_trim(min_qual, min_len = 1) click to toggle source

Method to progressively trim a Seq object sequence from both ends until a run of min_len residues with quality scores above min_qual is encountered.

# File lib/BioDSL/seq/trim.rb, line 79
def quality_trim(min_qual, min_len = 1)
  check_trim_args(min_qual, min_len)

  pos_right = trim_right_pos_c(@qual, length, min_qual, min_len,
                               Seq::SCORE_BASE)
  pos_left  = trim_left_pos_c(@qual, length, min_qual, min_len,
                              Seq::SCORE_BASE)

  pos_left = pos_right if pos_left > pos_right

  self[pos_left...pos_right]
end
quality_trim!(min_qual, min_len = 1) click to toggle source

Method to progressively trim a Seq object sequence from both ends until a run of min_len residues with quality scores above min_qual is encountered.

# File lib/BioDSL/seq/trim.rb, line 94
def quality_trim!(min_qual, min_len = 1)
  subseq    = quality_trim(min_qual, min_len)
  self.seq  = subseq.seq
  @qual = subseq.qual
  self
end
quality_trim_left(min_qual, min_len = 1) click to toggle source

Method to progressively trim a Seq object sequence from the left end until a run of min_len residues with quality scores above min_qual is encountered.

# File lib/BioDSL/seq/trim.rb, line 59
def quality_trim_left(min_qual, min_len = 1)
  check_trim_args(min_qual, min_len)

  pos = trim_left_pos_c(@qual, length, min_qual, min_len, Seq::SCORE_BASE)

  self[pos..length]
end
quality_trim_left!(min_qual, min_len = 1) click to toggle source

Method to progressively trim a Seq object sequence from the left end until a run of min_len residues with quality scores above min_qual is encountered.

# File lib/BioDSL/seq/trim.rb, line 70
def quality_trim_left!(min_qual, min_len = 1)
  subseq    = quality_trim_left(min_qual, min_len)
  self.seq  = subseq.seq
  @qual = subseq.qual
  self
end
quality_trim_right(min_qual, min_len = 1) click to toggle source

Method to progressively trim a Seq object sequence from the right end until a run of min_len residues with quality scores above min_qual is encountered.

# File lib/BioDSL/seq/trim.rb, line 38
def quality_trim_right(min_qual, min_len = 1)
  check_trim_args(min_qual, min_len)

  pos = trim_right_pos_c(@qual, length, min_qual, min_len, Seq::SCORE_BASE)

  self[0..pos]
end
quality_trim_right!(min_qual, min_len = 1) click to toggle source

Method to progressively trim a Seq object sequence from the right end until a run of min_len residues with quality scores above min_qual is encountered.

# File lib/BioDSL/seq/trim.rb, line 49
def quality_trim_right!(min_qual, min_len = 1)
  subseq    = quality_trim_right(min_qual, min_len)
  self.seq  = subseq.seq
  @qual = subseq.qual
  self
end

Private Instance Methods

check_trim_args(min_qual, min_len) click to toggle source

Method to check the arguments for trimming and raise on bad sequence, qualities, and min_qual.

# File lib/BioDSL/seq/trim.rb, line 105
def check_trim_args(min_qual, min_len)
  fail TrimError, 'no sequence'      if @seq.nil?
  fail TrimError, 'no quality score' if @qual.nil?

  unless (Seq::SCORE_MIN..Seq::SCORE_MAX).include? min_qual
    fail TrimError, "minimum quality value: #{min_qual} out of range: " \
                    "#{Seq::SCORE_MIN} .. #{Seq::SCORE_MAX}"
  end

  fail TrimError, 'min_len must be larger than zero' if min_len <= 0
end