libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
msfileaccessor.h
Go to the documentation of this file.
1
2#pragma once
3
4#include <QString>
5#include <QMetaType>
6
7
8#include "../types.h"
9#include "../msrun/msrunreader.h"
10#include "../msrun/msrunid.h"
11#include "../exportinmportconfig.h"
12
13
14namespace pappso
15{
16
17class TimsMsRunReaderMs2;
18typedef std::shared_ptr<TimsMsRunReaderMs2> TimsMsRunReaderMs2SPtr;
19
20// This class is used to access mass spectrometry data files. The file being
21// opened and read might contain more than one MS run. The user of this class
22// might request a vector of all these MS runs (in the form of a vector of
23// MsRunIdCstSPtr. Once the MsRunIdCstSPtr of interest has been located by the
24// caller, the caller might then request the MsRunReaderSPtr to use to read that
25// MS run's data.
27{
28 public:
29 MsFileAccessor(const QString &file_name, const QString &xml_prefix);
30 MsFileAccessor(const MsFileAccessor &other);
31 virtual ~MsFileAccessor();
32
33 const QString &getFileName() const;
34
35 /** @brief get the raw format of mz data
36 */
37 MzFormat getFileFormat() const;
38
39 /** @brief get the file reader type
40 */
41 FileReaderType getFileReaderType() const;
42
43 /** @brief given an mz format, explicitly set the preferred reader
44 */
45 void setPreferredFileReaderType(MzFormat format, FileReaderType reader_type);
46 FileReaderType getpreferredFileReaderType(MzFormat format);
47
48 std::vector<MsRunIdCstSPtr> getMsRunIds();
49
50 void setSelectedMsRunIdIndex(std::size_t index);
51 std::size_t getSelectedMsRunIdIndex() const;
52 MsRunIdCstSPtr getSelectedMsRunId();
53
54 MsRunReaderSPtr msRunReaderSPtr(MsRunIdCstSPtr ms_run_id);
55 MsRunReaderSPtr msRunReaderSPtr(std::size_t ms_run_id_index);
56 MsRunReaderSPtr msRunReaderSPtrForSelectedMsRunIdIndex();
57
58 /** @brief get an msrun reader by finding the run_id in file
59 *
60 * @param run_id identifier within file of the MSrun
61 * @param xml_id XML identifier given by the user to identify this MSrun in
62 * our experiment (not in the file)
63 */
64 MsRunReaderSPtr getMsRunReaderSPtrByRunId(const QString &run_id,
65 const QString &xml_id);
66
67 /** @brief get an MsRunReader directly from a valid MsRun ID
68 *
69 * no need to check the file format or filename : all is already part of the
70 * msrunid
71 *
72 * @param ms_run_id msrun identifier
73 * @return msrun reader shared pointer
74 */
75 static MsRunReaderSPtr buildMsRunReaderSPtr(MsRunIdCstSPtr ms_run_id);
76
77 /** @brief get an MsRunReader directly from a valid MsRun ID
78 *
79 * no need to check the file format or filename : all is already part of the
80 * msrunid
81 *
82 * @param ms_run_id msrun identifier
83 * @param preferred_file_reader_type the preferred file reader type to use
84 * (depending on the mz format)
85 * @return msrun reader shared pointer
86 */
87 static MsRunReaderSPtr
88 buildMsRunReaderSPtr(MsRunIdCstSPtr ms_run_id,
89 pappso::FileReaderType preferred_file_reader_type);
90
91 /** @brief if possible, builds directly a dedicated Tims TOF tdf file reader
92 */
93 TimsMsRunReaderMs2SPtr buildTimsMsRunReaderMs2SPtr();
94
95 private:
96 QString m_fileName;
97
98 // When opening more than one file concurrently in a determinate session, we
99 // need this prefix to craft unabiguous ms run ids.
100 const QString m_xmlPrefix;
101
102 MzFormat m_fileFormat = MzFormat::unknown;
103
104 // Type of the file reader that could load the file.
106
107 std::map<MzFormat, FileReaderType> m_preferredFileReaderTypeMap;
108
110};
111
112typedef std::shared_ptr<MsFileAccessor> MsFileAccessorSPtr;
113typedef std::shared_ptr<const MsFileAccessor> MsFileAccessorCstSPtr;
114
115} // namespace pappso
std::size_t m_selectedMsRunIdIndex
FileReaderType m_fileReaderType
std::map< MzFormat, FileReaderType > m_preferredFileReaderTypeMap
#define PMSPP_LIB_DECL
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
Definition aa.cpp:39
std::shared_ptr< MsRunReader > MsRunReaderSPtr
Definition msrunreader.h:56
std::shared_ptr< TimsMsRunReaderMs2 > TimsMsRunReaderMs2SPtr
MzFormat
Definition types.h:120
std::shared_ptr< const MsRunId > MsRunIdCstSPtr
Definition msrunid.h:46
std::shared_ptr< const MsFileAccessor > MsFileAccessorCstSPtr
FileReaderType
Definition types.h:146
std::shared_ptr< MsFileAccessor > MsFileAccessorSPtr