95 qDebug().noquote() <<
"Reading the spectrum collection with this "
96 "specific configuration:"
99 std::vector<std::size_t> subset_of_tims_frame_ids;
101 bool asked_ion_mobility_scan_num_range =
false;
103 quint32 mobility_scan_num_range_begin =
104 std::numeric_limits<quint32>::quiet_NaN();
105 quint32 mobility_scan_num_range_end =
106 std::numeric_limits<quint32>::quiet_NaN();
107 quint32 mobility_scan_num_range_width =
108 std::numeric_limits<quint32>::quiet_NaN();
110 double mobility_one_over_k0_range_begin =
111 std::numeric_limits<double>::quiet_NaN();
112 double mobility_one_over_k0_range_end =
113 std::numeric_limits<double>::quiet_NaN();
124 mobility_scan_num_range_begin =
129 mobility_scan_num_range_end =
136 mobility_scan_num_range_width =
137 mobility_scan_num_range_end + 1 - mobility_scan_num_range_begin;
139 asked_ion_mobility_scan_num_range =
true;
145 const std::vector<FrameIdDescr> &frame_id_descr_list =
149 std::size_t scan_count = 0;
151 for(
auto const &frame_record :
msp_timsData->getTimsFrameRecordList())
157 QObject::tr(
"Reading timsTOF data cancelled by the user."));
160 if(frame_record.frame_id == 0)
166 std::size_t ms_level = 2;
167 if(frame_record.msms_type == 0)
173 subset_of_tims_frame_ids.push_back(frame_record.frame_id);
175 if(mobility_scan_num_range_width)
177 scan_count += mobility_scan_num_range_width;
181 scan_count += frame_id_descr_list[frame_record.frame_id].m_scanCount;
186 std::size_t frame_count = subset_of_tims_frame_ids.size();
187 qDebug() <<
"The number of retained RT range- and MS level-matching frames : "
194 double mz_range_begin = -1;
195 double mz_range_end = -1;
217 std::size_t mz_index_merge_window = 0;
223 mz_index_merge_window =
232 std::size_t number_of_mobility_scans_set_as_qualified_mass_spectra = 0;
234 for(std::size_t tims_frame_id : subset_of_tims_frame_ids)
240 QObject::tr(
"Reading timsTOF data cancelled by the user."));
243 qDebug() <<
"tims_frame_id=" << tims_frame_id;
246 frame_id_descr_list[tims_frame_id];
251 qDebug() <<
"tims_frame_id=" << tims_frame_id;
268 mobility_one_over_k0_range_begin =
274 mobility_one_over_k0_range_end =
280 mobility_scan_num_range_begin =
281 tims_frame_csp.get()->getScanIndexFromOneOverK0(
282 mobility_one_over_k0_range_begin);
284 mobility_scan_num_range_end =
285 tims_frame_csp.get()->getScanIndexFromOneOverK0(
286 mobility_one_over_k0_range_end);
288 asked_ion_mobility_scan_num_range =
true;
291 qDebug() <<
"tims_frame_id=" << tims_frame_id;
296 quint32 count_of_mobility_scans = tims_frame_csp->getTotalNumberOfScans();
298 if(asked_ion_mobility_scan_num_range)
300 if(mobility_scan_num_range_end > (count_of_mobility_scans - 1))
302 mobility_scan_num_range_end = count_of_mobility_scans - 1;
307 mobility_scan_num_range_begin = 0;
308 mobility_scan_num_range_end = count_of_mobility_scans - 1;
311 qDebug() <<
"tims_frame_id=" << tims_frame_id;
323 qDebug() <<
"tims_frame_id=" << tims_frame_id;
325 mass_spectrum.
setRtInSeconds(tims_frame_csp.get()->getRtInSeconds());
329 unsigned int frame_ms_level = tims_frame_csp.get()->getMsLevel();
332 qDebug() <<
"tims_frame_id=" << tims_frame_id;
333 std::vector<TimsDdaPrecursors::SpectrumDescr> dda_spectrum_descr_list;
335 std::size_t frame_global_slice_begin = 0;
336 if(frame_ms_level > 1)
342 dda_spectrum_descr_list =
349 qDebug() <<
"tims_frame_id=" << tims_frame_id;
351 ->getTimsDiaSlicesPtr()
352 ->getMapFrame2WindowGroupPtr()
354 frame_global_slice_begin =
356 ->getTimsDiaSlicesPtr()
357 ->getGlobalSliceIndexBeginByFrameId(tims_frame_id);
361 qDebug() <<
"tims_frame_id=" << tims_frame_id;
366 mobility_scan_num_range_begin;
369 for(quint32 iter_scan_index = mobility_scan_num_range_begin;
370 iter_scan_index <= mobility_scan_num_range_end;
373 mass_spectrum = mass_spectrum_no_precursor_data;
377 QString(
"frame_id=%1 scan_index=%2 global_scan_index=%3")
379 .arg(iter_scan_index)
390 tims_frame_csp.get()->getDriftTimeInMilliseconds(iter_scan_index));
394 tims_frame_csp.get()->getOneOverK0Transformation(iter_scan_index));
396 if(dda_spectrum_descr_list.size() > 0)
398 std::size_t scan_index = (std::size_t)iter_scan_index;
399 auto it_spectrum_descr = std::find_if(
400 dda_spectrum_descr_list.begin(),
401 dda_spectrum_descr_list.end(),
404 if(scan_index < spectrum_descr.scan_mobility_start)
406 if(scan_index > spectrum_descr.scan_mobility_end)
411 if(it_spectrum_descr != dda_spectrum_descr_list.end())
413 qDebug() <<
"scan_index=" << scan_index
414 <<
" spectrum_descr.scan_mobility_end="
415 << it_spectrum_descr->scan_mobility_end;
417 it_spectrum_descr->precursor_ion_data);
421 "frame_id=%1 begin=%2 end=%3 precursor=%4 idxms1=%5")
422 .arg(it_spectrum_descr->parent_frame)
423 .arg(it_spectrum_descr->scan_mobility_start)
424 .arg(it_spectrum_descr->scan_mobility_end)
425 .arg(it_spectrum_descr->precursor_id)
426 .arg(it_spectrum_descr->ms1_index));
430 it_spectrum_descr->isolationMz);
433 it_spectrum_descr->isolationWidth);
437 it_spectrum_descr->collisionEnergy);
440 (quint64)it_spectrum_descr->precursor_id);
443 if(p_dia_window_group !=
nullptr)
447 std::size_t scan_index = (std::size_t)iter_scan_index;
448 auto it_dia_window = std::find_if(
449 p_dia_window_group->begin(),
450 p_dia_window_group->end(),
452 if(scan_index < dia_window.ScanNumBegin)
454 if(scan_index > dia_window.ScanNumEnd)
459 if(it_dia_window != p_dia_window_group->end())
461 qDebug() <<
"scan_index=" << scan_index
462 <<
" it_dia_window->ScanNumEnd="
463 << it_dia_window->ScanNumEnd;
466 QString(
"window_group=%1 begin=%2 end=%3 frame=%4 scan=%5 "
467 "global_slice_id=%6")
468 .arg(it_dia_window->WindowGroup)
469 .arg(it_dia_window->ScanNumBegin)
470 .arg(it_dia_window->ScanNumEnd)
472 ->getTimsDiaSlicesPtr()
473 ->getLastMs1FrameIdByMs2FrameId(tims_frame_id))
474 .arg(iter_scan_index)
475 .arg(it_dia_window->SliceIndex +
476 frame_global_slice_begin));
480 it_dia_window->IsolationMz);
483 it_dia_window->IsolationWidth);
487 it_dia_window->CollisionEnergy);
492 quint32 mz_minimum_index_out = 0;
493 quint32 mz_maximum_index_out = 0;
496 tims_frame_csp.get()->getMobilityScan(iter_scan_index,
497 mz_index_merge_window,
500 mz_minimum_index_out,
501 mz_maximum_index_out);
510 mz_minimum_index_out);
513 mz_maximum_index_out);
518 std::make_shared<MassSpectrum>(raw_trace));
529 ++number_of_mobility_scans_set_as_qualified_mass_spectra;
534 qDebug() <<
"Total number of loaded mass spectra:"
535 << number_of_mobility_scans_set_as_qualified_mass_spectra;