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

◆ extract_scalar()

double MayaFlux::Yantra::Granular::AttributeOp::extract_scalar ( const std::any &  analysis_result,
AnalysisType  type,
const std::string &  qualifier 
)
staticprivate

Extract a named scalar from a typed analysis result.

Parameters
analysis_resultstd::any holding the concrete analysis struct.
typeAnalysis category used to select the correct cast path.
qualifierNames the specific scalar to extract.
Returns
Extracted double value.

Definition at line 422 of file GranularWorkflow.cpp.

426{
427 const std::string q = resolve_qualifier(type, qualifier);
428
429 if (type == AnalysisType::FEATURE) {
430 const auto& ea = safe_any_cast_or_throw<EnergyAnalysis>(analysis_result);
431 if (ea.channels.empty())
432 return 0.0;
433 const auto& ch = ea.channels[0];
434
435 if (q == "rms" || q == "mean")
436 return ch.mean_energy;
437 if (q == "peak" || q == "max")
438 return ch.max_energy;
439 if (q == "min")
440 return ch.min_energy;
441 if (q == "variance")
442 return ch.variance;
443 if (q == "dynamic_range")
444 return ch.max_energy - ch.min_energy;
445 if (q == "zero_crossing")
446 return ch.event_positions.empty() ? 0.0 : static_cast<double>(ch.event_positions.size());
447
448 return ch.mean_energy;
449 }
450
451 if (type == AnalysisType::STATISTICAL) {
452 const auto& sa = safe_any_cast_or_throw<StatisticalAnalysis>(analysis_result);
453 if (sa.channel_statistics.empty())
454 return 0.0;
455 const auto& ch = sa.channel_statistics[0];
456
457 if (q == "mean")
458 return ch.mean_stat;
459 if (q == "std_dev")
460 return ch.stat_std_dev;
461 if (q == "variance")
462 return ch.stat_variance;
463 if (q == "kurtosis")
464 return ch.kurtosis;
465 if (q == "skewness")
466 return ch.skewness;
467 if (q == "median")
468 return ch.median;
469 if (q == "max")
470 return ch.max_stat;
471 if (q == "min")
472 return ch.min_stat;
473
474 return ch.mean_stat;
475 }
476
477 return 0.0;
478}
double q
@ FEATURE
Feature extraction and characterization.
@ STATISTICAL
Mean, variance, distribution analysis.

References MayaFlux::Yantra::FEATURE, q, and MayaFlux::Yantra::STATISTICAL.