libpappsomspp
Library for mass spectrometry
msrundatasettreenode.h
Go to the documentation of this file.
1// GPL 3+
2// Filippo Rusconi
3
4#pragma once
5
6/////////////////////// StdLib includes
7#include <map>
8#include <limits>
9
10
11/////////////////////// Qt includes
12
13
14/////////////////////// pappsomspp includes
15
16
17/////////////////////// Local includes
18#include "../massspectrum/qualifiedmassspectrum.h"
19#include "../precision.h"
21#include "../exportinmportconfig.h"
22
23
24namespace pappso
25{
26
27class MsRunDataSetTreeNode;
28
29typedef std::shared_ptr<MsRunDataSetTreeNode> MsRunDataSetTreeNodeSPtr;
30typedef std::shared_ptr<const MsRunDataSetTreeNode> MsRunDataSetTreeNodeCstSPtr;
31
33{
34 friend class MsRunDataSetTree;
35
36 public:
39
41 MsRunDataSetTreeNode *parent_p = nullptr);
42
43 virtual ~MsRunDataSetTreeNode();
44
45 MsRunDataSetTreeNode &operator=(const MsRunDataSetTreeNode &other);
46
47 void setQualifiedMassSpectrum(
48 QualifiedMassSpectrumCstSPtr qualified_mass_spectrum_csp);
49 QualifiedMassSpectrumCstSPtr getQualifiedMassSpectrum() const;
50
51 void setParent(MsRunDataSetTreeNode *parent);
52 MsRunDataSetTreeNode *getParent() const;
53 bool hasParent() const;
54
55 void size(std::size_t &cumulative_node_count) const;
56
57 MsRunDataSetTreeNode *findNode(std::size_t spectrum_index);
59 findNode(QualifiedMassSpectrumCstSPtr mass_spectrum_csp);
60
61 void flattenedView(std::vector<MsRunDataSetTreeNode *> &nodes,
62 bool with_descendants = false);
63 void flattenedViewChildrenOnly(std::vector<MsRunDataSetTreeNode *> &nodes,
64 bool with_descendants = false);
65
66 void flattenedViewMsLevelNodes(std::size_t ms_level,
67 std::size_t depth,
68 std::vector<MsRunDataSetTreeNode *> &nodes,
69 bool with_descendants = false);
70
71 std::vector<MsRunDataSetTreeNode *>
72 productNodesByPrecursorMz(pappso_double precursor_mz,
73 PrecisionPtr precision_ptr,
74 std::vector<MsRunDataSetTreeNode *> &nodes);
75
76
77 std::vector<MsRunDataSetTreeNode *>
78 precursorIonNodesByPrecursorMz(pappso_double precursor_mz,
79 PrecisionPtr precision_ptr,
80 std::vector<MsRunDataSetTreeNode *> &nodes);
81
82
83 void accept(MsRunDataSetTreeNodeVisitorInterface &visitor);
84
85 // Utility functions.
86 std::size_t depth(std::size_t depth) const;
87
88 QString toString(bool with_data = false) const;
89
90 private:
91 QualifiedMassSpectrumCstSPtr mcsp_massSpectrum = nullptr;
92
93 MsRunDataSetTreeNode *mp_parent = nullptr;
94
95 std::vector<MsRunDataSetTreeNode *> m_children;
96};
97
98} // namespace pappso
std::vector< MsRunDataSetTreeNode * > m_children
#define PMSPP_LIB_DECL
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
Definition: aa.cpp:39
double pappso_double
A type definition for doubles.
Definition: types.h:49
std::shared_ptr< const QualifiedMassSpectrum > QualifiedMassSpectrumCstSPtr
std::shared_ptr< const MsRunDataSetTreeNode > MsRunDataSetTreeNodeCstSPtr
std::shared_ptr< MsRunDataSetTreeNode > MsRunDataSetTreeNodeSPtr