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

#include <ionmobilitygrid.h>

Public Member Functions

 IonMobilityGrid ()
 
virtual ~IonMobilityGrid ()
 
void storeObservedIdentityBetween (const MsRunId &msrun_ida, const XicCoord *xic_coorda, const MsRunId &msrun_idb, const XicCoord *xic_coordb)
 
void computeCorrections ()
 
pappso::XicCoordSPtr translateXicCoordFromTo (const pappso::XicCoord &source_xic_coord, const MsRunId &source_msrunid, const MsRunId &target_msrunid) const
 
const std::map< QString, std::vector< qint64 > > & getMapDiferrencesStart () const
 
const std::map< QString, long > & getMapCorrectionsStart () const
 

Private Attributes

std::map< QString, std::vector< qint64 > > m_mapDiferrencesStart
 
std::map< QString, std::vector< qint64 > > m_mapDiferrencesStop
 
std::map< QString, long > m_mapCorrectionsStart
 scan num correction on start position stored for each msrun pair
 
std::map< QString, long > m_mapCorrectionsStop
 scan num correction on start position stored for each msrun pair
 

Detailed Description

Todo
helper to align ion mobility ranges between MS runs

Definition at line 41 of file ionmobilitygrid.h.

Constructor & Destructor Documentation

◆ IonMobilityGrid()

IonMobilityGrid::IonMobilityGrid ( )

Default constructor

Definition at line 36 of file ionmobilitygrid.cpp.

37{
38}

◆ ~IonMobilityGrid()

IonMobilityGrid::~IonMobilityGrid ( )
virtual

Destructor

Definition at line 40 of file ionmobilitygrid.cpp.

41{
42}

Member Function Documentation

◆ computeCorrections()

void pappso::IonMobilityGrid::computeCorrections ( )

Definition at line 83 of file ionmobilitygrid.cpp.

84{
85 for(auto pair_key_start_vector : m_mapDiferrencesStart)
86 {
87
88 if(pair_key_start_vector.second.size() > 5)
89 {
90 // median
91 const auto middleItr = pair_key_start_vector.second.begin() +
92 (pair_key_start_vector.second.size() / 2);
93 std::nth_element(pair_key_start_vector.second.begin(),
94 middleItr,
95 pair_key_start_vector.second.end());
96 m_mapCorrectionsStart[pair_key_start_vector.first] = *middleItr;
97 }
98 else
99 {
100 m_mapCorrectionsStart[pair_key_start_vector.first] = 0;
101 }
102 }
103 m_mapDiferrencesStart.clear();
104 for(auto pair_key_stop_vector : m_mapDiferrencesStop)
105 {
106
107 if(pair_key_stop_vector.second.size() > 5)
108 {
109 // median
110 const auto middleItr = pair_key_stop_vector.second.begin() +
111 (pair_key_stop_vector.second.size() / 2);
112 std::nth_element(pair_key_stop_vector.second.begin(),
113 middleItr,
114 pair_key_stop_vector.second.end());
115 m_mapCorrectionsStop[pair_key_stop_vector.first] = *middleItr;
116 }
117 else
118 {
119 m_mapCorrectionsStop[pair_key_stop_vector.first] = 0;
120 }
121 }
122 m_mapDiferrencesStop.clear();
123}
std::map< QString, long > m_mapCorrectionsStop
scan num correction on start position stored for each msrun pair
std::map< QString, std::vector< qint64 > > m_mapDiferrencesStart
std::map< QString, long > m_mapCorrectionsStart
scan num correction on start position stored for each msrun pair
std::map< QString, std::vector< qint64 > > m_mapDiferrencesStop

◆ getMapCorrectionsStart()

const std::map< QString, long > & pappso::IonMobilityGrid::getMapCorrectionsStart ( ) const

Definition at line 188 of file ionmobilitygrid.cpp.

189{
191}

◆ getMapDiferrencesStart()

const std::map< QString, std::vector< qint64 > > & pappso::IonMobilityGrid::getMapDiferrencesStart ( ) const

Definition at line 182 of file ionmobilitygrid.cpp.

183{
185}

◆ storeObservedIdentityBetween()

void pappso::IonMobilityGrid::storeObservedIdentityBetween ( const MsRunId & msrun_ida,
const XicCoord * xic_coorda,
const MsRunId & msrun_idb,
const XicCoord * xic_coordb )

Definition at line 45 of file ionmobilitygrid.cpp.

