Class: Bio::RestrictionEnzyme
- 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
-
.cut(sequence, enzymes) ⇒ Object
See Bio::RestrictionEnzyme::Analysis.cut.
-
.enzyme_name?(name) ⇒ Boolean
Check if supplied name is the name of an available enzyme.
-
.new(users_enzyme_or_rebase_or_pattern, *cut_locations) ⇒ Object
See Bio::RestrictionEnzyme::DoubleStranded.new for more information.
-
.rebase ⇒ Object
REBASE enzyme data information.
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
orfalse
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 |
.rebase ⇒ Object
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.(__FILE__)), 'restriction_enzyme', 'enzymes.yaml') @@rebase_enzymes ||= Bio::REBASE.load_yaml(enzymes_yaml_file) @@rebase_enzymes end |