Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
* \file /output/groupingsheet.cpp
* \date 9/5/2017
* \author Olivier Langella
* \brief ODS grouping sheet
*/
/*******************************************************************************
* Copyright (c) 2017 Olivier Langella <olivier.langella@u-psud.fr>.
*
* This file is part of XTPcpp.
*
* XTPcpp 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.
*
* XTPcpp 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 XTPcpp. If not, see <http://www.gnu.org/licenses/>.
*
* Contributors:
* Olivier Langella <olivier.langella@u-psud.fr> - initial API and implementation
******************************************************************************/
#include "groupingsheet.h"
GroupingSheet::GroupingSheet (OdsExport * p_ods_export, CalcWriterInterface * p_writer, const Project * p_project): _p_project(p_project) {
_p_writer = p_writer;
_p_ods_export = p_ods_export;
p_writer->writeSheet("groups");
OdsTableSettings table_settings;
table_settings.setVerticalSplit(1);
_p_writer->setCurrentOdsTableSettings(table_settings);
writeHeaders();
std::vector<IdentificationGroup *> identification_list = p_project->getIdentificationGroupList();
for (IdentificationGroup * p_ident:identification_list) {
//writeHeaders(p_ident);
writeIdentificationGroup(p_ident);
}
}
void GroupingSheet::writeIdentificationGroup(IdentificationGroup * p_ident) {
_p_writer->writeLine();
if (_p_project->getProjectMode() == ProjectMode::individual) {
_p_writer->writeCell(p_ident->getMsRunSpList().at(0).get()->getSampleName());
}
_p_writer->writeCell((unsigned int) p_ident->countGroup());
_p_writer->writeCell((unsigned int) p_ident->countSubGroup());
_p_writer->writeCell(p_ident->countProteinMatch(ValidationState::grouped));
_p_writer->writeCell(p_ident->countPeptideMass(ValidationState::grouped));
_p_writer->writeCell(p_ident->countPeptideMatch(ValidationState::grouped));
//_p_writer->writeCell(p_ident->countSequence(ValidationState::grouped));
_p_writer->writeCell(p_ident->countPeptideMassSample(ValidationState::grouped));
_p_writer->writeCell(p_ident->getProteinFdr(ValidationState::valid));
_p_writer->writeCell(p_ident->getPeptideMassFdr(ValidationState::valid));
}
void GroupingSheet::writeHeaders() {
// groups, subgroups, proteins, psm, sequence, peptide/mass, pep FDR, prot FDR
_p_writer->writeLine();
if (_p_project->getProjectMode() == ProjectMode::individual) {
_p_writer->writeCell("sample");
}
_p_writer->setCellAnnotation("number of groups");
_p_writer->writeCell("groups");
_p_writer->setCellAnnotation("number of subgroups");
_p_writer->writeCell("subgroups");
_p_writer->setCellAnnotation("number of grouped proteins");
_p_writer->writeCell("proteins");
_p_writer->setCellAnnotation("number of distinct grouped peptides in the whole experiment");
_p_writer->writeCell("peptides");
_p_writer->setCellAnnotation("number of peptide hits : each grouped peptide spectrum match given by the identification engine");
_p_writer->writeCell("psm");
//_p_writer->writeCell("sequences");
_p_writer->setCellAnnotation("number of unique combinations : grouped peptide sequence+modifications+sample name");
_p_writer->writeCell("peptide/mass/sample");
_p_writer->setCellAnnotation("FDR at the protein level (number of decoy valid proteins / totale number of valid proteins)");
_p_writer->writeCell("prot FDR");
_p_writer->setCellAnnotation("FDR at the peptide level (number of decoy valid peptides / totale number of valid peptides)");
_p_writer->writeCell("pep FDR");
}