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"
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 removeDataSetTreeNodesOutsideDtRtRange(double start,
95 double end,
96 NodeVector &nodes,
97 DataKind data_kind) const;
98
99 std::size_t
100 addDataSetQualMassSpectraInsideDtRtRange(double start,
101 double end,
102 QualMassSpectraVector &mass_spectra,
103 DataKind data_kind) const;
104
105 std::size_t removeDataSetQualMassSpectraOutsideDtRtRange(
106 double start,
107 double end,
108 QualMassSpectraVector &mass_spectra,
109 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 DataKind data_kind);
131
132 // These addMassSpectrum functions are for forensic science.
134 addMassSpectrum(QualifiedMassSpectrumCstSPtr mass_spectrum,
135 MsRunDataSetTreeNode *parent);
136
138 addMassSpectrum(QualifiedMassSpectrumCstSPtr mass_spectrum,
139 std::size_t precursor_spectrum_index);
140};
141
142} // 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
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:46
double pappso_double
A type definition for doubles.
Definition types.h:50
std::shared_ptr< const QualifiedMassSpectrum > QualifiedMassSpectrumCstSPtr
DataKind
Definition types.h:211