scirs2-signal 0.1.0-rc.2

Signal processing module for SciRS2 (scirs2-signal)
Documentation
// Advanced Enhanced Lomb-Scargle Validation Example
//
// This example demonstrates the comprehensive Advanced validation suite for
// Lomb-Scargle periodogram, including SciPy comparison, SIMD validation,
// memory profiling, and statistical validation.

use scirs2_signal::{generate_advanced_lombscargle_report, run_advanced_lombscargle_validation};

#[allow(dead_code)]
fn main() -> Result<(), Box<dyn std::error::Error>> {
    println!("šŸš€ Advanced Enhanced Lomb-Scargle Validation Suite");
    println!("==================================================");

    println!("\nšŸ”¬ Initializing comprehensive validation...");
    println!("This validation includes:");
    println!("  šŸ“Š Comprehensive accuracy testing");
    println!("  šŸ SciPy reference comparison");
    println!("  ⚔ Complete SIMD validation");
    println!("  šŸ’¾ Memory profiling");
    println!("  šŸ“ˆ Statistical validation");
    println!("  ā±ļø Performance regression detection");

    // Run the comprehensive Advanced validation
    println!("\nšŸš€ Running Advanced validation suite...");
    let validation_result = run_advanced_lombscargle_validation()?;

    // Generate and display the comprehensive report
    let report = generate_advanced_lombscargle_report(&validation_result);
    println!("\n{}", report);

    // Detailed analysis with colored output
    println!("\nšŸŽÆ **EXECUTIVE SUMMARY**");
    println!("========================");

    let quality_icon = if validation_result.quality_score >= 95.0 {
        "🌟"
    } else if validation_result.quality_score >= 85.0 {
        "⭐"
    } else if validation_result.quality_score >= 75.0 {
        "āš ļø"
    } else {
        "āŒ"
    };

    println!(
        "{} Overall Quality Score: {:.1}/100",
        quality_icon, validation_result.quality_score
    );

    // Accuracy Analysis
    println!("\nšŸ“Š **ACCURACY ANALYSIS**");
    println!("-------------------------");

    let freq_accuracy = validation_result
        .accuracy_validation
        .frequency_accuracy
        .single_tone_accuracy;
    let freq_icon = if freq_accuracy < 0.01 {
        "āœ…"
    } else if freq_accuracy < 0.05 {
        "āš ļø"
    } else {
        "āŒ"
    };
    println!(
        "{} Frequency Estimation: {:.4} relative error",
        freq_icon, freq_accuracy
    );

    let power_accuracy = validation_result
        .accuracy_validation
        .power_accuracy
        .amplitude_linearity;
    let power_icon = if power_accuracy > 0.95 {
        "āœ…"
    } else if power_accuracy > 0.9 {
        "āš ļø"
    } else {
        "āŒ"
    };
    println!(
        "{} Power Estimation: {:.3} linearity",
        power_icon, power_accuracy
    );

    let phase_coherence = validation_result
        .accuracy_validation
        .phase_coherence
        .phase_preservation;
    let phase_icon = if phase_coherence > 0.95 {
        "āœ…"
    } else if phase_coherence > 0.9 {
        "āš ļø"
    } else {
        "āŒ"
    };
    println!(
        "{} Phase Coherence: {:.3} preservation",
        phase_icon, phase_coherence
    );

    // SciPy Comparison Analysis
    println!("\nšŸ **SCIPY COMPATIBILITY**");
    println!("---------------------------");

    let scipy_corr = validation_result.scipy_comparison.correlation;
    let scipy_icon = if scipy_corr > 0.99 {
        "āœ…"
    } else if scipy_corr > 0.95 {
        "āš ļø"
    } else {
        "āŒ"
    };
    println!("{} Correlation: {:.4}", scipy_icon, scipy_corr);

    let max_error = validation_result.scipy_comparison.max_relative_error;
    let error_icon = if max_error < 0.001 {
        "āœ…"
    } else if max_error < 0.01 {
        "āš ļø"
    } else {
        "āŒ"
    };
    println!("{} Max Relative Error: {:.2e}", error_icon, max_error);

    let mean_error = validation_result.scipy_comparison.mean_relative_error;
    let mean_icon = if mean_error < 0.0001 {
        "āœ…"
    } else if mean_error < 0.001 {
        "āš ļø"
    } else {
        "āŒ"
    };
    println!("{} Mean Relative Error: {:.2e}", mean_icon, mean_error);

    // SIMD Performance Analysis
    println!("\n⚔ **SIMD OPTIMIZATION**");
    println!("-----------------------");

    let simd_speedup = validation_result.simd_validation.performance_improvement;
    let speedup_icon = if simd_speedup > 2.0 {
        "šŸš€"
    } else if simd_speedup > 1.5 {
        "⚔"
    } else if simd_speedup > 1.1 {
        "āš ļø"
    } else {
        "āŒ"
    };
    println!(
        "{} Performance Improvement: {:.1}x",
        speedup_icon, simd_speedup
    );

    let simd_accuracy = validation_result
        .simd_validation
        .accuracy_comparison
        .correlation_coefficient;
    let simd_acc_icon = if simd_accuracy > 0.9999 {
        "āœ…"
    } else if simd_accuracy > 0.999 {
        "āš ļø"
    } else {
        "āŒ"
    };
    println!(
        "{} SIMD Accuracy: {:.6} correlation",
        simd_acc_icon, simd_accuracy
    );

    let platform_util = validation_result
        .simd_validation
        .platform_utilization
        .vector_width_utilization;
    let util_icon = if platform_util > 0.8 {
        "āœ…"
    } else if platform_util > 0.6 {
        "āš ļø"
    } else {
        "āŒ"
    };
    println!(
        "{} Platform Utilization: {:.1}%",
        util_icon,
        platform_util * 100.0
    );

    // Memory Analysis
    println!("\nšŸ’¾ **MEMORY EFFICIENCY**");
    println!("------------------------");

    let peak_memory = validation_result.memory_profiling.peak_memory_mb;
    let memory_icon = if peak_memory < 20.0 {
        "āœ…"
    } else if peak_memory < 50.0 {
        "āš ļø"
    } else {
        "āŒ"
    };
    println!("{} Peak Memory: {:.1} MB", memory_icon, peak_memory);

    let cache_hit = validation_result
        .memory_profiling
        .efficiency_metrics
        .cache_hit_ratio;
    let cache_icon = if cache_hit > 0.9 {
        "āœ…"
    } else if cache_hit > 0.8 {
        "āš ļø"
    } else {
        "āŒ"
    };
    println!("{} Cache Hit Ratio: {:.1}%", cache_icon, cache_hit * 100.0);

    let memory_per_sample = validation_result
        .memory_profiling
        .efficiency_metrics
        .memory_per_sample;
    let mps_icon = if memory_per_sample < 0.1 {
        "āœ…"
    } else if memory_per_sample < 0.5 {
        "āš ļø"
    } else {
        "āŒ"
    };
    println!(
        "{} Memory per Sample: {:.3} KB",
        mps_icon,
        memory_per_sample * 1024.0
    );

    // Statistical Validation
    println!("\nšŸ“ˆ **STATISTICAL VALIDATION**");
    println!("-----------------------------");

    let fap_accuracy = validation_result
        .statistical_validation
        .false_alarm_validation
        .fap_accuracy;
    let fap_icon = if fap_accuracy > 0.95 {
        "āœ…"
    } else if fap_accuracy > 0.9 {
        "āš ļø"
    } else {
        "āŒ"
    };
    println!(
        "{} False Alarm Probability: {:.1}% accuracy",
        fap_icon,
        fap_accuracy * 100.0
    );

    let psd_comparison = validation_result
        .statistical_validation
        .psd_theoretical_comparison
        .white_noise_comparison;
    let psd_icon = if psd_comparison > 0.9 {
        "āœ…"
    } else if psd_comparison > 0.8 {
        "āš ļø"
    } else {
        "āŒ"
    };
    println!("{} PSD Theoretical Match: {:.3}", psd_icon, psd_comparison);

    // Performance Regression
    println!("\nā±ļø **PERFORMANCE REGRESSION**");
    println!("-----------------------------");

    if validation_result.performance_regression.regression_detected {
        println!("āŒ Performance regression detected!");
        println!(
            "   šŸ“‰ Time trend: {:.2}%",
            validation_result
                .performance_regression
                .trend_analysis
                .time_trend_slope
                * 100.0
        );
        println!(
            "   šŸ“‰ Memory trend: {:.2}%",
            validation_result
                .performance_regression
                .trend_analysis
                .memory_trend_slope
                * 100.0
        );
    } else {
        println!("āœ… No performance regression detected");
        println!(
            "   šŸ“ˆ Time improvement: {:.1}%",
            validation_result
                .performance_regression
                .trend_analysis
                .time_trend_slope
                * 100.0
        );
        println!(
            "   šŸ“ˆ Memory improvement: {:.1}%",
            validation_result
                .performance_regression
                .trend_analysis
                .memory_trend_slope
                * 100.0
        );
    }

    // Critical Issues Summary
    if !validation_result.issues.is_empty() {
        println!("\n🚨 **CRITICAL ISSUES REQUIRING ATTENTION**");
        println!("==========================================");
        for (i, issue) in validation_result.issues.iter().enumerate() {
            println!("{}. āŒ {}", i + 1, issue);
        }
    } else {
        println!("\nāœ… **NO CRITICAL ISSUES DETECTED**");
        println!("==================================");
        println!("Implementation passes all critical validation checks!");
    }

    // Recommendations Summary
    if !validation_result.recommendations.is_empty() {
        println!("\nšŸ’” **OPTIMIZATION OPPORTUNITIES**");
        println!("=================================");
        for (i, recommendation) in validation_result.recommendations.iter().enumerate() {
            println!("{}. šŸ”§ {}", i + 1, recommendation);
        }
    }

    // Final Assessment
    println!("\nšŸŽÆ **FINAL ASSESSMENT**");
    println!("=======================");

    match validation_result.quality_score as u32 {
        95..=100 => {
            println!("🌟 **EXCEPTIONAL**: This implementation exceeds industry standards!");
            println!("   Ready for production use in demanding applications.");
        }
        85..=94 => {
            println!("⭐ **EXCELLENT**: High-quality implementation with minor optimization opportunities.");
            println!("   Suitable for most production applications.");
        }
        75..=84 => {
            println!("āš ļø **GOOD**: Functional implementation with room for improvement.");
            println!("   Consider addressing recommendations before production use.");
        }
        0..=74 => {
            println!("āŒ **NEEDS WORK**: Significant issues require attention.");
            println!("   Please address critical issues before production deployment.");
        }
        _ => unreachable!(),
    }

    println!("\nšŸ Advanced validation complete!");
    println!("   šŸ“‹ Full report generated above");
    println!(
        "   šŸ“Š Quality score: {:.1}/100",
        validation_result.quality_score
    );
    println!(
        "   šŸ” {} tests completed",
        5 + validation_result
            .statistical_validation
            .false_alarm_validation
            .confidence_level_validation
            .len()
    );

    Ok(())
}