Module: BioDSL::Homopolymer

Included in:
Seq
Defined in:
lib/BioDSL/seq/homopolymer.rb

Overview

Namespace for Homopolymer

Defined Under Namespace

Classes: Homopolymer

Instance Method Summary collapse

Instance Method Details

#each_homopolymer(min = 1) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/BioDSL/seq/homopolymer.rb', line 35

def each_homopolymer(min = 1)
  fail HomopolymerError, "Bad min value: #{min}" if min <= 0
  list = []

  regex = Regexp.new("A{#{min},}|T{#{min},}|G{#{min},}|C{#{min},}|" \
                     "N{#{min},}")

  @seq.upcase.scan(regex) do |match|
    hp = Homopolymer.new(match, match.length, $`.length)

    if block_given?
      yield hp
    else
      list << hp
    end
  end

  block_given? ? self : list
end