Module: SSW::DNA

Defined in:
lib/ssw/dna.rb

Constant Summary collapse

Elements =
%w[A C G T N].freeze
DNA2INT =
{ 'A' => 0, 'a' => 0,
'C' => 1, 'c' => 1,
'G' => 2, 'g' => 2,
'T' => 3, 't' => 3,
'N' => 4, 'n' => 4 }.freeze
INT2DNA =
{ 0 => 'A', 1 => 'C', 2 => 'G', 3 => 'T', 4 => 'N' }.freeze
DNARC =

reverse complement

{ 'A' => 'T',
'C' => 'G',
'G' => 'C',
'T' => 'A',
'N' => 'N',
'a' => 'T',
'c' => 'G',
'g' => 'C',
't' => 'A',
'n' => 'N' }.freeze

Class Method Summary collapse

Class Method Details

.from_int_array(arr) ⇒ String

Transform numerical sequence into DNA sequence.

Examples:

SSW::DNA.from_int_array([3, 1, 2, 0]) #=> "TCGA"

Parameters:

  • arr (Array)

    int array

Returns:

  • (String)

    dna sequence

Raises:

  • (ArgumentError)


49
50
51
52
53
54
55
# File 'lib/ssw/dna.rb', line 49

def from_int_array(arr)
  raise ArgumentError, 'arr must be an Array' unless arr.is_a? Array

  arr.map do |i|
    INT2DNA[i] || 'N'
  end.join
end

.revcomp(seq) ⇒ String

reverse complement

Examples:

SSW::DNA.revcomp("TCGAT") #=> "ATCGA"

Parameters:

  • seq (String)

    sequence

Returns:

  • (String)

    reverse complement



63
64
65
66
67
# File 'lib/ssw/dna.rb', line 63

def revcomp(seq)
  seq.each_char.map do |base|
    DNARC[base]
  end.join.reverse
end

.to_int_array(seq) ⇒ Array

Transform DNA sequence into numerical sequence.

Examples:

SSW::DNA.to_int_array("TCGA") #=> [3, 1, 2, 0]

Parameters:

  • seq (String)

    dna sequence

Returns:

  • (Array)

    int array

Raises:

  • (ArgumentError)


35
36
37
38
39
40
41
# File 'lib/ssw/dna.rb', line 35

def to_int_array(seq)
  raise ArgumentError, 'seq must be a string' unless seq.is_a? String

  seq.each_char.map do |base|
    DNA2INT[base] || DNA2INT['N']
  end
end