92  qDebug().noquote() << 
"Reading the spectrum collection with this " 
   93                        "specific configuration:" 
   96  std::vector<std::size_t> subset_of_tims_frame_ids;
 
   98  bool asked_ion_mobility_scan_num_range = 
false;
 
  100  quint32 mobility_scan_num_range_begin = std::numeric_limits<quint32>::quiet_NaN();
 
  101  quint32 mobility_scan_num_range_end   = std::numeric_limits<quint32>::quiet_NaN();
 
  102  quint32 mobility_scan_num_range_width = std::numeric_limits<quint32>::quiet_NaN();
 
  104  double mobility_one_over_k0_range_begin = std::numeric_limits<double>::quiet_NaN();
 
  105  double mobility_one_over_k0_range_end   = std::numeric_limits<double>::quiet_NaN();
 
  110      mobility_scan_num_range_begin =
 
  112      mobility_scan_num_range_end =
 
  116      mobility_scan_num_range_width =
 
  117        mobility_scan_num_range_end + 1 - mobility_scan_num_range_begin;
 
  119      asked_ion_mobility_scan_num_range = 
true;
 
  125  const std::vector<FrameIdDescr> &frame_id_descr_list = 
msp_timsData->getFrameIdDescrList();
 
  128  std::size_t scan_count = 0;
 
  130  for(
auto const &frame_record : 
msp_timsData->getTimsFrameRecordList())
 
  138      if(frame_record.frame_id == 0)
 
  144      std::size_t ms_level = 2;
 
  145      if(frame_record.msms_type == 0)
 
  151      subset_of_tims_frame_ids.push_back(frame_record.frame_id);
 
  153      if(mobility_scan_num_range_width)
 
  155          scan_count += mobility_scan_num_range_width;
 
  159          scan_count += frame_id_descr_list[frame_record.frame_id].m_scanCount;
 
  164  std::size_t frame_count = subset_of_tims_frame_ids.size();
 
  165  qDebug() << 
"The number of retained RT range- and MS level-matching frames : " << frame_count;
 
  171  double mz_range_begin = -1;
 
  172  double mz_range_end   = -1;
 
  189  std::size_t mz_index_merge_window = 0;
 
  192      mz_index_merge_window =
 
  198  std::size_t number_of_mobility_scans_set_as_qualified_mass_spectra = 0;
 
  200  for(std::size_t tims_frame_id : subset_of_tims_frame_ids)
 
  202      qDebug() << 
"tims_frame_id=" << tims_frame_id;
 
  210      const FrameIdDescr ¤t_frame_record = frame_id_descr_list[tims_frame_id];
 
  214      qDebug() << 
"tims_frame_id=" << tims_frame_id;
 
  226          mobility_one_over_k0_range_begin =
 
  230          mobility_one_over_k0_range_end =
 
  234          mobility_scan_num_range_begin =
 
  237          mobility_scan_num_range_end =
 
  240          asked_ion_mobility_scan_num_range = 
true;
 
  251      if(asked_ion_mobility_scan_num_range)
 
  253          if(mobility_scan_num_range_end > (frame_scan_count - 1))
 
  255              mobility_scan_num_range_end = frame_scan_count - 1;
 
  260          mobility_scan_num_range_begin = 0;
 
  261          mobility_scan_num_range_end   = frame_scan_count - 1;
 
  278        qDebug() << 
"20240724 - Now setting a spectrum index of 0";
 
  289      unsigned int frame_ms_level = tims_frame_csp.get()->
getMsLevel();
 
  292      std::vector<TimsDdaPrecursors::SpectrumDescr> dda_frame_precursor_spectrum_descr_list;
 
  295      std::size_t frame_global_slice_begin               = 0;
 
  297      if(frame_ms_level > 1)
 
  299          qDebug() << 
"Frame MS level:" << frame_ms_level;
 
  305              dda_frame_precursor_spectrum_descr_list =
 
  308              qDebug() << 
"Got frame's" << dda_frame_precursor_spectrum_descr_list.size()
 
  309                       << 
"precursors for MS level" << frame_ms_level;
 
  311              QString frame_precursors;
 
  313              for(
auto desc : dda_frame_precursor_spectrum_descr_list)
 
  315                  frame_precursors += QString(
"(%1, %2, %3\n)")
 
  316                                        .arg(desc.isolationMz)
 
  317                                        .arg(desc.isolationWidth)
 
  318                                        .arg(desc.ms1_index);
 
  321              qDebug() << 
"20240724 - The count of precursors:" 
  322                       << dda_frame_precursor_spectrum_descr_list.size() << 
