(
log_means: &[f64],
log_dispersions: &[f64],
n_bins: usize,
)
| 136 | |
| 137 | #[allow(dead_code)] |
| 138 | fn normalize_per_bin( |
| 139 | log_means: &[f64], |
| 140 | log_dispersions: &[f64], |
| 141 | n_bins: usize, |
| 142 | ) -> anyhow::Result<Vec<f64>> { |
| 143 | let min_mean = log_means.iter().fold(f64::INFINITY, |a, &b| a.min(b)); |
| 144 | let max_mean = log_means.iter().fold(f64::NEG_INFINITY, |a, &b| a.max(b)); |
| 145 | let bin_width = (max_mean - min_mean) / n_bins as f64; |
| 146 | |
| 147 | let mut norm_dispersions = vec![0.0; log_means.len()]; |
| 148 | let mut bin_counts = vec![0; n_bins]; |
| 149 | let mut bin_disp_means = vec![0.0; n_bins]; |
| 150 | let mut bin_disp_stds = vec![0.0; n_bins]; |
| 151 | |
| 152 | for i in 0..log_means.len() { |
| 153 | let bin_idx = if log_means[i] == max_mean { |
| 154 | n_bins - 1 |
| 155 | } else { |
| 156 | ((log_means[i] - min_mean) / bin_width) as usize |
| 157 | }; |
| 158 | |
| 159 | bin_counts[bin_idx] += 1; |
| 160 | bin_disp_means[bin_idx] += log_dispersions[i]; |
| 161 | } |
| 162 | |
| 163 | for i in 0..n_bins { |
| 164 | if bin_counts[i] > 0 { |
| 165 | bin_disp_means[i] /= bin_counts[i] as f64; |
| 166 | } |
| 167 | } |
| 168 | |
| 169 | for i in 0..log_means.len() { |
| 170 | let bin_idx = if log_means[i] == max_mean { |
| 171 | n_bins - 1 |
| 172 | } else { |
| 173 | ((log_means[i] - min_mean) / bin_width) as usize |
| 174 | }; |
| 175 | if bin_counts[bin_idx] > 1 { |
| 176 | bin_disp_stds[bin_idx] += (log_dispersions[i] - bin_disp_means[bin_idx]).powi(2); |
| 177 | } |
| 178 | } |
| 179 | |
| 180 | for i in 0..n_bins { |
| 181 | if bin_counts[i] > 1 { |
| 182 | bin_disp_stds[i] = (bin_disp_stds[i] / (bin_counts[i] - 1) as f64).sqrt(); |
| 183 | } |
| 184 | } |
| 185 | |
| 186 | for i in 0..log_means.len() { |
| 187 | let bin_idx = if log_means[i] == max_mean { |
| 188 | n_bins - 1 |
| 189 | } else { |
| 190 | ((log_means[i] - min_mean) / bin_width) as usize |
| 191 | }; |
| 192 | |
| 193 | if bin_disp_stds[bin_idx] > 0.0 { |
| 194 | norm_dispersions[i] = |
| 195 | (log_dispersions[i] - bin_disp_means[bin_idx]) / bin_disp_stds[bin_idx]; |
no outgoing calls
no test coverage detected