123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- #!/usr/bin/perl -w
- package singleRankingNet;
- require Exporter;
- use strict;
- use PDBResolution;
- use utilities;
- {
- my $nhidden = 5;
- my @bias = (2.849843e+00,2.111072e+00,-1.083691e+01,-4.135554e+00,-4.120570e-01,2.0);
- my @weights = ( -3.129355e-04, -1.589077e-02, -2.161848e+00 , 2.226650e-01,
- -4.868254e-01, 4.035841e-03, 8.064615e-02, -1.659731e+01,
- 8.745763e-01, -1.147158e+00, 4.432926e-03 , 4.485627e-02,
- 1.612531e+01, -6.115551e+00, -3.739336e+00 , 8.667732e-02,
- 2.469719e-01, 3.679384e+00 ,-8.063131e-01, -4.584766e+00 ,
- -8.657036e-01, -3.492344e-01 ,-1.328472e-01 ,-5.744038e-01 , 3.360329e-02,
- -7.531151e+00, -9.724150e-01 ,-2.660009e+00, 7.692027e-01,
- 1.438417e+00);
- sub _get_nhidden() {
- $nhidden;
- }
- sub _get_bias {
- my ($self, $i) = @_;
- $bias[$i];
- }
- sub _get_weight {
- my ($self, $i) = @_;
- $weights[$i];
- }
- sub _init {
- my ($self) = @_;
- }
- }
- sub new {
- my ($caller) = @_;
- my $caller_is_obj = ref($caller);
- my $class = $caller_is_obj || $caller;
- no strict "refs";
- my $self = bless {}, $class;
-
- return $self;
- }
- sub read_from_file {
- my ($self, $paramFile) = @_;
- ## TODO
- }
- sub predict {
- my $self = shift;
- my $template = shift;
- my $queryLength = shift;
- my $TMscore = 0;
- my $templateName = $template->get_Hit();
- print "templateName=$templateName\n";
- print "score=" . $template->get_Score() . "\n";
- for (my $unit = 0; $unit<$self->_get_nhidden(); $unit++) {
- #calculate input of hidden unit (sum of all inputs * weights)
- my $input = ($template->get_Score()) * $self->_get_weight(0 + $unit * 3) +
- $template->get_SS()/$queryLength * $self->_get_weight(1 + $unit * 3) +
- $template->get_SumProbL() * $self->_get_weight(2 + $unit * 3);
- #calculate output of hidden unit
- my $output = 1.0 / (1.0 + exp(-($input + $self->_get_bias($unit))));
- $TMscore += $output * $self->_get_weight( $self->_get_nhidden()*3 + $unit);
- }
- $TMscore = sprintf("%.6f", $TMscore);
- #$template->set_predTM($TMscore);
- print "predict->$TMscore\n";
- return $TMscore;
- }
- sub predict_TMscore {
- my $self = shift;
- my $template = shift;
- my $QNeff = shift;
- $self->_init();
- my $TMscore = 0;
- my $numFeat = 5;
- my $templateName = $template->get_Hit();
- print "templateName=$templateName\n";
- print "score=" . $template->get_Score() . "\n";
- print "ssScore=" . $template->get_SS() . "\n";
- print "sumProbsL=" . $template->get_SumProbL() . "\n";
- print "sim=" . $template->get_Sim() . "\n";
- print "col=" . $template->get_Cols() . "\n";
- print "QNeff=" . $QNeff . "\n";
- my $unit = 0;
- for ($unit = 0; $unit<$self->_get_nhidden(); $unit++) {
- #calculate input of hidden unit (sum of all inputs * weights)
- my $input = ($template->get_Score()) * $self->_get_weight(0 + $unit * $numFeat) +
- $template->get_SS() * $self->_get_weight(1 + $unit * $numFeat) +
- $template->get_SumProbL() * $self->_get_weight(2 + $unit * $numFeat) +
- $template->get_Score()/$template->get_Cols() * $self->_get_weight(3 + $unit * $numFeat) +
- $template->get_Sim() * $self->_get_weight(4 + $unit*$numFeat);
- #calculate output of hidden unit
- my $output = 1.0 / (1.0 + exp(-($input + $self->_get_bias($unit))));
- $TMscore += $output * $self->_get_weight( $self->_get_nhidden()*$numFeat + $unit);
- }
- $TMscore += $self->_get_bias($unit);
- $TMscore = &sigmoid($TMscore);
- $TMscore = sprintf("%.6f", $TMscore);
- print "predict->$TMscore\n";
- return $TMscore;
- }
- 1;
|