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

first working prototype of the peptidomic compar spectra ODS sheet

parent 19ee9ef2
No related branches found
No related tags found
No related merge requests found
......@@ -135,6 +135,7 @@ SET(CPP_FILES
output/ods/ptm/ptmspectrasheet.cpp
output/ods/comparbasesheet.cpp
output/ods/comparspecificspectrasheet.cpp
output/ods/comparspectrabypeptide.cpp
output/ods/comparspectrasheet.cpp
output/ods/groupingsheet.cpp
output/ods/infosheet.cpp
......
......@@ -140,7 +140,7 @@ ComparSpectraByPeptide::writeIdentificationGroup(IdentificationGroup *p_ident)
});
const PeptideEvidence *p_best_peptide_evidence = nullptr;
std::vector<size_t> sample_scan_list;
std::map<QString, std::vector<size_t>> sample_scan_list;
for(auto &peptide_evidence : peptide_evidence_list)
{
......@@ -155,6 +155,7 @@ ComparSpectraByPeptide::writeIdentificationGroup(IdentificationGroup *p_ident)
writeBestPeptideEvidence(group_pair.second.get(),
p_best_peptide_evidence,
sample_scan_list);
sample_scan_list.clear();
p_best_peptide_evidence = peptide_evidence;
}
else
......@@ -165,16 +166,54 @@ ComparSpectraByPeptide::writeIdentificationGroup(IdentificationGroup *p_ident)
p_best_peptide_evidence = peptide_evidence;
}
}
sample_scan_list.push_back(peptide_evidence->getHashSampleScan());
QString key_sample;
const Label *p_label =
peptide_evidence->getPeptideXtpSp().get()->getLabel();
if(p_label == nullptr)
{
key_sample = peptide_evidence->getMsRunP()->getXmlId();
}
else
{
key_sample = QString("%1-%2")
.arg(peptide_evidence->getMsRunP()->getXmlId())
.arg(p_label->getXmlId());
}
auto it = sample_scan_list.find(key_sample);
if(it != sample_scan_list.end())
{
it->second.push_back(peptide_evidence->getHashSampleScan());
}
else
{
std::vector<size_t> one_element;
one_element.push_back(peptide_evidence->getHashSampleScan());
sample_scan_list.insert(std::pair<QString, std::vector<size_t>>(
key_sample, one_element));
}
//_p_writer->writeCell(msrun_sp.get()->getSampleName());
// sample_scan_list.push_back(peptide_evidence->getHashSampleScan());
}
if(p_best_peptide_evidence != nullptr)
{
writeBestPeptideEvidence(
group_pair.second.get(), p_best_peptide_evidence, sample_scan_list);
sample_scan_list.clear();
}
}
if(!_first_cell_coordinate.isEmpty())
{
QString last_cell_coordinate = _p_writer->getOdsCellCoordinate();
qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " "
<< _first_cell_coordinate << " " << last_cell_coordinate;
OdsColorScale color_scale(_first_cell_coordinate, last_cell_coordinate);
_p_writer->addColorScale(color_scale);
_first_cell_coordinate = "";
}
_p_writer->writeLine();
_p_writer->writeLine();
qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " end";
......@@ -185,13 +224,9 @@ void
ComparSpectraByPeptide::writeBestPeptideEvidence(
const GroupingGroup *p_group,
const PeptideEvidence *p_peptide_evidence,
std::vector<size_t> &sample_scan_list)
const std::map<QString, std::vector<size_t>> &sample_scan_list)
{
std::sort(sample_scan_list.begin(), sample_scan_list.end());
auto last = std::unique(sample_scan_list.begin(), sample_scan_list.end());
sample_scan_list.erase(last, sample_scan_list.end());
_p_writer->writeLine();
......@@ -213,17 +248,17 @@ ComparSpectraByPeptide::writeBestPeptideEvidence(
QStringList sg_list = p_group->getSubgroupIdList(p_peptide_evidence);
_p_writer->writeCell((unsigned int)sg_list.size());
_p_writer->writeCell(sg_list.join(" "));
_p_writer->writeCell((unsigned int)sample_scan_list.size());
//_p_writer->writeCell((unsigned int)sample_scan_list.size());
for(MsRunSp &msrun_sp : _msrun_list)
{
if(_label_list.size() == 0)
{
writeComparValue(
p_protein_match, ValidationState::validAndChecked, msrun_sp.get());
sample_scan_list, ValidationState::validAndChecked, msrun_sp.get());
if(_first_cell_coordinate.isEmpty())
{
_first_cell_coordinate = _p_writer->getOdsCellCoordinate();
......@@ -233,7 +268,7 @@ ComparSpectraByPeptide::writeBestPeptideEvidence(
{
for(const Label *p_label : _label_list)
{
writeComparValue(p_protein_match,
writeComparValue(sample_scan_list,
ValidationState::validAndChecked,
msrun_sp.get(),
p_label);
......@@ -245,3 +280,43 @@ ComparSpectraByPeptide::writeBestPeptideEvidence(
}
}
}
void
ComparSpectraByPeptide::writeComparValue(
const std::map<QString, std::vector<size_t>> &sample_scan_list,
ValidationState state,
const MsRun *p_msrun,
const Label *p_label)
{
/*
std::sort(sample_scan_list.begin(), sample_scan_list.end());
auto last = std::unique(sample_scan_list.begin(), sample_scan_list.end());
sample_scan_list.erase(last, sample_scan_list.end());
*/
QString key_sample;
if(p_label == nullptr)
{
key_sample = p_msrun->getXmlId();
}
else
{
key_sample =
QString("%1-%2").arg(p_msrun->getXmlId()).arg(p_label->getXmlId());
}
auto it = sample_scan_list.find(key_sample);
if(it == sample_scan_list.end())
{
_p_writer->writeCell((unsigned int)0);
}
else
{
std::vector<size_t> new_list = it->second;
std::sort(new_list.begin(), new_list.end());
auto last = std::unique(new_list.begin(), new_list.end());
new_list.erase(last, new_list.end());
_p_writer->writeCell((unsigned int)new_list.size());
}
}
......@@ -49,9 +49,15 @@ class ComparSpectraByPeptide
private:
void writeIdentificationGroup(IdentificationGroup *p_ident);
void writeHeaders(IdentificationGroup *p_ident);
void writeBestPeptideEvidence(const GroupingGroup *p_group,
const PeptideEvidence *p_peptide_evidence,
std::vector<size_t> &sample_scan_list);
void writeBestPeptideEvidence(
const GroupingGroup *p_group,
const PeptideEvidence *p_peptide_evidence,
const std::map<QString, std::vector<size_t>> &sample_scan_list);
void writeComparValue(
const std::map<QString, std::vector<size_t>> &sample_scan_list,
ValidationState state,
const MsRun *p_msrun,
const Label *p_label = nullptr);
public:
ComparSpectraByPeptide(OdsExport *p_ods_export,
......
......@@ -36,6 +36,7 @@
#include "peptidepossheet.h"
#include "comparspectrasheet.h"
#include "comparspecificspectrasheet.h"
#include "comparspectrabypeptide.h"
#include "infosheet.h"
#include "samplesheet.h"
#include "groupingsheet.h"
......@@ -110,11 +111,11 @@ OdsExport::write(CalcWriterInterface *p_writer, WorkMonitorInterface *p_monitor)
{
// export compar sheets not possible in individual mode
if(settings.value("export_ods/peptidomiccomparspectra", "true").toBool())
{
//if(settings.value("export_ods/peptidomiccomparspectra", "true").toBool())
// {
p_monitor->message(QObject::tr("writing spectra comparisons for peptidomic"));
ComparSpectraSheet(this, p_writer, _p_project).writeSheet();
}
ComparSpectraByPeptide(this, p_writer, _p_project).writeSheet();
// }
if(settings.value("export_ods/comparspectra", "true").toBool())
{
p_monitor->message(QObject::tr("writing spectra comparisons"));
......
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