libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
scenario.cpp
Go to the documentation of this file.
1/**
2 * \file pappsomspp/processing/specpeptidoms/scenario.cpp
3 * \date 24/03/2025
4 * \author Aurélien Berthier
5 * \brief backtracking of 2nd alignment
6 *
7 * C++ implementation of the SpecPeptidOMS algorithm described in :
8 * (1) Benoist, É.; Jean, G.; Rogniaux, H.; Fertin, G.; Tessier, D. SpecPeptidOMS Directly and
9 * Rapidly Aligns Mass Spectra on Whole Proteomes and Identifies Peptides That Are Not Necessarily
10 * Tryptic: Implications for Peptidomics. J. Proteome Res. 2025.
11 * https://doi.org/10.1021/acs.jproteome.4c00870.
12 */
13
14/*
15 * Copyright (c) 2025 Aurélien Berthier
16 * <aurelien.berthier@ls2n.fr>
17 *
18 * This program is free software: you can redistribute it and/or modify
19 * it under the terms of the GNU General Public License as published by
20 * the Free Software Foundation, either version 3 of the License, or
21 * (at your option) any later version.
22 *
23 * This program is distributed in the hope that it will be useful,
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 * GNU General Public License for more details.
27 *
28 * You should have received a copy of the GNU General Public License
29 * along with this program. If not, see <http://www.gnu.org/licenses/>.
30 */
31
32#include "scenario.h"
33#include <QDebug>
34
35// TODO : reserve space for origin matrix
36// Scenario::Scenario()
37// {
38// }
39
40void
42 std::size_t current_column,
43 std::size_t previous_row,
44 std::size_t previous_column,
45 int score,
46 AlignType alignment_type)
47{
48 if(score > m_best_alignment.second)
49 {
50 m_best_alignment = {{current_row, current_column, alignment_type}, score};
51 }
52 m_origin_matrix.at(current_row).at(current_column) = {
53 previous_row, previous_column, alignment_type};
54}
55
59
63
64void
65pappso::specpeptidoms::Scenario::reserve(std::size_t n_rows, std::size_t n_columns)
66{
67 m_origin_matrix = std::vector<std::vector<ScenarioCell>>(
68 n_rows, std::vector<ScenarioCell>(n_columns, {0, 0, AlignType::init}));
69}
70
71std::pair<std::vector<pappso::specpeptidoms::ScenarioCell>, int>
73{
74 std::pair<std::vector<ScenarioCell>, int> best_alignment;
75 ScenarioCell current_cell = m_best_alignment.first;
76 current_cell.alignment_type = AlignType::init;
77 while(current_cell.previous_column > 0 && current_cell.previous_row > 0)
78 {
79 best_alignment.first.push_back(current_cell);
80 current_cell = m_origin_matrix.at(current_cell.previous_row).at(current_cell.previous_column);
81 }
82 best_alignment.first.push_back(current_cell);
83 best_alignment.second = m_best_alignment.second;
84 return best_alignment;
85}
86
87int
92
93void
void saveOrigin(std::size_t current_row, std::size_t current_column, std::size_t previous_row, std::size_t previous_column, int score, AlignType alignment_type)
Stores the origin (cell location and alignment type) of the provided cell in the backtracking matrix.
Definition scenario.cpp:41
std::pair< ScenarioCell, int > m_best_alignment
Definition scenario.h:96
std::vector< std::vector< ScenarioCell > > m_origin_matrix
Definition scenario.h:95
void reserve(std::size_t n_rows, std::size_t n_columns)
Allocate new storage to the backtracking matrix if needed.
Definition scenario.cpp:65
std::pair< std::vector< ScenarioCell >, int > getBestAlignment() const
Returns the scenario cells corresponding to the best alignment and the best alignment's score.
Definition scenario.cpp:72