module BioDSL::Ambiguity

Namespace for Ambiguity.

Public Instance Methods

add_ambiguity_macro(inline_builder) click to toggle source

Add C functions to Inline::C object.

@param inline_builder [Inline::C] Inline C object.

# File lib/BioDSL/seq/ambiguity.rb, line 35
def add_ambiguity_macro(inline_builder)
  # Macro for matching nucleotides including ambiguity codes.
  inline_builder.prefix %(
    #define MATCH(A,B) ((bitmap[(int) A] & bitmap[(int) B]) != 0)
  )

  # Bitmap for matching nucleotides including ambiguity codes.
  # For each value bits are set from the left: bit pos 1 for A,
  # bit pos 2 for T, bit pos 3 for C, and bit pos 4 for G.
  inline_builder.prefix %(
    char bitmap[256] = {
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 1,14, 4,11, 0, 0, 8, 7, 0, 0,10, 0, 5,15, 0,
        0, 0, 9,12, 2, 2,13, 3, 0, 6, 0, 0, 0, 0, 0, 0,
        0, 1,14, 4,11, 0, 0, 8, 7, 0, 0,10, 0, 5,15, 0,
        0, 0, 9,12, 2, 2,13, 3, 0, 6, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
    };
  )
end