59 [[nodiscard]] std::vector<DataDimension::Role> get_expected_dimension_roles()
const;
90 [[nodiscard]]
size_t get_expected_variant_count(
const std::vector<DataDimension>& dimensions)
const;
100 [[nodiscard]]
static uint64_t get_variant_size(
const std::vector<DataDimension>& dimensions,
109 [[nodiscard]]
bool validate_dimensions(
const std::vector<DataDimension>& dimensions)
const;
117 [[nodiscard]]
size_t get_dimension_index_for_role(
const std::vector<DataDimension>& dimensions,
125 [[nodiscard]]
static uint64_t get_total_elements(
const std::vector<DataDimension>& dimensions);
133 [[nodiscard]]
static uint64_t get_samples_count(
const std::vector<DataDimension>& dimensions);
141 [[nodiscard]]
static uint64_t get_samples_count_per_channel(
const std::vector<DataDimension>& dimensions);
149 [[nodiscard]]
static uint64_t get_channel_count(
const std::vector<DataDimension>& dimensions);
157 [[nodiscard]]
static uint64_t get_pixels_count(
const std::vector<DataDimension>& dimensions);
165 [[nodiscard]]
static uint64_t get_height(
const std::vector<DataDimension>& dimensions);
173 [[nodiscard]]
static uint64_t get_width(
const std::vector<DataDimension>& dimensions);
181 [[nodiscard]]
static size_t get_frame_count(
const std::vector<DataDimension>& dimensions);
189 [[nodiscard]]
static size_t get_frame_size(
const std::vector<DataDimension>& dimensions);
275 [[nodiscard]]
virtual std::vector<DataVariant>
get_segments_data(
const std::vector<RegionSegment>& segments)
const = 0;
289 [[nodiscard]]
virtual std::span<const double>
get_frame(uint64_t frame_index)
const = 0;
297 virtual void get_frames(std::span<double> output, uint64_t start_frame, uint64_t num_frames)
const = 0;
304 [[nodiscard]]
virtual double get_value_at(
const std::vector<uint64_t>& coordinates)
const = 0;
311 virtual void set_value_at(
const std::vector<uint64_t>& coordinates,
double value) = 0;
virtual std::vector< DataVariant > get_region_group_data(const RegionGroup ®ions) const =0
Get data for multiple regions efficiently.
virtual void set_region_data(const Region ®ion, const std::vector< DataVariant > &data)=0
Set data for a specific region.
virtual void unload_region(const Region ®ion)=0
Unload a region from memory.
virtual void clear()=0
Clear all data in the container.
virtual const RegionGroup & get_region_group(const std::string &name) const =0
Get a region group by name.
virtual void set_value_at(const std::vector< uint64_t > &coordinates, double value)=0
Set a single value at the specified coordinates.
virtual std::span< const double > get_frame(uint64_t frame_index) const =0
Get a single frame of data efficiently.
virtual void add_region_group(const RegionGroup &group)=0
Add a named group of regions to the container.
virtual double get_value_at(const std::vector< uint64_t > &coordinates) const =0
Get a single value at the specified coordinates.
virtual const ContainerDataStructure & get_structure() const =0
virtual void get_frames(std::span< double > output, uint64_t start_frame, uint64_t num_frames) const =0
Get multiple frames efficiently.
virtual bool has_data() const =0
Check if the container currently holds any data.
virtual bool try_lock()=0
Attempt to acquire a lock without blocking.
virtual std::vector< DataDimension > get_dimensions() const =0
Get the dimensions describing the structure of the data.
virtual void set_memory_layout(MemoryLayout layout)=0
Set the memory layout for this container.
virtual ContainerDataStructure & get_structure()=0
Get the data structure defining this container's layout.
virtual void load_region(const Region ®ion)=0
Load a region into memory.
virtual void set_structure(ContainerDataStructure structure)=0
Set the data structure for this container.
virtual std::unordered_map< std::string, RegionGroup > get_all_region_groups() const =0
Get all region groups in the container.
virtual bool is_region_loaded(const Region ®ion) const =0
Check if a region is loaded in memory.
virtual void remove_region_group(const std::string &name)=0
Remove a region group by name.
virtual void unlock()=0
Release a previously acquired lock.
virtual ~NDDataContainer()=default
virtual void lock()=0
Acquire a lock for thread-safe access.
virtual const void * get_raw_data() const =0
Get a raw pointer to the underlying data storage.
virtual std::vector< DataVariant > get_segments_data(const std::vector< RegionSegment > &segments) const =0
Get data for multiple region segments efficiently.
virtual std::vector< DataVariant > get_region_data(const Region ®ion) const =0
Get data for a specific region.
virtual MemoryLayout get_memory_layout() const =0
Get the memory layout used by this container.
virtual uint64_t coordinates_to_linear_index(const std::vector< uint64_t > &coordinates) const =0
Convert coordinates to linear index based on current memory layout.
virtual uint64_t get_frame_size() const =0
Get the number of elements that constitute one "frame".
virtual uint64_t get_total_elements() const =0
Get the total number of elements in the container.
virtual uint64_t get_num_frames() const =0
Get the number of frames in the primary (temporal) dimension.
virtual std::vector< uint64_t > linear_index_to_coordinates(uint64_t linear_index) const =0
Convert linear index to coordinates based on current memory layout.
Abstract interface for N-dimensional data containers.
DataModality
Data modality types for cross-modal analysis.
MemoryLayout
Memory layout for multi-dimensional data.
OrganizationStrategy
Data organization strategy for multi-channel/multi-frame data.
std::vector< DataDimension > dimensions
size_t get_frame_size() const
uint64_t get_samples_count_per_channel() const
uint64_t get_channel_count() const
uint64_t get_pixels_count() const
uint64_t get_total_elements() const
std::optional< size_t > channel_dims
std::optional< size_t > time_dims
ContainerDataStructure()=default
uint64_t get_height() const
uint64_t get_samples_count() const
std::optional< size_t > width_dims
uint64_t get_variant_size() const
std::optional< size_t > height_dims
uint64_t get_width() const
size_t get_frame_count() const
std::optional< size_t > frequency_dims
Container structure for consistent dimension ordering.
Role
Semantic role of the dimension.
Organizes related signal regions into a categorized collection.
Represents a point or span in N-dimensional space.