Class | Bio::RestrictionEnzyme::DoubleStranded::CutLocationPair
In: | lib/bio/util/restriction_enzyme/double_stranded/cut_location_pair.rb
Parent: | Array

Stores a single cut location pair in 0-based index notation for use with DoubleStranded enzyme sequences.

### Methods

init_with_array new validate_1 validate_2

### Attributes

complement | [R] | Location of the cut on the complementary strand. Corresponds - or ‘pairs’ - to the primary cut. A value of `nil` is an explicit representation of ‘no cut’.
primary | [R] | Location of the cut on the primary strand. Corresponds - or ‘pairs’ - to the complement cut. A value of `nil` is an explicit representation of ‘no cut’.

### Public Class methods

new( *pair )

CutLocationPair constructor.

Stores a single cut location pair in 0-based index notation for use with DoubleStranded enzyme sequences.

Example:

      clp = CutLocationPair.new(3,2)
      clp.primary                    # 3
      clp.complement                 # 2

Arguments

- `pair`: May be two values represented as an Array, a Range, or a combination of Integer and nil values. The first value represents a cut on the primary strand, the second represents a cut on the complement strand.

Returns: | nothing

[Source]

        # File lib/bio/util/restriction_enzyme/double_stranded/cut_location_pair.rb, line 48
    48:   def initialize( *pair )
    49:     a = b = nil
    50:
    51:     if pair[0].kind_of? Array
    52:       a,b = init_with_array( pair[0] )
    53:
    54:     # no idea why this barfs without the second half during test/runner.rb
    55:     # are there two Range objects running around?
    56:     elsif pair[0].kind_of? Range or (pair[0].class.to_s == 'Range')
    57:     #elsif pair[0].kind_of? Range
    58:       a,b = init_with_array( [pair[0].first, pair[0].last] )
    59:
    60:     elsif pair[0].kind_of? Integer or pair[0].kind_of? NilClass
    61:       a,b = init_with_array( [pair[0], pair[1]] )
    62:
    63:     else
    64:       raise ArgumentError, "#{pair[0].class} is an invalid class type to initalize CutLocationPair."
    65:     end
    66:
    67:     super( [a,b] )
    68:     @primary = a
    69:     @complement = b
    70:     return
    71:   end

### Protected Instance methods

init_with_array( ary )

[Source]

        # File lib/bio/util/restriction_enzyme/double_stranded/cut_location_pair.rb, line 77
    77:   def init_with_array( ary )
    78:     validate_1(ary)
    79:     a = ary.shift
    80:     ary.empty? ? b = nil : b = ary.shift
    81:     validate_2(a,b)
    82:     [a,b]
    83:   end

validate_1( ary )

[Source]

        # File lib/bio/util/restriction_enzyme/double_stranded/cut_location_pair.rb, line 85
    85:   def validate_1( ary )
    86:     unless ary.size == 1 or ary.size == 2
    87:       raise ArgumentError, "Must be one or two elements."
    88:     end
    89:   end

validate_2( a, b )

[Source]

        # File lib/bio/util/restriction_enzyme/double_stranded/cut_location_pair.rb, line 91
    91:   def validate_2( a, b )
    92:     if (a != nil and a < 0) or (b != nil and b < 0)
    93:       raise ArgumentError, "0-based index notation only.  Negative values are illegal."
    94:     end
    95:
    96:     if a == nil and b == nil
    97:       raise ArgumentError, "Neither strand has a cut.  Ambiguous."
    98:     end
    99:   end

[Validate]