1pub mod api_integration;
24pub mod array_utils;
27pub mod cloud_storage;
28pub mod config;
29pub mod cross_validation;
30pub mod data_generation;
31pub mod data_pipeline;
32pub mod data_structures;
33pub mod database;
34pub mod debug;
35pub mod distributed_computing;
36pub mod ensemble;
37pub mod environment;
38pub mod error_handling;
39pub mod external_integration;
40pub mod feature_engineering;
41pub mod file_io;
42pub mod gpu_computing;
43pub mod linear_algebra;
44pub mod logging;
45pub mod math_utils;
46pub mod memory;
47pub mod metrics;
48pub mod multiclass;
49pub mod optimization;
50pub mod parallel;
51pub mod performance;
52pub mod performance_regression;
53pub mod preprocessing;
54pub mod probabilistic;
55pub mod profile_guided_optimization;
56pub mod r_integration;
57pub mod random;
58pub mod simd;
59pub mod spatial;
60pub mod statistical;
61pub mod stats;
62pub mod text_processing;
63pub mod time_series;
64pub mod type_safety;
65pub mod validation;
66pub mod visualization;
67
68#[allow(non_snake_case)]
69#[cfg(test)]
70mod property_tests;
71
72pub use api_integration::{
74 ApiClient, ApiConfig, ApiError, ApiMetrics, ApiRequest, ApiResponse, ApiService,
75 Authentication, HttpMethod, MLApiPatterns, MethodStats, MockApiClient, RequestBuilder,
76};
77pub use array_utils::{
97 argmax,
98 argmin,
99 argsort,
100 array_add_constant_inplace,
101 array_apply_inplace,
102 array_concatenate,
103 array_cumsum,
104 array_describe,
105 array_max,
106 array_mean,
107 array_mean_f64,
108 array_median,
109 array_min,
110 array_min_max,
111 array_min_max_normalize,
112 array_min_max_normalize_inplace,
113 array_percentile,
114 array_quantiles,
115 array_resize,
116 array_reverse,
117
118 array_scale_inplace,
119 array_split,
120 array_standardize,
121 array_standardize_inplace,
123 array_std,
124 array_sum,
126 array_unique_counts,
127 array_var,
128 array_variance_f64,
129 boolean_indexing_1d,
130 boolean_indexing_2d,
131 broadcast_shape,
132 check_array_1d,
134 check_array_2d,
135 column_or_1d,
136 compatible_layout,
137
138 compress_1d,
139
140 concatenate_2d,
141 create_mask,
142 densify_threshold,
143
144 efficient_copy,
145 fancy_indexing_1d,
147 fancy_indexing_2d,
148 fast_dot_product_f32,
149 fast_dot_product_f64,
150 fast_sum_f32,
151
152 fast_sum_f64,
153 filter_array,
154 flatten_2d,
155 get_strides,
156 is_broadcastable,
157 is_contiguous,
159 label_counts,
160 make_contiguous,
161 normalize_array,
162 pad_2d,
163
164 put_1d,
165 reshape_1d_to_2d,
167 safe_indexing,
168 safe_indexing_2d,
169 safe_sparse_dot,
171 safe_sparse_dot_f32,
172 safe_sparse_dot_f64,
173 simd_add_arrays_f32,
174 simd_add_arrays_f64,
176 simd_multiply_arrays_f32,
177 simd_multiply_arrays_f64,
178 simd_scale_array_f32,
179 simd_scale_array_f64,
180 slice_with_step,
181 sparse_add,
182 sparse_diag,
183 sparse_transpose,
184 split_2d,
185 stack_1d,
186 take_1d,
187 tile_2d,
188 transpose,
189 unique_labels,
190 where_condition,
191 ArrayStatistics,
192};
193pub use cloud_storage::{
194 CloudProvider, CloudStorageClient, CloudStorageConfig, CloudStorageFactory, CloudStorageUtils,
195 MockCloudStorageClient, ObjectMetadata, StorageMetrics, SyncMode, SyncResult,
196};
197pub use config::{
198 ArgParser, Config, ConfigBuilder, ConfigSource, ConfigValidator, ConfigValue, HotReloadConfig,
199};
200pub use cross_validation::{
201 CVSplit, GroupKFold, LeaveOneGroupOut, StratifiedKFold, TimeSeriesSplit,
202};
203pub use data_generation::*;
204pub use data_pipeline::{
205 DataPipeline, MLPipelineBuilder, PipelineContext, PipelineMetrics, PipelineMonitor,
206 PipelineResult, PipelineStep, StepMetrics, TransformStep,
207};
208pub use data_structures::{
209 AtomicCounter, BinarySearchTree, BlockMatrix, ConcurrentHashMap, ConcurrentQueue,
210 ConcurrentRingBuffer, Graph, RingBuffer, TreeNode, TreeStatistics, Trie, TrieStatistics,
211 WeightedGraph, WorkQueue,
212};
213pub use database::{
214 Connection, DatabaseConfig, DatabaseError, DatabasePool, Query, QueryBuilder, QueryResult,
215 ResultSet, Transaction,
216};
217pub use debug::{
218 ArrayDebugger, DebugContext, DiagnosticTools, MemoryDebugger, PerformanceDebugger,
219 TestDataGenerator, TimingStats,
220};
221pub use distributed_computing::{
222 ClusterConfig, ClusterNode, ClusterStats, DistributedCluster, DistributedError, DistributedJob,
223 FaultDetector, JobExecution, JobPriority, JobScheduler, JobStatus, JobType, LoadBalancer,
224 LoadMetrics, NodeCapabilities, NodeStatus, ResourceRequirements, ResourceUsage,
225 SchedulingStrategy,
226};
227pub use ensemble::{
228 AggregationStrategy, BaggingPredictor, Bootstrap, OOBScoreEstimator, StackingHelper,
229};
230pub use environment::{
231 CacheInfo, CpuInfo, EnvironmentInfo, FeatureChecker, HardwareDetector, MemoryInfo, OSInfo,
232 PerformanceCharacteristics, RuntimeInfo,
233};
234pub use error_handling::{
235 create_error, create_error_at, EnhancedError, ErrorAggregator, ErrorContext, ErrorRecovery,
236 ErrorReporter, ErrorStatistics, ErrorSummary, RecoveryStrategy,
237};
238pub use external_integration::{
239 ArrayTransfer, CFunctionSignature, CParameter, CType, FFIUtils, PyArrayBuffer, PythonInterop,
240 PythonParameter, PythonValue, WasmBuildConfig, WasmOptimization, WasmParameter, WasmType,
241 WasmUtils,
242};
243pub use feature_engineering::{
244 BinningStrategy, FeatureBinner, InteractionFeatures, PolynomialFeatures,
245};
246pub use file_io::{
247 CompressionUtils, EfficientFileReader, EfficientFileWriter, FormatConverter,
248 SerializationUtils, StreamProcessor,
249};
250pub use gpu_computing::{
251 ActivationFunction, GpuArrayOps, GpuDevice, GpuError, GpuKernelExecution, GpuKernelInfo,
252 GpuMemoryAllocation, GpuProfiler, GpuUtils, KernelStats, MemoryStats, MemoryTransferStats,
253};
254pub use linear_algebra::{
255 ConditionNumber, EigenDecomposition, MatrixDecomposition, MatrixNorms, MatrixRank, MatrixUtils,
256 Pseudoinverse,
257};
258pub use logging::{
259 flush_global_logger, get_global_logger, set_global_level, ConsoleOutput, DistributedLogger,
260 FileOutput, JsonFormatter, LogAnalysis, LogAnalyzer, LogEntry, LogLevel, LogStats, Logger,
261 LoggerConfig, OperationStats, PerformanceLogger, TextFormatter,
262};
263pub use math_utils::{
264 constants, NumericalPrecision, OverflowDetection, RobustArrayOps, SpecialFunctions,
265};
266pub use memory::{
267 AllocationStats, GcHelper, LeakDetector, MemoryAlignment, MemoryMappedFile, MemoryMonitor,
268 MemoryPool, MemoryValidator, SafeBuffer, SafePtr, SafeVec, StackGuard, TrackingAllocator,
269};
270pub use metrics::{
271 bhattacharyya_distance, braycurtis_distance, canberra_distance, chebyshev_distance,
272 cosine_distance, cosine_distance_f32, cosine_similarity, cosine_similarity_f32,
273 euclidean_distance, euclidean_distance_f32, hamming_distance, hamming_distance_normalized,
274 hellinger_distance, jaccard_distance, jaccard_similarity, jensen_shannon_divergence,
275 kl_divergence, mahalanobis_distance, manhattan_distance, manhattan_distance_f32,
276 minkowski_distance, wasserstein_1d,
277};
278pub use multiclass::*;
279pub use optimization::{
280 ConstraintHandler, ConstraintViolation, ConvergenceCriteria, ConvergenceStatus,
281 GradientComputer, GradientMethod, LineSearch, LineSearchMethod, OptimizationHistory,
282};
283pub use parallel::{ParallelIterator, ParallelReducer, ThreadPool, WorkStealingQueue};
284pub use performance::{
285 BaselineMetrics, Benchmark, BenchmarkResult, MemoryTracker, ProfileReport, ProfileResult,
286 Profiler, RegressionDetector, RegressionResult, Timer, TimerSummary,
287};
288pub use performance_regression::{
289 PerformanceRegressionTester, RegressionTestResult, RegressionThresholds,
290};
291pub use preprocessing::{DataCleaner, DataQualityAssessor, FeatureScaler, OutlierDetector};
292pub use probabilistic::{
293 BloomFilter, BloomFilterStats, CountMinSketch, CountMinSketchStats, HyperLogLog,
294 HyperLogLogStats, LSHash, LSHashStats, MinHash, MinHashStats,
295};
296pub use profile_guided_optimization::{
297 BranchProfile, BranchType, CacheStatistics, DependencyChain, FunctionProfile,
298 ImplementationEffort, InstructionMix, LoopProfile, MemoryAccessPattern, MemoryAccessType,
299 OptimizationApplication, OptimizationOpportunity, OptimizationRecommendation,
300 OptimizationReport, OptimizationRule, OptimizationType, PerformanceProfile, PerformanceTargets,
301 ProfileError, ProfileGuidedOptimizer, ProfileSummary, ProfilerConfig, RiskLevel, StridePattern,
302 TriggerCondition,
303};
304pub use r_integration::{
305 RDataFrame, RError, RIntegration, RMatrix, RPackageManager, RScriptBuilder,
306 RStatisticalFunctions, RValue,
307};
308pub use random::{
309 bootstrap_indices, get_rng, importance_sampling, k_fold_indices, random_indices,
310 random_permutation, random_weights, reservoir_sampling, set_random_state, shuffle_indices,
311 stratified_split_indices, train_test_split_indices, weighted_sampling_without_replacement,
312 DistributionSampler, ThreadSafeRng,
313};
314pub use simd::{
315 SimdCapabilities, SimdDistanceOps, SimdF32Ops, SimdF64Ops, SimdMatrixOps, SimdStatsOps,
316};
317pub use spatial::{
318 geographic::{CoordinateSystem, GeoBounds, GeoPoint, GeoUtils, Hemisphere},
319 KdTree, OctTree, Point, QuadTree, RTree, Rectangle, SpatialHash, SpatialHashStats,
320};
321pub use statistical::{
322 ConfidenceInterval, ConfidenceIntervals, CorrelationAnalysis, DistributionFitting,
323 StatisticalTests, TestResult,
324};
325pub use text_processing::{
326 RegexUtils, StringSimilarity, TextAnalysis, TextNormalizer, TextParser, UnicodeUtils,
327};
328pub use time_series::{
329 AggregationMethod, LagFeatureGenerator, SlidingWindow, TemporalAggregator, TemporalIndex,
330 TimeSeries, TimeSeriesPoint, TimeZoneUtils, Timestamp, TrendDirection, WindowStats,
331};
332pub use type_safety::{
333 DataState, ExactSize, Kilograms, MatrixMul, Measurement, Meters, MinSize, ModelState,
334 NonNegative, Normalized, One, Pixels, Positive, Seconds, Three, Trained, Two, TypedArray,
335 Untrained, Unvalidated, Validated, ValidatedArray, Zero, D1, D2, D3,
336};
337pub use validation::*;
338pub use visualization::{
339 AxisConfig, BoxPlotData, ChartData, Color, HeatmapData, HistogramData, LinePlotData,
340 MLVisualizationUtils, PlotData, PlotLayout, PlotMargin, PlotSummary, PlotUtils, Point2D,
341 ScatterPlotData,
342};
343
344#[derive(thiserror::Error, Debug, Clone)]
346pub enum UtilsError {
347 #[error("Shape mismatch: expected {expected:?}, got {actual:?}")]
348 ShapeMismatch {
349 expected: Vec<usize>,
350 actual: Vec<usize>,
351 },
352 #[error("Invalid parameter: {0}")]
353 InvalidParameter(String),
354 #[error("Empty input")]
355 EmptyInput,
356 #[error("Invalid random state: {0}")]
357 InvalidRandomState(String),
358 #[error("Insufficient data: need at least {min} samples, got {actual}")]
359 InsufficientData { min: usize, actual: usize },
360}
361
362impl From<UtilsError> for sklears_core::error::SklearsError {
363 fn from(err: UtilsError) -> Self {
364 sklears_core::error::SklearsError::InvalidInput(err.to_string())
365 }
366}
367
368impl From<serde_json::Error> for UtilsError {
369 fn from(err: serde_json::Error) -> Self {
370 UtilsError::InvalidParameter(format!("JSON serialization error: {err}"))
371 }
372}
373
374pub type UtilsResult<T> = std::result::Result<T, UtilsError>;