From cfb06eabcbaf118368711718973b8480dab925f8 Mon Sep 17 00:00:00 2001 From: Olivier Langella <Olivier.Langella@moulon.inra.fr> Date: Sun, 13 Aug 2017 08:46:17 +0200 Subject: [PATCH] ptm island ods report OK --- src/grouping/ptm/ptmgroupingexperiment.cpp | 2 + src/output/ods/odsexport.cpp | 8 ++++ src/output/ods/proteinsheet.cpp | 9 +++- src/output/ods/ptmislandsheet.cpp | 50 ++++++++++++++-------- 4 files changed, 49 insertions(+), 20 deletions(-) diff --git a/src/grouping/ptm/ptmgroupingexperiment.cpp b/src/grouping/ptm/ptmgroupingexperiment.cpp index 8cbf7bb02..2e0dbe225 100644 --- a/src/grouping/ptm/ptmgroupingexperiment.cpp +++ b/src/grouping/ptm/ptmgroupingexperiment.cpp @@ -29,6 +29,7 @@ #include "ptmgroupingexperiment.h" #include "../../grouping/ptm/ptmgroupingexperiment.h" +#include "QDebug" PtmGroupingExperiment::PtmGroupingExperiment() { @@ -74,6 +75,7 @@ PtmGroupingExperiment::~PtmGroupingExperiment() } const std::vector<PtmIslandSp> & PtmGroupingExperiment::getPtmIslandList() const { + qDebug() << "PtmGroupingExperiment::getPtmIslandList begin" << _ptm_island_list.size(); return _ptm_island_list; } diff --git a/src/output/ods/odsexport.cpp b/src/output/ods/odsexport.cpp index 8cfdd5f68..6ebc5e4ef 100644 --- a/src/output/ods/odsexport.cpp +++ b/src/output/ods/odsexport.cpp @@ -38,6 +38,7 @@ #include "infosheet.h" #include "samplesheet.h" #include "groupingsheet.h" +#include "ptmislandsheet.h" #include <QSettings> OdsExport::OdsExport(const Project * project):_p_project(project) { @@ -114,4 +115,11 @@ void OdsExport::write(CalcWriterInterface * p_writer, WorkMonitorInterface * p_m p_monitor->message(QObject::tr("writing samples")); SampleSheet(this, p_writer, _p_project); } + + if (_p_project->hasPtmExperiment()) { + if (settings.value("export_ods/ptmislands", "true").toBool()) { + p_monitor->message(QObject::tr("writing PTM islands")); + PtmIslandSheet(this, p_writer, _p_project); + } + } } diff --git a/src/output/ods/proteinsheet.cpp b/src/output/ods/proteinsheet.cpp index 8737faf6d..4be82371a 100644 --- a/src/output/ods/proteinsheet.cpp +++ b/src/output/ods/proteinsheet.cpp @@ -145,7 +145,14 @@ void ProteinSheet::writeOneProtein(const GroupingGroup * p_group, const ProteinM _p_writer->writeCell(QString("%1.%2").arg(pappso::Utils::getLexicalOrderedString(group_number)).arg(pappso::Utils::getLexicalOrderedString(subgroup_number))); _p_writer->clearTableCellStyleRef(); _p_writer->writeCell(p_grp_protein->getGroupingId()); - _p_writer->writeCell(p_protein->getAccession()); + + const std::list<DbXref> & dbxref_list = p_protein->getDbxrefList(); + if (dbxref_list.size() == 0) { + _p_writer->writeCell(p_protein->getAccession()); + } + else { + _p_writer->writeCell(dbxref_list.front().getUrl(), p_protein->getAccession()); + } _p_writer->writeCell(p_protein->getDescription()); _p_writer->writeCell(p_protein_match->getLogEvalue()); // _p_writer->writeCell("Coverage"); diff --git a/src/output/ods/ptmislandsheet.cpp b/src/output/ods/ptmislandsheet.cpp index 4715a23ed..e5cc53c77 100644 --- a/src/output/ods/ptmislandsheet.cpp +++ b/src/output/ods/ptmislandsheet.cpp @@ -34,6 +34,7 @@ #include <pappsomspp/pappsoexception.h> PtmIslandSheet::PtmIslandSheet (OdsExport * p_ods_export, CalcWriterInterface * p_writer, const Project * p_project): _p_project(p_project) { + qDebug() << "PtmIslandSheet::PtmIslandSheet begin" ; _p_writer = p_writer; _p_ods_export = p_ods_export; p_writer->writeSheet("PTM islands"); @@ -43,6 +44,7 @@ PtmIslandSheet::PtmIslandSheet (OdsExport * p_ods_export, CalcWriterInterface * //writeHeaders(p_ident); writeIdentificationGroup(p_ident); } + qDebug() << "PtmIslandSheet::PtmIslandSheet end" ; } void PtmIslandSheet::writeCellHeader(PtmIslandListColumn column) { qDebug() << "PtmIslandSheet::writeCellHeader begin " << (std::int8_t) column; @@ -54,7 +56,7 @@ void PtmIslandSheet::writeCellHeader(PtmIslandListColumn column) { void PtmIslandSheet::writeHeaders(IdentificationGroup * p_ident) { //Group ID Sub-group ID PhosphoIsland ID Description MW Phosphosites positions Spectra Uniques number of proteins sharing these phosphosites //a1 a1.a1 a1.a1.a1 AT1G01100.1 | Symbols: | 60S acidic ribosomal protein family | chr1:50284-50954 REVERSE LENGTH=112 11,1000003814697 102 435 3 6 - + qDebug() << "PtmIslandSheet::writeHeaders begin" ; const std::vector<MsRunSp> msrun_list = p_ident->getMsRunSpList(); if (msrun_list.size() == 1) { _p_writer->writeCell("sample"); @@ -86,31 +88,40 @@ void PtmIslandSheet::writeHeaders(IdentificationGroup * p_ident) { _p_writer->setCellAnnotation("Number of proteins sharing this PTM island"); _p_writer->writeCell("Number of proteins"); + qDebug() << "PtmIslandSheet::writeHeaders end" ; } void PtmIslandSheet::writeIdentificationGroup(IdentificationGroup * p_ident) { + qDebug() << "PtmIslandSheet::writeIdentificationGroup begin" ; _p_ptm_grouping_experiment = p_ident->getPtmGroupingExperiment(); - if (_p_ptm_grouping_experiment = nullptr) { + if (_p_ptm_grouping_experiment == nullptr) { throw pappso::PappsoException(QObject::tr("Error writing PTM island :\n_p_ptm_grouping_experiment = nullptr")); } writeHeaders(p_ident); - std::vector<PtmIslandSp> ptm_island_list = _p_ptm_grouping_experiment->getPtmIslandList(); - - std::sort(ptm_island_list.begin(), ptm_island_list.end(), - [](PtmIslandSp & a, PtmIslandSp & b) - { - return a.get()->getGroupingId() < b.get()->getGroupingId(); - }); + qDebug() << "PtmIslandSheet::writeIdentificationGroup getPtmIslandList" ; + std::vector<PtmIslandSp> ptm_island_list; + for (auto ptm_island_sp : _p_ptm_grouping_experiment->getPtmIslandList() ) { + qDebug() << "PtmIslandSheet::writeIdentificationGroup getPtmIslandList copy" ; + ptm_island_list.push_back(ptm_island_sp); + } + qDebug() << "PtmIslandSheet::writeIdentificationGroup sort" ; + std::sort(ptm_island_list.begin(), ptm_island_list.end(), + [](PtmIslandSp & a, PtmIslandSp & b) + { + return a.get()->getGroupingId() < b.get()->getGroupingId(); + }); + + qDebug() << "PtmIslandSheet::writeIdentificationGroup 2" ; + for (auto & ptm_island:ptm_island_list) { + writeOnePtmIsland(ptm_island); + } - for (auto & ptm_island:ptm_island_list) { - writeOnePtmIsland(ptm_island); - } - _p_writer->writeLine(); + qDebug() << "PtmIslandSheet::writeIdentificationGroup end" ; } @@ -129,7 +140,7 @@ void PtmIslandSheet::writeOnePtmIsland(PtmIslandSp & sp_ptm_island) { const PtmIslandGroup * p_ptm_island_group = p_ptm_island_subgroup->getPtmIslandGroup(); unsigned int group_number = p_ptm_island_group->getGroupNumber(); unsigned int subgroup_number = p_ptm_island_subgroup->getSubgroupNumber(); - + _p_ods_export->setEvenOrOddStyle(group_number, _p_writer); _p_writer->writeCell(pappso::Utils::getLexicalOrderedString(group_number)); _p_ods_export->setEvenOrOddStyle(subgroup_number, _p_writer); @@ -139,16 +150,17 @@ void PtmIslandSheet::writeOnePtmIsland(PtmIslandSp & sp_ptm_island) { _p_writer->writeCell(p_protein->getAccession()); _p_writer->writeCell(p_protein->getDescription()); _p_writer->writeCell(p_protein->getMass()); - + QStringList position_list; - for (unsigned int position : sp_ptm_island.get()->getPositionList()) { - position_list << QString("%1").arg(position+1); - } - _p_writer->writeCell(position_list.join(" ")); + for (unsigned int position : sp_ptm_island.get()->getPositionList()) { + position_list << QString("%1").arg(position+1); + } + _p_writer->writeCell(position_list.join(" ")); // _p_writer->writeCell("Spectra"); _p_writer->writeCell((unsigned int) sp_ptm_island.get()->getPtmIslandSubroup()->countSampleScan()); // _p_writer->writeCell("Uniques"); _p_writer->writeCell((unsigned int) sp_ptm_island.get()->countSequence()); + _p_writer->writeCell((unsigned int) sp_ptm_island.get()->getPtmIslandSubroup()->getPtmIslandList().size()); qDebug() << "ProteinSheet::writeOneProtein end" ; -- GitLab