50{
51 if(msrun_ida == msrun_idb)
52 return;
53 QString msrun_key(
54 QString("%1-%2").arg(msrun_ida.getXmlId()).arg(msrun_idb.getXmlId()));
55
56
57 if(msrun_ida.getXmlId() > msrun_idb.getXmlId())
58 {
59 msrun_key =
60 QString("%1-%2").arg(msrun_idb.getXmlId()).arg(msrun_ida.getXmlId());
61 std::swap(xic_coorda, xic_coordb);
62 }
63
64 auto it_start =
65 m_mapDiferrencesStart.insert({msrun_key, std::vector<qint64>()});
66 it_start.first->second.push_back(
68 .toLongLong() -
70 .toLongLong());
71
72
73 auto it_stop =
74 m_mapDiferrencesStop.insert({msrun_key, std::vector<qint64>()});
75 it_stop.first->second.push_back(
77 .toLongLong() -
79 .toLongLong());
80}
const QString & getXmlId() const
Definition msrunid.cpp:144
virtual const QVariant getParam(XicCoordParam param) const
get a specific XIC coordinate parameter
Definition xiccoord.cpp:123

References pappso::XicCoord::getParam(), pappso::MsRunId::getXmlId(), pappso::TimsTofIonMobilityScanNumberStart, and pappso::TimsTofIonMobilityScanNumberStop.

◆ translateXicCoordFromTo()

pappso::XicCoordSPtr pappso::IonMobilityGrid::translateXicCoordFromTo ( const pappso::XicCoord & source_xic_coord,
const MsRunId & source_msrunid,
const MsRunId & target_msrunid ) const

Definition at line 126 of file ionmobilitygrid.cpp.

130{
131 if(m_mapCorrectionsStop.size() == 0)
132 {
133 return source_xic_coord.initializeAndClone();
134 }
135
136 bool opposed = false;
137 QString msrun_key(QString("%1-%2")
138 .arg(source_msrunid.getXmlId())
139 .arg(target_msrunid.getXmlId()));
140
141
142 if(source_msrunid.getXmlId() > target_msrunid.getXmlId())
143 {
144 msrun_key = QString("%1-%2")
145 .arg(target_msrunid.getXmlId())
146 .arg(source_msrunid.getXmlId());
147 opposed = true;
148 }
149 auto itstart = m_mapCorrectionsStart.find(msrun_key);
150 long start_dev = 0;
151 if(itstart != m_mapCorrectionsStart.end())
152 {
153 start_dev = itstart->second;
154 if(opposed)
155 {
156 start_dev *= -1;
157 }
158 }
159
160 auto itstop = m_mapCorrectionsStop.find(msrun_key);
161 long stop_dev = 0;
162 if(itstop != m_mapCorrectionsStop.end())
163 {
164 stop_dev = itstop->second;
165 if(opposed)
166 {
167 stop_dev *= -1;
168 }
169 }
170
171 pappso::XicCoordSPtr result_xic_coord_sp =
172 source_xic_coord.initializeAndClone();
173 XicCoordTims *tims_coord =
174 static_cast<XicCoordTims *>(result_xic_coord_sp.get());
175
176 tims_coord->scanNumBeginRangeCorrection(start_dev, stop_dev);
177
178 return result_xic_coord_sp;
179}
std::shared_ptr< XicCoord > XicCoordSPtr
Definition xiccoord.h:43
coordinates of the XIC to extract and the resulting XIC after extraction
void scanNumBeginRangeCorrection(long start_dev, long stop_dev)
apply scan num correction on xic coordinate
virtual XicCoordSPtr initializeAndClone() const
intialize the XIC and make a deep copy of object
Definition xiccoord.cpp:54

References pappso::MsRunId::getXmlId(), pappso::XicCoord::initializeAndClone(), and pappso::XicCoordTims::scanNumBeginRangeCorrection().

Member Data Documentation

◆ m_mapCorrectionsStart

std::map<QString, long> pappso::IonMobilityGrid::m_mapCorrectionsStart
private

scan num correction on start position stored for each msrun pair

Definition at line 76 of file ionmobilitygrid.h.

◆ m_mapCorrectionsStop

std::map<QString, long> pappso::IonMobilityGrid::m_mapCorrectionsStop
private

scan num correction on start position stored for each msrun pair

Definition at line 81 of file ionmobilitygrid.h.

◆ m_mapDiferrencesStart

std::map<QString, std::vector<qint64> > pappso::IonMobilityGrid::m_mapDiferrencesStart
private

Definition at line 70 of file ionmobilitygrid.h.

◆ m_mapDiferrencesStop

std::map<QString, std::vector<qint64> > pappso::IonMobilityGrid::m_mapDiferrencesStop
private

Definition at line 71 of file ionmobilitygrid.h.


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