83template <ComputeData InputType = std::vector<Kakshya::DataVariant>, ComputeData OutputType = InputType>
102 [[nodiscard]] std::string
get_name()
const override
104 return get_extractor_name();
109 return OperationType::EXTRACTOR;
117 if (name ==
"scope") {
118 if (
auto result = safe_any_cast<ExtractionScope>(value)) {
119 m_scope = *result.value;
123 set_extraction_parameter(name, std::move(value));
126 [[nodiscard]] std::any
get_parameter(
const std::string& name)
const override
128 if (name ==
"scope") {
131 return get_extraction_parameter(name);
136 auto params = get_all_extraction_parameters();
137 params[
"scope"] = m_scope;
148 auto result = operation_function(data);
154 return this->extract_data(
input_type { data });
165 auto original_scope = m_scope;
167 auto result = extract_data(data);
168 m_scope = original_scope;
174 return this->extract_with_scope(
input_type { data }, scope);
182 std::vector<OutputType>
extract_batch(
const std::vector<input_type>& inputs)
184 std::vector<OutputType> results;
185 results.reserve(inputs.size());
187 for (
const auto& input : inputs) {
188 results.push_back(extract_data(input));
212 template <
typename T>
215 return safe_any_cast_or_default<T>(get_extraction_parameter(name), default_value);
226 auto raw_result = extract_implementation(input);
227 return apply_scope_filtering(raw_result);
248 m_parameters[name] = std::move(value);
253 auto it = m_parameters.find(name);
254 return (it != m_parameters.end()) ? it->second : std::any {};
279 case ExtractionScope::FULL_DATA:
282 case ExtractionScope::TARGETED_REGIONS:
283 return filter_to_target_regions(raw_output);
285 case ExtractionScope::FILTERED_CONTENT:
286 return apply_content_filtering(raw_output);
288 case ExtractionScope::SAMPLED_DATA:
289 return apply_data_sampling(raw_output);
304 auto result = raw_output;
305 result.template set_metadata<bool>(
"region_filtered",
true);
317 auto result = raw_output;
318 result.template set_metadata<bool>(
"content_filtered",
true);
330 auto result = raw_output;
331 result.template set_metadata<bool>(
"sampled",
true);
341template <ComputeData OutputType = Kakshya::DataVariant>
345template <ComputeData OutputType = std::shared_ptr<Kakshya::SignalSourceContainer>>
349template <ComputeData OutputType = Kakshya::Region>
353template <ComputeData OutputType = Kakshya::RegionGroup>
357template <ComputeData OutputType = std::vector<Kakshya::RegionSegment>>
361template <ComputeData InputType = std::vector<Kakshya::DataVariant>>
365template <ComputeData InputType = std::vector<Kakshya::DataVariant>>
369template <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.
OperationType
Operation categories for organization and discovery.
std::vector< Datum< T > > as_io_batch(const std::vector< T > &inputs)
Convert a vector of raw values into a vector of Datum wrappers.
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.