class Bio::RestrictionEnzyme::SingleStrand

A single strand of restriction enzyme sequence pattern with a 5’ to 3’ orientation.

DoubleStranded puts the SingleStrand and SingleStrandComplement together to create the sequence pattern with cuts on both strands.

Attributes

cut_locations[R]

The cut locations transformed from enzyme index notation to 0-based array index notation. Contains an Array.

cut_locations_in_enzyme_notation[R]

The cut locations in enzyme notation. Contains a CutLocationsInEnzymeNotation object set when the SingleStrand object is initialized.

stripped[R]

Sequence pattern with no cut symbols and no ‘n’ padding.

  • SingleStrand.new('garraxt', [-2, 1, 7]).stripped # => "garraxt"

Public Class Methods

new( sequence, *c ) click to toggle source

Constructor for a Bio::RestrictionEnzyme::StingleStrand object.

A single strand of restriction enzyme sequence pattern with a 5’ to 3’ orientation.


Arguments

Constraints

  • sequence cannot contain immediately adjacent cut symbols (ex. atg^^c).

  • c is in enzyme index notation and therefore cannot contain a 0.

  • If c is omitted, sequence must contain a cut symbol.

  • You cannot provide both a sequence with cut symbols and provide cut locations - ambiguous.

sequence must be a kind of:

c must be a kind of:

Returns

nothing

Calls superclass method Bio::Sequence::NA::new
   # File lib/bio/util/restriction_enzyme/single_strand.rb
69 def initialize( sequence, *c )
70   c.flatten! # if an array was supplied as an argument
71 # NOTE t| 2009-09-19 commented out for library efficiency
72   # validate_args(sequence, c)
73   sequence = sequence.downcase
74   
75   if sequence =~ re_cut_symbol
76     @cut_locations_in_enzyme_notation = CutLocationsInEnzymeNotation.new( strip_padding(sequence) )
77   else
78     @cut_locations_in_enzyme_notation = CutLocationsInEnzymeNotation.new( c )
79   end
80 
81   @stripped = Bio::Sequence::NA.new( strip_cuts_and_padding( sequence ) )
82   super( pattern )
83   @cut_locations = @cut_locations_in_enzyme_notation.to_array_index
84   return
85 end

Public Instance Methods

orientation() click to toggle source

Orientation of the strand, 5’ to 3’

   # File lib/bio/util/restriction_enzyme/single_strand.rb
40 def orientation; [5,3]; end
palindromic?() click to toggle source

Returns true if this enzyme is palindromic with its reverse complement. Does not report if the cut_locations are palindromic or not.

Examples:

  • This would be palindromic:

    5' - ATGCAT - 3'
         TACGTA
  • This would not be palindromic:

    5' - ATGCGTA - 3'
         TACGCAT

Arguments

  • none

Returns

true or false

    # File lib/bio/util/restriction_enzyme/single_strand.rb
103 def palindromic?
104   @stripped.reverse_complement == @stripped
105 end
pattern() click to toggle source

The sequence with ‘n’ padding on the left and right for cuts larger than the sequence.

  • SingleStrand.new('garraxt', [-2, 1, 7]).pattern # => "nngarraxtn"


Arguments

  • none

Returns

The sequence with ‘n’ padding on the left and right for cuts larger than the sequence.

    # File lib/bio/util/restriction_enzyme/single_strand.rb
131 def pattern
132   return stripped if @cut_locations_in_enzyme_notation.min == nil
133   left = (@cut_locations_in_enzyme_notation.min < 0 ? 'n' * @cut_locations_in_enzyme_notation.min.abs : '')
134 
135   # Add one more 'n' if a cut is at the last position
136   right = ( (@cut_locations_in_enzyme_notation.max >= @stripped.length) ? ('n' * (@cut_locations_in_enzyme_notation.max - @stripped.length + 1)) : '')
137   [left, stripped, right].join('')
138 end
with_cut_symbols() click to toggle source

The sequence with ‘n’ padding and cut symbols.

  • SingleStrand.new('garraxt', [-2, 1, 7]).with_cut_symbols # => "n^ng^arraxt^n"


Arguments

  • none

Returns

The sequence with ‘n’ padding and cut symbols.

    # File lib/bio/util/restriction_enzyme/single_strand.rb
118 def with_cut_symbols
119   s = pattern
120   @cut_locations_in_enzyme_notation.to_array_index.sort.reverse.each { |c| s.insert(c+1, cut_symbol) }
121   s
122 end
with_spaces() click to toggle source

The sequence with ‘n’ pads, cut symbols, and spacing for alignment.

  • SingleStrand.new('garraxt', [-2, 1, 7]).with_spaces # => "n^n g^a r r a x t^n"


Arguments

  • none

Returns

The sequence with ‘n’ pads, cut symbols, and spacing for alignment.

    # File lib/bio/util/restriction_enzyme/single_strand.rb
147 def with_spaces
148   add_spacing( with_cut_symbols )
149 end

Protected Instance Methods

validate_args( input_pattern, input_cut_locations ) click to toggle source
    # File lib/bio/util/restriction_enzyme/single_strand.rb
155 def validate_args( input_pattern, input_cut_locations )
156   unless input_pattern.kind_of?(String)
157     err = "input_pattern is not a String, Bio::Sequence::NA, or Bio::RestrictionEnzyme::SingleStrand object\n"
158     err += "pattern: #{input_pattern}\n"
159     err += "class: #{input_pattern.class}"
160     raise ArgumentError, err
161   end
162 
163   if ( input_pattern =~ re_cut_symbol ) and !input_cut_locations.empty?
164     err = "Cut symbol found in sequence, but cut locations were also supplied.  Ambiguous.\n"
165     err += "pattern: #{input_pattern}\n"
166     err += "symbol: #{cut_symbol}\n"
167     err += "locations: #{input_cut_locations.inspect}"
168     raise ArgumentError, err
169   end
170 
171   input_pattern.each_byte do |c| 
172     c = c.chr.downcase
173     unless Bio::NucleicAcid::NAMES.has_key?(c) or c == 'x' or c == 'X' or c == cut_symbol
174       err = "Invalid character in pattern.\n"
175       err += "Not a nucleotide or representation of possible nucleotides.  See Bio::NucleicAcid::NAMES for more information.\n"
176       err += "char: #{c}\n"
177       err += "input_pattern: #{input_pattern}"
178       raise ArgumentError, err
179     end
180   end
181 end