57 std::ifstream is(filename.c_str());
60 if (!File::exists(filename))
64 else if (!File::readable(filename))
79 std::vector<std::string> strings(2);
87 getline(is, line,
'\n');
88 StringUtils::trim(line);
91 if (StringUtils::has(line,
'\t'))
100 StringUtils::split(line, delimiter, strings);
101 if (strings.size() != 2)
103 throw Exception::ParseError(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, std::string(
"Bad data line (" + StringUtils::toStr(line_number) +
"): \"") + line +
"\" (got " + StringUtils::toStr(strings.size()) +
", expected 2 entries)", filename);
111 mh_mass = StringUtils::toDouble(strings[0]);
112 charge = StringUtils::toInt32(strings[1]);
116 throw Exception::ParseError(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, std::string(
"Bad data line (" + StringUtils::toStr(line_number) +
"): \"") + line +
"\": not a float number.", filename);
120 precursor.
setMZ((mh_mass - Constants::PROTON_MASS_U) / charge + Constants::PROTON_MASS_U);
124 precursor.
setMZ(mh_mass);
130 while (getline(is, line,
'\n'))
133 StringUtils::trim(line);
134 if (line.empty())
continue;
137 if (StringUtils::has(line,
'\t'))
146 StringUtils::split(line, delimiter, strings);
147 if (strings.size() != 2)
149 throw Exception::ParseError(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, std::string(
"Bad data line (" + StringUtils::toStr(line_number) +
"): \"") + line +
"\" (got " + StringUtils::toStr(strings.size()) +
", expected 2 entries)", filename);
154 p.
setPosition((
typename SpectrumType::PeakType::PositionType)StringUtils::toDouble(strings[0]));
155 p.
setIntensity((
typename SpectrumType::PeakType::IntensityType)StringUtils::toDouble(strings[1]));
159 throw Exception::ParseError(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, std::string(
"Bad data line (" + StringUtils::toStr(line_number) +
"): \"") + line +
"\": not a float number.", filename);
161 spectrum.push_back(p);
164 spectrum.
setName(File::basename(filename));
179 std::ofstream os(filename.c_str());
184 os.precision(writtenDigits<double>(0.0));
194 std::cerr <<
"Warning: The spectrum written to the DTA file '" << filename <<
"' has more than one precursor. The first precursor is used!" <<
"\n";
199 os << precursor.
getMZ();
207 os <<
" " << precursor.
getCharge() <<
"\n";
212 for (; it != spectrum.end(); ++it)
215 os << it->getPosition() <<
" " << it->getIntensity() <<
"\n";