yat/utility/mSemiLocalAligner.cc

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