Loading...
Searching...
No Matches
mbrpeptidemeasurements.cpp
Go to the documentation of this file.
/**
* \file pappsomspp/masschroq/mbrpeptidemeasurements.cpp
* \date 27/10/2024
* \author Olivier Langella
* \brief peptide extracted measures in MBR mode model in masschroqlite
*/
/*******************************************************************************
* Copyright (c) 2024 Olivier Langella
*<Olivier.Langella@universite-paris-saclay.fr>.
*
* This file is part of MassChroQ.
*
* MassChroQ is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* MassChroQ is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with MassChroQ. If not, see <http://www.gnu.org/licenses/>.
*
******************************************************************************/
#include "mbrpeptidemeasurements.h"
#include "msrungroup.h"
#include "pappsomspp/core/processing/detection/tracepeaklist.h"
#include "pappsomspp/core/pappsoexception.h"
pappso::masschroq::MbrPeptideMeasurements::MbrPeptideMeasurements(
const pappso::masschroq::PeptideSp &peptide_sp)
: msp_peptide(peptide_sp)
{
if(msp_peptide.get() == nullptr)
{
throw pappso::PappsoException("msp_peptide.get() == nullptr");
}
}
pappso::masschroq::MbrPeptideMeasurements::MbrPeptideMeasurements(
const pappso::masschroq::MbrPeptideMeasurements &other)
: PeptideMeasurementsBase(other)
{
msp_peptide = other.msp_peptide;
m_consensusMs2RetentionTime = other.m_consensusMs2RetentionTime;
}
pappso::masschroq::MbrPeptideMeasurements::~MbrPeptideMeasurements()
{
}
void
pappso::masschroq::MbrPeptideMeasurements::prepareMeasurements(
const pappso::MsRunId &targeted_msrun,
const pappso::masschroq::MsRunGroup *msrun_group_p,
const pappso::MsRunRetentionTime<QString> &msrun_retention_time,
const QuantificationMethodSp &quantification_method)
{
// for one peptide
pappso::masschroq::Peptide *the_peptide_p = msp_peptide.get();
// 1) charge states
// 2) isotope list
std::vector<std::uint8_t> charge_states = the_peptide_p->getAllObservedChargeStateList();
m_consensusMs2RetentionTime = the_peptide_p->getConsensusMs2RetentionTime();
if(msrun_retention_time.isAligned())
{
m_consensusMs2RetentionTime =
msrun_retention_time.translateAligned2OriginalRetentionTime(m_consensusMs2RetentionTime);
}
double consensus_rt = the_peptide_p->getConsensusPeakRetentionTime();
if(consensus_rt > 0)
{
if(msrun_retention_time.isAligned())
{
consensus_rt = msrun_retention_time.translateAligned2OriginalRetentionTime(consensus_rt);
}
}
for(std::uint8_t charge : charge_states)
{
pappso::XicCoordSPtr best_xic_coord;
if(msrun_group_p->getIonMobilityGridSp().get() != nullptr)
{
best_xic_coord = the_peptide_p->getBestIonMobilityXicCoordToExtractOverallMsRunGroup(
*msrun_group_p, targeted_msrun, charge);
}
else
{
best_xic_coord =
the_peptide_p->getBestXicCoordSPtrForChargeInMsRunGroup(msrun_group_p, charge);
}
if(best_xic_coord.get() == nullptr)
{
// We can not quantify it in this msrun group
}
else
{
prepareMeasurementsForPeptide(
*the_peptide_p, quantification_method, best_xic_coord, charge, consensus_rt);
}
}
}
void
pappso::masschroq::MbrPeptideMeasurements::detectQuantifyPeaks(
const pappso::masschroq::QuantificationMethodSp &quantification_method)
{
qDebug();
pappso::TracePeakList peak_list;
std::vector<std::uint8_t> all_charge_states = msp_peptide.get()->getAllObservedChargeStateList();
for(auto &measure_one : m_measurementList)
{
qDebug();
double rt_target = measure_one.msp_xicCoord.get()->rtTarget;
peak_list.clear();
quantification_method.get()->getTraceDetectionInterfaceCstSPtr().get()->detect(
*(measure_one.msp_xicCoord.get()->xicSptr.get()), peak_list, false);
qDebug();
measure_one.m_peakQualityCategory = PeakQualityCategory::missed;
if(m_consensusMs2RetentionTime > 0)
{
qDebug();
auto it_best_matched_peak = pappso::findTracePeakGivenRt(
peak_list.begin(), peak_list.end(), m_consensusMs2RetentionTime);
if(it_best_matched_peak != peak_list.end())
{
measure_one.m_tracePeakSp = it_best_matched_peak->makeTracePeakCstSPtr();
measure_one.m_peakQualityCategory = PeakQualityCategory::c;
if(it_best_matched_peak->containsRt(rt_target))
{
measure_one.m_peakQualityCategory = PeakQualityCategory::b;
}
}
else
{
it_best_matched_peak =
pappso::findTracePeakGivenRt(peak_list.begin(), peak_list.end(), rt_target);
if(it_best_matched_peak != peak_list.end())
{
measure_one.m_tracePeakSp = it_best_matched_peak->makeTracePeakCstSPtr();
measure_one.m_peakQualityCategory = PeakQualityCategory::d;
}
}
}
}
}
const pappso::masschroq::PeptideSp &
pappso::masschroq::MbrPeptideMeasurements::getPeptideSp() const
{
return msp_peptide;
}
pappso::MsRunId
MS run identity MsRunId identifies an MS run with a unique ID (XmlId) and contains eventually informa...
Definition msrunid.h:54
pappso::MsRunRetentionTime
Definition msrunretentiontime.h:43
pappso::MsRunRetentionTime::isAligned
bool isAligned() const
Definition msrunretentiontime.cpp:395
pappso::MsRunRetentionTime::translateAligned2OriginalRetentionTime
double translateAligned2OriginalRetentionTime(double aligned_retention_time) const
Definition msrunretentiontime.cpp:336
pappso::TracePeakList
Definition tracepeaklist.h:43
pappso::masschroq::MbrPeptideMeasurements
Definition mbrpeptidemeasurements.h:49
pappso::masschroq::MbrPeptideMeasurements::detectQuantifyPeaks
virtual void detectQuantifyPeaks(const QuantificationMethodSp &quantification_method) override
Definition mbrpeptidemeasurements.cpp:121
pappso::masschroq::MbrPeptideMeasurements::MbrPeptideMeasurements
MbrPeptideMeasurements(const PeptideSp &peptide_sp)
Definition mbrpeptidemeasurements.cpp:35
pappso::masschroq::MbrPeptideMeasurements::getPeptideSp
const PeptideSp & getPeptideSp() const
Definition mbrpeptidemeasurements.cpp:172
pappso::masschroq::MbrPeptideMeasurements::m_consensusMs2RetentionTime
double m_consensusMs2RetentionTime
Definition mbrpeptidemeasurements.h:78
pappso::masschroq::MbrPeptideMeasurements::msp_peptide
PeptideSp msp_peptide
Definition mbrpeptidemeasurements.h:76
pappso::masschroq::MbrPeptideMeasurements::prepareMeasurements
void prepareMeasurements(const pappso::MsRunId &targeted_msrun, const MsRunGroup *msrun_group_p, const pappso::MsRunRetentionTime< QString > &msrun_retention_time, const QuantificationMethodSp &quantification_method)
Definition mbrpeptidemeasurements.cpp:61
pappso::masschroq::MbrPeptideMeasurements::~MbrPeptideMeasurements
virtual ~MbrPeptideMeasurements()
Definition mbrpeptidemeasurements.cpp:55
pappso::masschroq::MsRunGroup
Definition msrungroup.h:48
pappso::masschroq::MsRunGroup::getIonMobilityGridSp
const std::shared_ptr< pappso::IonMobilityGrid > & getIonMobilityGridSp() const
Definition msrungroup.cpp:334
pappso::masschroq::PeptideMeasurementsBase::m_measurementList
std::vector< Measurement > m_measurementList
Definition peptidemeasurementsbase.h:117
pappso::masschroq::PeptideMeasurementsBase::PeptideMeasurementsBase
PeptideMeasurementsBase()
Definition peptidemeasurementsbase.cpp:34
pappso::masschroq::PeptideMeasurementsBase::prepareMeasurementsForPeptide
virtual void prepareMeasurementsForPeptide(Peptide &the_peptide, const QuantificationMethodSp &quantification_method, const pappso::XicCoordSPtr &best_xic_coord, std::uint8_t charge, double best_rt) final
Definition peptidemeasurementsbase.cpp:89
pappso::masschroq::Peptide
Definition peptide.h:58
pappso::masschroq::Peptide::getAllObservedChargeStateList
const std::vector< std::uint8_t > & getAllObservedChargeStateList() const
Definition peptide.cpp:116
pappso::masschroq::Peptide::getConsensusMs2RetentionTime
double getConsensusMs2RetentionTime() const
get consensus retention time based on MS2 fragmenation and identification events
Definition peptide.cpp:265
pappso::masschroq::Peptide::getBestXicCoordSPtrForChargeInMsRunGroup
pappso::XicCoordSPtr getBestXicCoordSPtrForChargeInMsRunGroup(const MsRunGroup *msrun_group_p, std::uint8_t charge) const
get the XIC coordinates of the higher observed intensity for this peptide and charge in other MS run ...
Definition peptide.cpp:280
pappso::masschroq::Peptide::getConsensusPeakRetentionTime
double getConsensusPeakRetentionTime() const
get consensus retention time based on XIC peak measurements
Definition peptide.cpp:259
pappso::masschroq::Peptide::getBestIonMobilityXicCoordToExtractOverallMsRunGroup
pappso::XicCoordSPtr getBestIonMobilityXicCoordToExtractOverallMsRunGroup(const MsRunGroup &msrun_group, const pappso::MsRunId &targeted_msrun, std::uint8_t charge) const
get ion mobility coordinates corrected against other MSruns in the group
Definition peptide.cpp:351
pappso::masschroq::QuantificationMethod::getTraceDetectionInterfaceCstSPtr
const pappso::TraceDetectionInterfaceCstSPtr & getTraceDetectionInterfaceCstSPtr() const
Definition quantificationmethod.cpp:199
mbrpeptidemeasurements.h
msrungroup.h
pappso::masschroq::QuantificationMethodSp
std::shared_ptr< QuantificationMethod > QuantificationMethodSp
Definition quantificationmethod.h:46
pappso::masschroq::PeakQualityCategory::missed
@ missed
no peak found at all
Definition types.h:60
pappso::masschroq::PeakQualityCategory::c
@ c
Definition types.h:54
pappso::masschroq::PeakQualityCategory::d
@ d
Definition types.h:56
pappso::masschroq::PeakQualityCategory::b
@ b
Definition types.h:52
pappso::masschroq::PeptideSp
std::shared_ptr< Peptide > PeptideSp
Definition peptide.h:46
pappso::findTracePeakGivenRt
PMSPP_LIB_DECL std::vector< TracePeak >::iterator findTracePeakGivenRt(std::vector< TracePeak >::iterator begin, std::vector< TracePeak >::iterator end, double rt)
find the peak matching a retention time
Definition tracepeaklist.cpp:78
pappso::XicCoordSPtr
std::shared_ptr< XicCoord > XicCoordSPtr
Definition xiccoord.h:44
pappsoexception.h
tracepeaklist.h