99 std::vector<std::size_t> subset_of_tims_frame_ids;
102 bool asked_ion_mobility_scan_num_range =
false;
104 quint32 mobility_scan_num_range_begin = std::numeric_limits<quint32>::max();
105 quint32 mobility_scan_num_range_end = std::numeric_limits<quint32>::max();
106 quint32 mobility_scan_num_range_width = std::numeric_limits<quint32>::max();
108 double mobility_one_over_k0 = std::numeric_limits<double>::max();
109 double mobility_one_over_k0_range_begin = std::numeric_limits<double>::max();
110 double mobility_one_over_k0_range_end = std::numeric_limits<double>::max();
121 mobility_scan_num_range_begin =
126 mobility_scan_num_range_end =
133 mobility_scan_num_range_width =
134 mobility_scan_num_range_end + 1 - mobility_scan_num_range_begin;
136 asked_ion_mobility_scan_num_range =
true;
142 const std::vector<FrameIdDescr> &frame_id_descr_list =
146 std::size_t scan_count = 0;
148 for(
auto const &frame_record :
msp_timsData->getTimsFrameRecordList())
154 QObject::tr(
"Reading timsTOF data cancelled by the user."));
157 if(frame_record.frame_id == 0)
163 std::size_t ms_level = 2;
164 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 != std::numeric_limits<int>::max())
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 : "
202 bool asked_mz_range =
false;
203 double mz_range_begin = -1;
204 double mz_range_end = -1;
208 asked_mz_range =
true;
225 std::size_t mz_index_merge_window = 0;
231 mz_index_merge_window =
242 std::size_t scan_index = 0;
244 for(std::size_t tims_frame_id : subset_of_tims_frame_ids)
250 QObject::tr(
"Reading timsTOF data cancelled by the user."));
256 frame_id_descr_list[tims_frame_id];
282 mobility_one_over_k0_range_begin =
288 mobility_one_over_k0_range_end =
294 mobility_scan_num_range_begin =
295 tims_frame_csp.get()->getScanIndexFromOneOverK0(
296 mobility_one_over_k0_range_begin);
298 mobility_scan_num_range_end =
299 tims_frame_csp.get()->getScanIndexFromOneOverK0(
300 mobility_one_over_k0_range_end);
302 asked_ion_mobility_scan_num_range =
true;
308 quint32 count_of_mobility_scans = tims_frame_csp->getTotalNumberOfScans();
310 if(asked_ion_mobility_scan_num_range)
312 if(mobility_scan_num_range_end > (count_of_mobility_scans - 1))
314 mobility_scan_num_range_end = count_of_mobility_scans - 1;
319 mobility_scan_num_range_begin = 0;
320 mobility_scan_num_range_end = count_of_mobility_scans - 1;
327 if(mobility_one_over_k0_range_begin == std::numeric_limits<double>::max())
328 mobility_one_over_k0_range_begin =
329 tims_frame_csp->getOneOverK0Transformation(
330 mobility_scan_num_range_begin);
331 if(mobility_one_over_k0_range_end == std::numeric_limits<double>::max())
332 mobility_one_over_k0_range_end =
333 tims_frame_csp->getOneOverK0Transformation(
334 mobility_scan_num_range_end);
336 mobility_scan_num_range_width =
337 mobility_scan_num_range_end + 1 - mobility_scan_num_range_begin;
341 mobility_one_over_k0 = tims_frame_csp.get()->getScanIndexFromOneOverK0(
342 mobility_scan_num_range_begin + (mobility_scan_num_range_width / 2));
355 QString(
"frame_id=%1 global_scan_index=%2 im_scan_range_begin=%3 "
356 "im_scan_range_end=%4")
359 .arg(mobility_scan_num_range_begin)
360 .arg(mobility_scan_num_range_end));
367 tims_frame_csp.get()->getRtInSeconds());
371 unsigned int frame_ms_level = tims_frame_csp.get()->getMsLevel();
372 qualified_mass_spectrum.
setMsLevel(frame_ms_level);
378 tims_frame_csp.get()->getDriftTimeInMilliseconds(
379 mobility_scan_num_range_begin + (mobility_scan_num_range_width / 2)));
382 qDebug() <<
"mobility_one_over_k0:" << mobility_one_over_k0
383 <<
"mobility_one_over_k0_range_begin:"
384 << mobility_one_over_k0_range_begin
385 <<
"mobility_one_over_k0_range_end"
386 << mobility_one_over_k0_range_end;
388 if(mobility_one_over_k0 == std::numeric_limits<double>::max() ||
389 mobility_one_over_k0_range_begin ==
390 std::numeric_limits<double>::max() ||
391 mobility_one_over_k0_range_end == std::numeric_limits<double>::max())
394 "range are undefined."));
400 mobility_one_over_k0_range_begin);
403 mobility_one_over_k0_range_end);
410 if(mobility_scan_num_range_begin == std::numeric_limits<quint32>::max() ||
411 mobility_scan_num_range_end == std::numeric_limits<quint32>::max())
413 "Not possible that mobility_scan_num_range values are undefined."));
417 mobility_scan_num_range_begin + (mobility_scan_num_range_width / 2));
420 mobility_scan_num_range_begin);
423 mobility_scan_num_range_end);
427 static_cast<qlonglong
>(tims_frame_csp->getTotalNumberOfScans()));
436 quint32 min_mz_index_out = 0;
437 quint32 max_mz_index_out = 0;
442 tims_frame_csp->combineScansToTraceWithDowngradedMzResolution2(
443 mz_index_merge_window,
446 mobility_scan_num_range_begin,
447 mobility_scan_num_range_end,
454 tims_frame_csp->combineScansToTraceWithDowngradedMzResolution(
455 mz_index_merge_window,
456 mobility_scan_num_range_begin,
457 mobility_scan_num_range_end,
473 std::make_shared<MassSpectrum>(trace));