"\n" 
  329                msp_timsData.get()->getTimsDiaSlicesPtr()->getMapFrame2WindowGroupPtr().at(
 
  331              frame_global_slice_begin =
 
  332                msp_timsData.get()->getTimsDiaSlicesPtr()->getGlobalSliceIndexBeginByFrameId(
 
  349                               current_frame_record.
m_scanCount + mobility_scan_num_range_begin;
 
  356      for(quint32 iter_scan_index = mobility_scan_num_range_begin;
 
  357          iter_scan_index <= mobility_scan_num_range_end;
 
  358          ++iter_scan_index, ++scan_index)
 
  366            QString(
"frame_id=%1 scan_index=%2 global_scan_index=%3")
 
  368              .arg(iter_scan_index)
 
  387          std::size_t per_scan_index_count_of_matching_precursors = 0;
 
  390              dda_precursor_spectrum_descr_list)
 
  392              std::size_t scan_index = (std::size_t)iter_scan_index;
 
  394              if(scan_index >= precursor_spectrum_descr_iterator->scan_mobility_start &&
 
  395                 scan_index <= precursor_spectrum_descr_iterator->scan_mobility_end)
 
  397                  ++per_scan_index_count_of_matching_precursors;
 
  399                  qDebug() << 
"20240724 - Found a precursor desc for scan_index" 
  401                           << 
"that matched the mobility scan range:" 
  402                           << precursor_spectrum_descr_iterator->isolationMz << 
"," 
  403                           << precursor_spectrum_descr_iterator->isolationWidth;
 
  406                    precursor_spectrum_descr_iterator->precursor_ion_data);
 
  410                      "frame_id=%1 begin=%2 end=%3 precursor=%4 idxms1=%5")
 
  411                      .arg(precursor_spectrum_descr_iterator->parent_frame)
 
  412                      .arg(precursor_spectrum_descr_iterator->scan_mobility_start)
 
  413                      .arg(precursor_spectrum_descr_iterator->scan_mobility_end)
 
  414                      .arg(precursor_spectrum_descr_iterator->precursor_id)
 
  415                      .arg(precursor_spectrum_descr_iterator->ms1_index));
 
  419                    precursor_spectrum_descr_iterator->isolationMz);
 
  422                    precursor_spectrum_descr_iterator->isolationWidth);
 
  426                    precursor_spectrum_descr_iterator->collisionEnergy);
 
  429                    (quint64)precursor_spectrum_descr_iterator->precursor_id);
 
  434          qDebug() << 
"20240724 - For scan_index" << scan_index << 
"found" 
  435                   << per_scan_index_count_of_matching_precursors
 
  436                   << 
"matching precursors";
 
  438          if(per_scan_index_count_of_matching_precursors > 1)
 
  446          if(dda_frame_precursor_spectrum_descr_list.size() > 0)
 
  448              std::size_t local_iter_scan_index = (std::size_t)iter_scan_index;
 
  450              auto precursor_spectrum_descr_iterator = std::find_if(
 
  451                dda_frame_precursor_spectrum_descr_list.begin(),
 
  452                dda_frame_precursor_spectrum_descr_list.end(),
 
  454                  if(local_iter_scan_index < spectrum_descr.scan_mobility_start)
 
  456                  if(local_iter_scan_index > spectrum_descr.scan_mobility_end)
 
  461              if(precursor_spectrum_descr_iterator != dda_frame_precursor_spectrum_descr_list.end())
 
  463                  qDebug() << 
"local_iter_scan_index=" << local_iter_scan_index
 
  464                           << 
" spectrum_descr.scan_mobility_end=" 
  465                           << precursor_spectrum_descr_iterator->scan_mobility_end;
 
  468                    precursor_spectrum_descr_iterator->precursor_ion_data);
 
  471                    QString(
"frame_id=%1 begin=%2 end=%3 precursor=%4 idxms1=%5")
 
  472                      .arg(precursor_spectrum_descr_iterator->parent_frame)
 
  473                      .arg(precursor_spectrum_descr_iterator->scan_mobility_start)
 
  474                      .arg(precursor_spectrum_descr_iterator->scan_mobility_end)
 
  475                      .arg(precursor_spectrum_descr_iterator->precursor_id)
 
  476                      .arg(precursor_spectrum_descr_iterator->ms1_index));
 
  478                  qDebug() << 
"Native precursor ID:" 
  493                    precursor_spectrum_descr_iterator->isolationMz);
 
  496                    precursor_spectrum_descr_iterator->isolationWidth);
 
  500                    precursor_spectrum_descr_iterator->collisionEnergy);
 
  504                    (quint64)precursor_spectrum_descr_iterator->precursor_id);
 
  511          if(p_dia_window_group != 
nullptr)
 
  513              std::size_t scan_index = (std::size_t)iter_scan_index;
 
  515                std::find_if(p_dia_window_group->begin(),
 
  516                             p_dia_window_group->end(),
 
  518                               if(scan_index < dia_window.ScanNumBegin)
 
  520                               if(scan_index > dia_window.ScanNumEnd)
 
  525              if(it_dia_window != p_dia_window_group->end())
 
  527                  qDebug() << 
"scan_index=" << scan_index
 
  528                           << 
" it_dia_window->ScanNumEnd=" << it_dia_window->ScanNumEnd;
 
  531                    QString(
"window_group=%1 begin=%2 end=%3 frame=%4 scan=%5 " 
  532                            "global_slice_id=%6")
 
  533                      .arg(it_dia_window->WindowGroup)
 
  534                      .arg(it_dia_window->ScanNumBegin)
 
  535                      .arg(it_dia_window->ScanNumEnd)
 
  536                      .arg(
msp_timsData.get()->getTimsDiaSlicesPtr()->getLastMs1FrameIdByMs2FrameId(
 
  538                      .arg(iter_scan_index)
 
  539                      .arg(it_dia_window->SliceIndex + frame_global_slice_begin));
 
  545                    it_dia_window->IsolationWidth);
 
  549                    it_dia_window->CollisionEnergy);
 
  557              quint32 mz_minimum_index_out = 0;
 
  558              quint32 mz_maximum_index_out = 0;
 
  560              auto raw_trace = tims_frame_csp.get()->
getMobilityScan(iter_scan_index,
 
  561                                                                     mz_index_merge_window,
 
  564                                                                     mz_minimum_index_out,
 
  565                                                                     mz_maximum_index_out);
 
  567              qDebug() << 
"Ion mobility scan's raw trace size:" << raw_trace.size();
 
  579                std::make_shared<MassSpectrum>(raw_trace));
 
  581              qDebug() << 
"RT (s):" << qualified_mass_spectrum.
getRtInSeconds();
 
  591          ++number_of_mobility_scans_set_as_qualified_mass_spectra;
 
  597  qDebug() << 
"Total number of loaded mass spectra:" 
  598           << number_of_mobility_scans_set_as_qualified_mass_spectra;