14#include "../exception/exceptionnotfound.h"
15#include "../exception/exceptionnotpossible.h"
16#include "../msrun/msrunid.h"
17#include "../msrun/private/timsframesmsrunreader.h"
19#include "../msrun/private/pwizmsrunreader.h"
20#include "../msrun/private/timsmsrunreader.h"
21#include "../msrun/private/timsmsrunreaderms2.h"
22#include "../msrun/xymsrunreader.h"
32 const QString &xml_prefix)
33 : m_fileName(file_name), m_xmlPrefix(xml_prefix)
35 QFile file(file_name);
38 .arg(QFileInfo(file_name).absoluteFilePath())));
43 : m_fileName(other.m_fileName),
44 m_xmlPrefix(other.m_xmlPrefix),
45 m_fileFormat(other.m_fileFormat),
46 m_fileReaderType(other.m_fileReaderType)
69std::vector<MsRunIdCstSPtr>
78 std::vector<MsRunIdCstSPtr> ms_run_ids =
102 if(!QFileInfo(tims_dir).isDir())
104 tims_dir = QFileInfo(
m_fileName).absolutePath();
111 if(ms_run_ids.size())
140 if(ms_run_ids.size())
161 std::pair<MzFormat, FileReaderType>(format, reader_type));
166 ret.first->second = reader_type;
210 throw PappsoException(QObject::tr(
"MsRunId request out-of-bound error."));
220 if(!QFileInfo(tims_dir).isDir())
222 tims_dir = QFileInfo(
m_fileName).absolutePath();
226 std::vector<MsRunIdCstSPtr> ms_run_ids =
229 if(ms_run_ids.size())
236 return std::make_shared<TimsMsRunReaderMs2>(ms_run_ids.front());
241 QObject::tr(
"Unable to read mz data directory %1 with TimsTOF reader.")
255 QObject::tr(
"The MsRunId instance must have the name file name as the "
256 "MsFileAccessor.")));
262 return std::make_shared<PwizMsRunReader>(ms_run_id);
268 return std::make_shared<XyMsRunReader>(ms_run_id);
274 return std::make_shared<TimsMsRunReader>(ms_run_id);
281 return std::make_shared<TimsFramesMsRunReader>(ms_run_id);
287 return std::make_shared<TimsMsRunReaderMs2>(ms_run_id);
293 return std::make_shared<XyMsRunReader>(ms_run_id);
297 return std::make_shared<PwizMsRunReader>(ms_run_id);
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."));
323 std::vector<MsRunIdCstSPtr> ms_run_ids =
getMsRunIds();
325 throw PappsoException(QObject::tr(
"MsRunId request out-of-bound error."));
341 QFile file(ms_run_id.get()->getFileName());
344 QObject::tr(
"unable to build a reader : file %1 not found.")
345 .arg(QFileInfo(ms_run_id.get()->getFileName()).absoluteFilePath())));
347 MzFormat file_format = ms_run_id.get()->getMzFormat();
353 return std::make_shared<XyMsRunReader>(ms_run_id);
358 QObject::tr(
"unable to build a reader for %1 : unknown file format")
359 .arg(QFileInfo(ms_run_id.get()->getFileName()).absoluteFilePath())));
366 return std::make_shared<TimsMsRunReader>(ms_run_id);
370 return std::make_shared<TimsMsRunReaderMs2>(ms_run_id);
374 return std::make_shared<TimsMsRunReader>(ms_run_id);
380 return std::make_shared<PwizMsRunReader>(ms_run_id);
387 const QString &xml_id)
389 std::vector<MsRunIdCstSPtr> run_list =
getMsRunIds();
393 if(original_run_id.get()->getRunId() == run_id)
395 MsRunId new_run_id(*original_run_id.get());
402 if((run_id.isEmpty()) && (run_list.size() == 1))
404 MsRunId new_run_id(*run_list[0].get());
411 if(reader_sp ==
nullptr)
416 .arg(QFileInfo(
m_fileName).absoluteFilePath())));
MsRunReaderSPtr msRunReaderSPtrForSelectedMsRunIdIndex()
void setSelectedMsRunIdIndex(std::size_t index)
MzFormat getFileFormat() const
get the raw format of mz data
MsRunReaderSPtr msRunReaderSPtr(MsRunIdCstSPtr ms_run_id)
std::size_t m_selectedMsRunIdIndex
const QString m_xmlPrefix
std::size_t getSelectedMsRunIdIndex() const
virtual ~MsFileAccessor()
MsRunIdCstSPtr getSelectedMsRunId()
FileReaderType getFileReaderType() const
get the file reader type
std::vector< MsRunIdCstSPtr > getMsRunIds()
FileReaderType m_fileReaderType
void setPreferredFileReaderType(MzFormat format, FileReaderType reader_type)
given an mz format, explicitly set the preferred reader
MsRunReaderSPtr getMsRunReaderSPtrByRunId(const QString &run_id, const QString &xml_id)
get an msrun reader by finding the run_id in file
std::map< MzFormat, FileReaderType > m_preferredFileReaderTypeMap
MsFileAccessor(const QString &file_name, const QString &xml_prefix)
static MsRunReaderSPtr buildMsRunReaderSPtr(MsRunIdCstSPtr ms_run_id)
get an MsRunReader directly from a valid MsRun ID
FileReaderType getpreferredFileReaderType(MzFormat format)
TimsMsRunReaderMs2SPtr buildTimsMsRunReaderMs2SPtr()
if possible, builds directly a dedicated Tims TOF tdf file reader
const QString & getFileName() const
MS run identity MsRunId identifies an MS run with a unique ID (XmlId) and contains eventually informa...
void setXmlId(const QString &xml_id)
set an XML unique identifier for this MsRunId
virtual std::vector< MsRunIdCstSPtr > getMsRunIds(const QString &run_prefix) override
virtual MzFormat getFileFormat() override
virtual std::vector< MsRunIdCstSPtr > getMsRunIds(const QString &run_prefix) override
virtual MzFormat getFileFormat() override
virtual std::vector< MsRunIdCstSPtr > getMsRunIds(const QString &run_prefix) override
virtual MzFormat getFileFormat() override
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
std::shared_ptr< MsRunReader > MsRunReaderSPtr
std::shared_ptr< TimsMsRunReaderMs2 > TimsMsRunReaderMs2SPtr
std::shared_ptr< const MsRunId > MsRunIdCstSPtr
MSrun file reader for native Bruker TimsTOF raw data.