MCPcopy Create free account
hub / github.com/SingleRust/SingleRust / standardize_log_form_vec

Function standardize_log_form_vec

src/shared/processing/mod.rs:89–135  ·  view source on GitHub ↗
(vec: &[f64])

Source from the content-addressed store, hash-verified

87}
88
89pub fn standardize_log_form_vec(vec: &[f64]) -> Vec<f64> {
90 // Filter out non-finite values for statistics calculation
91 let finite_values: Vec<f64> = vec.iter().filter(|x| x.is_finite()).copied().collect();
92
93 let n = finite_values.len() as f64;
94 if n <= 1.0 {
95 // If we have too few finite values, return zeros
96 println!(
97 "DEBUG: Too few finite values ({}) for standardization, returning zeros",
98 n
99 );
100 return vec![0.0; vec.len()];
101 }
102
103 let mu: f64 = finite_values.iter().sum::<f64>() / n;
104 let sigma = (finite_values.iter().map(|x| (x - mu).powi(2)).sum::<f64>() / (n - 1.0)).sqrt();
105
106 // Debug the standardization process
107 let finite_count = vec.iter().filter(|x| x.is_finite()).count();
108 let nan_count = vec.iter().filter(|x| x.is_nan()).count();
109 let inf_count = vec.iter().filter(|x| x.is_infinite()).count();
110 println!(
111 "DEBUG Standardization: n={}, mu={:.6}, sigma={:.6}, finite={}, nan={}, inf={}",
112 vec.len(),
113 mu,
114 sigma,
115 finite_count,
116 nan_count,
117 inf_count
118 );
119
120 if !sigma.is_finite() || sigma == 0.0 {
121 println!("DEBUG: Sigma is problematic, returning zeros");
122 return vec![0.0; vec.len()];
123 }
124
125 // Standardize all values, but only finite ones get proper standardization
126 vec.iter()
127 .map(|&x| {
128 if x.is_finite() {
129 standardize_log(x, mu, sigma)
130 } else {
131 0.0 // Non-finite values get zero standardized score
132 }
133 })
134 .collect()
135}
136
137#[allow(dead_code)]
138fn normalize_per_bin(

Callers 1

compute_svr_hvgFunction · 0.85

Calls 1

standardize_logFunction · 0.85

Tested by

no test coverage detected