class Bio::RestrictionEnzyme::DoubleStranded::CutLocationPair

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

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 ) click to toggle source

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

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

Protected Instance Methods

init_with_array( ary ) click to toggle source
   # File lib/bio/util/restriction_enzyme/double_stranded/cut_location_pair.rb
76 def init_with_array( ary )
77   validate_1(ary)
78   a = ary.shift
79   ary.empty? ? b = nil : b = ary.shift
80   validate_2(a,b)
81   [a,b]
82 end
validate_1( ary ) click to toggle source
   # File lib/bio/util/restriction_enzyme/double_stranded/cut_location_pair.rb
84 def validate_1( ary )
85   unless ary.size == 1 or ary.size == 2
86     raise ArgumentError, "Must be one or two elements."
87   end
88 end
validate_2( a, b ) click to toggle source
   # File lib/bio/util/restriction_enzyme/double_stranded/cut_location_pair.rb
90 def validate_2( a, b )
91   if (a != nil and a < 0) or (b != nil and b < 0)
92     raise ArgumentError, "0-based index notation only.  Negative values are illegal."
93   end
94 
95   if a == nil and b == nil
96     raise ArgumentError, "Neither strand has a cut.  Ambiguous."
97   end
98 end