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/////////////////////// Local includes
15#include "msrunid.h"
16#include "../exportinmportconfig.h"
17#include "../processing/combiners/selectionpolygon.h"
18
19
20namespace pappso
21{
22
23class MsRunDataSetTree;
24
25typedef std::shared_ptr<MsRunDataSetTree> MsRunDataSetTreeSPtr;
26typedef std::shared_ptr<const MsRunDataSetTree> MsRunDataSetTreeCstSPtr;
27
29{
30 public:
31 MsRunDataSetTree(MsRunIdCstSPtr ms_run_id_csp);
32 virtual ~MsRunDataSetTree();
33
35 addMassSpectrum(QualifiedMassSpectrumCstSPtr mass_spectrum);
36
37 const std::map<std::size_t, MsRunDataSetTreeNode *> &getIndexNodeMap() const;
38 const std::vector<MsRunDataSetTreeNode *> &getRootNodes() const;
39
40 void accept(MsRunDataSetTreeNodeVisitorInterface &visitor);
41 void accept(MsRunDataSetTreeNodeVisitorInterface &visitor,
42 std::vector<pappso::MsRunDataSetTreeNode *>::const_iterator
43 nodes_begin_iterator,
44 std::vector<pappso::MsRunDataSetTreeNode *>::const_iterator
45 nodes_end_iterator);
46
48 findNode(QualifiedMassSpectrumCstSPtr mass_spectrum_csp) const;
49 MsRunDataSetTreeNode *findNode(std::size_t spectrum_index) const;
50
51 std::size_t massSpectrumIndex(const MsRunDataSetTreeNode *node) const;
52 std::size_t massSpectrumIndex(
53 QualifiedMassSpectrumCstSPtr qualified_mass_spectrum_csp) const;
54
55 /****************** Flattened views ******************/
56
57 std::vector<MsRunDataSetTreeNode *> flattenedView();
58
59 std::vector<MsRunDataSetTreeNode *>
60 flattenedViewMsLevel(std::size_t ms_level, bool with_descendants = false);
61
62 /****************** Flattened views ******************/
63
65 precursorNodeByProductSpectrumIndex(std::size_t product_spectrum_index);
66
67 std::vector<MsRunDataSetTreeNode *>
68 productNodesByPrecursorSpectrumIndex(std::size_t precursor_spectrum_index);
69
70 std::vector<MsRunDataSetTreeNode *>
71 precursorNodesByPrecursorMz(pappso_double mz, PrecisionPtr precision_ptr);
72
73 // Utility functions.
74 std::size_t depth() const;
75
76 // The tree size as computed by going down the tree nodes.
77 std::size_t size() const;
78
79 // The size of the flat index/node map as filled in during file loading.
80 std::size_t indexNodeMapSize() const;
81
82 std::size_t getSpectrumCount() const;
83
84 using NodeVector = std::vector<MsRunDataSetTreeNode *>;
85 using QualMassSpectraVector = std::vector<QualifiedMassSpectrumCstSPtr>;
86
87 using DoubleNodeVectorMap = std::map<double, NodeVector>;
88
89 std::size_t addDataSetTreeNodesInsideDtRtRange(double start,
90 double end,
91 NodeVector &nodes,
92 DataKind data_kind) const;
93
94 std::size_t addDataSetTreeNodesInsideDtRtPolygon(const SelectionPolygon &selectionPolygon,
95 NodeVector &nodes,
96 DataKind data_kind) const;
97
98 std::size_t removeDataSetTreeNodesOutsideDtRtRange(double start,
99 double end,
100 NodeVector &nodes,
101 DataKind data_kind) const;
102
103 std::size_t
104 addDataSetQualMassSpectraInsideDtRtRange(double start,
105 double end,
106 QualMassSpectraVector &mass_spectra,
107 DataKind data_kind) const;
108
109 std::size_t removeDataSetQualMassSpectraOutsideDtRtRange(
110 double start,
111 double end,
112 QualMassSpectraVector &mass_spectra,
113 DataKind data_kind) const;
114
115 private:
117
118 std::size_t m_spectrumCount = std::numeric_limits<std::size_t>::min();
119
120 std::vector<MsRunDataSetTreeNode *> m_rootNodes;
121 std::map<std::size_t, MsRunDataSetTreeNode *> m_indexNodeMap;
122
123 // We want to be able to list easily all the mass spectra that were acquired
124 // at any given RT or DT.
125
128
129 bool documentNodeInDtRtMap(double time,
130 MsRunDataSetTreeNode *node_p,
131 DataKind data_kind);
132
133 // These addMassSpectrum functions are for forensic science.
135 addMassSpectrum(QualifiedMassSpectrumCstSPtr mass_spectrum,
136 MsRunDataSetTreeNode *parent);
137
139 addMassSpectrum(QualifiedMassSpectrumCstSPtr mass_spectrum,
140 std::size_t precursor_spectrum_index);
141};
142
143} // namespace pappso
std::vector< QualifiedMassSpectrumCstSPtr > QualMassSpectraVector
std::map< std::size_t, MsRunDataSetTreeNode * > m_indexNodeMap
std::vector< MsRunDataSetTreeNode * > m_rootNodes
std::map< double, NodeVector > DoubleNodeVectorMap
std::vector< MsRunDataSetTreeNode * > NodeVector
std::size_t addDataSetTreeNodesInsideDtRtPolygon(const SelectionPolygon &selectionPolygon, NodeVector &nodes, DataKind data_kind) const
DoubleNodeVectorMap m_rtDoubleNodeVectorMap
DoubleNodeVectorMap m_dtDoubleNodeVectorMap
#define PMSPP_LIB_DECL
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
Definition: aa.cpp:39
std::shared_ptr< MsRunDataSetTree > MsRunDataSetTreeSPtr
std::shared_ptr< const MsRunDataSetTree > MsRunDataSetTreeCstSPtr
std::shared_ptr< const MsRunId > MsRunIdCstSPtr
Definition: msrunid.h:45
double pappso_double
A type definition for doubles.
Definition: types.h:48
std::shared_ptr< const QualifiedMassSpectrum > QualifiedMassSpectrumCstSPtr
DataKind
Definition: types.h:171