libpappsomspp
Library for mass spectrometry
msrundatasettree.h
Go to the documentation of this file.
1 // GPL 3+
2 // Filippo Rusconi
3 
4 #pragma once
5 
6 /////////////////////// StdLib includes
7 
8 
9 /////////////////////// Qt includes
10 
11 
12 /////////////////////// pappsomspp includes
13 
14 
15 /////////////////////// Local includes
17 #include "msrundatasettreenode.h"
18 #include "msrunid.h"
19 #include "../exportinmportconfig.h"
20 
21 
22 namespace pappso
23 {
24 
25 class MsRunDataSetTree;
26 
27 typedef std::shared_ptr<MsRunDataSetTree> MsRunDataSetTreeSPtr;
28 typedef std::shared_ptr<const MsRunDataSetTree> MsRunDataSetTreeCstSPtr;
29 
31 {
32  public:
33  MsRunDataSetTree(MsRunIdCstSPtr ms_run_id_csp);
34  virtual ~MsRunDataSetTree();
35 
37  addMassSpectrum(QualifiedMassSpectrumCstSPtr mass_spectrum);
38 
39  const std::map<std::size_t, MsRunDataSetTreeNode *> &getIndexNodeMap() const;
40  const std::vector<MsRunDataSetTreeNode *> &getRootNodes() const;
41 
42  void accept(MsRunDataSetTreeNodeVisitorInterface &visitor);
43  void accept(MsRunDataSetTreeNodeVisitorInterface &visitor,
44  std::vector<pappso::MsRunDataSetTreeNode *>::const_iterator
45  nodes_begin_iterator,
46  std::vector<pappso::MsRunDataSetTreeNode *>::const_iterator
47  nodes_end_iterator);
48 
50  findNode(QualifiedMassSpectrumCstSPtr mass_spectrum_csp) const;
51  MsRunDataSetTreeNode *findNode(std::size_t spectrum_index) const;
52 
53  std::size_t massSpectrumIndex(const MsRunDataSetTreeNode *node) const;
54  std::size_t massSpectrumIndex(
55  QualifiedMassSpectrumCstSPtr qualified_mass_spectrum_csp) const;
56 
57  /****************** Flattened views ******************/
58 
59  std::vector<MsRunDataSetTreeNode *> flattenedView();
60 
61  std::vector<MsRunDataSetTreeNode *>
62  flattenedViewMsLevel(std::size_t ms_level, bool with_descendants = false);
63 
64  /****************** Flattened views ******************/
65 
67  precursorNodeByProductSpectrumIndex(std::size_t product_spectrum_index);
68 
69  std::vector<MsRunDataSetTreeNode *>
70  productNodesByPrecursorSpectrumIndex(std::size_t precursor_spectrum_index);
71 
72  std::vector<MsRunDataSetTreeNode *>
73  precursorNodesByPrecursorMz(pappso_double mz, PrecisionPtr precision_ptr);
74 
75  // Utility functions.
76  std::size_t depth() const;
77 
78  // The tree size as computed by going down the tree nodes.
79  std::size_t size() const;
80 
81  // The size of the flat index/node map as filled in during file loading.
82  std::size_t indexNodeMapSize() const;
83 
84  std::size_t getSpectrumCount() const;
85 
86  using NodeVector = std::vector<MsRunDataSetTreeNode *>;
87  using QualMassSpectraVector = std::vector<QualifiedMassSpectrumCstSPtr>;
88 
89  using DoubleNodeVectorMap = std::map<double, NodeVector>;
90 
91  std::size_t addDataSetTreeNodesInsideDtRtRange(double start,
92  double end,
93  NodeVector &nodes,
94  DataKind data_kind) const;
95 
96  std::size_t removeDataSetTreeNodesOutsideDtRtRange(double start,
97  double end,
98  NodeVector &nodes,
99  DataKind data_kind) const;
100 
101  std::size_t
102  addDataSetQualMassSpectraInsideDtRtRange(double start,
103  double end,
104  QualMassSpectraVector &mass_spectra,
105  DataKind data_kind) const;
106 
107  std::size_t removeDataSetQualMassSpectraOutsideDtRtRange(
108  double start,
109  double end,
110  QualMassSpectraVector &mass_spectra,
111  DataKind data_kind) const;
112 
113  private:
115 
116  std::size_t m_spectrumCount = std::numeric_limits<std::size_t>::min();
117 
118  std::vector<MsRunDataSetTreeNode *> m_rootNodes;
119  std::map<std::size_t, MsRunDataSetTreeNode *> m_indexNodeMap;
120 
121  // We want to be able to list easily all the mass spectra that were acquired
122  // at any given RT or DT.
123 
126 
127  bool documentNodeInDtRtMap(double time,
128  MsRunDataSetTreeNode *node_p,
129  DataKind data_kind);
130 
131  // These addMassSpectrum functions are for forensic science.
133  addMassSpectrum(QualifiedMassSpectrumCstSPtr mass_spectrum,
134  MsRunDataSetTreeNode *parent);
135 
137  addMassSpectrum(QualifiedMassSpectrumCstSPtr mass_spectrum,
138  std::size_t precursor_spectrum_index);
139 };
140 
141 } // namespace pappso
pappso::pappso_double
double pappso_double
A type definition for doubles.
Definition: types.h:69
msrundatasettreenode.h
PMSPP_LIB_DECL
#define PMSPP_LIB_DECL
Definition: exportinmportconfig.h:14
pappso
tries to keep as much as possible monoisotopes, removing any possible C13 peaks
Definition: aa.cpp:39
pappso::MsRunDataSetTreeNode
Definition: msrundatasettreenode.h:33
pappso::DataKind
DataKind
Definition: types.h:192
pappso::MsRunDataSetTree::m_rootNodes
std::vector< MsRunDataSetTreeNode * > m_rootNodes
Definition: msrundatasettree.h:118
pappso::MsRunIdCstSPtr
std::shared_ptr< const MsRunId > MsRunIdCstSPtr
Definition: msrunid.h:65
pappso::MsRunDataSetTree::NodeVector
std::vector< MsRunDataSetTreeNode * > NodeVector
Definition: msrundatasettree.h:86
pappso::MsRunDataSetTree::QualMassSpectraVector
std::vector< QualifiedMassSpectrumCstSPtr > QualMassSpectraVector
Definition: msrundatasettree.h:87
pappso::MsRunDataSetTreeCstSPtr
std::shared_ptr< const MsRunDataSetTree > MsRunDataSetTreeCstSPtr
Definition: msrundatasettree.h:28
pappso::MsRunDataSetTree::DoubleNodeVectorMap
std::map< double, NodeVector > DoubleNodeVectorMap
Definition: msrundatasettree.h:89
pappso::MsRunDataSetTreeSPtr
std::shared_ptr< MsRunDataSetTree > MsRunDataSetTreeSPtr
Definition: msrundatasettree.h:25
pappso::MsRunDataSetTree::mcsp_msRunId
MsRunIdCstSPtr mcsp_msRunId
Definition: msrundatasettree.h:114
pappso::QualifiedMassSpectrumCstSPtr
std::shared_ptr< const QualifiedMassSpectrum > QualifiedMassSpectrumCstSPtr
Definition: qualifiedmassspectrum.h:63
pappso::MsRunDataSetTreeNodeVisitorInterface
Definition: msrundatasettreevisitor.h:24
msrunid.h
pappso::PrecisionBase
Definition: precision.h:65
pappso::MsRunDataSetTree
Definition: msrundatasettree.h:31
pappso::PrecisionUnit::mz
@ mz
pappso::MsRunDataSetTree::m_dtDoubleNodeVectorMap
DoubleNodeVectorMap m_dtDoubleNodeVectorMap
Definition: msrundatasettree.h:124
pappso::MsRunDataSetTree::m_indexNodeMap
std::map< std::size_t, MsRunDataSetTreeNode * > m_indexNodeMap
Definition: msrundatasettree.h:119
pappso::MsRunDataSetTree::m_rtDoubleNodeVectorMap
DoubleNodeVectorMap m_rtDoubleNodeVectorMap
Definition: msrundatasettree.h:125
msrundatasettreevisitor.h