libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
pappso::MsFileAccessor Class Reference

#include <msfileaccessor.h>

Public Member Functions

 MsFileAccessor (const QString &file_name, const QString &xml_prefix)
 
 MsFileAccessor (const MsFileAccessor &other)
 
virtual ~MsFileAccessor ()
 
const QString & getFileName () const
 
MzFormat getFileFormat () const
 get the raw format of mz data
 
FileReaderType getFileReaderType () const
 get the file reader type
 
void setPreferredFileReaderType (MzFormat format, FileReaderType reader_type)
 given an mz format, explicitly set the preferred reader
 
FileReaderType getpreferredFileReaderType (MzFormat format)
 
std::vector< MsRunIdCstSPtrgetMsRunIds ()
 
void setSelectedMsRunIdIndex (std::size_t index)
 
std::size_t getSelectedMsRunIdIndex () const
 
MsRunIdCstSPtr getSelectedMsRunId ()
 
MsRunReaderSPtr msRunReaderSPtr (MsRunIdCstSPtr ms_run_id)
 
MsRunReaderSPtr msRunReaderSPtr (std::size_t ms_run_id_index)
 
MsRunReaderSPtr msRunReaderSPtrForSelectedMsRunIdIndex ()
 
MsRunReaderSPtr getMsRunReaderSPtrByRunId (const QString &run_id, const QString &xml_id)
 get an msrun reader by finding the run_id in file
 
TimsMsRunReaderMs2SPtr buildTimsMsRunReaderMs2SPtr ()
 if possible, builds directly a dedicated Tims TOF tdf file reader
 

Static Public Member Functions

static MsRunReaderSPtr buildMsRunReaderSPtr (MsRunIdCstSPtr ms_run_id)
 get an MsRunReader directly from a valid MsRun ID
 
static MsRunReaderSPtr buildMsRunReaderSPtr (MsRunIdCstSPtr ms_run_id, pappso::FileReaderType preferred_file_reader_type)
 get an MsRunReader directly from a valid MsRun ID
 

Private Attributes

QString m_fileName
 
const QString m_xmlPrefix
 
MzFormat m_fileFormat = MzFormat::unknown
 
FileReaderType m_fileReaderType
 
std::map< MzFormat, FileReaderTypem_preferredFileReaderTypeMap
 
std::size_t m_selectedMsRunIdIndex
 

Detailed Description

Definition at line 26 of file msfileaccessor.h.

Constructor & Destructor Documentation

◆ MsFileAccessor() [1/2]

pappso::MsFileAccessor::MsFileAccessor ( const QString &  file_name,
const QString &  xml_prefix 
)

Definition at line 31 of file msfileaccessor.cpp.

33 : m_fileName(file_name), m_xmlPrefix(xml_prefix)
34{
35 QFile file(file_name);
36 if(!file.exists())
37 throw(ExceptionNotFound(QObject::tr("File %1 not found.")
38 .arg(QFileInfo(file_name).absoluteFilePath())));
39}

◆ MsFileAccessor() [2/2]

pappso::MsFileAccessor::MsFileAccessor ( const MsFileAccessor other)

Definition at line 42 of file msfileaccessor.cpp.

43 : m_fileName(other.m_fileName),
44 m_xmlPrefix(other.m_xmlPrefix),
45 m_fileFormat(other.m_fileFormat),
46 m_fileReaderType(other.m_fileReaderType)
47{
48}
FileReaderType m_fileReaderType

◆ ~MsFileAccessor()

pappso::MsFileAccessor::~MsFileAccessor ( )
virtual

Definition at line 50 of file msfileaccessor.cpp.

51{
52}

Member Function Documentation

◆ buildMsRunReaderSPtr() [1/2]

MsRunReaderSPtr pappso::MsFileAccessor::buildMsRunReaderSPtr ( MsRunIdCstSPtr  ms_run_id)
static

get an MsRunReader directly from a valid MsRun ID

no need to check the file format or filename : all is already part of the msrunid

Parameters
ms_run_idmsrun identifier
Returns
msrun reader shared pointer

Definition at line 332 of file msfileaccessor.cpp.

333{
335}
static MsRunReaderSPtr buildMsRunReaderSPtr(MsRunIdCstSPtr ms_run_id)
get an MsRunReader directly from a valid MsRun ID

References buildMsRunReaderSPtr(), and pappso::tims.

Referenced by buildMsRunReaderSPtr().

◆ buildMsRunReaderSPtr() [2/2]

MsRunReaderSPtr pappso::MsFileAccessor::buildMsRunReaderSPtr ( MsRunIdCstSPtr  ms_run_id,
pappso::FileReaderType  preferred_file_reader_type 
)
static

get an MsRunReader directly from a valid MsRun ID

no need to check the file format or filename : all is already part of the msrunid

Parameters
ms_run_idmsrun identifier
preferred_file_reader_typethe preferred file reader type to use (depending on the mz format)
Returns
msrun reader shared pointer

Definition at line 338 of file msfileaccessor.cpp.

340{
341 QFile file(ms_run_id.get()->getFileName());
342 if(!file.exists())
343 throw(ExceptionNotFound(
344 QObject::tr("unable to build a reader : file %1 not found.")
345 .arg(QFileInfo(ms_run_id.get()->getFileName()).absoluteFilePath())));
346
347 MzFormat file_format = ms_run_id.get()->getMzFormat();
348
349 if(file_format == MzFormat::xy)
350 {
351 // qDebug() << "Returning a XyMsRunReader.";
352
353 return std::make_shared<XyMsRunReader>(ms_run_id);
354 }
355 else if(file_format == MzFormat::unknown)
356 {
357 throw(PappsoException(
358 QObject::tr("unable to build a reader for %1 : unknown file format")
359 .arg(QFileInfo(ms_run_id.get()->getFileName()).absoluteFilePath())));
360 }
361
362 else if(file_format == MzFormat::brukerTims)
363 {
364 if(preferred_file_reader_type == pappso::FileReaderType::tims)
365 {
366 return std::make_shared<TimsMsRunReader>(ms_run_id);
367 }
368 else if(preferred_file_reader_type == pappso::FileReaderType::tims_ms2)
369 {
370 return std::make_shared<TimsMsRunReaderMs2>(ms_run_id);
371 }
372
373 // qDebug() << "by default, build a TimsMsRunReader.";
374 return std::make_shared<TimsMsRunReader>(ms_run_id);
375 }
376 else
377 {
378 // qDebug() << "Returning a PwizMsRunReader .";
379
380 return std::make_shared<PwizMsRunReader>(ms_run_id);
381 }
382}
MzFormat
Definition types.h:120
@ xy
(x,y) format
@ unknown
unknown format

References pappso::brukerTims, pappso::tims, pappso::tims_ms2, pappso::unknown, and pappso::xy.

◆ buildTimsMsRunReaderMs2SPtr()

TimsMsRunReaderMs2SPtr pappso::MsFileAccessor::buildTimsMsRunReaderMs2SPtr ( )

if possible, builds directly a dedicated Tims TOF tdf file reader

Definition at line 216 of file msfileaccessor.cpp.

217{
218 // try TimsData reader
219 QString tims_dir = m_fileName;
220 if(!QFileInfo(tims_dir).isDir())
221 {
222 tims_dir = QFileInfo(m_fileName).absolutePath();
223 }
224 TimsMsFileReader tims_file_reader(tims_dir);
225
226 std::vector<MsRunIdCstSPtr> ms_run_ids =
227 tims_file_reader.getMsRunIds(m_xmlPrefix);
228
229 if(ms_run_ids.size())
230 {
231 // qDebug() << "Might well be handled using the Bruker code";
233 m_fileFormat = tims_file_reader.getFileFormat();
234 m_fileName = tims_dir;
235
236 return std::make_shared<TimsMsRunReaderMs2>(ms_run_ids.front());
237 }
238 else
239 {
240 throw(ExceptionNotPossible(
241 QObject::tr("Unable to read mz data directory %1 with TimsTOF reader.")
242 .arg(tims_dir)));
243 }
244}

References pappso::TimsMsFileReader::getFileFormat(), pappso::TimsMsFileReader::getMsRunIds(), m_fileFormat, m_fileName, m_fileReaderType, m_xmlPrefix, and pappso::tims_ms2.

◆ getFileFormat()

MzFormat pappso::MsFileAccessor::getFileFormat ( ) const

get the raw format of mz data

Definition at line 63 of file msfileaccessor.cpp.

64{
65 return m_fileFormat;
66}

References m_fileFormat.

Referenced by pappso::TandemWrapperRun::convertOrginalMsData2mzXmlData().

◆ getFileName()

const QString & pappso::MsFileAccessor::getFileName ( ) const

Definition at line 56 of file msfileaccessor.cpp.

57{
58 return m_fileName;
59}

References m_fileName.

◆ getFileReaderType()

FileReaderType pappso::MsFileAccessor::getFileReaderType ( ) const

get the file reader type

Definition at line 186 of file msfileaccessor.cpp.

187{
188 return m_fileReaderType;
189}

References m_fileReaderType.

◆ getMsRunIds()

std::vector< MsRunIdCstSPtr > pappso::MsFileAccessor::getMsRunIds ( )

Definition at line 70 of file msfileaccessor.cpp.

71{
72 // qDebug();
73
74 // Try the PwizMsFileReader
75
76 PwizMsFileReader pwiz_ms_file_reader(m_fileName);
77
78 std::vector<MsRunIdCstSPtr> ms_run_ids =
79 pwiz_ms_file_reader.getMsRunIds(m_xmlPrefix);
80 if(ms_run_ids.size())
81 {
82 // qDebug() << "Might well be handled using the Pwiz code.";
83 m_fileFormat = pwiz_ms_file_reader.getFileFormat();
85
86 // But the user might have configured one preferred reader type.
87
89 if(pref != m_preferredFileReaderTypeMap.end())
90 {
91 m_fileReaderType = pref->second;
92 }
93
94 return ms_run_ids;
95 }
96
97 // qDebug() << "The Pwiz reader did not work.";
98
99 // Try the TimsData reader
100
101 QString tims_dir = m_fileName;
102 if(!QFileInfo(tims_dir).isDir())
103 {
104 tims_dir = QFileInfo(m_fileName).absolutePath();
105 }
106
107 TimsMsFileReader tims_file_reader(tims_dir);
108
109 ms_run_ids = tims_file_reader.getMsRunIds(m_xmlPrefix);
110
111 if(ms_run_ids.size())
112 {
113 // qDebug() << "Might well be handled using the Bruker code";
114
115 m_fileName = tims_dir;
116 m_fileFormat = tims_file_reader.getFileFormat();
118
120 if(pref != m_preferredFileReaderTypeMap.end())
121 {
122 m_fileReaderType = pref->second;
123 }
124
125 // qDebug() << "Returning Bruker::tims ms run(s)."
126 // << "with preferred reader type:"
127 // << Utils::fileReaderTypeAsString(m_fileReaderType);
128
129 return ms_run_ids;
130 }
131
132 // qDebug() << "The Tims reader did not work.";
133
134 // At this point try the XyMsFileReader
135
136 XyMsFileReader xy_ms_file_reader(m_fileName);
137
138 ms_run_ids = xy_ms_file_reader.getMsRunIds(m_xmlPrefix);
139
140 if(ms_run_ids.size())
141 {
142 // qDebug() << "Might well be handled using the XY code";
144
145 m_fileFormat = xy_ms_file_reader.getFileFormat();
146
147 return ms_run_ids;
148 }
149
150 // qDebug() << "The XY reader did not work.";
151
152 return ms_run_ids;
153}
std::map< MzFormat, FileReaderType > m_preferredFileReaderTypeMap

References pappso::PwizMsFileReader::getFileFormat(), pappso::TimsMsFileReader::getFileFormat(), pappso::XyMsFileReader::getFileFormat(), pappso::PwizMsFileReader::getMsRunIds(), pappso::TimsMsFileReader::getMsRunIds(), pappso::XyMsFileReader::getMsRunIds(), m_fileFormat, m_fileName, m_fileReaderType, m_preferredFileReaderTypeMap, m_xmlPrefix, pappso::pwiz, pappso::tims, and pappso::xy.

Referenced by pappso::TandemWrapperRun::convertOrginalMsData2mzXmlData(), getMsRunReaderSPtrByRunId(), getSelectedMsRunId(), msRunReaderSPtr(), and msRunReaderSPtrForSelectedMsRunIdIndex().

◆ getMsRunReaderSPtrByRunId()

MsRunReaderSPtr pappso::MsFileAccessor::getMsRunReaderSPtrByRunId ( const QString &  run_id,
const QString &  xml_id 
)

get an msrun reader by finding the run_id in file

