83template <ComputeData InputType = std::vector<Kakshya::DataVariant>, ComputeData OutputType = InputType>
102 [[nodiscard]] std::string
get_name()
const override
104 return get_extractor_name();
112 if (name ==
"scope") {
113 if (
auto* scope = std::any_cast<ExtractionScope>(&value)) {
118 set_extraction_parameter(name, std::move(value));
121 [[nodiscard]] std::any
get_parameter(
const std::string& name)
const override
123 if (name ==
"scope") {
126 return get_extraction_parameter(name);
131 auto params = get_all_extraction_parameters();
132 params[
"scope"] = m_scope;
144 auto result = operation_function(wrapped_input);
156 auto original_scope = m_scope;
158 auto result = extract_data(data);
159 m_scope = original_scope;
170 std::vector<OutputType> results;
171 results.reserve(inputs.size());
173 for (
const auto& input : inputs) {
174 results.push_back(extract_data(input));
193 template <
typename T>
196 auto param = get_extraction_parameter(name);
197 if (param.has_value()) {
199 return std::any_cast<T>(param);
200 }
catch (
const std::bad_any_cast&) {
201 return default_value;
204 return default_value;
215 auto raw_result = extract_implementation(input);
216 return apply_scope_filtering(raw_result);
237 m_parameters[name] = std::move(value);
242 auto it = m_parameters.find(name);
243 return (it != m_parameters.end()) ? it->second : std::any {};
268 case ExtractionScope::FULL_DATA:
271 case ExtractionScope::TARGETED_REGIONS:
272 return filter_to_target_regions(raw_output);
274 case ExtractionScope::FILTERED_CONTENT:
275 return apply_content_filtering(raw_output);
277 case ExtractionScope::SAMPLED_DATA:
278 return apply_data_sampling(raw_output);
293 auto result = raw_output;
294 result.template set_metadata<bool>(
"region_filtered",
true);
306 auto result = raw_output;
307 result.template set_metadata<bool>(
"content_filtered",
true);
319 auto result = raw_output;
320 result.template set_metadata<bool>(
"sampled",
true);
330template <ComputeData OutputType = Kakshya::DataVariant>
334template <ComputeData OutputType = std::shared_ptr<Kakshya::SignalSourceContainer>>
338template <ComputeData OutputType = Kakshya::Region>
342template <ComputeData OutputType = Kakshya::RegionGroup>
346template <ComputeData OutputType = std::vector<Kakshya::RegionSegment>>
350template <ComputeData InputType = std::vector<Kakshya::DataVariant>>
354template <ComputeData InputType = std::vector<Kakshya::DataVariant>>
358template <ComputeData InputType = std::vector<Kakshya::DataVariant>>
Base interface for all computational operations in the processing pipeline.
@ CUSTOM
User-defined analysis types.
@ TRANSFORM
Mathematical transformations.
ExtractionType
Categories of extraction operations for discovery and organization.
@ RECURSIVE
Recursive/nested extraction.
@ DIRECT
Direct data type conversion/extraction.
@ FEATURE_GUIDED
Extract based on feature analysis.
@ PATTERN_BASED
Extract based on pattern recognition.
@ REGION_BASED
Extract from spatial/temporal regions.
ExtractionScope
Scope control for extraction operations.
@ SAMPLED_DATA
Extract sampled/downsampled data.
@ FULL_DATA
Extract all available data.
@ FILTERED_CONTENT
Extract content meeting criteria.
@ TARGETED_REGIONS
Extract only specific regions.
Input/Output container for computation pipeline data flow with structure preservation.