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

◆ getMapCorrectionsStart()

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

Definition at line 184 of file ionmobilitygrid.cpp.

185{
187}

◆ getMapDiferrencesStart()

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

Definition at line 178 of file ionmobilitygrid.cpp.

179{
181}

◆ 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:150
virtual const QVariant getParam(XicCoordParam param) const
get a specific XIC coordinate parameter
Definition xiccoord.cpp:121

References pappso::XicCoord::getParam(), pappso::MsRunId::getXmlId(), 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
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:52

References pappso::MsRunId::getXmlId(), pappso::XicCoord::initializeAndClone(), 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.

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