143 std::optional<char>
axis = std::nullopt;
196template <ComputeData InputType = Kakshya::DataVariant, ComputeData OutputType = InputType>
224 [[nodiscard]] std::string
get_name()
const override
249 if (name ==
"strategy") {
250 auto strategy_result = safe_any_cast<TransformationStrategy>(value);
251 if (strategy_result) {
255 auto str_result = safe_any_cast<std::string>(value);
257 auto strategy_enum = Reflect::string_to_enum_case_insensitive<TransformationStrategy>(*str_result.value);
264 if (name ==
"quality") {
265 auto quality_result = safe_any_cast<TransformationQuality>(value);
266 if (quality_result) {
270 auto str_result = safe_any_cast<std::string>(value);
272 auto quality_enum = Reflect::string_to_enum_case_insensitive<TransformationQuality>(*str_result.value);
279 if (name ==
"scope") {
280 auto scope_result = safe_any_cast<TransformationScope>(value);
285 auto str_result = safe_any_cast<std::string>(value);
287 auto scope_enum = Reflect::string_to_enum_case_insensitive<TransformationScope>(*str_result.value);
305 [[nodiscard]] std::any
get_parameter(
const std::string& name)
const override
307 if (name ==
"strategy") {
310 if (name ==
"quality") {
313 if (name ==
"scope") {
449 template <ComputeData T>
453 auto val_result = safe_any_cast<T>(
a);
455 return func(*val_result);
548 return (it !=
m_parameters.end()) ? it->second : std::any {};
585 std::vector<double> parameters;
591 if (key.axis.has_value()) {
594 param = key.parameter_extractor(
input.data[key.channel]);
597 param = std::clamp(param, 0.0, 1.0);
599 parameters.push_back(param * key.intensity * key.weight);
601 parameters.push_back(0.0);
624 if (!
input.has_container()) {
654 result.
metadata[
"validation_failed"] =
true;
655 result.
metadata[
"fallback_reason"] =
"Input validation failed";
657 if constexpr (std::is_same_v<InputType, OutputType>) {
661 if (!
input.has_container()) {
662 result.
container = std::make_shared<Kakshya::SignalSourceContainer>();
683 if (channels.empty()) {
687 for (
const auto& channel : channels) {
688 if (channel.empty()) {
692 for (
double sample : channel) {
693 if (std::isnan(sample)) {
696 if (std::isinf(sample)) {
Core::GlobalInputConfig input
Base interface for all computational operations in the processing pipeline.
static std::span< double > extract_numeric_data(const T &compute_data)
extract numeric data from single-variant types
@ TEMPORAL
Time-based patterns, onset detection.
@ CUSTOM
User-defined analysis types.
@ SPATIAL
Multi-dimensional geometric analysis.
@ SPECTRAL
Spectral energy (FFT-based)
@ RECURSIVE
Recursive/nested extraction.
@ PATTERN_BASED
Extract based on pattern recognition.
@ CONVOLUTION
Convolution-based operations.
TransformationScope
Scope control for transformation operations.
@ SELECTIVE_BANDS
Transform specific frequency/spatial bands.
@ CONDITIONAL
Transform based on dynamic conditions.
@ FULL_DATA
Transform entire data set.
TransformationQuality
Quality vs performance trade-off control.
@ HIGH_QUALITY
High-quality transformation, may be slower.
@ DRAFT
Fast, low-quality transformation for previews.
@ ADAPTIVE
Quality adapts based on available computational resources.
@ STANDARD
Balanced quality/performance for real-time use.
@ REFERENCE
Maximum quality, computational cost is secondary.
OperationType
Operation categories for organization and discovery.
@ IN_PLACE
Sort data in-place (modifies input)
@ CROSS_MODAL
Sort one modality by features of another.
@ STANDARD
Traditional comparison-based sorting.
@ PARALLEL
Parallel with other operations.
TransformationType
Categories of transformation operations for discovery and organization.
@ GENERATIVE
AI/ML-driven or algorithmic generation-based transformations.
@ GRANULAR
Granular synthesis and micro-temporal transformations.
@ MATHEMATICAL
Mathematical transformations (polynomial mapping, matrix operations)
TransformationStrategy
Transformation execution strategies.
@ BUFFERED
Create transformed copy (preserves input)
@ LAZY
Lazy evaluation transformation (future: coroutines)
@ CHUNKED
Transform in chunks for efficient processing.
@ INCREMENTAL
Progressive transformation with intermediate results.
@ IN_PLACE
Transform data in-place (modifies input)
@ STREAMING
Stream-based transformation for large data.
@ FULL_DATA
Extract all available data.
@ TARGETED_REGIONS
Extract only specific regions.
T data
The actual computation data.
std::vector< Kakshya::DataDimension > dimensions
Data dimensional structure.
std::optional< std::shared_ptr< Kakshya::SignalSourceContainer > > container
Optional reference to container, required for regions.
Kakshya::DataModality modality
Data modality (audio, image, spectral, etc.)
std::unordered_map< std::string, std::any > metadata
Associated metadata.
Input/Output container for computation pipeline data flow with structure preservation.