scirs2_series/features/config.rs
1//! Configuration structures for time series feature extraction
2//!
3//! This module contains all configuration structures used to customize
4//! feature extraction algorithms and their parameters.
5
6/// Configuration for turning points detection and analysis
7#[derive(Debug, Clone)]
8pub struct TurningPointsConfig {
9 /// Minimum relative threshold for detecting turning points
10 pub min_turning_point_threshold: f64,
11 /// Window size for local extrema detection
12 pub extrema_window_size: usize,
13 /// Threshold for major vs minor trend reversals
14 pub major_reversal_threshold: f64,
15 /// Enable detection of advanced patterns (double peaks, head-shoulders, etc.)
16 pub detect_advanced_patterns: bool,
17 /// Smoothing window sizes for multi-scale analysis
18 pub smoothing_windows: Vec<usize>,
19 /// Calculate temporal autocorrelation of turning points
20 pub calculate_temporal_patterns: bool,
21 /// Maximum lag for turning point autocorrelation
22 pub max_autocorr_lag: usize,
23 /// Enable clustering analysis of turning points
24 pub analyze_clustering: bool,
25 /// Minimum sequence length for momentum persistence
26 pub min_sequence_length: usize,
27 /// Enable multi-scale turning point analysis
28 pub multiscale_analysis: bool,
29}
30
31impl Default for TurningPointsConfig {
32 fn default() -> Self {
33 Self {
34 min_turning_point_threshold: 0.01, // 1% relative threshold
35 extrema_window_size: 3, // 3-point window for local extrema
36 major_reversal_threshold: 0.05, // 5% threshold for major reversals
37 detect_advanced_patterns: true,
38 smoothing_windows: vec![3, 5, 7, 10, 15], // Multiple smoothing scales
39 calculate_temporal_patterns: true,
40 max_autocorr_lag: 20,
41 analyze_clustering: true,
42 min_sequence_length: 3,
43 multiscale_analysis: true,
44 }
45 }
46}
47
48/// Configuration for advanced spectral analysis feature calculation
49#[derive(Debug, Clone)]
50pub struct SpectralAnalysisConfig {
51 // Power Spectral Density estimation parameters
52 /// Calculate Welch's method PSD
53 pub calculate_welch_psd: bool,
54 /// Calculate periodogram PSD
55 pub calculate_periodogram_psd: bool,
56 /// Calculate autoregressive PSD
57 pub calculate_ar_psd: bool,
58 /// Window length for Welch's method (as fraction of signal length)
59 pub welch_window_length_factor: f64,
60 /// Overlap for Welch's method (as fraction of window length)
61 pub welch_overlap_factor: f64,
62 /// Order for autoregressive PSD estimation
63 pub ar_order: usize,
64
65 // Spectral peak detection parameters
66 /// Enable spectral peak detection
67 pub detect_spectral_peaks: bool,
68 /// Minimum peak height (as fraction of max power)
69 pub min_peak_height: f64,
70 /// Minimum peak distance (in frequency bins)
71 pub min_peak_distance: usize,
72 /// Peak prominence threshold
73 pub peak_prominence_threshold: f64,
74 /// Maximum number of peaks to detect
75 pub max_peaks: usize,
76
77 // Frequency band analysis parameters
78 /// Enable standard EEG frequency band analysis
79 pub calculate_eeg_bands: bool,
80 /// Enable custom frequency band analysis
81 pub calculate_custom_bands: bool,
82 /// Custom frequency band boundaries (in Hz or normalized units)
83 pub custom_band_boundaries: Vec<f64>,
84 /// Enable relative band power calculation
85 pub calculate_relative_band_powers: bool,
86 /// Enable band power ratio calculation
87 pub calculate_band_ratios: bool,
88
89 // Spectral entropy and information measures
90 /// Calculate spectral Shannon entropy
91 pub calculate_spectral_shannon_entropy: bool,
92 /// Calculate spectral Rényi entropy
93 pub calculate_spectral_renyi_entropy: bool,
94 /// Rényi entropy alpha parameter
95 pub renyi_alpha: f64,
96 /// Calculate spectral permutation entropy
97 pub calculate_spectral_permutation_entropy: bool,
98 /// Permutation order for spectral permutation entropy
99 pub spectral_permutation_order: usize,
100 /// Calculate spectral sample entropy
101 pub calculate_spectral_sample_entropy: bool,
102 /// Sample entropy tolerance for spectral domain
103 pub spectral_sample_entropy_tolerance: f64,
104 /// Calculate spectral complexity measures
105 pub calculate_spectral_complexity: bool,
106
107 // Spectral shape and distribution measures
108 /// Calculate spectral flatness (Wiener entropy)
109 pub calculate_spectral_flatness: bool,
110}
111
112impl Default for SpectralAnalysisConfig {
113 fn default() -> Self {
114 Self {
115 // Power Spectral Density estimation parameters
116 calculate_welch_psd: true,
117 calculate_periodogram_psd: true,
118 calculate_ar_psd: false, // More expensive
119 welch_window_length_factor: 0.25, // 25% of signal length
120 welch_overlap_factor: 0.5, // 50% overlap
121 ar_order: 10,
122
123 // Spectral peak detection parameters
124 detect_spectral_peaks: true,
125 min_peak_height: 0.1, // 10% of max power
126 min_peak_distance: 2,
127 peak_prominence_threshold: 0.05,
128 max_peaks: 20,
129
130 // Frequency band analysis parameters
131 calculate_eeg_bands: true,
132 calculate_custom_bands: false,
133 custom_band_boundaries: vec![], // Empty by default
134 calculate_relative_band_powers: true,
135 calculate_band_ratios: true,
136
137 // Spectral entropy and information measures
138 calculate_spectral_shannon_entropy: true,
139 calculate_spectral_renyi_entropy: false,
140 renyi_alpha: 2.0,
141 calculate_spectral_permutation_entropy: false,
142 spectral_permutation_order: 3,
143 calculate_spectral_sample_entropy: false,
144 spectral_sample_entropy_tolerance: 0.2,
145 calculate_spectral_complexity: true,
146
147 // Spectral shape and distribution measures
148 calculate_spectral_flatness: true,
149 }
150 }
151}
152
153/// Configuration for enhanced periodogram analysis
154#[derive(Debug, Clone)]
155pub struct EnhancedPeriodogramConfig {
156 // Advanced Periodogram Methods
157 /// Enable Bartlett's method (averaged periodograms)
158 pub enable_bartlett_method: bool,
159 /// Number of segments for Bartlett's method
160 pub bartlett_num_segments: usize,
161 /// Enable enhanced Welch's method
162 pub enable_enhanced_welch: bool,
163 /// Enable multitaper periodogram using Thomson's method
164 pub enable_multitaper: bool,
165 /// Number of tapers for multitaper method
166 pub multitaper_num_tapers: usize,
167 /// Time-bandwidth product for multitaper
168 pub multitaper_bandwidth: f64,
169 /// Enable Blackman-Tukey periodogram
170 pub enable_blackman_tukey: bool,
171 /// Maximum lag for Blackman-Tukey method (fraction of signal length)
172 pub blackman_tukey_max_lag_factor: f64,
173 /// Enable Capon's minimum variance method
174 pub enable_capon_method: bool,
175 /// Enable MUSIC (Multiple Signal Classification) method
176 pub enable_music_method: bool,
177 /// Number of signal sources for MUSIC method
178 pub music_num_sources: usize,
179 /// Enable enhanced autoregressive periodogram
180 pub enable_enhanced_ar: bool,
181 /// Enhanced AR model order
182 pub enhanced_ar_order: usize,
183
184 // Window Analysis and Optimization
185 /// Enable window analysis and optimization
186 pub enable_window_analysis: bool,
187 /// Primary window type to use
188 pub primary_window_type: String,
189 /// Enable automatic window selection
190 pub enable_auto_window_selection: bool,
191 /// Window selection criteria
192 pub window_selection_criteria: String,
193 /// Calculate window effectiveness metrics
194 pub calculate_window_effectiveness: bool,
195 /// Calculate spectral leakage measures
196 pub calculate_spectral_leakage: bool,
197 /// Leakage threshold for warnings
198 pub spectral_leakage_threshold: f64,
199
200 // Cross-Periodogram Analysis
201 /// Enable cross-periodogram analysis
202 pub enable_cross_periodogram: bool,
203 /// Enable coherence function calculation
204 pub enable_coherence_analysis: bool,
205 /// Coherence confidence level
206 pub coherence_confidence_level: f64,
207 /// Enable phase spectrum analysis
208 pub enable_phase_spectrum: bool,
209 /// Phase unwrapping method
210 pub phase_unwrapping_method: String,
211 /// Calculate cross-correlation from periodogram
212 pub calculate_periodogram_xcorr: bool,
213 /// Maximum lag for cross-correlation analysis
214 pub xcorr_max_lag: usize,
215
216 // Statistical Analysis and Confidence
217 /// Enable confidence interval calculation
218 pub enable_confidence_intervals: bool,
219 /// Confidence level for intervals (e.g., 0.95)
220 pub confidence_level: f64,
221 /// Enable statistical significance testing
222 pub enable_significance_testing: bool,
223 /// Significance testing method
224 pub significance_test_method: String,
225 /// Enable goodness-of-fit testing
226 pub enable_goodness_of_fit: bool,
227 /// Null hypothesis spectral model
228 pub null_hypothesis_model: String,
229 /// Enable variance and bias estimation
230 pub enable_variance_bias_estimation: bool,
231
232 // Bias Correction and Variance Reduction
233 /// Enable bias correction methods
234 pub enable_bias_correction: bool,
235 /// Enable variance reduction methods
236 pub enable_variance_reduction: bool,
237 /// Enable smoothing methods
238 pub enable_smoothing: bool,
239 /// Enable zero padding for frequency resolution enhancement
240 pub enable_zero_padding: bool,
241}
242
243impl Default for EnhancedPeriodogramConfig {
244 fn default() -> Self {
245 Self {
246 // Advanced Periodogram Methods
247 enable_bartlett_method: true,
248 bartlett_num_segments: 8,
249 enable_enhanced_welch: true,
250 enable_multitaper: false, // More expensive
251 multitaper_num_tapers: 4,
252 multitaper_bandwidth: 4.0,
253 enable_blackman_tukey: false, // More expensive
254 blackman_tukey_max_lag_factor: 0.25,
255 enable_capon_method: false, // More expensive
256 enable_music_method: false, // Most expensive
257 music_num_sources: 1,
258 enable_enhanced_ar: true,
259 enhanced_ar_order: 10,
260
261 // Window Analysis and Optimization
262 enable_window_analysis: true,
263 primary_window_type: "Hanning".to_string(),
264 enable_auto_window_selection: false,
265 window_selection_criteria: "MinSidelobes".to_string(),
266 calculate_window_effectiveness: true,
267 calculate_spectral_leakage: true,
268 spectral_leakage_threshold: 0.1,
269
270 // Cross-Periodogram Analysis
271 enable_cross_periodogram: false,
272 enable_coherence_analysis: false,
273 coherence_confidence_level: 0.95,
274 enable_phase_spectrum: false,
275 phase_unwrapping_method: "Quality".to_string(),
276 calculate_periodogram_xcorr: false,
277 xcorr_max_lag: 50,
278
279 // Statistical Analysis and Confidence
280 enable_confidence_intervals: false,
281 confidence_level: 0.95,
282 enable_significance_testing: false,
283 significance_test_method: "WhiteNoise".to_string(),
284 enable_goodness_of_fit: false,
285 null_hypothesis_model: "WhiteNoise".to_string(),
286 enable_variance_bias_estimation: false,
287
288 // Bias Correction and Variance Reduction
289 enable_bias_correction: false,
290 enable_variance_reduction: false,
291 enable_smoothing: false,
292 enable_zero_padding: false,
293 }
294 }
295}
296
297/// Configuration for entropy-based feature calculation
298#[derive(Debug, Clone)]
299pub struct EntropyConfig {
300 /// Calculate classical entropy measures (Shannon, Rényi, Tsallis)
301 pub calculate_classical_entropy: bool,
302 /// Calculate differential entropy measures (ApEn, SampEn, PermEn)
303 pub calculate_differential_entropy: bool,
304 /// Calculate multiscale entropy measures
305 pub calculate_multiscale_entropy: bool,
306 /// Calculate conditional and joint entropy measures
307 pub calculate_conditional_entropy: bool,
308 /// Calculate spectral entropy measures
309 pub calculate_spectral_entropy: bool,
310 /// Calculate time-frequency entropy measures
311 pub calculate_timefrequency_entropy: bool,
312 /// Calculate symbolic entropy measures
313 pub calculate_symbolic_entropy: bool,
314 /// Calculate distribution-based entropy measures
315 pub calculate_distribution_entropy: bool,
316 /// Calculate complexity and regularity measures
317 pub calculate_complexity_measures: bool,
318 /// Calculate fractal and scaling entropy measures
319 pub calculate_fractal_entropy: bool,
320 /// Calculate cross-scale entropy measures
321 pub calculate_crossscale_entropy: bool,
322
323 // Parameters for entropy calculations
324 /// Number of bins for discretization (for classical entropy)
325 pub n_bins: usize,
326 /// Embedding dimension for approximate entropy
327 pub embedding_dimension: usize,
328 /// Tolerance for approximate entropy (as fraction of std dev)
329 pub tolerance_fraction: f64,
330 /// Order for permutation entropy
331 pub permutation_order: usize,
332 /// Maximum lag for conditional entropy
333 pub max_lag: usize,
334 /// Number of scales for multiscale entropy
335 pub n_scales: usize,
336 /// Rényi entropy parameter α
337 pub renyi_alpha: f64,
338 /// Tsallis entropy parameter q
339 pub tsallis_q: f64,
340 /// Number of symbols for symbolic encoding
341 pub n_symbols: usize,
342 /// Use fast approximations for expensive calculations
343 pub use_fast_approximations: bool,
344 /// Window size for instantaneous entropy
345 pub instantaneous_window_size: usize,
346 /// Overlap for instantaneous entropy windows
347 pub instantaneous_overlap: f64,
348}
349
350impl Default for EntropyConfig {
351 fn default() -> Self {
352 Self {
353 calculate_classical_entropy: true,
354 calculate_differential_entropy: true,
355 calculate_multiscale_entropy: true,
356 calculate_conditional_entropy: true,
357 calculate_spectral_entropy: true,
358 calculate_timefrequency_entropy: false, // Expensive
359 calculate_symbolic_entropy: true,
360 calculate_distribution_entropy: true,
361 calculate_complexity_measures: true,
362 calculate_fractal_entropy: false, // Expensive
363 calculate_crossscale_entropy: false, // Expensive
364
365 n_bins: 10,
366 embedding_dimension: 2,
367 tolerance_fraction: 0.2,
368 permutation_order: 3,
369 max_lag: 5,
370 n_scales: 5,
371 renyi_alpha: 2.0,
372 tsallis_q: 2.0,
373 n_symbols: 3,
374 use_fast_approximations: false,
375 instantaneous_window_size: 50,
376 instantaneous_overlap: 0.5,
377 }
378 }
379}
380
381/// Configuration for wavelet analysis
382#[derive(Debug, Clone)]
383pub struct WaveletConfig {
384 /// Wavelet family to use
385 pub family: WaveletFamily,
386 /// Number of decomposition levels
387 pub levels: usize,
388 /// Whether to calculate CWT features
389 pub calculate_cwt: bool,
390 /// CWT scale range (min, max)
391 pub cwt_scales: Option<(f64, f64)>,
392 /// Number of CWT scales
393 pub cwt_scale_count: usize,
394 /// Whether to calculate denoising-based features
395 pub calculate_denoising: bool,
396 /// Denoising threshold method
397 pub denoising_method: DenoisingMethod,
398}
399
400impl Default for WaveletConfig {
401 fn default() -> Self {
402 Self {
403 family: WaveletFamily::Daubechies(4),
404 levels: 5,
405 calculate_cwt: false,
406 cwt_scales: None,
407 cwt_scale_count: 32,
408 calculate_denoising: false,
409 denoising_method: DenoisingMethod::Soft,
410 }
411 }
412}
413
414/// Configuration for multi-window analysis
415#[derive(Debug, Clone)]
416pub struct WindowConfig {
417 /// Small window size (high temporal resolution)
418 pub small_window_size: usize,
419 /// Medium window size (balanced resolution)
420 pub medium_window_size: usize,
421 /// Large window size (low temporal resolution)
422 pub large_window_size: usize,
423 /// Whether to calculate cross-window correlations
424 pub calculate_cross_correlations: bool,
425 /// Whether to perform change detection
426 pub detect_changes: bool,
427 /// Whether to calculate Bollinger bands
428 pub calculate_bollinger_bands: bool,
429 /// Whether to calculate MACD features
430 pub calculate_macd: bool,
431 /// Whether to calculate RSI
432 pub calculate_rsi: bool,
433 /// RSI period
434 pub rsi_period: usize,
435 /// MACD fast period
436 pub macd_fast_period: usize,
437 /// MACD slow period
438 pub macd_slow_period: usize,
439 /// MACD signal period
440 pub macd_signal_period: usize,
441 /// Bollinger band standard deviations
442 pub bollinger_std_dev: f64,
443 /// EWMA smoothing factor
444 pub ewma_alpha: f64,
445 /// Change detection threshold
446 pub change_threshold: f64,
447 /// Change detection threshold (alias for compatibility)
448 pub change_detection_threshold: f64,
449 /// Bollinger band window size
450 pub bollinger_window: usize,
451 /// Bollinger band multiplier (alias for std_dev)
452 pub bollinger_multiplier: f64,
453 /// Normalization window size
454 pub normalization_window: usize,
455}
456
457impl Default for WindowConfig {
458 fn default() -> Self {
459 Self {
460 small_window_size: 5,
461 medium_window_size: 20,
462 large_window_size: 50,
463 calculate_cross_correlations: true,
464 detect_changes: true,
465 calculate_bollinger_bands: true,
466 calculate_macd: true,
467 calculate_rsi: true,
468 rsi_period: 14,
469 macd_fast_period: 12,
470 macd_slow_period: 26,
471 macd_signal_period: 9,
472 bollinger_std_dev: 2.0,
473 ewma_alpha: 0.1,
474 change_threshold: 2.0,
475 change_detection_threshold: 2.0,
476 bollinger_window: 20,
477 bollinger_multiplier: 2.0,
478 normalization_window: 20,
479 }
480 }
481}
482
483/// Configuration for expanded statistical analysis
484#[derive(Debug, Clone)]
485pub struct ExpandedStatisticalConfig {
486 /// Enable higher-order moments calculation (5th and 6th moments)
487 pub calculate_higher_order_moments: bool,
488 /// Enable robust statistics (trimmed means, winsorized mean, MAD)
489 pub calculate_robust_statistics: bool,
490 /// Enable percentile-based measures (P5, P10, P90, P95, P99)
491 pub calculate_percentiles: bool,
492 /// Enable distribution characteristics (L-moments, skewness variants)
493 pub calculate_distribution_characteristics: bool,
494 /// Enable tail statistics (outlier counts, tail ratios)
495 pub calculate_tail_statistics: bool,
496 /// Enable central tendency variations (harmonic, geometric, quadratic means)
497 pub calculate_central_tendency_variations: bool,
498 /// Enable advanced variability measures
499 pub calculate_variability_measures: bool,
500 /// Enable normality tests (Jarque-Bera, Anderson-Darling, etc.)
501 pub calculate_normality_tests: bool,
502 /// Enable advanced shape measures (biweight, Qn/Sn estimators)
503 pub calculate_advancedshape_measures: bool,
504 /// Enable count-based statistics (zero crossings, local extrema)
505 pub calculate_count_statistics: bool,
506 /// Enable concentration measures (Herfindahl, Shannon diversity)
507 pub calculate_concentration_measures: bool,
508 /// Trimming fraction for trimmed means (default: 0.1 for 10% trimming)
509 pub trimming_fraction_10: f64,
510 /// Trimming fraction for trimmed means (default: 0.2 for 20% trimming)
511 pub trimming_fraction_20: f64,
512 /// Winsorizing fraction (default: 0.05 for 5% winsorizing)
513 pub winsorizing_fraction: f64,
514 /// Number of bins for mode approximation (default: sqrt(n))
515 pub mode_bins: Option<usize>,
516 /// Confidence level for normality tests (default: 0.05)
517 pub normality_alpha: f64,
518 /// Whether to use fast approximations for computationally expensive measures
519 pub use_fast_approximations: bool,
520}
521
522impl Default for ExpandedStatisticalConfig {
523 fn default() -> Self {
524 Self {
525 // Enable all categories by default for comprehensive analysis
526 calculate_higher_order_moments: true,
527 calculate_robust_statistics: true,
528 calculate_percentiles: true,
529 calculate_distribution_characteristics: true,
530 calculate_tail_statistics: true,
531 calculate_central_tendency_variations: true,
532 calculate_variability_measures: true,
533 calculate_normality_tests: true,
534 calculate_advancedshape_measures: true,
535 calculate_count_statistics: true,
536 calculate_concentration_measures: true,
537
538 // Default parameter values
539 trimming_fraction_10: 0.1,
540 trimming_fraction_20: 0.2,
541 winsorizing_fraction: 0.05,
542 mode_bins: None, // Use sqrt(n) by default
543 normality_alpha: 0.05,
544 use_fast_approximations: false,
545 }
546 }
547}
548
549/// Configuration for Empirical Mode Decomposition (EMD) analysis
550#[derive(Debug, Clone)]
551pub struct EMDConfig {
552 /// Maximum number of IMFs to extract
553 pub max_imfs: usize,
554 /// Stopping criterion for sifting (standard deviation)
555 pub sifting_tolerance: f64,
556 /// Maximum number of sifting iterations per IMF
557 pub max_sifting_iterations: usize,
558 /// Whether to calculate Hilbert spectral features
559 pub calculate_hilbert_spectrum: bool,
560 /// Whether to calculate instantaneous features
561 pub calculate_instantaneous: bool,
562 /// Whether to calculate EMD-based entropies
563 pub calculate_emd_entropies: bool,
564 /// Interpolation method for envelope generation
565 pub interpolation_method: InterpolationMethod,
566 /// Edge effect handling method
567 pub edge_method: EdgeMethod,
568}
569
570impl Default for EMDConfig {
571 fn default() -> Self {
572 Self {
573 max_imfs: 10,
574 sifting_tolerance: 0.2,
575 max_sifting_iterations: 100,
576 calculate_hilbert_spectrum: true,
577 calculate_instantaneous: true,
578 calculate_emd_entropies: false,
579 interpolation_method: InterpolationMethod::CubicSpline,
580 edge_method: EdgeMethod::Mirror,
581 }
582 }
583}
584
585/// Wavelet family types
586#[derive(Debug, Clone, Copy, PartialEq, Eq)]
587pub enum WaveletFamily {
588 /// Daubechies wavelets (db1-db10)
589 Daubechies(usize),
590 /// Haar wavelet (simplest case of Daubechies)
591 Haar,
592 /// Biorthogonal wavelets
593 Biorthogonal(usize, usize),
594 /// Coiflets wavelets
595 Coiflets(usize),
596 /// Morlet wavelet (for CWT)
597 Morlet,
598 /// Mexican hat wavelet (Ricker)
599 MexicanHat,
600}
601
602/// Denoising threshold methods
603#[derive(Debug, Clone, Copy, PartialEq, Eq)]
604pub enum DenoisingMethod {
605 /// Hard thresholding
606 Hard,
607 /// Soft thresholding
608 Soft,
609 /// Sure thresholding
610 Sure,
611 /// Minimax thresholding
612 Minimax,
613}
614
615/// Window types for spectral analysis
616#[derive(Debug, Clone, Copy, PartialEq)]
617pub enum WindowType {
618 /// Rectangular window
619 Rectangular,
620 /// Hanning window
621 Hanning,
622 /// Hamming window
623 Hamming,
624 /// Blackman window
625 Blackman,
626 /// Kaiser window
627 Kaiser(f64), // Beta parameter
628}
629
630/// Interpolation methods for EMD envelope generation
631#[derive(Debug, Clone, Copy, PartialEq, Eq)]
632pub enum InterpolationMethod {
633 /// Cubic spline interpolation
634 CubicSpline,
635 /// Linear interpolation
636 Linear,
637 /// Piecewise cubic Hermite interpolation
638 Pchip,
639}
640
641/// Edge effect handling methods for EMD
642#[derive(Debug, Clone, Copy, PartialEq, Eq)]
643pub enum EdgeMethod {
644 /// Mirror reflection at boundaries
645 Mirror,
646 /// Zero padding at boundaries
647 ZeroPadding,
648 /// Extend with constant values
649 Constant,
650 /// Polynomial extrapolation
651 Polynomial,
652}
653
654/// Configuration for general feature extraction
655#[derive(Debug, Clone, Default)]
656pub struct FeatureExtractionOptions {
657 /// Turning points configuration
658 pub turning_points: TurningPointsConfig,
659 /// Enhanced periodogram configuration
660 pub enhanced_periodogram: EnhancedPeriodogramConfig,
661 /// Entropy features configuration
662 pub entropy: EntropyConfig,
663 /// Spectral analysis configuration
664 pub spectral_analysis: SpectralAnalysisConfig,
665 /// Window-based features configuration
666 pub window: WindowConfig,
667 /// Expanded statistical features configuration
668 pub expanded_statistical: ExpandedStatisticalConfig,
669 /// Wavelet features configuration
670 pub wavelet: WaveletConfig,
671 /// EMD features configuration
672 pub emd: EMDConfig,
673}