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

◆ analyze_implementation()

template<ComputeData InputType = std::vector<Kakshya::DataVariant>, ComputeData OutputType = Eigen::VectorXd>
output_type MayaFlux::Yantra::StatisticalAnalyzer< InputType, OutputType >::analyze_implementation ( const input_type &  input)
inlineoverrideprotectedvirtual

Core analysis implementation - creates analysis result AND pipeline output.

Parameters
inputInput data wrapped in Datum container
Returns
Pipeline output (data flow for chaining operations)

Implements MayaFlux::Yantra::UniversalAnalyzer< InputType, OutputType >.

Definition at line 398 of file StatisticalAnalyzer.hpp.

399 {
400 if constexpr (requires { input.data.empty(); }) {
401 if (input.data.empty()) {
402 error<std::runtime_error>(Journal::Component::Yantra, Journal::Context::ComputeMatrix, std::source_location::current(), "Input is empty");
403 }
404 } else if constexpr (std::is_same_v<InputType, Kakshya::RegionGroup>) {
405 if (input.data.regions.empty()) {
406 error<std::runtime_error>(Journal::Component::Yantra, Journal::Context::ComputeMatrix, std::source_location::current(), "Input is empty");
407 }
408 }
409 try {
410 auto [data_span, structure_info] = OperationHelper::extract_structured_double(
411 const_cast<input_type&>(input));
412
413 std::vector<std::span<const double>> channel_spans;
414 for (const auto& span : data_span)
415 channel_spans.emplace_back(span.data(), span.size());
416
417 std::vector<std::vector<double>> stat_values;
418 stat_values.reserve(channel_spans.size());
419 for (const auto& ch_span : channel_spans) {
420 stat_values.push_back(compute_statistical_values(ch_span, m_method));
421 }
422
423 StatisticalAnalysis analysis_result = create_analysis_result(
424 stat_values, channel_spans, structure_info);
425
426 this->store_current_analysis(analysis_result);
427 return create_pipeline_output(input, analysis_result, structure_info);
428 } catch (const std::exception& e) {
429 MF_ERROR(Journal::Component::Yantra, Journal::Context::ComputeMatrix, "Statistical analysis failed: {}", e.what());
430 output_type error_result;
431 error_result.metadata = input.metadata;
432 error_result.metadata["error"] = std::string("Analysis failed: ") + e.what();
433 return error_result;
434 }
435 }
#define MF_ERROR(comp, ctx,...)
Core::GlobalInputConfig input
Definition Config.cpp:42
bool size
static std::tuple< std::vector< std::span< double > >, DataStructureInfo > extract_structured_double(T &compute_data)
Extract structured double data from Datum container or direct ComputeData with automatic container ha...
StatisticalAnalysis create_analysis_result(const std::vector< std::vector< double > > &stat_values, std::vector< std::span< const double > > original_data, const auto &) const
Create comprehensive analysis result.
std::vector< double > compute_statistical_values(std::span< const double > data, StatisticalMethod method) const
Compute statistical values using span (zero-copy processing)
output_type create_pipeline_output(const input_type &input, const StatisticalAnalysis &analysis_result, DataStructureInfo &info)
Create pipeline output for operation chaining.
void store_current_analysis(AnalysisResultType &&result) const
@ ComputeMatrix
Compute operations (Yantra - algorithms, matrices, DSP)
@ Yantra
DSP algorithms, computational units, matrix operations, Grammar.
std::unordered_map< std::string, std::any > metadata
Associated metadata.
Definition DataIO.hpp:30

References MayaFlux::Yantra::StatisticalAnalyzer< InputType, OutputType >::compute_statistical_values(), MayaFlux::Journal::ComputeMatrix, MayaFlux::Yantra::StatisticalAnalyzer< InputType, OutputType >::create_analysis_result(), MayaFlux::Yantra::StatisticalAnalyzer< InputType, OutputType >::create_pipeline_output(), MayaFlux::Yantra::OperationHelper::extract_structured_double(), input, MayaFlux::Yantra::StatisticalAnalyzer< InputType, OutputType >::m_method, MayaFlux::Yantra::Datum< T >::metadata, MF_ERROR, MayaFlux::Yantra::UniversalAnalyzer< InputType, OutputType >::store_current_analysis(), and MayaFlux::Journal::Yantra.

+ Here is the call graph for this function: