use crate::{transforms::Transform, Dataset};
use tenflowers_core::Result;
use super::types::*;
use super::visualizer::DatasetVisualizer;
pub trait DatasetVisualizationExt<T>: Dataset<T> + Sized {
fn sample_preview(&self, num_samples: usize) -> Result<SamplePreview>
where
T: Clone + Default + scirs2_core::numeric::Zero + Send + Sync + 'static,
{
DatasetVisualizer::sample_preview(self, num_samples)
}
fn feature_distribution(&self, max_samples: Option<usize>) -> Result<DistributionInfo<T>>
where
T: Clone
+ Default
+ scirs2_core::numeric::Zero
+ Send
+ Sync
+ 'static
+ scirs2_core::numeric::Float,
{
DatasetVisualizer::feature_distribution(self, max_samples)
}
fn class_distribution(&self) -> Result<ClassDistribution>
where
T: Clone + Default + scirs2_core::numeric::Zero + Send + Sync + 'static,
{
DatasetVisualizer::class_distribution(self)
}
fn feature_histogram(&self, feature_index: usize, bins: usize) -> Result<FeatureHistogram<T>>
where
T: Clone
+ Default
+ scirs2_core::numeric::Zero
+ Send
+ Sync
+ 'static
+ scirs2_core::numeric::Float
+ PartialOrd,
{
DatasetVisualizer::feature_histogram(self, feature_index, bins)
}
fn analyze_augmentation_effects<Tr>(
&self,
transform: &Tr,
num_samples: usize,
) -> Result<AugmentationEffects<T>>
where
T: Clone
+ Default
+ scirs2_core::numeric::Zero
+ Send
+ Sync
+ 'static
+ scirs2_core::numeric::Float
+ PartialOrd,
Tr: Transform<T>,
{
DatasetVisualizer::analyze_augmentation_effects(self, transform, num_samples)
}
}
impl<T, D: Dataset<T> + Sized> DatasetVisualizationExt<T> for D {}