49  QRegularExpression(
"\\d*\\.?\\d+");
 
   58  QRegularExpression(
"-?\\d*\\.?\\d*[e-]?\\d*");
 
   63  QRegularExpression(QString(
"^(%1)(%2)(%3)")
 
   74  int size = log10(num);
 
   76  QLatin1Char latin1_char(size);
 
   77  QString base(latin1_char);
 
   78  base.append(QString().setNum(num));
 
 
   86  *p_out << (char)(log10(num) + 97) << num;
 
 
  106  int intPart = 
static_cast<int>(value);
 
  110  double decimalPart = value - intPart;
 
  116  while(decimalPart > 0)
 
 
  142  if(decimal_places < 0)
 
  145  return ceil((value * pow(10, decimal_places)) - 0.49) / pow(10, decimal_places);
 
 
  153  if(
sizeof(
int *) == 4)
 
  155      test_decimal = 100000000;
 
  157  return (floor(input * test_decimal));
 
 
  164  std::string env_backup;
 
  169      env_backup = std::setlocale(LC_ALL, 
nullptr);
 
  170      std::setlocale(LC_ALL, 
"C");
 
  172      std::locale::global(std::locale(
"C")); 
 
  175  catch(std::exception &error)
 
  178        QObject::tr(
"Error trying to set local to C : %1").arg(error.what()));
 
  181  QByteArray byte_array = text.toUtf8();
 
  182  std::string stdText   = 
"";
 
  184  for(
char c : byte_array)
 
  193      std::setlocale(LC_ALL, env_backup.c_str());
 
  195      std::locale::global(std::locale(
""));  
 
  198  catch(std::exception &error)
 
  202        QObject::tr(
"Error trying to set local to original system one %1 : %2")
 
  203          .arg(env_backup.c_str())
 
 
  215  QFile file(file_name);
 
  217  if(file.open(QFile::WriteOnly | QFile::Truncate))
 
  220      QTextStream out(&file);
 
 
  238  QFile file(file_name);
 
  240  if(file.open(QFile::WriteOnly | QFile::Append))
 
  243      QTextStream out(&file);
 
 
  260  qDebug() << 
