libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
pappso::TimsDataFastMap Class Reference

replacement for std::map More...

#include <timsdatafastmap.h>

Classes

struct  TimsDataFastMapElement

Public Member Functions

std::size_t accumulateIntensity (quint32 tofIndex, std::size_t intensity)
 accumulates intesity for the given tof index
std::size_t readIntensity (quint32)
 reads intensity for a tof_index
void downsizeMzRawMap (std::size_t mzindex_merge_window)
 downsize mz resolution to lower the number of real mz computations
void builtInCentroid ()
 simple filter to agregate counts on neigbhor mobility slots (+1)
void removeArtefactualSpike ()
const std::vector< quint32 > & getTofIndexList () const
void clear ()

Static Public Member Functions

static TimsDataFastMapgetTimsDataFastMapInstance ()

Static Public Attributes

static std::map< QThread *, TimsDataFastMapm_preAllocatedFastMapPerThread = {}

Private Member Functions

 TimsDataFastMap ()

Private Attributes

std::vector< quint32 > tofIndexList
std::vector< TimsDataFastMapElementmapTofIndexIntensity

Detailed Description

replacement for std::map

Beware to use it carefully : clear the tofIndexList before using it

Definition at line 45 of file timsdatafastmap.h.

Constructor & Destructor Documentation

◆ TimsDataFastMap()

pappso::TimsDataFastMap::TimsDataFastMap ( )
private

Definition at line 53 of file timsdatafastmap.cpp.

54{
55 // map.resize(500000);
56}

Referenced by getTimsDataFastMapInstance().

Member Function Documentation

◆ accumulateIntensity()

std::size_t pappso::TimsDataFastMap::accumulateIntensity ( quint32 tofIndex,
std::size_t intensity )

accumulates intesity for the given tof index

sets the count value on the first access ( first_access is true) and add the tof index to the tofIndexList then increments it if it is called on the same tof index

Definition at line 59 of file timsdatafastmap.cpp.

60{
61 qDebug();
62 try
63 {
64 TimsDataFastMapElement &map_element = mapTofIndexIntensity.at(key);
65
66 if(map_element.first_access)
67 {
68 map_element.first_access = false;
69 map_element.count = intensity;
70 tofIndexList.push_back(key);
71 }
72 else
73 {
74 map_element.count += intensity;
75 }
76 qDebug();
77 return map_element.count;
78 }
79 catch(std::out_of_range &error)
80 {
81 throw pappso::ExceptionOutOfRange(
82 QObject::tr("out of range exception for tof index %1 ").arg(key));
83 }
84}
std::vector< quint32 > tofIndexList
std::vector< TimsDataFastMapElement > mapTofIndexIntensity

References pappso::TimsDataFastMap::TimsDataFastMapElement::count, pappso::TimsDataFastMap::TimsDataFastMapElement::first_access, mapTofIndexIntensity, and tofIndexList.

Referenced by builtInCentroid(), pappso::TimsFrame::cumulateScan(), pappso::TimsFrameType1::cumulateScan(), pappso::TimsFrame::cumulateScan2(), pappso::TimsFrameType1::cumulateScan2(), and downsizeMzRawMap().

◆ builtInCentroid()

void pappso::TimsDataFastMap::builtInCentroid ( )

simple filter to agregate counts on neigbhor mobility slots (+1)

the map is modified in place

Definition at line 117 of file timsdatafastmap.cpp.

118{
119 qDebug() << "tofIndexList.size()=" << tofIndexList.size();
120 if(tofIndexList.size() > 2)
121 {
122 std::vector<quint32> tof_index_list_tmp = tofIndexList;
123 std::sort(tof_index_list_tmp.begin(), tof_index_list_tmp.end());
124
125 tofIndexList.clear();
126
127 quint32 previous_tof_index = tof_index_list_tmp[0];
128 std::size_t previous_intensity = readIntensity(previous_tof_index);
129 for(std::size_t i = 1; i < tof_index_list_tmp.size(); i++)
130 {
131 quint32 tof_index = tof_index_list_tmp[i];
132 if(previous_tof_index == tof_index - 1)
133 {
134 std::size_t intensity = readIntensity(tof_index);
135 if(previous_intensity > intensity)
136 {
137 // flush writing current accumulated intensity
138 accumulateIntensity(previous_tof_index, previous_intensity + intensity);
139 previous_intensity = 0;
140 previous_tof_index = tof_index;
141 }
142 else
143 {
144 // accumulate while intensity increases
145 previous_intensity += intensity;
146 previous_tof_index = tof_index;
147 }
148 }
149 else
150 {
151 // write accumulated intensity :
152 if(previous_intensity > 0)
153 {
154 // flush
155 accumulateIntensity(previous_tof_index, previous_intensity);
156 }
157 previous_tof_index = tof_index;
158 previous_intensity = readIntensity(tof_index);
159 }
160 }
161
162 // write remaining intensity :
163 if(previous_intensity > 0)
164 {
165 // flush
166 accumulateIntensity(previous_tof_index, previous_intensity);
167 }
168 }
169
170 qDebug() << "tofIndexList.size()=" << tofIndexList.size();
171}
std::size_t accumulateIntensity(quint32 tofIndex, std::size_t intensity)
accumulates intesity for the given tof index
std::size_t readIntensity(quint32)
reads intensity for a tof_index

