29infer_from_region(
const Kakshya::Region& region,
const std::shared_ptr<Kakshya::SignalSourceContainer>& container =
nullptr);
35infer_from_region_group(
const Kakshya::RegionGroup& group,
const std::shared_ptr<Kakshya::SignalSourceContainer>& container =
nullptr);
41infer_from_segments(
const std::vector<Kakshya::RegionSegment>& segments,
const std::shared_ptr<Kakshya::SignalSourceContainer>& container =
nullptr);
46template <
typename EigenType>
50 std::vector<Kakshya::DataDimension> dimensions;
53 using Scalar =
typename EigenType::Scalar;
55 if constexpr (EigenType::IsVectorAtCompileTime) {
56 if constexpr (MayaFlux::ComplexData<Scalar>) {
59 }
else if constexpr (MayaFlux::DecimalData<Scalar>) {
68 auto rows = eigen_data.rows();
69 auto cols = eigen_data.cols();
71 if constexpr (MayaFlux::ComplexData<Scalar>) {
75 }
else if constexpr (MayaFlux::DecimalData<Scalar>) {
79 }
else if (cols <= 16) {
86 }
else if constexpr (MayaFlux::IntegerData<Scalar>) {
99 return std::make_pair(std::move(dimensions), modality);
111 if constexpr (
requires { data.size(); }) {
113 }
else if constexpr (
requires { std::size(data); }) {
114 size = std::size(data);
119 std::vector<Kakshya::DataDimension> dimensions;
131template <ComputeData T>
133infer_structure(
const T& data,
const std::shared_ptr<Kakshya::SignalSourceContainer>& container =
nullptr)
136 if constexpr (std::is_same_v<T, Kakshya::DataVariant>) {
138 }
else if constexpr (std::is_same_v<T, std::shared_ptr<Kakshya::SignalSourceContainer>>) {
140 }
else if constexpr (std::is_same_v<T, Kakshya::Region>) {
142 }
else if constexpr (std::is_same_v<T, Kakshya::RegionGroup>) {
144 }
else if constexpr (std::is_same_v<T, std::vector<Kakshya::RegionSegment>>) {
146 }
else if constexpr (std::is_base_of_v<Eigen::MatrixBase<T>, T>) {
std::variant< std::vector< double >, std::vector< float >, std::vector< uint8_t >, std::vector< uint16_t >, std::vector< uint32_t >, std::vector< std::complex< float > >, std::vector< std::complex< double > >, std::vector< glm::vec2 >, std::vector< glm::vec3 >, std::vector< glm::vec4 >, std::vector< glm::mat4 > > DataVariant
Multi-type data storage for different precision needs.
DataModality
Data modality types for cross-modal analysis.
@ AUDIO_MULTICHANNEL
Multi-channel audio.
@ SPECTRAL_2D
2D spectral data (time + frequency)
@ AUDIO_1D
1D audio signal
@ TENSOR_ND
N-dimensional tensor.
@ IMAGE_2D
2D image (grayscale or single channel)
std::pair< std::vector< Kakshya::DataDimension >, Kakshya::DataModality > infer_from_container(const std::shared_ptr< Kakshya::SignalSourceContainer > &container)
Infer structure from SignalSourceContainer.
static std::pair< std::vector< Kakshya::DataDimension >, Kakshya::DataModality > infer_from_eigen(const EigenType &eigen_data)
Infer structure from Eigen matrix/vector.
std::pair< std::vector< Kakshya::DataDimension >, Kakshya::DataModality > infer_from_data_variant(const Kakshya::DataVariant &data)
Infer structure from DataVariant.
std::pair< std::vector< Kakshya::DataDimension >, Kakshya::DataModality > infer_from_data_variant_vector(const std::vector< Kakshya::DataVariant > &data)
Infer structure from vector of DataVariants (NEW)
std::pair< std::vector< Kakshya::DataDimension >, Kakshya::DataModality > infer_from_region(const Kakshya::Region ®ion, const std::shared_ptr< Kakshya::SignalSourceContainer > &container)
Infer structure from Region (placeholder since regions are markers)
static std::pair< std::vector< Kakshya::DataDimension >, Kakshya::DataModality > infer_generic_structure(const T &data)
Generic structure inference for unknown types.
std::pair< std::vector< Kakshya::DataDimension >, Kakshya::DataModality > infer_from_region_group(const Kakshya::RegionGroup &group, const std::shared_ptr< Kakshya::SignalSourceContainer > &container)
Infer structure from RegionGroup.
static std::pair< std::vector< Kakshya::DataDimension >, Kakshya::DataModality > infer_structure(const T &data, const std::shared_ptr< Kakshya::SignalSourceContainer > &container=nullptr)
Infer dimensions and modality from any ComputeData type.
std::pair< std::vector< Kakshya::DataDimension >, Kakshya::DataModality > infer_from_segments(const std::vector< Kakshya::RegionSegment > &segments, const std::shared_ptr< Kakshya::SignalSourceContainer > &container)
Infer structure from RegionSegments.
@ CUSTOM
User-defined or application-specific.
static DataDimension spatial(uint64_t size, char axis, uint64_t stride=1, std::string name="spatial")
Convenience constructor for a spatial dimension.
static DataDimension frequency(uint64_t bins, std::string name="frequency")
Convenience constructor for a frequency dimension.
static DataDimension time(uint64_t samples, std::string name="time")
Convenience constructor for a temporal (time) dimension.
static DataDimension channel(uint64_t count, uint64_t stride=1)
Convenience constructor for a channel dimension.
Minimal dimension descriptor focusing on structure only.