Class: Bio::RestrictionEnzyme

Inherits:
Object
  • Object
show all
Extended by:
CutSymbol
Includes:
CutSymbol
Defined in:
lib/bio/util/restriction_enzyme.rb,
lib/bio/util/restriction_enzyme/analysis.rb,
lib/bio/util/restriction_enzyme/cut_symbol.rb,
lib/bio/util/restriction_enzyme/single_strand.rb,
lib/bio/util/restriction_enzyme/analysis_basic.rb,
lib/bio/util/restriction_enzyme/dense_int_array.rb,
lib/bio/util/restriction_enzyme/double_stranded.rb,
lib/bio/util/restriction_enzyme/range/cut_range.rb,
lib/bio/util/restriction_enzyme/range/cut_ranges.rb,
lib/bio/util/restriction_enzyme/sorted_num_array.rb,
lib/bio/util/restriction_enzyme/string_formatting.rb,
lib/bio/util/restriction_enzyme/range/sequence_range.rb,
lib/bio/util/restriction_enzyme/range/vertical_cut_range.rb,
lib/bio/util/restriction_enzyme/single_strand_complement.rb,
lib/bio/util/restriction_enzyme/range/horizontal_cut_range.rb,
lib/bio/util/restriction_enzyme/double_stranded/cut_locations.rb,
lib/bio/util/restriction_enzyme/range/sequence_range/fragment.rb,
lib/bio/util/restriction_enzyme/range/sequence_range/fragments.rb,
lib/bio/util/restriction_enzyme/double_stranded/aligned_strands.rb,
lib/bio/util/restriction_enzyme/double_stranded/cut_location_pair.rb,
lib/bio/util/restriction_enzyme/range/sequence_range/calculated_cuts.rb,
lib/bio/util/restriction_enzyme/single_strand/cut_locations_in_enzyme_notation.rb,
lib/bio/util/restriction_enzyme/double_stranded/cut_locations_in_enzyme_notation.rb,
lib/bio/util/restriction_enzyme/double_stranded/cut_location_pair_in_enzyme_notation.rb

Overview

Description

Bio::RestrictionEnzyme allows you to fragment a DNA strand using one or more restriction enzymes. Bio::RestrictionEnzyme is aware that multiple enzymes may be competing for the same recognition site and returns the various possible fragmentation patterns that result in such circumstances.

When using Bio::RestrictionEnzyme you may simply use the name of common enzymes to cut your sequence or you may construct your own unique enzymes to use.

Visit the documentaion for individual classes for more information.

An examination of the unit tests will also reveal several interesting uses for the curious programmer.

Usage

Basic

EcoRI cut pattern:

G|A A T T C
 +-------+
C T T A A|G

This can also be written as:

G^AATTC

Note that to use the method cut_with_enzyme from a Bio::Sequence object you currently must require bio/util/restriction_enzyme directly. If instead you’re going to directly call Bio::RestrictionEnzyme::Analysis then only bio needs to be required.

require 'bio'
require 'bio/util/restriction_enzyme'

seq = Bio::Sequence::NA.new('gaattc')
cuts = seq.cut_with_enzyme('EcoRI')
cuts.primary                        # => ["aattc", "g"]
cuts.complement                     # => ["cttaa", "g"]
cuts.inspect                        # => "[#<struct Bio::RestrictionEnzyme::Fragment primary=\"g    \", complement=\"cttaa\">, #<struct Bio::RestrictionEnzyme::Fragment primary=\"aattc\", complement=\"    g\">]"

seq = Bio::Sequence::NA.new('gaattc')
cuts = seq.cut_with_enzyme('g^aattc')
cuts.primary                        # => ["aattc", "g"]
cuts.complement                     # => ["cttaa", "g"]

seq = Bio::Sequence::NA.new('gaattc')
cuts = seq.cut_with_enzyme('g^aattc', 'gaatt^c')
cuts.primary                        # => ["aattc", "c", "g", "gaatt"]
cuts.complement                     # => ["c", "cttaa", "g", "ttaag"]

seq = Bio::Sequence::NA.new('gaattcgaattc')
cuts = seq.cut_with_enzyme('EcoRI')
cuts.primary                        # => ["aattc", "aattcg", "g"]
cuts.complement                     # => ["cttaa", "g", "gcttaa"]

