Bruno Vecchi > Bio-Protease > Bio::Protease



Annotate this POD

View/Report Bugs
Module Version: 1.112980   Source  


Bio::Protease - Digest your protein substrates with customizable specificity


version 1.112980


    use Bio::Protease;
    my $protease = Bio::Protease->new(specificity => 'trypsin');

    my $protein = 'MRAERVIKP';

    # Perform a full digestion
    my @products = $protease->digest($protein);

    # products: ( 'MR', 'AER', 'VIKP' )

    # Get all the siscile bonds.
    my @sites = $protease->cleavage_sites($protein);

    # sites: ( 2, 5 )

    # Try to cut at a specific position.

    @products = $protease->cut($protein, 2);

    # products: ( 'MR', 'AERVIKP' )


This module models the hydrolitic behaviour of a proteolytic enzyme. Its main purpose is to predict the outcome of hydrolitic cleavage of a peptidic substrate.

The enzyme specificity is currently modeled for 37 enzymes/reagents. This models are somewhat simplistic as they are largely regex-based, and do not take into account subtleties such as kinetic/temperature effects, accessible solvent area, secondary or tertiary structure elements. However, the module is flexible enough to allow the inclusion of any of these effects by consuming the module's interface, Bio::ProteaseI. Alternatively, if your desired specificity can be correctly described by a regular expression, you can pass it to the specificity attribute at construction time. See specificity below.



Set the enzyme's specificity. Required. Could be either of:


This class attribute contains a hash reference with all the available regexep-based specificities. The keys are the specificity names, the value is an arrayref with the regular expressions that define them.

    my @protease_pool = do {
        Bio::Protease->new(specificity => $_)
            for keys %{Bio::Protease->Specificities};

As a rule, all specificity names are lower case. Currently, they include:

For a complete description of their specificities, you can check out, or look at the regular expressions of their definitions in this same file.


Turn caching on, trading memory for speed. Defaults to 0 (no caching). Useful when any method is being called several times with the same argument.

    my $p = Bio::Protease->new( specificity => 'trypsin', use_cache => 0 );
    my $c = Bio::Protease->new( specificity => 'trypsin', use_cache => 1 );

    my $substrate = 'MAAEELRKVIKPR' x 10;

    $p->digest( $substrate ) for (1..1000); # time: 5.11s
    $c->digest( $substrate ) for (1..1000); # time: 0.12s


The cache object, which has to do the Cache::Ref::Role::API role. Uses Cache::Ref::LRU by default with a cache size of 5000, but you can set this to your liking at construction time:

    my $p = Bio::Protease->new(
        use_cache   => 1,
        cache       => Cache::Ref::Random->new( size => 50 ),
        specificity => 'trypsin'



Performs a complete digestion of the peptide argument, returning a list with possible products. It does not do partial digests (see method cut for that).

    my @products = $enzyme->digest($protein);


Attempt to cleave $peptide at the C-terminal end of the $i-th residue (ie, at the right). If the bond is indeed cleavable (determined by the enzyme's specificity), then a list with the two products of the hydrolysis will be returned. Otherwise, returns false.

    my @products = $enzyme->cut($peptide, $i);


Returns a list with siscile bonds (bonds susceptible to be cleaved as determined by the enzyme's specificity). Bonds are numbered starting from 1, from N to C-terminal. Takes a string with the protein sequence as an argument:

    my @sites = $enzyme->cleavage_sites($peptide);


Returns true or false whether the peptide argument is a substrate or not. Esentially, it's equivalent to calling cleavage_sites in boolean context, but with the difference that this method short-circuits when it finds its first cleavable site. Thus, it's useful for CPU-intensive tasks where the only information required is whether a polypeptide is a substrate of a particular enzyme or not



Bruno Vecchi <vecchi.b>


This software is copyright (c) 2011 by Bruno Vecchi.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

syntax highlighting: