libpappsomspp
Library for mass spectrometry
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 More...
 
FileReaderType getFileReaderType () const
 get the file reader type More...
 
void setPreferedFileReaderType (MzFormat format, FileReaderType reader_type)
 given an mz format, explicitly set the prefered reader More...
 
std::vector< MsRunIdCstSPtrgetMsRunIds ()
 
MsRunReaderSPtr msRunReaderSp (MsRunIdCstSPtr ms_run_id)
 
MsRunReaderSPtr getMsRunReaderSPtrByRunId (const QString &run_id, const QString &xml_id)
 get an msrun reader by finding the run_id in file More...
 
TimsMsRunReaderMs2SPtr buildTimsMsRunReaderMs2SPtr ()
 if possible, builds directly a dedicated Tims TOF tdf file reader More...
 

Static Public Member Functions

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

Private Attributes

QString m_fileName
 
const QString m_xmlPrefix
 
MzFormat m_fileFormat = MzFormat::unknown
 
FileReaderType m_fileReaderType
 
std::map< MzFormat, FileReaderTypem_preferedFileReaderTypeMap
 

Detailed Description

Definition at line 35 of file msfileaccessor.h.

Constructor & Destructor Documentation

◆ MsFileAccessor() [1/2]

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

Definition at line 29 of file msfileaccessor.cpp.

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

◆ MsFileAccessor() [2/2]

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

Definition at line 40 of file msfileaccessor.cpp.

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

◆ ~MsFileAccessor()

pappso::MsFileAccessor::~MsFileAccessor ( )
virtual

Definition at line 48 of file msfileaccessor.cpp.

49{
50}

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 233 of file msfileaccessor.cpp.

234{
236}
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  prefered_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
prefered_file_reader_typethe prefered file reader type to use (depending on the mz format)
Returns
msrun reader shared pointer

Definition at line 239 of file msfileaccessor.cpp.

241{
242
243 QFile file(ms_run_id.get()->getFileName());
244 if(!file.exists())
245 throw(ExceptionNotFound(
246 QObject::tr("unable to build a reader : file %1 not found.")
247 .arg(QFileInfo(ms_run_id.get()->getFileName()).absoluteFilePath())));
248
249 MzFormat file_format = ms_run_id.get()->getMzFormat();
250
251 if(file_format == MzFormat::xy)
252 {
253 qDebug() << "Returning a XyMsRunReader.";
254
255 return std::make_shared<XyMsRunReader>(ms_run_id);
256 }
257 else if(file_format == MzFormat::unknown)
258 {
259 throw(PappsoException(
260 QObject::tr("unable to build a reader for %1 : unknown file format")
261 .arg(QFileInfo(ms_run_id.get()->getFileName()).absoluteFilePath())));
262 }
263
264 else if(file_format == MzFormat::brukerTims)
265 {
266 if(prefered_file_reader_type == pappso::FileReaderType::tims)
267 {
268 return std::make_shared<TimsMsRunReader>(ms_run_id);
269 }
270 else if(prefered_file_reader_type == pappso::FileReaderType::tims_ms2)
271 {
272 qDebug();
273 return std::make_shared<TimsMsRunReaderMs2>(ms_run_id);
274 }
275
276 qDebug() << "by default, build a TimsMsRunReader.";
277 return std::make_shared<TimsMsRunReader>(ms_run_id);
278 }
279 else
280 {
281 qDebug() << "Returning a PwizMsRunReader .";
282
283 return std::make_shared<PwizMsRunReader>(ms_run_id);
284 }
285}
MzFormat
Definition: types.h:108
@ 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 146 of file msfileaccessor.cpp.

147{
148
149 // try TimsData reader
150 QString tims_dir = m_fileName;
151 if(!QFileInfo(tims_dir).isDir())
152 {
153 tims_dir = QFileInfo(m_fileName).absolutePath();
154 }
155 TimsMsFileReader tims_file_reader(tims_dir);
156
157 std::vector<MsRunIdCstSPtr> ms_run_ids =
158 tims_file_reader.getMsRunIds(m_xmlPrefix);
159
160 if(ms_run_ids.size())
161 {
162 // qDebug() << "Might well be handled using the Bruker code";
164 m_fileFormat = tims_file_reader.getFileFormat();
165 m_fileName = tims_dir;
166
167 return std::make_shared<TimsMsRunReaderMs2>(ms_run_ids.front());
168 }
169 else
170 {
171 throw(ExceptionNotPossible(
172 QObject::tr("Unable to read mz data directory %1 with TimsTOF reader.")
173 .arg(tims_dir)));
174 }
175}

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 61 of file msfileaccessor.cpp.

62{
63 return m_fileFormat;
64}

References m_fileFormat.

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

◆ getFileName()

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

Definition at line 54 of file msfileaccessor.cpp.

