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

#include <xymsfilereader.h>

Inheritance diagram for pappso::XyMsFileReader:
pappso::MsFileReader

Public Member Functions

 XyMsFileReader (const QString &file_name)
virtual ~XyMsFileReader ()
virtual Enums::MsDataFormat getFileFormat () override
virtual std::vector< MsRunIdCstSPtrgetMsRunIds (const QString &run_prefix) override
MsRunReaderselectMsRunReader (const QString &file_name) const

Private Member Functions

virtual bool initialize (std::size_t &line_count)
Private Member Functions inherited from pappso::MsFileReader
 MsFileReader (const QString &file_name)
virtual ~MsFileReader ()

Additional Inherited Members

Private Attributes inherited from pappso::MsFileReader
QString m_fileName
Enums::MsDataFormat m_fileFormat = Enums::MsDataFormat::unknown

Detailed Description

Definition at line 17 of file xymsfilereader.h.

Constructor & Destructor Documentation

◆ XyMsFileReader()

pappso::XyMsFileReader::XyMsFileReader ( const QString & file_name)

Definition at line 24 of file xymsfilereader.cpp.

25 : MsFileReader{file_name}
26{
27}
MsFileReader(const QString &file_name)

References pappso::MsFileReader::MsFileReader().

◆ ~XyMsFileReader()

pappso::XyMsFileReader::~XyMsFileReader ( )
virtual

Definition at line 29 of file xymsfilereader.cpp.

30{
31}

Member Function Documentation

◆ getFileFormat()

Enums::MsDataFormat pappso::XyMsFileReader::getFileFormat ( )
overridevirtual

Implements pappso::MsFileReader.

Definition at line 100 of file xymsfilereader.cpp.

101{
102 return m_fileFormat;
103}
Enums::MsDataFormat m_fileFormat

References pappso::MsFileReader::m_fileFormat.

Referenced by pappso::MsFileAccessor::getMsRunIds().

◆ getMsRunIds()

std::vector< MsRunIdCstSPtr > pappso::XyMsFileReader::getMsRunIds ( const QString & run_prefix)
overridevirtual

Implements pappso::MsFileReader.

Definition at line 106 of file xymsfilereader.cpp.

107{
108 std::vector<MsRunIdCstSPtr> ms_run_ids;
109
110 std::size_t line_count = 0;
111
112 if(!initialize(line_count))
113 return ms_run_ids;
114
115 // Finally create the MsRunId with the file name.
116 MsRunId ms_run_id(m_fileName);
117 ms_run_id.setMsDataFormat(m_fileFormat);
118
119 // We need to set the unambiguous xmlId string.
120 ms_run_id.setXmlId(
121 QString("%1%2").arg(run_prefix).arg(Utils::getLexicalOrderedString(0)));
122
123 // Craft a meaningful sample name because otherwise all the files loaded from
124 // text files will have the same sample name and it will be difficult to
125 // differentiate them.
126 // Orig version:
127 // ms_run_id.setRunId("Single spectrum");
128 // Now the sample name is nothing but the file name without the path.
129
130 QFileInfo file_info(m_fileName);
131
132 // qDebug() << "file name:" << m_fileName;
133
134 QString sample_name = file_info.fileName();
135
136 // qDebug() << "sample name:" << sample_name;
137
138 ms_run_id.setRunId(sample_name);
139
140 // Now set the sample name to the run id:
141
142 ms_run_id.setSampleName(ms_run_id.getRunId());
143
144 // Now set the sample name to the run id:
145
146 ms_run_id.setSampleName(ms_run_id.getRunId());
147
148 // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"
149 //<< "Current ms_run_id:" << ms_run_id.toString();
150
151 // Finally make a shared pointer out of it and append it to the vector.
152 ms_run_ids.push_back(std::make_shared<MsRunId>(ms_run_id));
153
154 return ms_run_ids;
155}
static const QString getLexicalOrderedString(unsigned int num)
Definition utils.cpp:72
virtual bool initialize(std::size_t &line_count)

References pappso::Utils::getLexicalOrderedString(), pappso::MsRunId::getRunId(), initialize(), pappso::MsFileReader::m_fileFormat, pappso::MsFileReader::m_fileName, pappso::MsRunId::setMsDataFormat(), pappso::MsRunId::setRunId(), pappso::MsRunId::setSampleName(), and pappso::MsRunId::setXmlId().

Referenced by pappso::MsFileAccessor::getMsRunIds().

◆ initialize()

bool pappso::XyMsFileReader::initialize ( std::size_t & line_count)
privatevirtual

Definition at line 34 of file xymsfilereader.cpp.

35{
36 // Here we just test all the lines of the file to check that they comply with
37 // the xy format.
38
39 line_count = 0;
40
41 QFile file(m_fileName);
42
43 if(!file.open(QFile::ReadOnly | QFile::Text))
44 {
45 qDebug() << "Failed to open file" << m_fileName;
46
47 return 0;
48 }
49
50 QRegularExpressionMatch regExpMatch;
51
52 QString line;
53 bool file_reading_failed = false;
54
55 while(!file.atEnd())
56 {
57 line = file.readLine();
58
59 // We only read a given number of lines from the file, that would be
60 // enough to check if that file has the right syntax or not.
61 // if(linesRead >= 2000)
62 // return true;
63
64 if(line.startsWith('#') || line.isEmpty() ||
65 Utils::endOfLineRegExp.match(line).hasMatch())
66 continue;
67
68 // qDebug() << "Current xy format line:" << line;
69
70 if(Utils::xyMassDataFormatRegExp.match(line).hasMatch())
71 {
72 ++line_count;
73 continue;
74 }
75 else
76 {
77 // the first line of the text file may include column titles
78 if(line_count > 0)
79 {
80 file_reading_failed = true;
81 break;
82 }
83 }
84 }
85
86 if(!file_reading_failed && line_count >= 1)
87 {
89 return true;
90 }
91
93
94 // qDebug() << "m_fileFormat: " << static_cast<int>(m_fileFormat);
95
96 return false;
97}
static QRegularExpression xyMassDataFormatRegExp
Regular expression matching <numerical value><non-numerical*><numericalvalue>.
Definition utils.h:60
static QRegularExpression endOfLineRegExp
Regular expression that tracks the end of line in text files.
Definition utils.h:69
@ unknown
unknown format
Definition types.h:149

References pappso::Utils::endOfLineRegExp, line, pappso::MsFileReader::m_fileFormat, pappso::MsFileReader::m_fileName, pappso::Enums::unknown, pappso::Enums::xy, and pappso::Utils::xyMassDataFormatRegExp.

Referenced by getMsRunIds().

◆ selectMsRunReader()

MsRunReader * pappso::XyMsFileReader::selectMsRunReader ( const QString & file_name) const

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