35 #ifndef OPENMS_FORMAT_DTA2DFILE_H
36 #define OPENMS_FORMAT_DTA2DFILE_H
95 template <
typename MapType>
98 startProgress(0, 0,
"loading DTA2D file");
101 std::ifstream is(filename.c_str());
110 map.setLoadedFileType(filename);
111 map.setLoadedFilePath(filename);
114 std::vector<String> strings(3);
115 typename MapType::SpectrumType spec;
127 bool time_in_minutes =
false;
136 Size line_number = 0;
138 while (getline(is, line,
'\n'))
143 if (line.empty())
continue;
159 line.
split(delimiter, strings);
164 bool int_set =
false;
167 for (
Size i = 0; i < 3; ++i)
169 if (strings[i] ==
"RT" || strings[i] ==
"RETENTION_TIME" || strings[i] ==
"MASS-TO-CHARGE" || strings[i] ==
"IT" || strings[i] ==
"INTENSITY")
171 std::cerr <<
"Warning: This file contains the deprecated keyword '" << strings[i] <<
"'." <<
"\n";
172 std::cerr <<
" Please use only the new keywords SEC/MIN, MZ, INT." <<
"\n";
174 if ((strings[i] ==
"SEC" || strings[i] ==
"RT" || strings[i] ==
"RETENTION_TIME") && rt_set ==
false)
179 else if ((strings[i] ==
"MIN") && rt_set ==
false)
183 time_in_minutes =
true;
185 else if ((strings[i] ==
"MZ" || strings[i] ==
"MASS-TO-CHARGE") && mz_set ==
false)
190 else if ((strings[i] ==
"INT" || strings[i] ==
"IT" || strings[i] ==
"INTENSITY") && int_set ==
false)
197 throw Exception::ParseError(__FILE__, __LINE__, __PRETTY_FUNCTION__,
"Misformatted header line!", filename);
205 line.
split(delimiter, strings);
206 if (strings.size() != 3)
208 throw Exception::ParseError(__FILE__, __LINE__, __PRETTY_FUNCTION__, std::string(
"Bad data line (" +
String(line_number) +
"): \"") + line +
"\" (got " +
String(strings.size()) +
", expected 3 entries)", filename);
210 p.setIntensity(strings[int_dim].toFloat());
211 p.setMZ(strings[mz_dim].toDouble());
212 rt = (strings[rt_dim].toDouble()) * (time_in_minutes ? 60.0 : 1.0);
217 throw Exception::ParseError(__FILE__, __LINE__, __PRETTY_FUNCTION__, std::string(
"Bad data line (" +
String(line_number) +
"): \"") + line +
"\"", filename);
221 if (fabs(rt - spec.getRT()) > 0.0001)
225 (!options_.hasRTRange() || options_.getRTRange().encloses(
DPosition<1>(spec.getRT()))))
227 map.addSpectrum(spec);
232 spec.setNativeID(
String(
"index=") + native_id);
238 (!options_.hasMZRange() || options_.getMZRange().encloses(
DPosition<1>(p.getMZ())))
240 (!options_.hasIntensityRange() || options_.getIntensityRange().encloses(
DPosition<1>(p.getIntensity())))
251 (!options_.hasRTRange() || options_.getRTRange().encloses(
DPosition<1>(spec.getRT())))
254 map.addSpectrum(spec);
269 template <
typename MapType>
272 startProgress(0, map.size(),
"storing DTA2D file");
274 std::ofstream os(filename.c_str());
281 os <<
"#SEC\tMZ\tINT\n";
286 for (
typename MapType::const_iterator spec = map.begin(); spec != map.end(); ++spec)
288 setProgress(count++);
289 for (
typename MapType::SpectrumType::ConstIterator it = spec->begin(); it != spec->end(); ++it)
308 template <
typename MapType>
311 startProgress(0, map.size(),
"storing DTA2D file");
313 std::ofstream os(filename.c_str());
320 os <<
"#SEC\tMZ\tINT\n";
322 typename MapType::ChromatogramType TIC = map.getTIC();
323 for (
typename MapType::ChromatogramType::ConstIterator it = TIC.begin(); it != TIC.end(); ++it)
337 #endif // OPENMS_FORMAT_DTA2DFILE_H
DTA2D File adapter.
Definition: DTA2DFile.h:64
A more convenient string class.
Definition: String.h:57
Peak2D PeakType
Definition: MassTrace.h:49
PeakFileOptions options_
Definition: DTA2DFile.h:68
File not found exception.
Definition: Exception.h:524
bool has(Byte byte) const
true if String contains the byte, false otherwise
void storeTIC(const String &filename, const MapType &map) const
Stores the TIC of a map in a DTA2D file.
Definition: DTA2DFile.h:309
MSExperiment< Peak1D > MapType
Definition: PeakPickerIterative.cpp:87
const PrecisionWrapper< FloatingPointType > precisionWrapper(const FloatingPointType rhs)
Wrapper function that sets the appropriate precision for output temporarily. The original precision i...
Definition: PrecisionWrapper.h:97
String & trim()
removes whitespaces (space, tab, line feed, carriage return) at the beginning and the end of the stri...
void store(const String &filename, const MapType &map) const
Stores a map in a DTA2D file.
Definition: DTA2DFile.h:270
Exception base class.
Definition: Exception.h:90
Base class for all classes that want to report their progress.
Definition: ProgressLogger.h:55
Unable to create file exception.
Definition: Exception.h:622
String substr(size_t pos=0, size_t n=npos) const
Wrapper for the STL substr() method. Returns a String object with its contents initialized to a subst...
Options for loading files containing peak data.
Definition: PeakFileOptions.h:48
bool split(const char splitter, std::vector< String > &substrings, bool quote_protect=false) const
Splits a string into substrings using splitter as delimiter.
void load(const String &filename, MapType &map)
Loads a map from a DTA2D file.
Definition: DTA2DFile.h:96
bool hasPrefix(const String &string) const
true if String begins with string, false otherwise
Parse Error exception.
Definition: Exception.h:608