BioPerl
view release on metacpan or search on metacpan
Bio/Restriction/Enzyme.pm view on Meta::CPAN
return $self->{'revcom_recog'} = $recog;
}
=head2 revcom
Title : revcom
Usage : $re->revcom();
Function : Get a string representing the reverse complement of
: the recognition sequence.
Returns : String
Argument : n/a
Throws : n/a
=cut
sub revcom {
shift->{'_seq'}->revcom->seq();
}
=head2 recognition_length
Title : recognition_length
Usage : $re->recognition_length();
Function : Get the length of the RECOGNITION sequence.
This is the total recognition sequence,
inluding the ambiguous codes.
Returns : An integer
Argument : Nothing
See also: L<non_ambiguous_length>
=cut
sub recognition_length {
my $self = shift;
return length($self->string);
}
=head2 cutter
Title : cutter
Usage : $re->cutter
Function : Returns the "cutter" value of the recognition site.
This is a value relative to site length and lack of
ambiguity codes. Hence: 'RCATGY' is a five (5) cutter site
and 'CCTNAGG' a six cutter
This measure correlates to the frequency of the enzyme
cuts much better than plain recognition site length.
Example : $re->cutter
Returns : integer or float number
Args : none
Why is this better than just stripping the ambiguos codes? Think about
it like this: You have a random sequence; all nucleotides are equally
probable. You have a four nucleotide re site. The probability of that
site finding a match is one out of 4^4 or 256, meaning that on average
a four cutter finds a match every 256 nucleotides. For a six cutter,
the average fragment length is 4^6 or 4096. In the case of ambiguity
codes the chances are finding the match are better: an R (A|T) has 1/2
chance of finding a match in a random sequence. Therefore, for RGCGCY
the probability is one out of (2*4*4*4*4*2) which exactly the same as
for a five cutter! Cutter, although it can have non-integer values
turns out to be a useful and simple measure.
From bug 2178: VHDB are ambiguity symbols that match three different
nucleotides, so they contribute less to the effective recognition sequence
length than e.g. Y which matches only two nucleotides. A symbol which matches n
of the 4 nucleotides has an effective length of 1 - log(n) / log(4).
=cut
sub cutter {
my ($self)=@_;
$_ = uc $self->string;
my $cutter = tr/[ATGC]//d;
my $count = tr/[MRWSYK]//d;
$cutter += $count/2;
$count = tr/[VHDB]//d;
$cutter += $count * (1 - log(3) / log(4));
return $cutter;
}
=head2 is_palindromic
Title : is_palindromic
Alias : palindromic
Usage : $re->is_palindromic();
Function : Determines if the recognition sequence is palindromic
: for the current restriction enzyme.
Returns : Boolean
Argument : n/a
Throws : n/a
A palindromic site (EcoRI):
5-GAATTC-3
3-CTTAAG-5
=cut
sub is_palindromic {
my $self = shift;
return $self->{_palindromic} if defined $self->{_palindromic};
if ($self->string eq $self->revcom) {
return $self->{_palindromic}=1;
}
return $self->{_palindromic} = 0;
}
sub palindromic { shift->is_palindromic(@_) }
=head2 is_symmetric
Title : is_symmetric
Alias : symmetric
Usage : $re->is_symmetric();
( run in 0.971 second using v1.01-cache-2.11-cpan-364913b4093 )