32 #include <QTextStream>
47 QRegularExpression(
"^(\\d*\\.?\\d+)([^\\d^\\.^-]+)(-?\\d*\\.?\\d*[e-]?\\d*)");
54 int size = log10(num);
57 base.append(QString().setNum(num));
65 *p_out << (char)(log10(num) + 97) << num;
83 int intPart =
static_cast<int>(value);
85 double decimalPart = value - intPart;
106 if(decimal_places < 0)
109 return ceil((value * pow(10, decimal_places)) - 0.49) /
110 pow(10, decimal_places);
117 std::string env_backup = setlocale(LC_ALL,
"");
125 setlocale(LC_ALL,
"C");
128 QByteArray byte_array = text.toUtf8();
129 std::string stdText =
"";
131 for(
char c : byte_array)
137 setlocale(LC_ALL, env_backup.c_str());
147 QFile file(file_name);
149 if(file.open(QFile::WriteOnly | QFile::Truncate))
152 QTextStream out(&file);
170 QFile file(file_name);
172 if(file.open(QFile::WriteOnly | QFile::Append))
175 QTextStream out(&file);
192 qDebug() << __FILE__ <<
"@" << __LINE__ << __FUNCTION__ <<
"()"
193 <<
" " << spectrum_native_id;
194 QStringList native_id_list = spectrum_native_id.split(
"=");
195 if(native_id_list.size() < 2)
198 QObject::tr(
"scan number not found in mzML native id %1")
199 .arg(spectrum_native_id));
203 return native_id_list.back().toULong();
212 return QString(
"%1").arg(
213 (quintptr)pointer, QT_POINTER_SIZE * 2, 16, QChar(
'0'));
234 double valueSum = std::abs(value1 + value2);
238 double valueDiff = std::abs(value1 - value2);
242 double epsilon = std::numeric_limits<double>::epsilon();
246 double scaleFactor = epsilon * valueSum * decimalPlaces;
254 bool res = valueDiff < scaleFactor
256 || valueDiff < std::numeric_limits<double>::min();
267 const QString &msg, std::chrono::system_clock::time_point chrono_time)
272 tt = std::chrono::system_clock::to_time_t(chrono_time);
275 QString(
"%1 - %2\n").arg(msg).arg(QString::fromLatin1(ctime(&tt)));
284 std::chrono::system_clock::time_point chrono_start,
285 std::chrono::system_clock::time_point chrono_finish)
289 "%1 %2 min = %3 s = %4 ms = %5 "
292 .arg(std::chrono::duration_cast<std::chrono::minutes>(chrono_finish -
295 .arg(std::chrono::duration_cast<std::chrono::seconds>(chrono_finish -
298 .arg(std::chrono::duration_cast<std::chrono::milliseconds>(chrono_finish -
301 .arg(std::chrono::duration_cast<std::chrono::microseconds>(chrono_finish -
311 std::size_t &error_count)
314 QStringList string_list =
315 text.split(QRegularExpression(
"[\\s]+"), QString::SkipEmptyParts);
319 std::vector<double> double_vector;
321 for(
int iter = 0; iter < string_list.size(); ++iter)
323 QString current_string = string_list.at(iter);
327 double current_double = current_string.toDouble(&ok);
329 if(!current_double && !ok)
335 double_vector.push_back(current_double);
338 return double_vector;
342 std::vector<std::size_t>
344 std::size_t &error_count)
348 QStringList string_list =
349 text.split(QRegularExpression(
"[\\s]+"), QString::SkipEmptyParts);
354 std::vector<std::size_t> sizet_vector;
356 for(
int iter = 0; iter < string_list.size(); ++iter)
358 QString current_string = string_list.at(iter);
362 std::size_t current_sizet = current_string.toUInt(&ok);
364 if(!current_sizet && !ok)
370 sizet_vector.push_back(current_sizet);