" " << spectrum_native_id;
 
  261  QStringList native_id_list = spectrum_native_id.split(
"=");
 
  262  if(native_id_list.size() < 2)
 
  265        QObject::tr(
"scan number not found in mzML native id %1").arg(spectrum_native_id));
 
  283      return native_id_list.back().toULong();
 
 
  292  return QString(
"%1").arg((quintptr)pointer, QT_POINTER_SIZE * 2, 16, QChar(
'0'));
 
 
  313  double valueSum = std::abs(value1 + value2);
 
  317  double valueDiff = std::abs(value1 - value2);
 
  321  double epsilon = std::numeric_limits<double>::epsilon();
 
  325  double scaleFactor = epsilon * valueSum * decimalPlaces;
 
  333  bool res = valueDiff < scaleFactor
 
  335             || valueDiff < std::numeric_limits<double>::min();
 
 
  347  return std::nextafter(value, value + 1);
 
 
  353                                  std::chrono::system_clock::time_point chrono_time)
 
  358  tt = std::chrono::system_clock::to_time_t(chrono_time);
 
  360  QString debug_text = QString(
"%1 - %2\n").arg(msg).arg(QString::fromLatin1(ctime(&tt)));
 
 
  368                                 std::chrono::system_clock::time_point chrono_start,
 
  369                                 std::chrono::system_clock::time_point chrono_finish)
 
  373      "%1 %2 min = %3 s = %4 ms = %5 " 
  376      .arg(std::chrono::duration_cast<std::chrono::minutes>(chrono_finish - chrono_start).count())
 
  377      .arg(std::chrono::duration_cast<std::chrono::seconds>(chrono_finish - chrono_start).count())
 
  379        std::chrono::duration_cast<std::chrono::milliseconds>(chrono_finish - chrono_start).count())
 
  380      .arg(std::chrono::duration_cast<std::chrono::microseconds>(chrono_finish - chrono_start)
 
 
  391  QStringList string_list = text.split(QRegularExpression(
"[\\s]+"), Qt::SkipEmptyParts);
 
  395  std::vector<double> double_vector;
 
  397  for(
int iter = 0; iter < string_list.size(); ++iter)
 
  399      QString current_string = string_list.at(iter);
 
  403      double current_double = current_string.toDouble(&ok);
 
  405      if(!current_double && !ok)
 
  411      double_vector.push_back(current_double);
 
  414  return double_vector;
 
 
  418std::vector<std::size_t>
 
  423  QStringList string_list = text.split(QRegularExpression(
"[\\s]+"), Qt::SkipEmptyParts);
 
  428  std::vector<std::size_t> sizet_vector;
 
  430  for(
int iter = 0; iter < string_list.size(); ++iter)
 
  432      QString current_string = string_list.at(iter);
 
  436      std::size_t current_sizet = current_string.toUInt(&ok);
 
  438      if(!current_sizet && !ok)
 
  444      sizet_vector.push_back(current_sizet);
 
 
  476    return "abSciexWiff";
 
  480    return "agilentMassHunter";
 
  494    return "brukerBafAscii";
 
 
  511    return "tims_frames";
 
 
  585        throw PappsoException(QString(
"Enums::PeptideIon name not implemented"));
 
 
  647      return iodoacetamide;
 
  659      return phosphorylated;
 
  682      return dimethylated_medium;
 
  688      return dimethylated_heavy;
 
  693      return DimethylpyrroleAdduct;
 
  700    QObject::tr(
"Utils::guessAaModificationPbyMonoisotopicMassDelta => " 
  701                "modification not found for mass %1")
 
 
  709  if(unimod_accession == 
"UNIMOD:1")
 
  714  if(unimod_accession == 
"UNIMOD:4")
 
  719  if(unimod_accession == 
"UNIMOD:7")
 
  724  if(unimod_accession == 
"UNIMOD:27")
 
  730  if(unimod_accession == 
"UNIMOD:28")
 
  736  if(unimod_accession == 
"UNIMOD:35")
 
  741  qInfo() << 
"unimod_accession:" << unimod_accession << 
" not found";
 
 
pappso_double getMass() const
 
static AaModificationP getInstance(const QString &accession)
 
static AaModificationP getInstanceCustomizedMod(pappso_double modificationMass)
 
bool contains(pappso_double) const
 
static PrecisionPtr getDaltonInstance(pappso_double value)
get a Dalton precision pointer
 
static std::size_t extractScanNumberFromMzmlNativeId(const QString &spectrum_native_id)
 
static QString chronoTimePointDebugString(const QString &msg, std::chrono::system_clock::time_point chrono_time=std::chrono::system_clock::now())
 
static QString toString(specglob::SpectralAlignmentType type)
Convenience function to return a string describing the specglob alingment type.
 
static QString pointerToString(const void *const pointer)
 
static QString msDataFormatAsString(Enums::MsDataFormat mz_format)
Convenience function to return a string describing the MzFormat of a file.
 
static pappso_double roundToDecimals(pappso_double value, int decimal_places)
 
static QRegularExpression anythingButDigitDotDash
 
static bool almostEqual(double value1, double value2, int decimalPlaces=10)
 
static AaModificationP guessAaModificationPbyMonoisotopicMassDelta(Enums::AminoAcidChar aa, pappso_double mass)
 
static std::vector< double > splitMzStringToDoubleVectorWithSpaces(const QString &text, std::size_t &error_count)
 
static double nearestGreater(double value)
 
static std::string toUtf8StandardString(const QString &text)
 
static bool appendToFile(const QString &text, const QString &file_name)
 
static QString fileReaderTypeAsString(Enums::FileReaderType file_reader_type)
 
static QString booleanToString(bool value)
convenient function to transform a boolean to QString "TRUE" or "FALSE" QString returned is readable ...
 
static AaModificationP translateAaModificationFromUnimod(const QString &unimod_accession)
 
static QString chronoIntervalDebugString(const QString &msg, std::chrono::system_clock::time_point chrono_start, std::chrono::system_clock::time_point chrono_finish=std::chrono::system_clock::now())
 
static long long int roundToDecimal32bitsAsLongLongInt(pappso_double input)
 
static bool writeToFile(const QString &text, const QString &file_name)
 
static std::vector< std::size_t > splitSizetStringToSizetVectorWithSpaces(const QString &text, std::size_t &error_count)
 
static QRegularExpression signedDoubleNumberExponentialRegExp
 
static QRegularExpression xyMassDataFormatRegExp
 
static QRegularExpression unsignedDoubleNumberNoExponentialRegExp
 
static const QString getLexicalOrderedString(unsigned int num)
 
static void writeLexicalOrderedString(QTextStream *p_out, unsigned int num)
 
static int zeroDecimalsInValue(pappso_double value)
0.11 would return 0 (no empty decimal) 2.001 would return 2 1000.0001254 would return 3
 
static QRegularExpression endOfLineRegExp
Regular expression that tracks the end of line in text files.
 
static QString getVersion()
 
#define PAPPSOMSPP_VERSION
 
PeptideIon
Enums::PeptideIon enum defines all types of ions (Nter or Cter)
 
@ astar
Nter aldimine ions + NH3 loss.
 
@ ystar
Cter amino ions + NH3 loss.
 
@ yo
Cter amino ions + H2O loss.
 
@ bstar
Nter acylium ions + NH3 loss.
 
@ bo
Nter acylium ions + H2O loss.
 
@ ao
Nter aldimine ions + H2O loss.
 
@ tims
TimsMsRunReader : each scan is returned as a mass spectrum.
 
@ nonAlign
the type of alignment to put in origin matrix NON Alignment (0 - NA)
 
@ reAlign
Re Alignment (1 - RE)
 
@ align
Alignment (2 - AL)
 
ExperimentalSpectrumDataPointType
 
@ both
both, the ion and the complement exists in the original spectrum
 
@ symmetric
new peak : computed symmetric mass from a corresponding native peak
 
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
 
const AaModification * AaModificationP
 
double pappso_double
A type definition for doubles.
 
const PrecisionBase * PrecisionPtr
 
std::map< Enums::PrecisionUnit, QString > precisionUnitMap