309 {
310 try {
313
314 std::vector<std::span<const double>> channel_spans;
315 for (auto& span : data_span)
316 channel_spans.emplace_back(span.data(), span.
size());
317
318 for (const auto& channel_span : channel_spans) {
321 }
322 }
323
324 std::vector<std::vector<double>> energy_values;
325 energy_values.reserve(channel_spans.size());
326 for (const auto& channel_span : channel_spans) {
328 }
329
331 energy_values, channel_spans, structure_info);
332
334
336 } catch (const std::exception& e) {
339 error_result.
metadata = input.metadata;
340 error_result.metadata["error"] = std::string("Analysis failed: ") + e.what();
341 return error_result;
342 }
343 }
#define MF_ERROR(comp, ctx,...)
output_type create_pipeline_output(const input_type &input, const EnergyAnalysis &analysis_result, DataStructureInfo &info)
Create pipeline output from input and energy values.
Datum< OutputType > output_type
EnergyAnalysis create_analysis_result(const std::vector< std::vector< double > > &energy_values, std::vector< std::span< const double > > original_data, const DataStructureInfo &) const
Create comprehensive analysis result from energy computation.
Datum< InputType > input_type
std::vector< double > compute_energy_values(std::span< const double > data, EnergyMethod method) const
Compute energy values using span (zero-copy processing)
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...
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.