libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
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"
18
19
20namespace pappso
21{
22
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
36
37 const std::map<std::size_t, MsRunDataSetTreeNode *> &getIndexNodeMap() const;
38 const std::vector<MsRunDataSetTreeNode *> &getRootNodes() const;
39
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 *>
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 addDataSetTreeNodesInsideDtOrRtRange(double start,
90 double end,
91 NodeVector &nodes,
92 Enums::DataKind data_kind) const;
93
94 std::size_t removeDataSetTreeNodesOutsideDtOrRtRange(double start,
95 double end,
96 NodeVector &nodes,
97 Enums::DataKind data_kind) const;
98
99 std::size_t
101 double end,
102 QualMassSpectraVector &mass_spectra,
103 Enums::DataKind data_kind) const;
104
106 double start,
107 double end,
108 QualMassSpectraVector &mass_spectra,
109 Enums::DataKind data_kind) const;
110
111 private:
113
114 std::size_t m_spectrumCount = std::numeric_limits<std::size_t>::min();
115
116 std::vector<MsRunDataSetTreeNode *> m_rootNodes;
117 std::map<std::size_t, MsRunDataSetTreeNode *> m_indexNodeMap;
118
119 // We want to be able to list easily all the mass spectra that were acquired
120 // at any given RT or DT.
121
124
125 // Beware for data_kind == ion mobility to use the right
126 // ion mobility value: 1/K0 for Bruker timsTOF data and
127 // m_dt for Agilent and Synapt data.
128 bool documentNodeInDtRtMap(double time,
129 MsRunDataSetTreeNode *node_p,
130 Enums::DataKind data_kind);
131
132 // These addMassSpectrum functions are for forensic science.
135 MsRunDataSetTreeNode *parent);
136
139 std::size_t precursor_spectrum_index);
140};
141
142} // namespace pappso
143
MsRunDataSetTreeNode * findNode(QualifiedMassSpectrumCstSPtr mass_spectrum_csp) const
const std::vector< MsRunDataSetTreeNode * > & getRootNodes() const
std::vector< QualifiedMassSpectrumCstSPtr > QualMassSpectraVector
std::vector< MsRunDataSetTreeNode * > flattenedViewMsLevel(std::size_t ms_level, bool with_descendants=false)
std::size_t indexNodeMapSize() const
void accept(MsRunDataSetTreeNodeVisitorInterface &visitor)
MsRunDataSetTree(MsRunIdCstSPtr ms_run_id_csp)
std::vector< MsRunDataSetTreeNode * > flattenedView()
std::size_t addDataSetQualMassSpectraInsideDtOrRtRange(double start, double end, QualMassSpectraVector &mass_spectra, Enums::DataKind data_kind) const
bool documentNodeInDtRtMap(double time, MsRunDataSetTreeNode *node_p, Enums::DataKind data_kind)
std::size_t removeDataSetTreeNodesOutsideDtOrRtRange(double start, double end, NodeVector &nodes, Enums::DataKind data_kind) const
std::size_t getSpectrumCount() const
std::map< std::size_t, MsRunDataSetTreeNode * > m_indexNodeMap
std::vector< MsRunDataSetTreeNode * > m_rootNodes
std::map< double, NodeVector > DoubleNodeVectorMap
std::vector< MsRunDataSetTreeNode * > precursorNodesByPrecursorMz(pappso_double mz, PrecisionPtr precision_ptr)
std::vector< MsRunDataSetTreeNode * > NodeVector
MsRunDataSetTreeNode * precursorNodeByProductSpectrumIndex(std::size_t product_spectrum_index)
const std::map< std::size_t, MsRunDataSetTreeNode * > & getIndexNodeMap() const
MsRunDataSetTreeNode * addMassSpectrum(QualifiedMassSpectrumCstSPtr mass_spectrum)
std::size_t massSpectrumIndex(const MsRunDataSetTreeNode *node) const
DoubleNodeVectorMap m_rtDoubleNodeVectorMap
std::vector< MsRunDataSetTreeNode * > productNodesByPrecursorSpectrumIndex(std::size_t precursor_spectrum_index)
DoubleNodeVectorMap m_dtDoubleNodeVectorMap
std::size_t addDataSetTreeNodesInsideDtOrRtRange(double start, double end, NodeVector &nodes, Enums::DataKind data_kind) const
std::size_t removeDataSetQualMassSpectraOutsideDtOrRtRange(double start, double end, QualMassSpectraVector &mass_spectra, Enums::DataKind data_kind) const
#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:46
double pappso_double
A type definition for doubles.
Definition types.h:61
std::shared_ptr< const QualifiedMassSpectrum > QualifiedMassSpectrumCstSPtr
const PrecisionBase * PrecisionPtr
Definition precision.h:122