seq = Bio::Sequence::NA.new('gaattcgggaattc')
cuts = seq.cut_with_enzyme('EcoRI')
cuts.primary                        # => ["aattc", "aattcggg", "g"]
cuts.complement                     # => ["cttaa", "g", "gcccttaa"]

cuts[0].inspect                     # => "#<struct Bio::RestrictionEnzyme::Fragment primary=\"g    \", complement=\"cttaa\">"

cuts[0].primary                     # => "g    "
cuts[0].complement                  # => "cttaa"

cuts[1].primary                     # => "aattcggg    "
cuts[1].complement                  # => "    gcccttaa"

cuts[2].primary                     # => "aattc"
cuts[2].complement                  # => "    g"

Advanced

require 'bio'

enzyme_1 = Bio::RestrictionEnzyme.new('anna', [1,1], [3,3])
enzyme_2 = Bio::RestrictionEnzyme.new('gg', [1,1])
a = Bio::RestrictionEnzyme::Analysis.cut('agga', enzyme_1, enzyme_2)
a.primary                           # => ["a", "ag", "g", "ga"]
a.complement                        # => ["c", "ct", "t", "tc"]

a[0].primary                        # => "ag"
a[0].complement                     # => "tc"

a[1].primary                        # => "ga"
a[1].complement                     # => "ct"

a[2].primary                        # => "a"
a[2].complement                     # => "t"

a[3].primary                        # => "g"
a[3].complement                     # => "c"

Todo / under development

  • Circular DNA cutting

Defined Under Namespace

Modules: CutSymbol, StringFormatting Classes: Analysis, DenseIntArray, DoubleStranded, Fragment, Fragments, Range, SingleStrand, SingleStrandComplement, SortedNumArray

Class Method Summary collapse

Methods included from CutSymbol

cut_symbol, escaped_cut_symbol, re_cut_symbol, re_cut_symbol_adjacent, set_cut_symbol

Class Method Details

.cut(sequence, enzymes) ⇒ Object

See Bio::RestrictionEnzyme::Analysis.cut



173
174
175
# File 'lib/bio/util/restriction_enzyme.rb', line 173

def self.cut( sequence, enzymes )
  Bio::RestrictionEnzyme::Analysis.cut( sequence, enzymes )
end

.enzyme_name?(name) ⇒ Boolean

Check if supplied name is the name of an available enzyme

See Bio::REBASE.enzyme_name?


Arguments

  • name: Enzyme name

Returns

true or false

Returns:

  • (Boolean)


168
169
170
# File 'lib/bio/util/restriction_enzyme.rb', line 168

def self.enzyme_name?( name )
  self.rebase.enzyme_name?(name)
end

.new(users_enzyme_or_rebase_or_pattern, *cut_locations) ⇒ Object

See Bio::RestrictionEnzyme::DoubleStranded.new for more information.


Arguments

  • users_enzyme_or_rebase_or_pattern: One of three possible parameters: The name of an enzyme, a REBASE::EnzymeEntry object, or a nucleotide pattern with a cut mark.

  • cut_locations: The cut locations in enzyme index notation.

Returns

Bio::RestrictionEnzyme::DoubleStranded

– Factory for DoubleStranded ++



142
143
144
# File 'lib/bio/util/restriction_enzyme.rb', line 142

def self.new(users_enzyme_or_rebase_or_pattern, *cut_locations)
  DoubleStranded.new(users_enzyme_or_rebase_or_pattern, *cut_locations)
end

.rebaseObject

REBASE enzyme data information

Returns a Bio::REBASE object loaded with all of the enzyme data on file.


Arguments

  • none

Returns

Bio::REBASE



154
155
156
157
158
# File 'lib/bio/util/restriction_enzyme.rb', line 154

def self.rebase
  enzymes_yaml_file = File.join(File.dirname(File.expand_path(__FILE__)), 'restriction_enzyme', 'enzymes.yaml')
  @@rebase_enzymes ||= Bio::REBASE.load_yaml(enzymes_yaml_file)
  @@rebase_enzymes
end