13#if !defined(ULTRA_COLUMNS_INFO_H)
14#define ULTRA_COLUMNS_INFO_H
18#include "utility/misc.h"
58enum class task_t {classification, regression, unsupervised};
74 std::ranges::forward_range<R>
75 && std::ranges::sized_range<R>
77 && (std::same_as<std::ranges::range_value_t<R>,
value_t>
78 || std::same_as<std::ranges::range_value_t<R>, std::string>);
91 std::ranges::forward_range<R>
92 && std::ranges::sized_range<R>
117 std::string_view =
"",
119 const std::set<value_t> & = {});
121 [[nodiscard]]
const std::string &
name()
const noexcept;
122 void name(
const std::string &);
127 [[nodiscard]]
const std::set<value_t> &
states()
const noexcept;
133 const columns_info *owner_ {
nullptr};
137 std::set<value_t> states_;
141 using const_iterator = std::vector<column_info>::const_iterator;
142 using iterator = std::vector<column_info>::iterator;
143 using size_type = std::size_t;
147 columns_info() =
default;
148 columns_info(
const columns_info &);
149 columns_info(
const std::vector<std::pair<std::string, domain_t>> &);
151 columns_info &
operator=(
const columns_info &);
166 [[nodiscard]] size_type
size() const noexcept;
167 [[nodiscard]]
bool empty() const noexcept;
170 [[nodiscard]] const_iterator begin() const noexcept;
171 [[nodiscard]] iterator begin() noexcept;
172 [[nodiscard]] const_iterator end() const noexcept;
173 [[nodiscard]] iterator end() noexcept;
174 [[nodiscard]] const_iterator cbegin() const noexcept;
175 [[nodiscard]] const_iterator cend() const noexcept;
194 [[nodiscard]]
bool is_valid() const;
199 void settle_task_t();
202 typing typing_ {typing::weak};
204 task_t task_ {task_t::regression};
Information about a single column of the dataset.
Definition columns_info.h:114
domain_t domain() const noexcept
Definition columns_info.cc:62
symbol::category_t category() const
Definition columns_info.cc:109
const std::string & name() const noexcept
Definition columns_info.cc:42
column_info(const columns_info &, std::string_view="", domain_t=d_void, const std::set< value_t > &={})
Definition columns_info.cc:28
void add_state(value_t)
Definition columns_info.cc:95
const std::set< value_t > & states() const noexcept
Definition columns_info.cc:85
std::set< symbol::category_t > used_categories() const
Definition columns_info.cc:432
const column_info & operator[](size_type) const
Definition columns_info.cc:213
void push_front(const column_info &)
Definition columns_info.cc:364
void push_back(const column_info &)
Definition columns_info.cc:353
void pop_back()
Definition columns_info.cc:343
bool is_valid() const
Definition columns_info.cc:460
const column_info & front() const
Definition columns_info.cc:310
domain_t domain_of_category(symbol::category_t) const
Definition columns_info.cc:448
void data_typing(typing) noexcept
Definition columns_info.cc:256
task_t task() const noexcept
Definition columns_info.cc:148
columns_info & operator=(const columns_info &)
Definition columns_info.cc:189
const column_info & back() const
Definition columns_info.cc:326
size_type size() const noexcept
Definition columns_info.cc:264
void build(const R &, std::optional< std::size_t >)
Definition columns_info.h:185
unsigned category_t
Definition symbol.h:55
typing
Definition columns_info.h:49
task_t
Definition columns_info.h:58
Definition columns_info.h:90
Definition columns_info.h:73
std::variant< D_VOID, D_INT, D_DOUBLE, D_STRING, const D_NULLARY *, D_ADDRESS, const D_VARIABLE *, D_IVECTOR > value_t
Definition value.h:54
domain_t
Definition value.h:38