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;