Parameters
run_ididentifier within file of the MSrun
xml_idXML identifier given by the user to identify this MSrun in our experiment (not in the file)

Definition at line 386 of file msfileaccessor.cpp.

388{
389 std::vector<MsRunIdCstSPtr> run_list = getMsRunIds();
390 MsRunReaderSPtr reader_sp;
391 for(MsRunIdCstSPtr &original_run_id : run_list)
392 {
393 if(original_run_id.get()->getRunId() == run_id)
394 {
395 MsRunId new_run_id(*original_run_id.get());
396 new_run_id.setXmlId(xml_id);
397
398 return msRunReaderSPtr(std::make_shared<MsRunId>(new_run_id));
399 }
400 }
401
402 if((run_id.isEmpty()) && (run_list.size() == 1))
403 {
404 MsRunId new_run_id(*run_list[0].get());
405 new_run_id.setXmlId(xml_id);
406
407 return msRunReaderSPtr(std::make_shared<MsRunId>(new_run_id));
408 }
409
410
411 if(reader_sp == nullptr)
412 {
413 throw(
414 ExceptionNotFound(QObject::tr("run id %1 not found in file %2")
415 .arg(run_id)
416 .arg(QFileInfo(m_fileName).absoluteFilePath())));
417 }
418 return reader_sp;
419}
MsRunReaderSPtr msRunReaderSPtr(MsRunIdCstSPtr ms_run_id)
std::vector< MsRunIdCstSPtr > getMsRunIds()
std::shared_ptr< MsRunReader > MsRunReaderSPtr
Definition msrunreader.h:56
std::shared_ptr< const MsRunId > MsRunIdCstSPtr
Definition msrunid.h:46

References getMsRunIds(), m_fileName, msRunReaderSPtr(), and pappso::MsRunId::setXmlId().

◆ getpreferredFileReaderType()

FileReaderType pappso::MsFileAccessor::getpreferredFileReaderType ( MzFormat  format)

Definition at line 172 of file msfileaccessor.cpp.

173{
174 auto ret = m_preferredFileReaderTypeMap.find(format);
175
176 if(ret != m_preferredFileReaderTypeMap.end())
177 {
178 return ret->second;
179 }
180
181 return m_fileReaderType;
182}

References m_fileReaderType, and m_preferredFileReaderTypeMap.

Referenced by msRunReaderSPtr().

◆ getSelectedMsRunId()

MsRunIdCstSPtr pappso::MsFileAccessor::getSelectedMsRunId ( )

Definition at line 207 of file msfileaccessor.cpp.

208{
209 if(m_selectedMsRunIdIndex >= getMsRunIds().size())
210 throw PappsoException(QObject::tr("MsRunId request out-of-bound error."));
211
213}
std::size_t m_selectedMsRunIdIndex

References getMsRunIds(), and m_selectedMsRunIdIndex.

◆ getSelectedMsRunIdIndex()

std::size_t pappso::MsFileAccessor::getSelectedMsRunIdIndex ( ) const

Definition at line 200 of file msfileaccessor.cpp.

201{
203}

References m_selectedMsRunIdIndex.

◆ msRunReaderSPtr() [1/2]

MsRunReaderSPtr pappso::MsFileAccessor::msRunReaderSPtr ( MsRunIdCstSPtr  ms_run_id)

Definition at line 248 of file msfileaccessor.cpp.

249{
250 // We want to return a MsRunReader that accounts for the configuration that
251 // the user might have set.
252
253 if(m_fileName != ms_run_id->getFileName())
254 throw(ExceptionNotPossible(
255 QObject::tr("The MsRunId instance must have the name file name as the "
256 "MsFileAccessor.")));
257
259 {
260 // qDebug() << "Returning a PwizMsRunReader.";
261
262 return std::make_shared<PwizMsRunReader>(ms_run_id);
263 }
265 {
266 // qDebug() << "Returning a XyMsRunReader.";
267
268 return std::make_shared<XyMsRunReader>(ms_run_id);
269 }
271 {
272 // qDebug() << "Returning a TimsMsRunReader.";
273
274 return std::make_shared<TimsMsRunReader>(ms_run_id);
275 }
278 {
279 // qDebug() << "Returning a TimsFramesMsRunReader.";
280
281 return std::make_shared<TimsFramesMsRunReader>(ms_run_id);
282 }
284 {
285 // qDebug() << "Returning a TimsMsRunReaderMs2.";
286
287 return std::make_shared<TimsMsRunReaderMs2>(ms_run_id);
288 }
290 {
291 if(ms_run_id.get()->getMzFormat() == MzFormat::xy)
292 {
293 return std::make_shared<XyMsRunReader>(ms_run_id);
294 }
295 else
296 {
297 return std::make_shared<PwizMsRunReader>(ms_run_id);
298 }
299 }
300 else
301 {
302 throw PappsoException(QObject::tr("No file format was found."));
303 }
304
305 return nullptr;
306}
FileReaderType getpreferredFileReaderType(MzFormat format)

References getpreferredFileReaderType(), m_fileFormat, m_fileName, pappso::pwiz, pappso::tims, pappso::tims_frames, pappso::tims_ms2, pappso::unknown, and pappso::xy.

Referenced by pappso::TandemWrapperRun::convertOrginalMsData2mzXmlData(), getMsRunReaderSPtrByRunId(), msRunReaderSPtr(), and msRunReaderSPtrForSelectedMsRunIdIndex().

◆ msRunReaderSPtr() [2/2]

MsRunReaderSPtr pappso::MsFileAccessor::msRunReaderSPtr ( std::size_t  ms_run_id_index)

Definition at line 310 of file msfileaccessor.cpp.

311{
312 std::vector<MsRunIdCstSPtr> ms_run_ids = getMsRunIds();
313 if(ms_run_id_index >= ms_run_ids.size())
314 throw PappsoException(QObject::tr("MsRunId request out-of-bound error."));
315
316 return msRunReaderSPtr(ms_run_ids.at(ms_run_id_index));
317}

References getMsRunIds(), and msRunReaderSPtr().

◆ msRunReaderSPtrForSelectedMsRunIdIndex()

MsRunReaderSPtr pappso::MsFileAccessor::msRunReaderSPtrForSelectedMsRunIdIndex ( )

Definition at line 321 of file msfileaccessor.cpp.

322{
323 std::vector<MsRunIdCstSPtr> ms_run_ids = getMsRunIds();
324 if(m_selectedMsRunIdIndex >= ms_run_ids.size())
325 throw PappsoException(QObject::tr("MsRunId request out-of-bound error."));
326
327 return msRunReaderSPtr(ms_run_ids.at(m_selectedMsRunIdIndex));
328}

References getMsRunIds(), m_selectedMsRunIdIndex, and msRunReaderSPtr().

◆ setPreferredFileReaderType()

void pappso::MsFileAccessor::setPreferredFileReaderType ( MzFormat  format,
FileReaderType  reader_type 
)

given an mz format, explicitly set the preferred reader

Definition at line 157 of file msfileaccessor.cpp.

159{
160 auto ret = m_preferredFileReaderTypeMap.insert(
161 std::pair<MzFormat, FileReaderType>(format, reader_type));
162
163 if(!ret.second)
164 {
165 // replace
166 ret.first->second = reader_type;
167 }
168}

References m_preferredFileReaderTypeMap.

Referenced by pappso::TandemWrapperRun::convertOrginalMsData2mzXmlData().

◆ setSelectedMsRunIdIndex()

void pappso::MsFileAccessor::setSelectedMsRunIdIndex ( std::size_t  index)

Definition at line 193 of file msfileaccessor.cpp.

194{
196}

References m_selectedMsRunIdIndex.

Member Data Documentation

◆ m_fileFormat

MzFormat pappso::MsFileAccessor::m_fileFormat = MzFormat::unknown
private

◆ m_fileName

QString pappso::MsFileAccessor::m_fileName
private

◆ m_fileReaderType

FileReaderType pappso::MsFileAccessor::m_fileReaderType
private

◆ m_preferredFileReaderTypeMap

std::map<MzFormat, FileReaderType> pappso::MsFileAccessor::m_preferredFileReaderTypeMap
private

◆ m_selectedMsRunIdIndex

std::size_t pappso::MsFileAccessor::m_selectedMsRunIdIndex
private

◆ m_xmlPrefix

const QString pappso::MsFileAccessor::m_xmlPrefix
private

Definition at line 100 of file msfileaccessor.h.

Referenced by buildTimsMsRunReaderMs2SPtr(), and getMsRunIds().


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