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

◆ analyze_implementation()

Datum< Kakshya::RegionGroup > MayaFlux::Yantra::Granular::AttributeOp::analyze_implementation ( const Datum< Kakshya::RegionGroup > &  input)
overrideprotected

Definition at line 571 of file GranularWorkflow.cpp.

573{
574 if (input.data.regions.empty())
575 return input;
576
577 std::shared_ptr<Kakshya::SignalSourceContainer> container;
578
579 if (input.container && *input.container) {
580 container = *input.container;
581 } else {
582 auto param = this->get_parameter("container");
583 if (param.has_value()) {
584 container = safe_any_cast_or_default<std::shared_ptr<Kakshya::SignalSourceContainer>>(
585 param, nullptr);
586 }
587 }
588
589 if (!container) {
590 error<std::runtime_error>(
592 std::source_location::current(),
593 "AttributeOp: no container available via Datum or parameters");
594 }
595
596 const auto channel = this->template get_parameter_or_default<uint32_t>("channel", 0U);
597 const auto feature_key = this->template get_parameter_or_default<std::string>("feature_key", std::string("feature"));
598
599 ExecutionContext ctx;
600 for (const auto& [k, v] : this->get_all_analysis_parameters())
601 ctx.execution_metadata[k] = v;
602
603 Datum<Kakshya::RegionGroup> out { input.data, container };
604
605 for (auto& grain : out.data.regions) {
606 const double value = compute_grain_attribute(grain, container, channel, ctx);
607 grain.set_attribute(feature_key, value);
608 }
609
610 return out;
611}
uint32_t channel
double compute_grain_attribute(const Kakshya::Region &grain, const std::shared_ptr< Kakshya::SignalSourceContainer > &container, uint32_t channel, const ExecutionContext &ctx) const
Resolve and execute attribution for a single grain.
std::any get_parameter(const std::string &name) const override
Retrieves a parameter's current value.
virtual std::map< std::string, std::any > get_all_analysis_parameters() const
@ ComputeMatrix
Compute operations (Yantra - algorithms, matrices, DSP)
@ Yantra
DSP algorithms, computational units, matrix operations, Grammar.

References channel, compute_grain_attribute(), MayaFlux::Journal::ComputeMatrix, MayaFlux::Yantra::Datum< T >::container, MayaFlux::Yantra::Datum< T >::data, MayaFlux::Yantra::ExecutionContext::execution_metadata, MayaFlux::Yantra::UniversalAnalyzer< InputType, OutputType >::get_all_analysis_parameters(), MayaFlux::Yantra::UniversalAnalyzer< InputType, OutputType >::get_parameter(), and MayaFlux::Journal::Yantra.

+ Here is the call graph for this function: