Skip to content
Snippets Groups Projects
Commit 2619afbc authored by Langella Olivier's avatar Langella Olivier
Browse files

WIP: all isotopes in one plot

parent 14d7fb03
No related branches found
No related tags found
No related merge requests found
......@@ -93,10 +93,18 @@
</widget>
</item>
<item>
<widget class="QWidget" name="xic_list_widget" native="true"/>
<widget class="pappso::XicWidget" name="xic_widget" native="true"/>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>pappso::XicWidget</class>
<extends>QWidget</extends>
<header>pappsomspp/widget/xicwidget/xicwidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections>
<connection>
......
......@@ -44,7 +44,7 @@ XicBox::XicBox(XicWindow *parent):
p_worker->moveToThread(&_xic_thread);
_xic_thread.start();
ui->xic_list_widget->setLayout(new QVBoxLayout(ui->xic_list_widget));
//ui->xic_list_widget->setLayout(new QVBoxLayout(ui->xic_list_widget));
#if QT_VERSION >= 0x050000
// Qt5 code
......@@ -100,20 +100,20 @@ void XicBox::setPeptideEvidence(const PeptideEvidence * p_peptide_evidence) {
void XicBox::setXic(pappso::XicSp xic_sp) {
qDebug() << "XicBox::setXic begin";
pappso::XicWidget * xic_widget = new pappso::XicWidget(this);
ui->xic_list_widget->layout()->addWidget(xic_widget);
xic_widget->setXicSp(xic_sp);
//pappso::XicWidget * xic_widget = new pappso::XicWidget(this);
//ui->xic_list_widget->layout()->addWidget(xic_widget);
ui->xic_widget->addXicSp(xic_sp);
for (const PeptideEvidence * peptide_evidence:_peptide_evidence_list) {
xic_widget->addMsMsEvent(peptide_evidence->getRetentionTime());
ui->xic_widget->addMsMsEvent(xic_sp.get(), peptide_evidence->getRetentionTime());
}
xic_widget->rescale();
xic_widget->plot();
_xic_widget_list.push_back(xic_widget);
ui->xic_widget->rescale();
ui->xic_widget->plot();
/*
if (_isotope_mass_list.size() > _xic_widget_list.size()) {
emit loadXic(_p_peptide_evidence->getMsRunP(), _isotope_mass_list[_xic_widget_list.size()].get()->getMz(), _p_xic_window->getXicExtractPrecision(), XicExtractMethod::max);
}
*/
qDebug() << "XicBox::setXic end";
......@@ -123,8 +123,11 @@ void XicBox::setXic(pappso::XicSp xic_sp) {
void XicBox::setIsotopeMassList(std::vector<pappso::PeptideNaturalIsotopeAverageSp> isotope_mass_list) {
_isotope_mass_list = isotope_mass_list;
if (_isotope_mass_list.size() > 0) {
emit loadXic(_p_peptide_evidence->getMsRunP(), _isotope_mass_list[0].get()->getMz(), _p_xic_window->getXicExtractPrecision(), XicExtractMethod::max);
std::vector<pappso::mz> mass_list;
for (pappso::PeptideNaturalIsotopeAverageSp & natural_isotope_average: isotope_mass_list) {
mass_list.push_back(natural_isotope_average.get()->getMz());
}
emit loadXic(_p_peptide_evidence->getMsRunP(), mass_list, _p_xic_window->getXicExtractPrecision(), XicExtractMethod::max);
}
......@@ -52,7 +52,7 @@ public:
void setPeptideEvidence(const PeptideEvidence * p_peptide_evidence) ;
signals :
void loadXic(const MsRun * p_msrun, pappso::mz mz, pappso::PrecisionP precision, XicExtractMethod method);
void loadXic(const MsRun * p_msrun, std::vector<pappso::mz> mz_list, pappso::PrecisionP precision, XicExtractMethod method);
void computeIsotopeMassList(pappso::PeptideSp peptide_sp, unsigned int charge, pappso::PrecisionP precision, double minimum_isotope_pattern_ratio);
private slots:
void remove();
......
......@@ -32,13 +32,16 @@
#include <pappsomspp/peptide/peptidenaturalisotopelist.h>
#include <pappsomspp/pappsoexception.h>
void XicWorkerThread::doXicLoad(const MsRun * p_msrun, pappso::mz mz, pappso::PrecisionP precision, XicExtractMethod method) {
void XicWorkerThread::doXicLoad(const MsRun * p_msrun, std::vector<pappso::mz> mz_list, pappso::PrecisionP precision, XicExtractMethod method) {
try {
pappso::MassRange mass_range(mz, precision);
pappso::XicSp xic_sp = SpectrumStore::getXicSpFromMsRunSp(p_msrun, mass_range, method);
std::vector<pappso::MassRange> mass_list;
for (pappso::mz mass:mz_list) {
mass_list.push_back(pappso::MassRange(mass, precision));
}
std::vector<pappso::XicSp> xic_sp_list = SpectrumStore::getXicSpFromMsRunSp(p_msrun, mass_list, method);
emit xicLoaded(xic_sp);
emit xicLoaded(xic_sp_list);
}
catch (pappso::PappsoException & error) {
......
......@@ -40,7 +40,7 @@ class XicWorkerThread : public QObject
public:
public slots:
void doXicLoad(const MsRun * p_msrun, pappso::mz mz, pappso::PrecisionP precision, XicExtractMethod method);
void doXicLoad(const MsRun * p_msrun, std::vector<pappso::mz> mz_list, pappso::PrecisionP precision, XicExtractMethod method);
void doComputeIsotopeMassList(pappso::PeptideSp peptide_sp, unsigned int charge, pappso::PrecisionP precision, double minimum_isotope_pattern_ratio);
signals:
......
......@@ -47,7 +47,7 @@ pwiz::msdata::MSDataFile * getPwizMSDataFile(const QString & filename);
pappso::QualifiedSpectrum getQualifiedSpectrumFromPwizMSDataFile(pwiz::msdata::MSDataFile * p_ms_data_file, unsigned int scan_num);
void getXicFromPwizMSDataFile(pwiz::msdata::MSDataFile * p_mzdata, pappso::Xic * p_xic, const pappso::MassRange & mass_range, XicExtractMethod method);
void getXicFromPwizMSDataFile(pwiz::msdata::MSDataFile * p_mzdata, pappso::Xic * p_xic, const std::vector<pappso::MassRange> & mass_range_list, XicExtractMethod method);
pwiz::msdata::MSDataFile * getPwizMSDataFile(const QString & filename) {
......@@ -78,7 +78,7 @@ pwiz::msdata::MSDataFile * getPwizMSDataFile(const QString & filename) {
return dataFile;
}
void getXicFromPwizMSDataFile(pwiz::msdata::MSDataFile * p_ms_data_file, pappso::Xic * p_xic, const pappso::MassRange & mass_range, XicExtractMethod method) {
void getXicFromPwizMSDataFile(pwiz::msdata::MSDataFile * p_ms_data_file, pappso::Xic * p_xic, const std::vector<pappso::MassRange> & mass_range_list, XicExtractMethod method) {
std::string env;
env=setlocale(LC_ALL,"");
......@@ -91,7 +91,10 @@ void getXicFromPwizMSDataFile(pwiz::msdata::MSDataFile * p_ms_data_file, pappso:
std::size_t spectrum_list_size = p_spectrum_list->size();
pwiz::msdata::SpectrumPtr spectrum;
XicElement peak;
std::vector<XicElement> peak_for_mass;
for (const pappso::MassRange & mass_range: mass_range_list) {
peak_for_mass.push_back(XicElement());
}
for (std::size_t i=0; i < spectrum_list_size; i++) {
spectrum = p_spectrum_list->spectrum(i, false);
......@@ -99,8 +102,10 @@ void getXicFromPwizMSDataFile(pwiz::msdata::MSDataFile * p_ms_data_file, pappso:
if (ms_level == 1) {
spectrum = p_spectrum_list->spectrum(i, true);
peak.rt = QString(spectrum->scanList.scans[0].cvParam(pwiz::msdata::MS_scan_start_time).value.c_str()).toDouble();
peak.intensity = 0;
for (XicElement & peak: peak_for_mass) {
peak.rt = QString(spectrum->scanList.scans[0].cvParam(pwiz::msdata::MS_scan_start_time).value.c_str()).toDouble();
peak.intensity = 0;
}
vector<pwiz::msdata::MZIntensityPair> pairs;
spectrum->getMZIntensityPairs(pairs);
......@@ -109,16 +114,18 @@ void getXicFromPwizMSDataFile(pwiz::msdata::MSDataFile * p_ms_data_file, pappso:
for (vector<pwiz::msdata::MZIntensityPair>::const_iterator it=pairs.begin(), end=pairs.end(); it!=end; ++it)
{
//qDebug() << "it->mz " << it->mz << " it->intensity" << it->intensity;
if (mass_range.contains(it->mz)) {
for (int i=0; i < mass_range_list.size(); i++) {
if (mass_range_list[i].contains(it->mz)) {
if (method == XicExtractMethod::max) {
if (peak.intensity < it->intensity) {
peak.intensity = it->intensity;
if (peak_for_mass[i].intensity < it->intensity) {
peak_for_mass[i].intensity = it->intensity;
}
}
else {
peak.intensity += it->intensity;
peak_for_mass[i].intensity += it->intensity;
}
}
}
}
p_xic->push_back(peak);
......@@ -381,14 +388,14 @@ pappso::SpectrumSp SpectrumStore::getSpectrumSpFromMsRunSp(MsRun * msrun, unsign
}
pappso::XicSp SpectrumStore::getXicSpFromMsRunSp(const MsRun * p_msrun, const pappso::MassRange & mass_range, XicExtractMethod method) {
std::vector<pappso::XicSp> SpectrumStore::getXicSpFromMsRunSp(const MsRun * p_msrun, const std::vector<pappso::MassRange> & mass_range_list, XicExtractMethod method) {
qDebug() << "SpectrumStore::getXicSpFromMsRunSp begin" ;
pwiz::msdata::MSDataFile * p_msdatafile = findPwizMSDataFile(p_msrun);
XicSp xic_sp;
std::vector<pappso::XicSp> xic_sp_list;
if (p_msdatafile != nullptr) {
Xic xic;
getXicFromPwizMSDataFile(p_msdatafile, &xic, mass_range, method);
std::vector<Xic> xic_list;
getXicFromPwizMSDataFile(p_msdatafile, &xic_list, mass_range_list, method);
xic_sp = xic.makeXicSp();
qDebug() << "SpectrumStore::getXicSpFromMsRunSp end" << xic_sp.get()->size();
}
......
......@@ -43,7 +43,7 @@ class MSDataFile;
class SpectrumStore {
public:
static pappso::SpectrumSp getSpectrumSpFromMsRunSp(MsRun * p_msrun, unsigned int scan_num);
static pappso::XicSp getXicSpFromMsRunSp(const MsRun * p_msrun, const pappso::MassRange & mass_range, XicExtractMethod method);
static std::vector<pappso::XicSp> getXicSpFromMsRunSp(const MsRun * p_msrun, const std::vector<pappso::MassRange> & mass_range_list, XicExtractMethod method);
/** @brief try to find MS run statistics
*/
static void checkMsRunStatistics(MsRun *);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment