96 gaussian_estimate_global.
mean +
107 qFatal() <<
"The m_parameters.maxIntPercentile value is not in the [0, 100] range:"
112 QList<int> histogram_of_intensity_distribution(100, 0);
115 auto max_intensity_data_point_iterator = std::max_element(
120 double max_intensity = max_intensity_data_point_iterator->y;
124 double histogram_bin_size = max_intensity / 100;
131 int bin = (int)((data_point.y - 1) / histogram_bin_size);
132 ++histogram_of_intensity_distribution[bin];
139 int elements_below_max_int_percentile =
140 (int)(
m_parameters.maxIntPercentile * trace.size() / 100);
142 int elements_seen = 0;
151 while(the_iterator != iter_last_data_point &&
152 elements_seen < elements_below_max_int_percentile)
155 elements_seen += histogram_of_intensity_distribution[i];
163 m_parameters.maxIntensity = (((double)i) + 0.5) * histogram_bin_size;
171 qFatal() <<
"The method to determine the maximal intensity is set to MANUAL"
172 <<
"However, the m_parameters.maxIntensity value is <= 0.";
180 qFatal() <<
"The m_parameters.maxIntensity "
181 "value should be positive! ";
185 TraceIterator window_pos_border_left = iter_first_data_point;
186 TraceIterator window_pos_border_right = iter_first_data_point;
197 std::vector<double> bin_values(
m_parameters.binCount, 0);
203 bin_values[bin] = (bin + 0.5) * bin_size;
212 int element_inc_count = 0;
216 int elements_in_window = 0;
218 int window_count = 0;
221 int element_in_window_half = 0;
232 while(window_pos_center != iter_last_data_point)
240 while((*window_pos_border_left).x <
241 (*window_pos_center).x - window_half_size)
244 std::min<int>((
int)((*window_pos_border_left).y / bin_size),
245 bin_count_minus_one),
253 --elements_in_window;
256 ++window_pos_border_left;
266 while((window_pos_border_right != iter_last_data_point) &&
267 ((*window_pos_border_right).x <=
268 (*window_pos_center).x + window_half_size))
273 std::min<int>((
int)((*window_pos_border_right).y / bin_size),
274 bin_count_minus_one),
277 ++elements_in_window;
278 ++window_pos_border_right;
281 if(elements_in_window <
m_parameters.minRequiredElements)
291 element_inc_count = 0;
292 element_in_window_half = (elements_in_window + 1) / 2;
293 while(median_bin < bin_count_minus_one &&
294 element_inc_count < element_in_window_half)
297 element_inc_count += histogram[median_bin];
301 if(median_bin == bin_count_minus_one)
307 noise = std::max(1.0, bin_values[median_bin]);
332 <<
"% of all windows were sparse. You should consider increasing"
333 <<
"'m_parameters.windowSize' or decrease 'm_parameters.minRequiredElements'";
340 <<
"% of all Signal-to-Noise estimates are too high, because the "
341 "median was found in the rightmost histogram-bin. "
342 <<
"You should consider increasing 'm_parameters.maxIntensityy' (and maybe "
343 "'m_parameters.binCount' with it, to keep bin width reasonable)";