13#if !defined(ULTRA_DATAFRAME_H)
14#define ULTRA_DATAFRAME_H
21#include "utility/pocket_csv.h"
31namespace tinyxml2 {
class XMLDocument; }
43using raw_data = std::vector<record_t>;
62 [[nodiscard]]
bool operator==(
const example &)
const noexcept =
default;
82 using examples_t = std::vector<src::example>;
83 using value_type = examples_t::value_type;
86 dataframe() =
default;
87 explicit dataframe(std::istream &);
88 dataframe(std::istream &,
const params &);
89 explicit dataframe(
const std::filesystem::path &);
90 dataframe(
const std::filesystem::path &,
const params &);
91 template<DataframeMatrix R> dataframe(
const R &);
92 template<DataframeMatrix R> dataframe(
const R &,
params);
95 using iterator = examples_t::iterator;
96 using const_iterator = examples_t::const_iterator;
97 using difference_type = examples_t::difference_type;
99 [[nodiscard]] iterator
begin()
noexcept;
100 [[nodiscard]] const_iterator
begin()
const noexcept;
101 [[nodiscard]] iterator
end()
noexcept;
102 [[nodiscard]] const_iterator
end()
const noexcept;
105 [[nodiscard]]
const value_type &
front()
const;
106 [[nodiscard]] value_type &
front();
110 iterator
erase(iterator, iterator);
112 template<std::input_iterator InputIt> iterator
insert(const_iterator,
114 void swap(dataframe &);
117 std::size_t read(
const std::filesystem::path &);
118 std::size_t read(
const std::filesystem::path &,
const params &);
119 std::size_t read(std::istream &);
120 std::size_t read(std::istream &,
params);
121 template<DataframeMatrix R> std::size_t read(
const R &);
122 template<DataframeMatrix R> std::size_t read(
const R &,
params);
123 [[nodiscard]]
bool operator!()
const noexcept;
126 bool set_schema(
const std::vector<std::pair<std::string, domain_t>> &);
129 [[nodiscard]] std::size_t
size()
const noexcept;
130 [[nodiscard]]
bool empty()
const noexcept;
133 [[nodiscard]]
unsigned variables()
const;
139 [[nodiscard]]
bool is_valid() const;
145 template<DataframeRow R>
bool read_record(R, std::optional<std::size_t>,
148 template<std::ranges::range R>
149 [[nodiscard]]
example to_example(
const R &)
const;
153 std::size_t read_csv(
const std::filesystem::path &,
const params &);
154 std::size_t read_csv(std::istream &);
155 std::size_t read_csv(std::istream &, params);
157 std::size_t read_xrff(
const std::filesystem::path &,
const params &);
158 std::size_t read_xrff(std::istream &, params);
159 std::size_t read_xrff(tinyxml2::XMLDocument &,
const params &);
164 std::map<std::string, class_t> classes_map_ {};
167 examples_t dataset_ {};
183 return lexical_cast<T>(e.
output);
188 enum index : std::size_t {front = 0,
189 back = std::numeric_limits<std::size_t>::max() };
200 pocket_csv::parser::filter_hook_t
filter {
nullptr};
208 {
dialect.has_header = pocket_csv::dialect::HAS_HEADER;
return *
this; }
209 params &no_header() noexcept
210 {
dialect.has_header = pocket_csv::dialect::NO_HEADER;
return *
this; }
212 params &output(std::size_t o) {
output_index = o;
return *
this; }
213 params &no_output() noexcept {
output_index = std::nullopt;
return *
this; }
215 params &strong_data_typing() noexcept
217 params &weak_data_typing() noexcept
221std::ostream &operator<<(std::ostream &,
const dataframe &);
242template<std::input_iterator InputIt>
244 InputIt first, InputIt last)
246 return dataset_.insert(pos, first, last);
std::size_t class_t
The type used as class ID in classification tasks.
Definition classification_result.h:22
Definition columns_info.h:110
Definition dataframe.h:76
unsigned variables() const
Definition dataframe.cc:273
class_t classes() const noexcept
Definition dataframe.cc:259
void clear()
Definition dataframe.cc:165
iterator erase(iterator, iterator)
Definition dataframe.cc:706
iterator begin() noexcept
Definition dataframe.cc:186
bool empty() const noexcept
Definition dataframe.cc:250
std::size_t size() const noexcept
Definition dataframe.cc:242
bool operator!() const noexcept
Definition dataframe.cc:694
bool set_schema(const std::vector< std::pair< std::string, domain_t > > &)
Definition dataframe.cc:740
const value_type & front() const
Definition dataframe.cc:222
iterator insert(const_iterator, InputIt, InputIt)
Definition dataframe.h:243
task_t task() const noexcept
Definition dataframe.cc:178
bool is_valid() const
Definition dataframe.cc:774
void push_back(src::example, bool=false)
Definition dataframe.cc:288
void swap(dataframe &)
Definition dataframe.cc:761
iterator end() noexcept
Definition dataframe.cc:202
bool clone_schema(const dataframe &)
Definition dataframe.cc:720
std::string class_name(class_t) const noexcept
Definition dataframe.cc:337
typing
Definition columns_info.h:49
task_t
Definition columns_info.h:58
domain_t from_weka(const std::string &n)
Definition dataframe.cc:98
T label_as(const src::example &e)
Definition dataframe.h:181
std::vector< value_t > record_t
Definition dataframe.h:41
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
Definition dataframe.h:187
pocket_csv::dialect dialect
Definition dataframe.h:196
std::optional< std::size_t > output_index
Definition dataframe.h:205
typing data_typing
See typing for details.
Definition dataframe.h:192
pocket_csv::parser::filter_hook_t filter
Definition dataframe.h:200
Definition dataframe.h:54
value_t output
Definition dataframe.h:57
std::vector< value_t > input
Definition dataframe.h:60