libpappsomspp
Library for mass spectrometry
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 More...
 
std::map< QString, long > m_mapCorrectionsStop
 scan num correction on start position stored for each msrun pair More...
 

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
Definition: xiccoordtims.h:51
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: