Bio-Protease
view release on metacpan or search on metacpan
lib/Bio/ProteaseI.pm view on Meta::CPAN
package Bio::ProteaseI;
{
$Bio::ProteaseI::VERSION = '1.112980';
}
# ABSTRACT: A role to build your customized Protease
use Moose::Role;
use Carp 'croak';
use namespace::autoclean;
requires '_cuts';
sub cut {
my ( $self, $substrate, $pos ) = @_;
croak "Incorrect substrate argument"
unless ( defined $substrate and _looks_like_string($substrate) );
unless ( defined $pos and $pos > 0 and $pos <= length $substrate ) {
croak "Incorrect position.";
}
$substrate = uc $substrate;
$substrate = _cap_head($substrate);
$pos += 3;
my $pep = substr($substrate, $pos - 4, 8);
if ( $self->_cuts($pep) ) {
my $product = substr($substrate, 0, $pos);
substr($substrate, 0, $pos) = '';
_uncap($product, $substrate);
return ($product, $substrate);
}
else { return }
}
sub digest {
my ( $self, $substrate ) = @_;
croak "Incorrect substrate argument"
unless ( defined $substrate and _looks_like_string($substrate) );
# Get the positions where the enzyme cuts
my @sites = $self->cleavage_sites($substrate) or return $substrate;
# Get the peptide products;
my @products;
my $start = 0;
while ( my $site = shift @sites ) {
my $length = $site - $start;
my $product = substr($substrate, $start, $length);
push @products, $product;
$start += $length;
}
# Last peptide: cut from last position to the end.
push @products, substr($substrate, $start);
return @products;
}
sub is_substrate {
my ($self, $substrate) = @_;
( run in 1.151 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )