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 37 of file ionmobilitygrid.cpp.

38{
39}

◆ ~IonMobilityGrid()

IonMobilityGrid::~IonMobilityGrid ( )
virtual

Destructor

Definition at line 41 of file ionmobilitygrid.cpp.

42{
43}

Member Function Documentation

◆ computeCorrections()

void pappso::IonMobilityGrid::computeCorrections ( )

Definition at line 88 of file ionmobilitygrid.cpp.

89{
90 for(auto pair_key_start_vector : m_mapDiferrencesStart)
91 {
92
93 if(pair_key_start_vector.second.size() > 5)
94 {
95 // median
96 const auto middleItr =
97 pair_key_start_vector.second.begin() + (pair_key_start_vector.second.size() / 2);
98 std::nth_element(
99 pair_key_start_vector.second.begin(), middleItr, pair_key_start_vector.second.end());
100 m_mapCorrectionsStart[pair_key_start_vector.first] = *middleItr;
101 }
102 else
103 {
104 m_mapCorrectionsStart[pair_key_start_vector.first] = 0;
105 }
106 }
107 m_mapDiferrencesStart.clear();
108 for(auto pair_key_stop_vector : m_mapDiferrencesStop)
109 {
110
111 if(pair_key_stop_vector.second.size() > 5)
112 {
113 // median
114 const auto middleItr =
115 pair_key_stop_vector.second.begin() + (pair_key_stop_vector.second.size() / 2);
116 std::nth_element(
117 pair_key_stop_vector.second.begin(), middleItr, pair_key_stop_vector.second.end());
118 m_mapCorrectionsStop[pair_key_stop_vector.first] = *middleItr;
119 }
120 else
121 {
122 m_mapCorrectionsStop[pair_key_stop_vector.first] = 0;
123 }
124 }
125 m_mapDiferrencesStop.clear();
126}
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

References m_mapCorrectionsStart, m_mapCorrectionsStop, m_mapDiferrencesStart, and m_mapDiferrencesStop.

◆ getMapCorrectionsStart()

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

Definition at line 184 of file ionmobilitygrid.cpp.

185{
187}

References m_mapCorrectionsStart.

◆ getMapDiferrencesStart()

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

Definition at line 178 of file ionmobilitygrid.cpp.

179{
181}

References m_mapDiferrencesStart.

◆ storeObservedIdentityBetween()

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

Definition at line 46 of file ionmobilitygrid.cpp.

50{
51 if(msrun_ida == msrun_idb)
52 return;
53 QString msrun_key(QString("%1-%2").arg(msrun_ida.getXmlId()).arg(msrun_idb.getXmlId()));
54
55
56 if(msrun_ida.getXmlId() > msrun_idb.getXmlId())
57 {
58 msrun_key = QString("%1-%2").arg(msrun_idb.getXmlId()).arg(msrun_ida.getXmlId());
59 std::swap(xic_coorda, xic_coordb);
60 }
61
62 auto it_start = m_mapDiferrencesStart.insert({msrun_key, std::vector<qint64>()});
63 const QVariant &ref_variantb =
65 if(ref_variantb.isNull())
66 {
67 throw pappso::ExceptionNotPossible(QObject::tr(
68 "XicCoordParam::TimsTofIonMobilityScanNumberStart QVariant is null for xic_coordb"));
69 }
70 const QVariant &ref_varianta =
72
73 if(ref_varianta.isNull())
74 {
75 throw pappso::ExceptionNotPossible(QObject::tr(
76 "XicCoordParam::TimsTofIonMobilityScanNumberStart QVariant is null for xic_coorda"));
77 }
78 it_start.first->second.push_back(ref_variantb.toLongLong() - ref_varianta.toLongLong());
79
80
81 auto it_stop = m_mapDiferrencesStop.insert({msrun_key, std::vector<qint64>()});
82 it_stop.first->second.push_back(
85}
const QString & getXmlId() const
Definition msrunid.cpp:144
@ TimsTofIonMobilityScanNumberStart
Definition xiccoord.h:52
virtual const QVariant getParam(XicCoordParam param) const
get a specific XIC coordinate parameter
Definition xiccoord.cpp:121

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

Referenced by pappso::masschroq::Peptide::populateIonMobilityGrid().

◆ translateXicCoordFromTo()

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

Definition at line 129 of file ionmobilitygrid.cpp.

132{
133 if(m_mapCorrectionsStop.size() == 0)
134 {
135 return source_xic_coord.initializeAndClone();
136 }
137
138 bool opposed = false;
139 QString msrun_key(QString("%1-%2").arg(source_msrunid.getXmlId()).arg(target_msrunid.getXmlId()));
140
141
142 if(source_msrunid.getXmlId() > target_msrunid.getXmlId())
143 {
144 msrun_key = QString("%1-%2").arg(target_msrunid.getXmlId()).arg(source_msrunid.getXmlId());
145 opposed = true;
146 }
147 auto itstart = m_mapCorrectionsStart.find(msrun_key);
148 long start_dev = 0;
149 if(itstart != m_mapCorrectionsStart.end())
150 {
151 start_dev = itstart->second;
152 if(opposed)
153 {
154 start_dev *= -1;
155 }
156 }
157
158 auto itstop = m_mapCorrectionsStop.find(msrun_key);
159 long stop_dev = 0;
160 if(itstop != m_mapCorrectionsStop.end())
161 {
162 stop_dev = itstop->second;
163 if(opposed)
164 {
165 stop_dev *= -1;
166 }
167 }
168
169 pappso::XicCoordSPtr result_xic_coord_sp = source_xic_coord.initializeAndClone();
170 XicCoordTims *tims_coord = static_cast<XicCoordTims *>(result_xic_coord_sp.get());
171
172 tims_coord->scanNumBeginRangeCorrection(start_dev, stop_dev);
173
174 return result_xic_coord_sp;
175}
std::shared_ptr< XicCoord > XicCoordSPtr
Definition xiccoord.h:44
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:52

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

Referenced by pappso::masschroq::Peptide::getBestIonMobilityXicCoordToExtractOverallMsRunGroup().

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.

Referenced by computeCorrections(), getMapCorrectionsStart(), and translateXicCoordFromTo().

◆ 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.

Referenced by computeCorrections(), and translateXicCoordFromTo().

◆ m_mapDiferrencesStart

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

◆ m_mapDiferrencesStop

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

Definition at line 71 of file ionmobilitygrid.h.

Referenced by computeCorrections(), and storeObservedIdentityBetween().


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