6 #ifndef TURI_ML2_METADATA_IMPL_H_ 7 #define TURI_ML2_METADATA_IMPL_H_ 9 #include <toolkits/ml_data_2/side_features.hpp> 11 namespace turi {
namespace v2 {
19 inline ml_data_internal::column_metadata_ptr
22 DASSERT_LT(column_index, num_columns());
24 return (side_features !=
nullptr 25 ? side_features->get_full_column_metadata()[column_index]
26 : columns[column_index]);
33 auto it = _column_name_to_index_map.find(_column_name);
35 if(UNLIKELY(it == _column_name_to_index_map.end()))
36 log_and_throw((std::string(
"Column ") + _column_name +
" not found in model metadata.").c_str());
49 return (_column_name_to_index_map.find(column_name) != _column_name_to_index_map.end());
54 return (target !=
nullptr);
65 inline const std::shared_ptr<ml_data_internal::column_indexer>&
67 return get_column_metadata(column_index)->indexer;
77 inline const std::shared_ptr<ml_data_internal::column_indexer>&
79 return indexer(column_index(column_name));
91 inline const std::shared_ptr<ml_data_internal::column_statistics>&
93 return get_column_metadata(column_index)->statistics;
103 inline const std::shared_ptr<ml_data_internal::column_statistics>&
105 return statistics(column_index(column_name));
113 bool include_untranslated_columns)
const {
114 size_t nc = (include_side_columns_if_present && (side_features !=
nullptr)
115 ? side_features->get_full_column_metadata().size()
118 if(!include_untranslated_columns)
119 nc -= num_untranslated_columns();
128 DASSERT_NE(_num_untranslated_columns,
size_t(-1));
129 return _num_untranslated_columns;
136 return num_untranslated_columns() != columns.size();
143 return num_untranslated_columns() != 0;
150 DASSERT_NE(_num_dimensions,
size_t(-1));
151 return _num_dimensions;
159 return get_column_metadata(column_index)->name;
174 inline const std::shared_ptr<ml_data_internal::column_indexer>&
175 ml_metadata::target_indexer()
const {
177 return target->indexer;
183 inline const std::shared_ptr<ml_data_internal::column_statistics>&
184 ml_metadata::target_statistics()
const {
186 return target->statistics;
192 return get_column_metadata(column_index)->column_size();
199 return target->column_size();
207 return get_column_metadata(column_index)->index_size();
219 return index_size(column_index(column_name));
227 return target->index_size();
237 return get_column_metadata(column_index)->global_index_offset();
250 return global_index_offset(column_index(column_name));
259 return get_column_metadata(column_index)->mode;
270 return column_mode(column_index(column_name));
287 return get_column_metadata(column_index)->original_column_type;
298 return column_type(column_index(column_name));
307 return target->original_column_type;
328 return is_categorical(column_index(column_name));
353 return is_indexed(column_index(column_name));
362 return get_column_metadata(column_index)->is_untranslated_column();
373 return is_untranslated_column(column_index(column_name));
381 inline bool ml_metadata::is_side_column(
size_t column_index)
const {
382 DASSERT_LT(column_index, num_columns());
383 return column_index >= columns.size();
394 inline bool ml_metadata::is_side_column(
const std::string& column_name)
const {
395 return is_side_column(column_index(column_name));
419 inline bool ml_metadata::has_side_features()
const {
420 return side_features !=
nullptr;
425 std::shared_ptr<ml_data_side_features> ml_metadata::get_side_features()
const {
427 return side_features;
432 const std::map<std::string, flexible_type>& ml_metadata::get_current_options()
const {
static GL_HOT_INLINE_FLATTEN bool mode_is_categorical(ml_column_mode mode)
static GL_HOT_INLINE_FLATTEN bool mode_is_indexed(ml_column_mode mode)
#define DASSERT_TRUE(cond)