libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
pappso::cbor::psm::SageReader Class Reference

#include <sagereader.h>

Classes

struct  SageModification
class  FastaSeq

Public Member Functions

 SageReader (pappso::UiMonitorInterface *p_monitor, pappso::cbor::CborStreamWriter *p_output, const SageFileReader &sage_file_reader, const QString &sage_json_file)
void read ()
virtual ~SageReader ()
std::vector< SageModificationgetStaticModificationList () const
std::vector< SageModificationgetVariableModificationList () const
QString getDecoyTag () const
const SageFileReadergetSageFileReader () const
pappso::cbor::CborStreamWritergetCborStreamWriter () const
const QString & getmJsonAbsoluteFilePath () const
const QString & getMzmlPath (const QString &file_msrun) const

Private Member Functions

void readTsvFile ()
void extractMzmlPathList (const QJsonDocument &json_doc)
QString getTsvFilePath (const QJsonDocument &json_doc)
QString getFastaFilePath (const QJsonDocument &json_doc)

Private Attributes

const SageFileReaderm_sageFileReader
pappso::UiMonitorInterfacemp_monitor
pappso::cbor::CborStreamWritermp_cborWriter
PsmProteinMap m_psmProteinMap
QString m_jsonAbsoluteFilePath
QStringList m_mzmlPathList

Detailed Description

Todo
write docs

Definition at line 41 of file sagereader.h.

Constructor & Destructor Documentation

◆ SageReader()

pappso::cbor::psm::SageReader::SageReader ( pappso::UiMonitorInterface * p_monitor,
pappso::cbor::CborStreamWriter * p_output,
const SageFileReader & sage_file_reader,
const QString & sage_json_file )

Default constructor

Definition at line 41 of file sagereader.cpp.

45 : m_sageFileReader(sage_file_reader)
46{
47 mp_monitor = p_monitor;
48 mp_cborWriter = p_output;
49 m_jsonAbsoluteFilePath = sage_json_file;
50}
pappso::cbor::CborStreamWriter * mp_cborWriter
Definition sagereader.h:99
const SageFileReader & m_sageFileReader
Definition sagereader.h:97
pappso::UiMonitorInterface * mp_monitor
Definition sagereader.h:98

References m_jsonAbsoluteFilePath, m_sageFileReader, mp_cborWriter, and mp_monitor.

Referenced by pappso::cbor::psm::SageReader::FastaSeq::FastaSeq().

◆ ~SageReader()

pappso::cbor::psm::SageReader::~SageReader ( )
virtual

Destructor

Definition at line 52 of file sagereader.cpp.

53{
54}

Member Function Documentation

◆ extractMzmlPathList()

void pappso::cbor::psm::SageReader::extractMzmlPathList ( const QJsonDocument & json_doc)
private

Definition at line 166 of file sagereader.cpp.

167{
168
169 QJsonObject sage_object = json_doc.object();
170 QJsonValue json_mzml_path_list = sage_object.value("mzml_paths");
171 if(json_mzml_path_list.isUndefined())
172 {
173 throw pappso::ExceptionNotFound(QObject::tr("mzml_paths not found in Sage json document"));
174 }
175 m_mzmlPathList.clear();
176
177 for(auto path_mzml : json_mzml_path_list.toArray())
178 {
179 m_mzmlPathList << path_mzml.toString();
180 }
181}

References m_mzmlPathList.

Referenced by readTsvFile().

◆ getCborStreamWriter()

pappso::cbor::CborStreamWriter & pappso::cbor::psm::SageReader::getCborStreamWriter ( ) const

Definition at line 103 of file sagereader.cpp.

104{
105 return *mp_cborWriter;
106}

References mp_cborWriter.

◆ getDecoyTag()

QString pappso::cbor::psm::SageReader::getDecoyTag ( ) const

Definition at line 329 of file sagereader.cpp.

330{
331 QString path;
332 QJsonObject sage_object = m_sageFileReader.getJsonDocument().object();
333 QJsonValue database = sage_object.value("database");
334 if(database.isUndefined())
335 {
336 throw pappso::ExceptionNotFound(QObject::tr("database not found in Sage json document"));
337 }
338 path = database.toObject().value("decoy_tag").toString();
339 if(path.isEmpty())
340 {
341 throw pappso::ExceptionNotFound(QObject::tr("decoy_tag value is empty"));
342 }
343 return path;
344}

References m_sageFileReader.

Referenced by pappso::cbor::psm::SageTsvHandler::SageTsvHandler().

◆ getFastaFilePath()

QString pappso::cbor::psm::SageReader::getFastaFilePath ( const QJsonDocument & json_doc)
private

Definition at line 225 of file sagereader.cpp.

226{
227 QString path;
228 QJsonObject sage_object = json_doc.object();
229 QJsonValue database = sage_object.value("database");
230 if(database.isUndefined())
231 {
232 throw pappso::ExceptionNotFound(QObject::tr("database not found in Sage json document"));
233 }
234 path = database.toObject().value("fasta").toString();
235 if(path.isEmpty())
236 {
237 throw pappso::ExceptionNotFound(QObject::tr("fasta value is empty"));
238 }
239 return path;
240}

Referenced by readTsvFile().

◆ getmJsonAbsoluteFilePath()

const QString & pappso::cbor::psm::SageReader::getmJsonAbsoluteFilePath ( ) const

Definition at line 57 of file sagereader.cpp.

58{
60}

References m_jsonAbsoluteFilePath.

◆ getMzmlPath()

const QString & pappso::cbor::psm::SageReader::getMzmlPath ( const QString & file_msrun) const

Definition at line 184 of file sagereader.cpp.

185{
186 for(auto &file_path : m_mzmlPathList)
187 {
188 if(file_path.endsWith(file_msrun))
189 return file_path;
190 }
191 throw pappso::ExceptionNotFound(
192 QObject::tr("MS run %1 not found in Sage json document").append(file_msrun));
193}

References m_mzmlPathList.

◆ getSageFileReader()

const pappso::cbor::psm::SageFileReader & pappso::cbor::psm::SageReader::getSageFileReader ( ) const

Definition at line 347 of file sagereader.cpp.

348{
349 return m_sageFileReader;
350}

References m_sageFileReader.

◆ getStaticModificationList()

std::vector< pappso::cbor::psm::SageReader::SageModification > pappso::cbor::psm::SageReader::getStaticModificationList ( ) const

Definition at line 244 of file sagereader.cpp.

245{
246 std::vector<SageReader::SageModification> list;
247 QJsonObject sage_object = m_sageFileReader.getJsonDocument().object();
248 QJsonValue database = sage_object.value("database");
249 if(database.isUndefined())
250 {
251 throw pappso::ExceptionNotFound(QObject::tr("database not found in Sage json document"));
252 }
253
254 QJsonValue static_mods = database.toObject().value("static_mods");
255 if(static_mods.isUndefined())
256 {
257 throw pappso::ExceptionNotFound(QObject::tr("static_mods not found in Sage json document"));
258 }
259 for(QString residue_str : static_mods.toObject().keys())
260 {
261 SageModification modif;
262 modif.residue = residue_str.at(0);
264 (Enums::AminoAcidChar)modif.residue.toLatin1(),
265 static_mods.toObject().value(residue_str).toDouble());
266 modif.strModification =
267 QString::number(static_mods.toObject().value(residue_str).toDouble(), 'f', 6);
268 if(modif.strModification.isEmpty())
269 {
270 throw pappso::PappsoException(QObject::tr(" modif.strModification is empty"));
271 }
272 if(modif.modification->getMass() < 0)
273 {
274 modif.strModification = QString("[%1]").arg(modif.strModification);
275 }
276 else
277 {
278 modif.strModification = QString("[+%1]").arg(modif.strModification);
279 }
280 list.push_back(modif);
281 }
282 return list;
283}
static AaModificationP guessAaModificationPbyMonoisotopicMassDelta(Enums::AminoAcidChar aa, pappso_double mass)
Definition utils.cpp:658

References pappso::AaModification::getMass(), pappso::Utils::guessAaModificationPbyMonoisotopicMassDelta(), m_sageFileReader, pappso::cbor::psm::SageReader::SageModification::modification, pappso::cbor::psm::SageReader::SageModification::residue, and pappso::cbor::psm::SageReader::SageModification::strModification.

Referenced by pappso::cbor::psm::SageTsvHandler::SageTsvHandler().

◆ getTsvFilePath()

QString pappso::cbor::psm::SageReader::getTsvFilePath ( const QJsonDocument & json_doc)
private

Definition at line 197 of file sagereader.cpp.

198{
199 QString path;
200 QJsonObject sage_object = json_doc.object();
201 QJsonValue output_path = sage_object.value("output_paths");
202 if(output_path.isUndefined())
203 {
204 throw pappso::ExceptionNotFound(QObject::tr("output_paths not found in Sage json document"));
205 }
206
207 if(!output_path.isArray())
208 {
209 throw pappso::ExceptionNotFound(QObject::tr("output_paths is not an array"));
210 }
211 for(auto element : output_path.toArray())
212 {
213 if(element.isString())
214 {
215 if(element.toString().endsWith(".tsv"))
216 {
217 path = element.toString();
218 }
219 }
220 }
221 return path;
222}

Referenced by readTsvFile().

◆ getVariableModificationList()

std::vector< pappso::cbor::psm::SageReader::SageModification > pappso::cbor::psm::SageReader::getVariableModificationList ( ) const

Definition at line 286 of file sagereader.cpp.

287{
288 std::vector<SageReader::SageModification> list;
289 QJsonObject sage_object = m_sageFileReader.getJsonDocument().object();
290 QJsonValue database = sage_object.value("database");
291 if(database.isUndefined())
292 {
293 throw pappso::ExceptionNotFound(QObject::tr("database not found in Sage json document"));
294 }
295
296 QJsonValue var_mods = database.toObject().value("variable_mods");
297 if(var_mods.isUndefined())
298 {
299 throw pappso::ExceptionNotFound(QObject::tr("static_mods not found in Sage json document"));
300 }
301 for(QString residue_str : var_mods.toObject().keys())
302 {
303 SageModification modif;
304 modif.residue = residue_str.at(0);
305 for(QJsonValue one_mass : var_mods.toObject().value(residue_str).toArray())
306 {
308 (Enums::AminoAcidChar)modif.residue.toLatin1(), one_mass.toDouble());
309 modif.strModification = QString::number(one_mass.toDouble(), 'f', 6);
310 if(modif.strModification.isEmpty())
311 {
312 throw pappso::PappsoException(QObject::tr(" modif.strModification is empty"));
313 }
314 if(modif.modification->getMass() < 0)
315 {
316 modif.strModification = QString("[%1]").arg(modif.strModification);
317 }
318 else
319 {
320 modif.strModification = QString("[+%1]").arg(modif.strModification);
321 }
322 list.push_back(modif);
323 }
324 }
325 return list;
326}

References pappso::AaModification::getMass(), pappso::Utils::guessAaModificationPbyMonoisotopicMassDelta(), m_sageFileReader, pappso::cbor::psm::SageReader::SageModification::modification, pappso::cbor::psm::SageReader::SageModification::residue, and pappso::cbor::psm::SageReader::SageModification::strModification.

Referenced by pappso::cbor::psm::SageTsvHandler::SageTsvHandler().

◆ read()

void pappso::cbor::psm::SageReader::read ( )

Definition at line 64 of file sagereader.cpp.

References readTsvFile().

Referenced by pappso::cbor::psm::SageFileReader::SageFileReader().

◆ readTsvFile()

void pappso::cbor::psm::SageReader::readTsvFile ( )
private

Definition at line 110 of file sagereader.cpp.

111{
112
113 extractMzmlPathList(m_sageFileReader.getJsonDocument());
114 // getTsvFilePath(mp_identificationDataSource->getJsonDocument().object());
115 QUrl tsv_url(getTsvFilePath(m_sageFileReader.getJsonDocument()));
116 QFileInfo tsv_file_info(tsv_url.toLocalFile());
117 if(!tsv_url.isLocalFile())
118 {
119 tsv_file_info.setFile(getTsvFilePath(m_sageFileReader.getJsonDocument()));
120 }
121 SageTsvHandler handler(mp_monitor, *this, m_psmProteinMap);
122 try
123 {
124 TsvReader tsv_reader(handler);
125
126 QFile tsv_file(tsv_file_info.absoluteFilePath());
127 tsv_reader.parse(tsv_file);
128 tsv_file.close();
129 }
130 catch(OdsException &error_ods)
131 {
132 throw pappso::PappsoException(QObject::tr("Error reading %1 file:\n %2")
133 .arg(tsv_file_info.absoluteFilePath())
134 .arg(error_ods.qwhat()));
135 }
136
137
138 // collect protein sequences
139 QFile fastaFile(getFastaFilePath(m_sageFileReader.getJsonDocument()));
140 SageReader::FastaSeq seq(this);
141 pappso::FastaReader reader(seq);
142 reader.parse(fastaFile);
143
144 qDebug();
145 mp_cborWriter->append("protein_map");
147
148
149 mp_cborWriter->append("sample_list");
150 mp_cborWriter->startArray();
151 try
152 {
153 handler.writeSampleList();
154 }
155 catch(OdsException &error_ods)
156 {
157 throw pappso::PappsoException(QObject::tr("Error reading %1 file:\n %2")
158 .arg(tsv_file_info.absoluteFilePath())
159 .arg(error_ods.qwhat()));
160 }
161
162 mp_cborWriter->endArray();
163}
void extractMzmlPathList(const QJsonDocument &json_doc)
QString getFastaFilePath(const QJsonDocument &json_doc)
QString getTsvFilePath(const QJsonDocument &json_doc)

References extractMzmlPathList(), getFastaFilePath(), getTsvFilePath(), m_psmProteinMap, m_sageFileReader, mp_cborWriter, mp_monitor, pappso::FastaReader::parse(), and pappso::cbor::psm::SageTsvHandler::writeSampleList().

Referenced by read().

Member Data Documentation

◆ m_jsonAbsoluteFilePath

QString pappso::cbor::psm::SageReader::m_jsonAbsoluteFilePath
private

Definition at line 101 of file sagereader.h.

Referenced by SageReader(), and getmJsonAbsoluteFilePath().

◆ m_mzmlPathList

QStringList pappso::cbor::psm::SageReader::m_mzmlPathList
private

Definition at line 102 of file sagereader.h.

Referenced by extractMzmlPathList(), and getMzmlPath().

◆ m_psmProteinMap

PsmProteinMap pappso::cbor::psm::SageReader::m_psmProteinMap
private

Definition at line 100 of file sagereader.h.

Referenced by readTsvFile().

◆ m_sageFileReader

const SageFileReader& pappso::cbor::psm::SageReader::m_sageFileReader
private

◆ mp_cborWriter

pappso::cbor::CborStreamWriter* pappso::cbor::psm::SageReader::mp_cborWriter
private

Definition at line 99 of file sagereader.h.

Referenced by SageReader(), getCborStreamWriter(), and readTsvFile().

◆ mp_monitor

pappso::UiMonitorInterface* pappso::cbor::psm::SageReader::mp_monitor
private

Definition at line 98 of file sagereader.h.

Referenced by SageReader(), and readTsvFile().


The documentation for this class was generated from the following files: