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 
24 namespace pappso
25 {
26 
27 class MsRunDataSetTreeNode;
28 
29 typedef std::shared_ptr<MsRunDataSetTreeNode> MsRunDataSetTreeNodeSPtr;
30 typedef 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() 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