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 ++histogram_of_intensity_distribution[(int)((data_point.y - 1) / histogram_bin_size)];
135 int elements_below_max_int_percentile =
136 (int)(
m_parameters.maxIntPercentile * trace.size() / 100);
138 int elements_seen = 0;
143 while(the_iterator != iter_last_data_point &&
144 elements_seen < elements_below_max_int_percentile)
147 elements_seen += histogram_of_intensity_distribution[i];
152 m_parameters.maxIntensity = (((double)i) + 0.5) * histogram_bin_size;
160 qFatal() <<
"The method to determine the maximal intensity is set to MANUAL"
161 <<
"However, the m_parameters.maxIntensity value is <= 0.";
169 qFatal() <<
"The m_parameters.maxIntensity "
170 "value should be positive! ";
174 TraceIterator window_pos_border_left = iter_first_data_point;
175 TraceIterator window_pos_border_right = iter_first_data_point;
183 std::vector<double> bin_value(
m_parameters.binCount, 0);
188 bin_value[bin] = (bin + 0.5) * bin_size;
196 int element_inc_count = 0;
200 int elements_in_window = 0;
202 int window_count = 0;
205 int element_in_window_half = 0;
209 while(window_pos_center != iter_last_data_point)
213 while((*window_pos_border_left).x <
214 (*window_pos_center).x - window_half_size)
217 std::min<int>((
int)((*window_pos_border_left).y / bin_size),
218 bin_count_minus_one),
221 --elements_in_window;
222 ++window_pos_border_left;
227 while((window_pos_border_right != iter_last_data_point) &&
228 ((*window_pos_border_right).x <=
229 (*window_pos_center).x + window_half_size))
234 std::min<int>((
int)((*window_pos_border_right).y / bin_size),
235 bin_count_minus_one),
238 ++elements_in_window;
239 ++window_pos_border_right;
242 if(elements_in_window <
m_parameters.minRequiredElements)
252 element_inc_count = 0;
253 element_in_window_half = (elements_in_window + 1) / 2;
254 while(median_bin < bin_count_minus_one &&
255 element_inc_count < element_in_window_half)
258 element_inc_count += histogram[median_bin];
262 if(median_bin == bin_count_minus_one)
268 noise = std::max(1.0, bin_value[median_bin]);
293 <<
"% of all windows were sparse. You should consider increasing"
294 <<
"'m_parameters.windowSize' or decrease 'm_parameters.minRequiredElements'";
301 <<
"% of all Signal-to-Noise estimates are too high, because the "
302 "median was found in the rightmost histogram-bin. "
303 <<
"You should consider increasing 'm_parameters.maxIntensityy' (and maybe "
304 "'m_parameters.binCount' with it, to keep bin width reasonable)";