22 #ifndef __DATA_DICTIONARY_H__
23 #define __DATA_DICTIONARY_H__
25 #include "services/daal_defines.h"
26 #include "services/daal_memory.h"
27 #include "data_management/data/data_serialize.h"
28 #include "data_management/data/data_archive.h"
30 #include "data_management/features/defines.h"
31 #include "data_management/features/internal/helpers.h"
35 namespace data_management
51 class NumericTableFeature :
public SerializationIface
54 features::IndexNumType indexType;
55 features::PMMLNumType pmmlType;
56 features::FeatureType featureType;
58 size_t categoryNumber;
66 indexType = features::DAAL_OTHER_T;
67 pmmlType = features::DAAL_GEN_UNKNOWN;
68 featureType = features::DAAL_CONTINUOUS;
76 NumericTableFeature &operator= (
const NumericTableFeature &f)
78 indexType = f.indexType ;
79 pmmlType = f.pmmlType ;
80 featureType = f.featureType ;
81 typeSize = f.typeSize ;
82 categoryNumber = f.categoryNumber;
87 virtual ~NumericTableFeature() {}
97 indexType = features::internal::getIndexNumType<T>();
98 pmmlType = features::internal::getPMMLNumType<T>();
102 services::Status serializeImpl (InputDataArchive *arch) DAAL_C11_OVERRIDE
104 serialImpl<InputDataArchive, false>( arch );
106 return services::Status();
110 services::Status deserializeImpl(
const OutputDataArchive *arch) DAAL_C11_OVERRIDE
112 serialImpl<const OutputDataArchive, true>( arch );
114 return services::Status();
118 template<
typename Archive,
bool onDeserialize>
119 services::Status serialImpl( Archive *arch )
121 arch->set( pmmlType );
122 arch->set( featureType );
123 arch->set( typeSize );
124 arch->set( categoryNumber );
125 arch->set( indexType );
127 return services::Status();
130 virtual int getSerializationTag() const DAAL_C11_OVERRIDE
132 return SERIALIZATION_DATAFEATURE_NT_ID;
135 features::IndexNumType getIndexType()
const
142 class DictionaryIface {
160 template<
typename Feature,
int SerializationTag>
161 class DAAL_EXPORT Dictionary :
public SerializationIface,
public DictionaryIface
164 static int serializationTag() {
return SerializationTag; }
165 virtual int getSerializationTag() const DAAL_C11_OVERRIDE {
return serializationTag(); }
173 Dictionary(
size_t nfeat, FeaturesEqual featuresEqual = notEqual ):
174 _nfeat(0), _featuresEqual(featuresEqual), _dict(0), _errors(new services::KernelErrorCollection())
176 if(nfeat) { setNumberOfFeatures(nfeat); }
186 static services::SharedPtr<Dictionary> create(
size_t nfeat, FeaturesEqual featuresEqual = notEqual, services::Status *stat = NULL )
188 DAAL_DEFAULT_CREATE_IMPL_EX(Dictionary, nfeat, featuresEqual);
195 Dictionary(): _nfeat(0), _dict(0), _featuresEqual(DictionaryIface::notEqual), _errors(new services::KernelErrorCollection()) {}
202 static services::SharedPtr<Dictionary> create( services::Status *stat = NULL )
204 DAAL_DEFAULT_CREATE_IMPL(Dictionary);
208 virtual ~Dictionary()
216 services::Status resetDictionary()
224 return services::Status();
231 virtual services::Status setAllFeatures(
const Feature &defaultFeature)
233 if (_featuresEqual == DictionaryIface::equal)
237 _dict[0] = defaultFeature;
242 for(
size_t i = 0 ; i < _nfeat ; i++ )
244 _dict[i] = defaultFeature;
247 return services::Status();
254 template<
typename featureType>
255 services::Status setAllFeatures()
257 Feature defaultFeature;
258 defaultFeature.template setType<featureType>();
259 return setAllFeatures(defaultFeature);
266 virtual services::Status setNumberOfFeatures(
size_t numberOfFeatures)
269 _nfeat = numberOfFeatures;
270 if (_featuresEqual == DictionaryIface::equal)
272 _dict =
new Feature[1];
276 _dict =
new Feature[_nfeat];
278 return services::Status();
285 size_t getNumberOfFeatures()
const
294 FeaturesEqual getFeaturesEqual()
const
296 return _featuresEqual;
304 Feature &operator[](
const size_t idx)
306 if (_featuresEqual == DictionaryIface::equal)
323 services::Status setFeature(
const Feature &feature,
size_t idx)
326 return services::Status(services::ErrorIncorrectNumberOfFeatures);
328 if (_featuresEqual == DictionaryIface::equal)
334 _dict[idx] = feature;
336 return services::Status();
344 services::Status setFeature(
size_t idx)
347 df.template setType<T>();
348 return setFeature(df, idx);
351 services::Status checkDictionary()
const
353 size_t nFeat = _nfeat;
354 if (_featuresEqual == DictionaryIface::equal) nFeat = 1;
356 for (
size_t i = 0; i < nFeat; ++i)
358 if (_dict[i].getIndexType() == features::DAAL_OTHER_T)
360 return services::Status(services::ErrorUndefinedFeature);
363 return services::Status();
371 DAAL_DEPRECATED services::SharedPtr<services::KernelErrorCollection> getErrors()
377 services::Status serializeImpl (InputDataArchive *arch) DAAL_C11_OVERRIDE
379 serialImpl<InputDataArchive, false>( arch );
381 return services::Status();
385 services::Status deserializeImpl(
const OutputDataArchive *arch) DAAL_C11_OVERRIDE
387 serialImpl<const OutputDataArchive, true>( arch );
389 return services::Status();
394 template<
typename Archive,
bool onDeserialize>
395 services::Status serialImpl( Archive *arch )
397 arch->segmentHeader();
400 arch->set( _featuresEqual );
404 size_t nfeat = _nfeat;
406 setNumberOfFeatures(nfeat);
411 arch->setObj( _dict, 1 );
415 arch->setObj( _dict, _nfeat );
418 arch->segmentFooter();
420 return services::Status();
425 FeaturesEqual _featuresEqual;
427 services::SharedPtr<services::KernelErrorCollection> _errors;
429 Dictionary(
size_t nfeat, FeaturesEqual featuresEqual, services::Status &st ):
430 _nfeat(0), _featuresEqual(featuresEqual), _dict(0), _errors(new services::KernelErrorCollection())
432 if(nfeat) { st |= setNumberOfFeatures(nfeat); }
435 Dictionary(services::Status &st): _nfeat(0), _dict(0), _featuresEqual(DictionaryIface::notEqual), _errors(new services::KernelErrorCollection()) {}
437 typedef Dictionary<NumericTableFeature, SERIALIZATION_DATADICTIONARY_NT_ID> NumericTableDictionary;
438 typedef services::SharedPtr<NumericTableDictionary> NumericTableDictionaryPtr;
439 typedef services::SharedPtr<NumericTableFeature> NumericTableFeaturePtr;
443 using interface1::NumericTableFeature;
444 using interface1::NumericTableFeaturePtr;
445 using interface1::DictionaryIface;
446 using interface1::Dictionary;
447 using interface1::NumericTableDictionary;
448 using interface1::NumericTableDictionaryPtr;
daal::data_management::interface1::Dictionary::resetDictionary
services::Status resetDictionary()
Definition: data_dictionary.h:216
daal
Definition: algorithm_base_common.h:31
daal::data_management::interface1::NumericTableFeature::NumericTableFeature
NumericTableFeature()
Definition: data_dictionary.h:64
daal::data_management::interface1::DictionaryIface::notEqual
Definition: data_dictionary.h:150
daal::data_management::interface1::Dictionary::operator[]
Feature & operator[](const size_t idx)
Definition: data_dictionary.h:304
daal::data_management::interface1::Dictionary::create
static services::SharedPtr< Dictionary > create(services::Status *stat=NULL)
Definition: data_dictionary.h:202
daal::services::ErrorIncorrectNumberOfFeatures
Definition: error_indexes.h:70
daal::data_management::interface1::Dictionary::getErrors
DAAL_DEPRECATED services::SharedPtr< services::KernelErrorCollection > getErrors()
Definition: data_dictionary.h:371
daal::services::SerializationTag
Definition: error_indexes.h:57
daal::data_management::interface1::Dictionary::getNumberOfFeatures
size_t getNumberOfFeatures() const
Definition: data_dictionary.h:285
daal::data_management::interface1::Dictionary::setFeature
services::Status setFeature(size_t idx)
Definition: data_dictionary.h:344
daal::data_management::interface1::NumericTableFeature::operator=
NumericTableFeature & operator=(const NumericTableFeature &f)
Definition: data_dictionary.h:76
daal::data_management::interface1::Dictionary::getSerializationTag
virtual int getSerializationTag() const DAAL_C11_OVERRIDE
Definition: data_dictionary.h:165
daal::data_management::interface1::NumericTableFeature::getSerializationTag
virtual int getSerializationTag() const DAAL_C11_OVERRIDE
Definition: data_dictionary.h:130
daal::data_management::interface1::Dictionary::setNumberOfFeatures
virtual services::Status setNumberOfFeatures(size_t numberOfFeatures)
Definition: data_dictionary.h:266
daal::data_management::interface1::Dictionary::setAllFeatures
services::Status setAllFeatures()
Definition: data_dictionary.h:255
daal::data_management::interface1::Dictionary::Dictionary
Dictionary(size_t nfeat, FeaturesEqual featuresEqual=notEqual)
Definition: data_dictionary.h:173
daal::data_management::interface1::Dictionary::setFeature
services::Status setFeature(const Feature &feature, size_t idx)
Adds a feature to a data dictionary.
Definition: data_dictionary.h:323
daal::data_management::interface1::DictionaryIface::FeaturesEqual
FeaturesEqual
Enumeration to specify whether the Data Dictionary contains equal features.
Definition: data_dictionary.h:148
daal::data_management::interface1::NumericTableFeature::setType
void setType()
Definition: data_dictionary.h:94
daal::data_management::interface1::Dictionary::create
static services::SharedPtr< Dictionary > create(size_t nfeat, FeaturesEqual featuresEqual=notEqual, services::Status *stat=NULL)
Definition: data_dictionary.h:186
daal::services::ErrorUndefinedFeature
Definition: error_indexes.h:140
daal::data_management::interface1::Dictionary::setAllFeatures
virtual services::Status setAllFeatures(const Feature &defaultFeature)
Definition: data_dictionary.h:231
daal::data_management::interface1::Dictionary::Dictionary
Dictionary()
Definition: data_dictionary.h:195
daal::data_management::interface1::SerializationIface
Abstract interface class that defines the interface for serialization and deserialization.
Definition: data_serialize.h:50
daal::data_management::interface1::NumericTableFeature
Data structure describes the Numeric Table feature.
Definition: data_dictionary.h:51
daal::data_management::interface1::Dictionary::getFeaturesEqual
FeaturesEqual getFeaturesEqual() const
Definition: data_dictionary.h:294
daal::data_management::interface1::Dictionary
Class that represents a dictionary of a data set and provides methods to work with the data dictionar...
Definition: data_dictionary.h:161