55{
56 return m_fileName;
57}

References m_fileName.

◆ getFileReaderType()

FileReaderType pappso::MsFileAccessor::getFileReaderType ( ) const

get the file reader type

Definition at line 340 of file msfileaccessor.cpp.

341{
342 return m_fileReaderType;
343}

References m_fileReaderType.

◆ getMsRunIds()

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

Definition at line 68 of file msfileaccessor.cpp.

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

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_preferedFileReaderTypeMap, m_xmlPrefix, pappso::pwiz, pappso::tims, and pappso::xy.

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

◆ 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 289 of file msfileaccessor.cpp.

291{
292 qDebug() << "GGGGGGGGG1";
293 std::vector<MsRunIdCstSPtr> run_list = getMsRunIds();
294 MsRunReaderSPtr reader_sp;
295 qDebug() << "GGGGGGGGG";
296 for(MsRunIdCstSPtr &original_run_id : run_list)
297 {
298 if(original_run_id.get()->getRunId() == run_id)
299 {
300 MsRunId new_run_id(*original_run_id.get());
301 new_run_id.setXmlId(xml_id);
302
303 return msRunReaderSp(std::make_shared<MsRunId>(new_run_id));
304 }
305 }
306
307 if((run_id.isEmpty()) && (run_list.size() == 1))
308 {
309 MsRunId new_run_id(*run_list[0].get());
310 new_run_id.setXmlId(xml_id);
311
312 return msRunReaderSp(std::make_shared<MsRunId>(new_run_id));
313 }
314
315
316 if(reader_sp == nullptr)
317 {
318 throw(
319 ExceptionNotFound(QObject::tr("run id %1 not found in file %2")
320 .arg(run_id)
321 .arg(QFileInfo(m_fileName).absoluteFilePath())));
322 }
323 return reader_sp;
324}
MsRunReaderSPtr msRunReaderSp(MsRunIdCstSPtr ms_run_id)
std::vector< MsRunIdCstSPtr > getMsRunIds()
std::shared_ptr< MsRunReader > MsRunReaderSPtr
Definition: msrunreader.h:184
std::shared_ptr< const MsRunId > MsRunIdCstSPtr
Definition: msrunid.h:45

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

◆ msRunReaderSp()

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

Definition at line 179 of file msfileaccessor.cpp.

180{
181 if(m_fileName != ms_run_id->getFileName())
182 throw(ExceptionNotPossible(
183 QObject::tr("The MsRunId instance must have the name file name as the "
184 "MsFileAccessor.")));
185
187 {
188 qDebug() << "Returning a PwizMsRunReader.";
189
190 return std::make_shared<PwizMsRunReader>(ms_run_id);
191 }
193 {
194 qDebug() << "Returning a XyMsRunReader.";
195
196 return std::make_shared<XyMsRunReader>(ms_run_id);
197 }
199 {
200 qDebug() << "Returning a TimsMsRunReader.";
201
202 return std::make_shared<TimsMsRunReader>(ms_run_id);
203 }
205 {
206 qDebug() << "Returning a TimsFramesMsRunReader.";
207
208 return std::make_shared<TimsFramesMsRunReader>(ms_run_id);
209 }
211 {
212 qDebug() << "Returning a TimsMsRunReaderMs2.";
213
214 return std::make_shared<TimsMsRunReaderMs2>(ms_run_id);
215 }
217 {
218 if(ms_run_id.get()->getMzFormat() == MzFormat::xy)
219 {
220 return std::make_shared<XyMsRunReader>(ms_run_id);
221 }
222 else
223 {
224 return std::make_shared<PwizMsRunReader>(ms_run_id);
225 }
226 }
227
228 return nullptr;
229}

References m_fileFormat, m_fileName, m_fileReaderType, pappso::pwiz, pappso::tims, pappso::tims_frames, pappso::tims_ms2, pappso::unknown, and pappso::xy.

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

◆ setPreferedFileReaderType()

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

given an mz format, explicitly set the prefered reader

Definition at line 327 of file msfileaccessor.cpp.

329{
330 auto ret = m_preferedFileReaderTypeMap.insert(
331 std::pair<MzFormat, FileReaderType>(format, reader_type));
332 if(!ret.second)
333 {
334 // replace
335 ret.first->second = reader_type;
336 }
337}

References m_preferedFileReaderTypeMap.

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

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_preferedFileReaderTypeMap

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

Definition at line 109 of file msfileaccessor.h.

Referenced by getMsRunIds(), and setPreferedFileReaderType().

◆ m_xmlPrefix

const QString pappso::MsFileAccessor::m_xmlPrefix
private

Definition at line 102 of file msfileaccessor.h.

Referenced by buildTimsMsRunReaderMs2SPtr(), and getMsRunIds().


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