MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ create_pipeline_output()

template<ComputeData InputType = std::vector<Kakshya::DataVariant>, ComputeData OutputType = Eigen::VectorXd>
output_type MayaFlux::Yantra::EnergyAnalyzer< InputType, OutputType >::create_pipeline_output ( const input_type input,
const EnergyAnalysis analysis_result,
DataStructureInfo info 
)
inlineprivate

Create pipeline output from input and energy values.

Definition at line 520 of file EnergyAnalyzer.hpp.

521 {
522 std::vector<std::vector<double>> channel_energies;
523 channel_energies.reserve(analysis_result.channels.size());
524
525 for (const auto& ch : analysis_result.channels) {
526 channel_energies.push_back(ch.energy_values);
527 }
528
529 output_type output = this->convert_result(channel_energies, info);
530
531 output.metadata = input.metadata;
532
533 output.metadata["source_analyzer"] = "EnergyAnalyzer";
534 output.metadata["energy_method"] = method_to_string(analysis_result.method_used);
535 output.metadata["window_size"] = analysis_result.window_size;
536 output.metadata["hop_size"] = analysis_result.hop_size;
537 output.metadata["num_channels"] = analysis_result.channels.size();
538
539 if (!analysis_result.channels.empty()) {
540 std::vector<double> channel_means, channel_maxs, channel_mins, channel_variances;
541 std::vector<size_t> channel_window_counts;
542
543 for (const auto& ch : analysis_result.channels) {
544 channel_means.push_back(ch.mean_energy);
545 channel_maxs.push_back(ch.max_energy);
546 channel_mins.push_back(ch.min_energy);
547 channel_variances.push_back(ch.variance);
548 channel_window_counts.push_back(ch.energy_values.size());
549 }
550
551 output.metadata["mean_energy_per_channel"] = channel_means;
552 output.metadata["max_energy_per_channel"] = channel_maxs;
553 output.metadata["min_energy_per_channel"] = channel_mins;
554 output.metadata["variance_per_channel"] = channel_variances;
555 output.metadata["window_count_per_channel"] = channel_window_counts;
556 }
557
558 return output;
559 }
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.
static std::string method_to_string(EnergyMethod method)
Convert energy method enum to string.

References MayaFlux::Yantra::EnergyAnalysis::channels, MayaFlux::Yantra::EnergyAnalysis::hop_size, MayaFlux::Yantra::Datum< T >::metadata, MayaFlux::Yantra::EnergyAnalysis::method_used, and MayaFlux::Yantra::EnergyAnalysis::window_size.