Changeset 2792


Ignore:
Timestamp:
Jul 27, 2012, 6:33:02 AM (9 years ago)
Author:
Peter
Message:

introduced parameter mismatch in ssearch

Location:
trunk/yat/utility
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/yat/utility/Alignment.cc

    r2119 r2792  
    66  Copyright (C) 2006 Jari Häkkinen
    77  Copyright (C) 2007, 2008 Jari Häkkinen, Peter Johansson
    8   Copyright (C) 2009 Peter Johansson
     8  Copyright (C) 2009, 2012 Peter Johansson
    99
    1010  This file is part of the yat library, http://dev.thep.lu.se/yat
     
    4141  {
    4242    utility::Matrix m(s.rows()+1,s.columns()+1);
    43     // Init upper and left border of matrix 
    44     for (size_t i=1; i<m.rows(); i++) 
     43    // Init upper and left border of matrix
     44    for (size_t i=1; i<m.rows(); i++)
    4545      m(i,0)=-i*gap;
    46     for (size_t i=1; i<m.columns(); i++) 
     46    for (size_t i=1; i<m.columns(); i++)
    4747      m(0,i)=-i*gap;
    4848    // choice(i,j) tells us how we came to s(i,j). 1 is diagonal, 2
     
    5151
    5252    // Calculating NeedlemanWunsch matrix
    53     for (size_t i=1; i<m.rows(); i++) 
    54       for (size_t j=1; j<m.columns(); j++){ 
    55         if (m(i-1,j-1) + s(i-1,j-1) > m(i-1,j)-gap && 
     53    for (size_t i=1; i<m.rows(); i++)
     54      for (size_t j=1; j<m.columns(); j++){
     55        if (m(i-1,j-1) + s(i-1,j-1) > m(i-1,j)-gap &&
    5656            m(i-1,j-1) + s(i-1,j-1) > m(i,j-1)-gap){
    5757          m(i,j)=m(i-1,j-1) + s(i-1,j-1);
     
    8787
    8888
    89   double ssearch(std::string first, std::string second, double gap, 
    90                  double open_gap)
     89  double ssearch(std::string first, std::string second, double gap,
     90                 double open_gap, double mismatch)
    9191  {
    9292    Matrix m;
     
    9595    for (size_t i=0; i<first.size(); ++i)
    9696      for (size_t j=0; j<second.size(); ++j)
    97         m(i,j) = (first[i]==second[j] ? 1 : 0);
     97        m(i,j) = (first[i]==second[j] ? 1 : -mismatch);
    9898    return SmithWaterman(m, gap, open_gap);
    9999  }
     
    108108    Matrix m(s.rows()+1,s.columns()+1);
    109109    Matrix array(m);
    110     for (size_t i=1; i<m.rows(); ++i) 
    111       for (size_t j=1; j<m.columns(); ++j){ 
     110    for (size_t i=1; i<m.rows(); ++i)
     111      for (size_t j=1; j<m.columns(); ++j){
    112112        m(i,j)=0;
    113113        array(i,j) = none;
     
    115115          m(i,j) = m(i-1,j-1)+s(i-1,j-1);
    116116          array(i,j) = diagonal;
    117         }         
     117        }
    118118        if (array(i-1,j)==right && m(i-1,j)-gap > m(i,j)){
    119119          m(i,j) = m(i-1,j)-gap;
    120120          array(i,j) = right;
    121         }         
     121        }
    122122        if (array(i-1,j)!=right && m(i-1,j)-gap-open_gap > m(i,j)){
    123123          m(i,j) = m(i-1,j)-gap-open_gap;
    124124          array(i,j) = right;
    125         }         
     125        }
    126126        if (array(i,j-1)==down && m(i,j-1)-gap > m(i,j)){
    127127          m(i,j) = m(i,j-1)-gap;
    128128          array(i,j) = down;
    129         }         
     129        }
    130130        if (array(i,j-1)!=down && m(i,j-1)-gap-open_gap > m(i,j)){
    131131          m(i,j) = m(i,j-1)-gap-open_gap;
    132132          array(i,j) = down;
    133         }         
     133        }
    134134      }
    135135    return max(m);
  • trunk/yat/utility/Alignment.h

    r2738 r2792  
    9292     space) and BLAST or FASTA is preferable.
    9393
    94      @return score
     94     Function calculates a score matrix with elements \f$ s_{ij} \f$
     95     equal 1.0 when first[i] == second[j] and minus \a mismatch
     96     otherwise.
     97
     98     @return SmithWaterman score
     99
     100     \since parameter mismatch available since yat 0.9
    95101   */
    96102  double ssearch(std::string first, std::string second, double gap,
    97                  double open_gap);
     103                 double open_gap, double mismatch=0.0);
    98104
    99105}}} // of namespace utility, yat, and theplu
Note: See TracChangeset for help on using the changeset viewer.