use std::collections::HashMap;
#[derive(Debug, Clone)]
pub struct SamplePreview {
pub total_samples: usize,
pub samples_shown: usize,
pub samples: Vec<SampleInfo>,
}
#[derive(Debug, Clone)]
pub struct SampleInfo {
pub index: usize,
pub feature_shape: Vec<usize>,
pub label_shape: Vec<usize>,
}
#[derive(Debug, Clone)]
pub struct DistributionInfo<T> {
pub samples_analyzed: usize,
pub feature_stats: Vec<FeatureStats<T>>,
pub label_stats: Vec<FeatureStats<T>>,
}
#[derive(Debug, Clone)]
pub struct FeatureStats<T> {
pub dimension: usize,
pub mean: T,
pub std_dev: T,
pub min: T,
pub max: T,
}
#[derive(Debug, Clone)]
pub struct ClassDistribution {
pub total_samples: usize,
pub class_counts: HashMap<String, usize>,
}
#[derive(Debug, Clone)]
pub struct FeatureHistogram<T> {
pub feature_index: usize,
pub min_value: T,
pub max_value: T,
pub bin_width: T,
pub bin_counts: Vec<usize>,
}
#[derive(Debug, Clone)]
pub struct AugmentationEffects<T> {
pub samples_analyzed: usize,
pub transform_success_rate: f64,
pub feature_changes: FeatureChangeAnalysis<T>,
pub distribution_changes: DistributionChangeAnalysis<T>,
pub sample_pairs: Vec<BeforeAfterPair<T>>,
}
#[derive(Debug, Clone)]
pub struct BeforeAfterPair<T> {
pub index: usize,
pub original: (tenflowers_core::Tensor<T>, tenflowers_core::Tensor<T>),
pub transformed: (tenflowers_core::Tensor<T>, tenflowers_core::Tensor<T>),
}
#[derive(Debug, Clone)]
pub struct FeatureChangeAnalysis<T> {
pub feature_count: usize,
pub average_change: T,
pub max_change: T,
pub min_change: T,
pub samples_with_changes: usize,
}
#[derive(Debug, Clone)]
pub struct DistributionChangeAnalysis<T> {
pub original_mean: T,
pub transformed_mean: T,
pub original_std: T,
pub transformed_std: T,
pub mean_change: T,
pub std_change: T,
}
#[derive(Debug, Clone)]
pub struct SampleComparison<T> {
pub sample_index: usize,
pub original_stats: TensorStats<T>,
pub transformed_stats: TensorStats<T>,
pub change_magnitude: T,
}
#[derive(Debug, Clone)]
pub struct TensorStats<T> {
pub mean: T,
pub std: T,
pub min: T,
pub max: T,
pub element_count: usize,
}