75  std::map<MzIntegrationParams::MzIntegrationParams::BinningType, QString>::const_iterator
 
   79                   [text](
const std::pair<MzIntegrationParams::BinningType, QString> &pair) {
 
   80                     return pair.second == text;
 
   84    return the_iterator_const->first;
 
 
  103                                         int bin_size_divisor,
 
  105                                         bool remove_zero_val_data_points,
 
 
  138  return mz_integration_params_p;
 
 
  153    return initialization_result;
 
  162  bool binning_type_set            = 
false;
 
  163  bool decimal_places_set          = 
false;
 
  164  bool bin_size_model_set          = 
false;
 
  165  bool bin_size_divisor_set        = 
false;
 
  166  bool remove_zero_data_points_set = 
false;
 
  168  QStringList string_list = text.split(
"\n");
 
  170  for(
int iter = 0; iter < string_list.size(); ++iter)
 
  172      QString iter_string = string_list.at(iter);
 
  176      if(iter_string.contains(
"Binning type:"))
 
  179          binning_type_set = 
true;
 
  181      else if(iter_string.contains(
"Bin size model:"))
 
  184          bin_size_model_set = 
true;
 
  186      else if(iter_string.contains(
"Bin size divisor:"))
 
  189          bin_size_divisor_set = 
true;
 
  191      else if(iter_string.contains(
"Decimal places:"))
 
  194          decimal_places_set = 
true;
 
  196      else if(iter_string.contains(
"Remove 0-val data points:"))
 
  198          remove_zero_data_points_set = 
true;
 
  209  if(bin_size_model_set)
 
  211  if(bin_size_divisor_set)
 
  213  if(decimal_places_set)
 
  216  if(remove_zero_data_points_set)
 
  219  return initialization_result;
 
 
  227                                int bin_size_divisor,
 
  229                                bool remove_zero_val_data_points,
 
 
  263  if(
static_cast<bool>(initialization_results &
 
  267  if(
static_cast<bool>(initialization_results &
 
  271  if(
static_cast<bool>(initialization_results &
 
  275  if(
static_cast<bool>(initialization_results &
 
 
  457      errors += (
m_smallestMz == std::numeric_limits<double>::max() ? 1 : 0);
 
  462      errors += (
m_greatestMz == std::numeric_limits<double>::min() ? 1 : 0);
 
  467      qCritical() << 
"The m/z integration parameters are invalid.";
 
 
  477  return (
m_smallestMz < std::numeric_limits<double>::max()) &&
 
 
  488  std::vector<double> bins;
 
  504      qFatal(
"Programming error. This kind of binning is not supported.");
 
 
  517  std::vector<double> bins;
 
 
  549    qFatal() << 
"Programming error. The MzIntegrationParams::BinningLogic is not valid, cannot " 
  552  qDebug() << 
"Binning logic:" << 
toString();
 
  608  std::vector<double> bins;
 
  619  double previous_mz_bin = first_mz;
 
  621  bins.push_back(previous_mz_bin);
 
  630  while(previous_mz_bin <= last_mz)
 
  656          current_mz = previous_mz_bin + 
m_binSizeModel->delta(previous_mz_bin);
 
  667      double current_rounded_mz =
 
  680      if(current_rounded_mz == previous_mz_bin)
 
  692      bins.push_back(current_rounded_mz);
 
  695      previous_mz_bin = current_rounded_mz;
 
  701  QString fileName = 
"/tmp/massSpecArbitraryBins.txt-at-" +
 
  702                     QDateTime::currentDateTime().toString(
"yyyyMMdd-HH-mm-ss");
 
  704  qDebug() << 
"Writing the list of bins setup in the " 
  705              "mass spectrum in file " 
  708  QFile file(fileName);
 
  709  file.open(QIODevice::WriteOnly);
 
  711  QTextStream fileStream(&file);
 
  713  for(
auto &&bin : bins)
 
  714    fileStream << QString(
"%1\n").arg(bin, 0, 
'f', 10);
 
 
  739  std::vector<double> bins;
 
  741  if(mass_spectrum_csp->size() < 2)
 
  748  local_mass_spectrum.
sortMz();
 
  762  double start_mz_in = min_mz;
 
  768  std::vector<pappso::DataPoint>::const_iterator it = local_mass_spectrum.begin();
 
  770  double prev_mz = it->x;
 
  777  while(it != local_mass_spectrum.end())
 
  779      double next_mz = it->x;
 
  784      double step = next_mz - prev_mz;
 
  785      end_mz_out  = start_mz_in + step;
 
  796      bins.push_back(start_mz_in);
 
  799      start_mz_in = end_mz_out;
 
  810  QString fileName = 
"/tmp/massSpecDataBasedBins.txt";
 
  812  qDebug() << 
"Writing the list of bins setup in the " 
  813              "mass spectrum in file " 
  816  QFile file(fileName);
 
  817  file.open(QIODevice::WriteOnly);
 
  819  QTextStream fileStream(&file);
 
  821  for(
auto &&bin : m_bins)
 
  822    fileStream << QString(
"[%1-%2]\n")
 
  823                    .arg(bin.startMzIn, 0, 
'f', 10)
 
  824                    .arg(bin.endMzOut, 0, 
'f', 10);
 
  829  qDebug() << 
"elements." 
  830           << 
"starting with mz" << m_bins.front().startMzIn << 
"ending with mz" 
  831           << m_bins.back().endMzOut;
 
 
  847  for(
int iter = 0; iter < offset; ++iter)
 
  848    offset_lead += spacer;
 
  850  QString text = offset_lead;
 
  851  text += 
"m/z integration parameters:\n";
 
  853  QString new_lead = QString(
"%1%2").arg(offset_lead).arg(spacer);
 
  857    text.append(QString::asprintf(
"Smallest (first) m/z: %.6f\n", 
m_smallestMz));
 
  861    text.append(QString::asprintf(
"Greatest (last) m/z: %.6f\n", 
m_greatestMz));
 
  868  text.append(
"Binning logic:\n");
 
  876  text.append(QString(
"Bin size model: %1\n").arg(
m_binSizeModel->toString()));
 
 
  895  text.append(QString(
"Bin size model: %1\n").arg(
m_binSizeModel->toString()));
 
 
  909  qDebug() << 
"registerJsConstructor for MzIntegrationParams to QJSEngine.";
 
  913      qWarning() << 
"Cannot register class: engine is null";
 
  919  enumObject = engine->newObject();
 
  921  enumObject.setProperty(
"dataBased",
 
  923  enumObject.setProperty(
"arbitrary",
 
  925  engine->globalObject().setProperty(
"BinningType", enumObject);
 
  927  enumObject = engine->newObject();
 
  928  enumObject.setProperty(
 
  930  enumObject.setProperty(
 
  931    "fromSettingsBinSizeModelPartial",
 
  933  enumObject.setProperty(
 
  934    "fromSettingsBinSizeModelFull",
 
  936  enumObject.setProperty(
"fromSettingsFull",
 
  938  engine->globalObject().setProperty(
"InitializationResult", enumObject);
 
  941  QJSValue jsMetaObject = engine->newQMetaObject(&MzIntegrationParams::staticMetaObject);
 
  942  engine->globalObject().setProperty(
"MzIntegrationParams", jsMetaObject);
 
 
Class to represent a mass spectrum.
 
void sortMz()
Sort the DataPoint instances of this spectrum.
 
The MzIntegrationParams class provides the parameters definining how m/z !
 
void binSizeDivisorChanged()
 
int getDecimalPlaces() const
 
@ REMOVE_ZERO_DATA_POINTS
 
Q_INVOKABLE MzIntegrationParams(QObject *parent=nullptr)
 
Q_INVOKABLE void updateGreatestMz(double value)
 
int getBinSizeDivisor() const
 
BinningType m_binningType
 
Q_INVOKABLE InitializationResult initialize(const QString &text)
 
void setBinSizeModel(pappso::PrecisionPtr bin_size_model_p)
 
void setBinSizeDivisor(int divisor)
 
std::vector< double > createArbitraryBins()
 
void setGreatestMz(double value)
 
void setSmallestMz(double value)
 
bool isRemoveZeroValDataPoints() const
 
double getSmallestMz() const
 
pappso::PrecisionPtr m_binSizeModel
 
Q_INVOKABLE bool isValid() const
 
BinningType getBinningType() const
 
pappso::PrecisionPtr getBinSizeModel() const
 
Q_INVOKABLE bool hasValidMzRange() const
 
@ DATA_BASED
binning based on mass spectral data
 
@ ARBITRARY
binning based on arbitrary bin size value
 
void decimalPlacesChanged()
 
static void registerJsConstructor(QJSEngine *engine)
 
void removeZeroValDataPointsChanged()
 
Q_INVOKABLE void updateSmallestMz(double value)
 
void binningTypeChanged()
 
Q_INVOKABLE MzIntegrationParams * clone(QObject *parent=nullptr) const
 
Q_INVOKABLE void setMzValues(double smallest, double greatest)
 
bool m_removeZeroValDataPoints
 
void setBinningType(BinningType binningType)
 
Q_INVOKABLE void reset()
Reset the instance to default values.
 
std::vector< double > createDataBasedBins(pappso::MassSpectrumCstSPtr massSpectrum)
 
Q_INVOKABLE QString toString() const
 
void setDecimalPlaces(int decimal_places)
 
Q_INVOKABLE std::vector< double > createBins()
 
void setRemoveZeroValDataPoints(bool removeOrNot=true)
 
virtual ~MzIntegrationParams()
 
double getGreatestMz() const
 
static PrecisionPtr getResInstance(pappso_double value)
get a resolution precision pointer
 
static PrecisionPtr fromString(const QString &str)
get a precision pointer from a string
 
static PrecisionPtr getPpmInstance(pappso_double value)
get a ppm precision pointer
 
static int zeroDecimalsInValue(pappso_double value)
0.11 would return 0 (no empty decimal) 2.001 would return 2 1000.0001254 would return 3
 
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
 
MzIntegrationParams::BinningType getBinningTypeFromString(const QString &text)
 
std::map< MzIntegrationParams::BinningType, QString > binningTypeMap
Map relating the BinningType to a textual representation.
 
std::shared_ptr< const MassSpectrum > MassSpectrumCstSPtr
 
const PrecisionBase * PrecisionPtr