yat/utility/mNeedlemanWunsch.h

Code
Comments
Other
Rev Date Author Line
4340 16 Apr 23 peter 1 #ifndef _theplu_yat_utility_mneedleman_wunsch_
4340 16 Apr 23 peter 2 #define _theplu_yat_utility_mneedleman_wunsch_
4340 16 Apr 23 peter 3 // $Id$
4340 16 Apr 23 peter 4
4346 24 Apr 23 peter 5 /*
4346 24 Apr 23 peter 6   Copyright (C) 2023 Peter Johansson
4346 24 Apr 23 peter 7
4346 24 Apr 23 peter 8   This file is part of the yat library, https://dev.thep.lu.se/yat
4346 24 Apr 23 peter 9
4346 24 Apr 23 peter 10   The yat library is free software; you can redistribute it and/or
4346 24 Apr 23 peter 11   modify it under the terms of the GNU General Public License as
4346 24 Apr 23 peter 12   published by the Free Software Foundation; either version 3 of the
4346 24 Apr 23 peter 13   License, or (at your option) any later version.
4346 24 Apr 23 peter 14
4346 24 Apr 23 peter 15   The yat library is distributed in the hope that it will be useful,
4346 24 Apr 23 peter 16   but WITHOUT ANY WARRANTY; without even the implied warranty of
4346 24 Apr 23 peter 17   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
4346 24 Apr 23 peter 18   General Public License for more details.
4346 24 Apr 23 peter 19
4346 24 Apr 23 peter 20   You should have received a copy of the GNU General Public License
4346 24 Apr 23 peter 21   along with yat. If not, see <https://www.gnu.org/licenses/>.
4346 24 Apr 23 peter 22 */
4346 24 Apr 23 peter 23
4340 16 Apr 23 peter 24 #include "mAligner.h"
4340 16 Apr 23 peter 25
4353 23 Aug 23 peter 26 #include <limits>
4353 23 Aug 23 peter 27
4340 16 Apr 23 peter 28 namespace theplu {
4340 16 Apr 23 peter 29 namespace yat {
4340 16 Apr 23 peter 30 namespace utility {
4340 16 Apr 23 peter 31
4344 17 Apr 23 peter 32   /**
4344 17 Apr 23 peter 33      \since New in yat 0.21
4344 17 Apr 23 peter 34    */
4353 23 Aug 23 peter 35   class mNeedlemanWunsch : public mAligner<mNeedlemanWunsch>
4340 16 Apr 23 peter 36   {
4340 16 Apr 23 peter 37   public:
4344 17 Apr 23 peter 38     /**
4344 17 Apr 23 peter 39        Equivalent with mNeedlemanWunsch(gap, open_gap, gap, open_gap)
4344 17 Apr 23 peter 40      */
4340 16 Apr 23 peter 41     mNeedlemanWunsch(double gap, double open_gap);
4344 17 Apr 23 peter 42
4344 17 Apr 23 peter 43     /**
4344 17 Apr 23 peter 44        \param insertion_penalty penalty extending an insertion one element
4344 17 Apr 23 peter 45
4344 17 Apr 23 peter 46        \param open_insertion_penalty total penalty for an n-element
4344 17 Apr 23 peter 47        insertion is \a open_insertion_penalty + \c n * \a
4344 17 Apr 23 peter 48        insertion_penalty
4344 17 Apr 23 peter 49
4344 17 Apr 23 peter 50        \param deletion_penalty penalty extending an deletion one element
4344 17 Apr 23 peter 51
4344 17 Apr 23 peter 52        \param open_deletion_penalty total penalty for an n-element
4344 17 Apr 23 peter 53        deletion is \a open_deletion_penalty + \c n * \a
4344 17 Apr 23 peter 54        deletion_penalty
4344 17 Apr 23 peter 55      */
4340 16 Apr 23 peter 56     mNeedlemanWunsch(double insertion_penalty,
4340 16 Apr 23 peter 57                      double open_insertion_penalty,
4340 16 Apr 23 peter 58                      double deletion_penalty,
4340 16 Apr 23 peter 59                      double open_deletion_penalty);
4344 17 Apr 23 peter 60
4353 23 Aug 23 peter 61   private:
4353 23 Aug 23 peter 62     friend class mAligner;
4344 17 Apr 23 peter 63
4353 23 Aug 23 peter 64     double init_row(size_t q) const;
4353 23 Aug 23 peter 65     double init_col(size_t r) const;
4353 23 Aug 23 peter 66     double init(size_t r, size_t q) const;
4353 23 Aug 23 peter 67     void update(const std::vector<Alignment>& alignments,size_t r,
4353 23 Aug 23 peter 68                 size_t rsize);
4340 16 Apr 23 peter 69   };
4340 16 Apr 23 peter 70
4340 16 Apr 23 peter 71 }}}
4340 16 Apr 23 peter 72 #endif