References accumulateIntensity(), readIntensity(), and tofIndexList.

Referenced by pappso::TimsDiaSlices::getMs1QualifiedSpectrumByGlobalSliceIndex(), pappso::TimsDiaSlices::getMs2QualifiedSpectrumByGlobalSliceIndex(), and pappso::TimsDdaPrecursors::getQualifiedMs2MassSpectrumBySpectrumDescr().

◆ clear()

◆ downsizeMzRawMap()

void pappso::TimsDataFastMap::downsizeMzRawMap ( std::size_t mzindex_merge_window)

downsize mz resolution to lower the number of real mz computations

the map is modified in place

Parameters
mzindex_merge_windowwidth of the mzindex window used to merge all intensities into a single point. This results in faster computing.

Definition at line 96 of file timsdatafastmap.cpp.

97{
98 std::vector<std::pair<quint32, std::size_t>> temp_vector;
99 for(quint32 tof_index : tofIndexList)
100 {
101 temp_vector.push_back({tof_index, readIntensity(tof_index)});
102 }
103
104 tofIndexList.clear();
105
106 for(auto &pair_tof_intensity : temp_vector)
107 {
108
109 quint32 mzkey = (pair_tof_intensity.first / mzindex_merge_window);
110 mzkey = (mzkey * mzindex_merge_window) + (mzindex_merge_window / 2);
111
112 accumulateIntensity(mzkey, pair_tof_intensity.second);
113 }
114}

References accumulateIntensity(), readIntensity(), and tofIndexList.

Referenced by pappso::TimsFrame::combineScansToTraceWithDowngradedMzResolution(), and pappso::TimsFrame::combineScansToTraceWithDowngradedMzResolution2().

◆ getTimsDataFastMapInstance()

◆ getTofIndexList()

◆ readIntensity()

std::size_t pappso::TimsDataFastMap::readIntensity ( quint32 key)

reads intensity for a tof_index

reads the cumulated intensity for this tof index and replaces the first access boolean to true. => this is important to reuse the map in an other computation No need to erase the content or initialize it

Definition at line 87 of file timsdatafastmap.cpp.

88{
89 TimsDataFastMapElement &map_element = mapTofIndexIntensity.at(key);
90 // FIXME: why set first_access to true below?
91 map_element.first_access = true;
92 return map_element.count;
93}

References pappso::TimsDataFastMap::TimsDataFastMapElement::count, pappso::TimsDataFastMap::TimsDataFastMapElement::first_access, and mapTofIndexIntensity.

Referenced by builtInCentroid(), pappso::TimsFrame::combineScansToTraceWithDowngradedMzResolution(), pappso::TimsFrame::combineScansToTraceWithDowngradedMzResolution2(), pappso::TimsFrame::cumulateScansToTrace(), downsizeMzRawMap(), pappso::TimsFrameMobilityTraces::extractMobilityTraces(), and pappso::TimsFrameBase::getTraceFromTofIndexIntensityMap().

◆ removeArtefactualSpike()

void pappso::TimsDataFastMap::removeArtefactualSpike ( )

Definition at line 174 of file timsdatafastmap.cpp.

175{
176
177 std::vector<quint32> tof_index_list_tmp = tofIndexList;
178 tofIndexList.clear();
179 for(quint32 tof_index : tof_index_list_tmp)
180 {
181 if((tof_index > 0) && mapTofIndexIntensity[tof_index - 1].first_access &&
182 mapTofIndexIntensity[tof_index + 1].first_access &&
183 (mapTofIndexIntensity[tof_index].count == 10))
184 {
185 // this measure is too small and alone : remove it
186 mapTofIndexIntensity[tof_index].first_access = true;
187 }
188 else
189 {
190 tofIndexList.push_back(tof_index);
191 }
192 }
193}

References mapTofIndexIntensity, and tofIndexList.

Member Data Documentation

◆ m_preAllocatedFastMapPerThread

std::map< QThread *, TimsDataFastMap > pappso::TimsDataFastMap::m_preAllocatedFastMapPerThread = {}
static

Definition at line 48 of file timsdatafastmap.h.

Referenced by getTimsDataFastMapInstance().

◆ mapTofIndexIntensity

std::vector<TimsDataFastMapElement> pappso::TimsDataFastMap::mapTofIndexIntensity
private

Definition at line 106 of file timsdatafastmap.h.

Referenced by accumulateIntensity(), readIntensity(), and removeArtefactualSpike().

◆ tofIndexList

std::vector<quint32> pappso::TimsDataFastMap::tofIndexList
private

The documentation for this class was generated from the following files: