Create pipeline output for operation chaining.
621 {
622 std::vector<std::vector<double>> channel_stats;
623 channel_stats.reserve(analysis_result.channel_statistics.size());
624 for (const auto& ch : analysis_result.channel_statistics) {
625 channel_stats.push_back(ch.statistical_values);
626 }
627
629
630 output.metadata = input.metadata;
631
632 output.metadata["source_analyzer"] = "StatisticalAnalyzer";
633 output.metadata[
"statistical_method"] =
method_to_string(analysis_result.method_used);
634 output.metadata["window_size"] = analysis_result.window_size;
635 output.metadata["hop_size"] = analysis_result.hop_size;
636 output.metadata["num_channels"] = analysis_result.channel_statistics.size();
637
638 if (!analysis_result.channel_statistics.empty()) {
639 std::vector<double> channel_means, channel_maxs, channel_mins, channel_variances, channel_stddevs, channel_skewness, channel_kurtosis, channel_medians;
640 std::vector<size_t> channel_window_counts;
641
642 for (const auto& ch : analysis_result.channel_statistics) {
643 channel_means.push_back(ch.mean_stat);
644 channel_maxs.push_back(ch.max_stat);
645 channel_mins.push_back(ch.min_stat);
646 channel_variances.push_back(ch.stat_variance);
647 channel_stddevs.push_back(ch.stat_std_dev);
648 channel_skewness.push_back(ch.skewness);
649 channel_kurtosis.push_back(ch.kurtosis);
650 channel_medians.push_back(ch.median);
651 channel_window_counts.push_back(ch.statistical_values.size());
652 }
653
654 output.metadata["mean_per_channel"] = channel_means;
655 output.metadata["max_per_channel"] = channel_maxs;
656 output.metadata["min_per_channel"] = channel_mins;
657 output.metadata["variance_per_channel"] = channel_variances;
658 output.metadata["stddev_per_channel"] = channel_stddevs;
659 output.metadata["skewness_per_channel"] = channel_skewness;
660 output.metadata["kurtosis_per_channel"] = channel_kurtosis;
661 output.metadata["median_per_channel"] = channel_medians;
662 output.metadata["window_count_per_channel"] = channel_window_counts;
663 }
664
665 return output;
666 }
output_type convert_result(std::vector< std::vector< double > > &result_data, DataStructureInfo &metadata)
Convert processed double data back to OutputType using metadata and optional callback.
Datum< OutputType > output_type
static std::string method_to_string(StatisticalMethod method)
Convert statistical method enum to string.