Bio::Tools::LatticeProtein - Lattice model for protein prediction
use Data::Dumper; use Bio::Tools::LatticeProtein; $lp = Bio::Tools::LatticeProtein->new( sequence => 'PERLISNIFTY', cycle => 100, popsize => 20, survival => 10, mutdist => { end_rotation => 0.1, kink_jump => 0.4, crankshaft => 0.4, slithering => 0.1, }, ); print $lp->run; print Dumper $lp->result;
This module is an experimental implementation of the lattice model for protein tertiary structure prediction. Positions of amino acids are mapped to discrete coordinates. With the genetic algorithm backend, structures are mutated and those with lower energies will be picked up for next round of mutation.
There are four supported mutation strategies. End Rotation, Kink Jump, Crankshaft, and Slithering Snake.
Then, follow the 2D-graphic illustrations of these operations.
o
|
=========> |
|
o-----o-----o o-----o
o o-----o | | | =========> | | | o-----o-----o o-----o
o-----o
| |
| |
=========> | |
o o-----o o o-----o
\ \
\ \
\ \
o-----o
o-----o-----o o-----o
| |
| |
| ==========> |
o O <- The head o o-----O
| | | |
| | | |
| | | |
o-----o o-----o
The constructor takes the following parameters
The protein sequence. Case-insensitive.
The number of generations will be performed. Defaults to 15.
The population size of a generation. Defaults to 20.
The number of protein folding configurations will be carried to next cycle. Defaults to 10, and it should not be greater than popsize.
The distribution of mutation probabilities. The Default setting is
mutdist => {
end_rotation => 0.25,
kink_jump => 0.25,
crankshaft => 0.25,
slithering => 0.25,
},
And they must sum to 1.
Starts the whole process.
Returns the predicted result with coordinates and energies.
The method to calculate energy is: First, setting it to zero. For each hydrophobic amino acid, if there's another hydrophobic amino acid found around it, then the energy decreases by 1.
MOLECULAR MODELLING, principles and applications by Andrew R. Leach.
xern <xern@cpan.org>
This module is free software; you can redistribute it or modify it under the same terms as Perl itself.