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

◆ infer_from_eigen()

template<typename EigenType >
static std::pair< std::vector< Kakshya::DataDimension >, Kakshya::DataModality > MayaFlux::Yantra::infer_from_eigen ( const EigenType &  eigen_data)
static

Infer structure from Eigen matrix/vector.

Definition at line 62 of file StructureIntrospection.hpp.

63{
64 std::vector<Kakshya::DataDimension> dimensions;
65 Kakshya::DataModality modality {};
66
67 using Scalar = typename EigenType::Scalar;
68
69 if constexpr (EigenType::IsVectorAtCompileTime) {
70 if constexpr (MayaFlux::ComplexData<Scalar>) {
71 dimensions.emplace_back(Kakshya::DataDimension::frequency(eigen_data.size()));
72 modality = Kakshya::DataModality::SPECTRAL_2D;
73 } else if constexpr (MayaFlux::DecimalData<Scalar>) {
74 dimensions.emplace_back(Kakshya::DataDimension::time(eigen_data.size()));
75 modality = Kakshya::DataModality::AUDIO_1D;
76 } else {
77 dimensions.emplace_back(Kakshya::DataDimension("vector_data", eigen_data.size(), 1,
78 Kakshya::DataDimension::Role::CUSTOM));
79 modality = Kakshya::DataModality::TENSOR_ND;
80 }
81 } else {
82 auto rows = eigen_data.rows();
83 auto cols = eigen_data.cols();
84
85 if constexpr (MayaFlux::ComplexData<Scalar>) {
86 dimensions.emplace_back(Kakshya::DataDimension::time(rows, "time_frames"));
87 dimensions.emplace_back(Kakshya::DataDimension::frequency(cols, "frequency_bins"));
88 modality = Kakshya::DataModality::SPECTRAL_2D;
89 } else if constexpr (MayaFlux::DecimalData<Scalar>) {
90 dimensions.emplace_back(Kakshya::DataDimension::time(rows, "samples"));
91 if (cols == 1) {
92 modality = Kakshya::DataModality::AUDIO_1D;
93 } else if (cols <= 16) {
94 dimensions.emplace_back(Kakshya::DataDimension::channel(cols));
95 modality = Kakshya::DataModality::AUDIO_MULTICHANNEL;
96 } else {
97 dimensions.emplace_back(Kakshya::DataDimension::frequency(cols, "features"));
98 modality = Kakshya::DataModality::SPECTRAL_2D;
99 }
100 } else if constexpr (MayaFlux::IntegerData<Scalar>) {
101 dimensions.emplace_back(Kakshya::DataDimension::spatial(rows, 'y'));
102 dimensions.emplace_back(Kakshya::DataDimension::spatial(cols, 'x'));
103 modality = Kakshya::DataModality::IMAGE_2D;
104 } else {
105 dimensions.emplace_back(Kakshya::DataDimension("matrix_rows", rows, 1,
106 Kakshya::DataDimension::Role::CUSTOM));
107 dimensions.emplace_back(Kakshya::DataDimension("matrix_cols", cols, 1,
108 Kakshya::DataDimension::Role::CUSTOM));
109 modality = Kakshya::DataModality::TENSOR_ND;
110 }
111 }
112
113 return std::make_pair(std::move(dimensions), modality);
114}
uint32_t rows
DataModality
Data modality types for cross-modal analysis.
Definition NDData.hpp:132

References MayaFlux::Kakshya::AUDIO_1D, MayaFlux::Kakshya::AUDIO_MULTICHANNEL, MayaFlux::Kakshya::DataDimension::channel(), MayaFlux::Kakshya::DataDimension::CUSTOM, MayaFlux::Kakshya::DataDimension::frequency(), MayaFlux::Kakshya::IMAGE_2D, rows, MayaFlux::Kakshya::DataDimension::spatial(), MayaFlux::Kakshya::SPECTRAL_2D, MayaFlux::Kakshya::TENSOR_ND, and MayaFlux::Kakshya::DataDimension::time().

Referenced by infer_structure().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: