source: trunk/src/Alignment.cc @ 183

Last change on this file since 183 was 183, checked in by Jari Häkkinen, 17 years ago

* empty log message *

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 849 bytes
Line 
1// $Id: Alignment.cc 183 2004-10-05 08:22:26Z jari $
2
3#include "Alignment.h"
4#include "matrix.h"
5
6namespace theplu {
7namespace cpptools {
8namespace alignment {
9
10  double NeedlemanWunsch(const gslapi::matrix& dot_matrix,
11                         const double mismatch)
12  {
13    gslapi::matrix s(dot_matrix.rows()+1,dot_matrix.columns()+1);
14    s(0,0)=0;
15    for (size_t i=1; i<s.rows(); i++) 
16      s(i,0)=-i*mismatch;
17    for (size_t i=1; i<s.columns(); i++) 
18      s(0,i)=-i*mismatch;
19
20    for (size_t i=1; i<s.rows(); i++) 
21      for (size_t j=1; j<s.columns(); j++){ 
22        if (s(i-1,j-1) + dot_matrix(i-1,j-1) > s(i-1,j) && 
23            s(i-1,j-1) + dot_matrix(i-1,j-1) > s(i,j-1))
24          s(i,j)=s(i-1,j-1) + dot_matrix(i-1,j-1);
25        else if (s(i-1,j) > s(i,j-1))
26          s(i,j)=s(i-1,j);
27        else
28          s(i,j)=s(i,j-1);
29      }
30    return s(s.rows()-1,s.columns()-1);
31  }
32
33}}} // of namespace alignment namespace cpptools and namespace theplu
Note: See TracBrowser for help on using the repository browser.