24 #ifndef __DATA_DICTIONARY_H__
25 #define __DATA_DICTIONARY_H__
27 #include "services/daal_defines.h"
28 #include "services/daal_memory.h"
29 #include "data_management/data/data_serialize.h"
30 #include "data_management/data/data_archive.h"
32 #include "data_management/features/defines.h"
33 #include "data_management/features/internal/helpers.h"
37 namespace data_management
53 class NumericTableFeature :
public SerializationIface
56 features::IndexNumType indexType;
57 features::PMMLNumType pmmlType;
58 features::FeatureType featureType;
60 size_t categoryNumber;
68 indexType = features::DAAL_OTHER_T;
69 pmmlType = features::DAAL_GEN_UNKNOWN;
70 featureType = features::DAAL_CONTINUOUS;
78 NumericTableFeature &operator= (
const NumericTableFeature &f)
80 indexType = f.indexType ;
81 pmmlType = f.pmmlType ;
82 featureType = f.featureType ;
83 typeSize = f.typeSize ;
84 categoryNumber = f.categoryNumber;
89 virtual ~NumericTableFeature() {}
99 indexType = features::internal::getIndexNumType<T>();
100 pmmlType = features::internal::getPMMLNumType<T>();
104 services::Status serializeImpl (InputDataArchive *arch) DAAL_C11_OVERRIDE
106 serialImpl<InputDataArchive, false>( arch );
108 return services::Status();
112 services::Status deserializeImpl(
const OutputDataArchive *arch) DAAL_C11_OVERRIDE
114 serialImpl<const OutputDataArchive, true>( arch );
116 return services::Status();
120 template<
typename Archive,
bool onDeserialize>
121 services::Status serialImpl( Archive *arch )
123 arch->set( pmmlType );
124 arch->set( featureType );
125 arch->set( typeSize );
126 arch->set( categoryNumber );
127 arch->set( indexType );
129 return services::Status();
132 virtual int getSerializationTag() const DAAL_C11_OVERRIDE
134 return SERIALIZATION_DATAFEATURE_NT_ID;
137 features::IndexNumType getIndexType()
const
144 class DictionaryIface {
162 template<
typename Feature,
int SerializationTag>
163 class DAAL_EXPORT Dictionary :
public SerializationIface,
public DictionaryIface
166 static int serializationTag() {
return SerializationTag; }
167 virtual int getSerializationTag() const DAAL_C11_OVERRIDE {
return serializationTag(); }
175 Dictionary(
size_t nfeat, FeaturesEqual featuresEqual = notEqual ):
176 _nfeat(0), _featuresEqual(featuresEqual), _dict(0), _errors(new services::KernelErrorCollection())
178 if(nfeat) { setNumberOfFeatures(nfeat); }
188 static services::SharedPtr<Dictionary> create(
size_t nfeat, FeaturesEqual featuresEqual = notEqual, services::Status *stat = NULL )
190 DAAL_DEFAULT_CREATE_IMPL_EX(Dictionary, nfeat, featuresEqual);
197 Dictionary(): _nfeat(0), _dict(0), _featuresEqual(DictionaryIface::notEqual), _errors(new services::KernelErrorCollection()) {}
204 static services::SharedPtr<Dictionary> create( services::Status *stat = NULL )
206 DAAL_DEFAULT_CREATE_IMPL(Dictionary);
210 virtual ~Dictionary()
218 services::Status resetDictionary()
226 return services::Status();
233 virtual services::Status setAllFeatures(
const Feature &defaultFeature)
235 if (_featuresEqual == DictionaryIface::equal)
239 _dict[0] = defaultFeature;
244 for(
size_t i = 0 ; i < _nfeat ; i++ )
246 _dict[i] = defaultFeature;
249 return services::Status();
256 template<
typename featureType>
257 services::Status setAllFeatures()
259 Feature defaultFeature;
260 defaultFeature.template setType<featureType>();
261 return setAllFeatures(defaultFeature);
268 virtual services::Status setNumberOfFeatures(
size_t numberOfFeatures)
271 _nfeat = numberOfFeatures;
272 if (_featuresEqual == DictionaryIface::equal)
274 _dict =
new Feature[1];
278 _dict =
new Feature[_nfeat];
280 return services::Status();
287 size_t getNumberOfFeatures()
const
296 FeaturesEqual getFeaturesEqual()
const
298 return _featuresEqual;
306 Feature &operator[](
const size_t idx)
308 if (_featuresEqual == DictionaryIface::equal)
325 services::Status setFeature(
const Feature &feature,
size_t idx)
328 return services::Status(services::ErrorIncorrectNumberOfFeatures);
330 if (_featuresEqual == DictionaryIface::equal)
336 _dict[idx] = feature;
338 return services::Status();
346 services::Status setFeature(
size_t idx)
349 df.template setType<T>();
350 return setFeature(df, idx);
353 services::Status checkDictionary()
const
355 size_t nFeat = _nfeat;
356 if (_featuresEqual == DictionaryIface::equal) nFeat = 1;
358 for (
size_t i = 0; i < nFeat; ++i)
360 if (_dict[i].getIndexType() == features::DAAL_OTHER_T)
362 return services::Status(services::ErrorUndefinedFeature);
365 return services::Status();
373 DAAL_DEPRECATED services::SharedPtr<services::KernelErrorCollection> getErrors()
379 services::Status serializeImpl (InputDataArchive *arch) DAAL_C11_OVERRIDE
381 serialImpl<InputDataArchive, false>( arch );
383 return services::Status();
387 services::Status deserializeImpl(
const OutputDataArchive *arch) DAAL_C11_OVERRIDE
389 serialImpl<const OutputDataArchive, true>( arch );
391 return services::Status();
396 template<
typename Archive,
bool onDeserialize>
397 services::Status serialImpl( Archive *arch )
399 arch->segmentHeader();
402 arch->set( _featuresEqual );
406 size_t nfeat = _nfeat;
408 setNumberOfFeatures(nfeat);
413 arch->setObj( _dict, 1 );
417 arch->setObj( _dict, _nfeat );
420 arch->segmentFooter();
422 return services::Status();
427 FeaturesEqual _featuresEqual;
429 services::SharedPtr<services::KernelErrorCollection> _errors;
431 Dictionary(
size_t nfeat, FeaturesEqual featuresEqual, services::Status &st ):
432 _nfeat(0), _featuresEqual(featuresEqual), _dict(0), _errors(new services::KernelErrorCollection())
434 if(nfeat) { st |= setNumberOfFeatures(nfeat); }
437 Dictionary(services::Status &st): _nfeat(0), _dict(0), _featuresEqual(DictionaryIface::notEqual), _errors(new services::KernelErrorCollection()) {}
439 typedef Dictionary<NumericTableFeature, SERIALIZATION_DATADICTIONARY_NT_ID> NumericTableDictionary;
440 typedef services::SharedPtr<NumericTableDictionary> NumericTableDictionaryPtr;
441 typedef services::SharedPtr<NumericTableFeature> NumericTableFeaturePtr;
445 using interface1::NumericTableFeature;
446 using interface1::NumericTableFeaturePtr;
447 using interface1::DictionaryIface;
448 using interface1::Dictionary;
449 using interface1::NumericTableDictionary;
450 using interface1::NumericTableDictionaryPtr;
daal::data_management::interface1::Dictionary::setAllFeatures
virtual services::Status setAllFeatures(const Feature &defaultFeature)
Definition: data_dictionary.h:233
daal::data_management::interface1::Dictionary::operator[]
Feature & operator[](const size_t idx)
Definition: data_dictionary.h:306
daal::data_management::interface1::Dictionary::getErrors
DAAL_DEPRECATED services::SharedPtr< services::KernelErrorCollection > getErrors()
Definition: data_dictionary.h:373
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:163
daal::data_management::interface1::NumericTableFeature::setType
void setType()
Definition: data_dictionary.h:96
daal::data_management::interface1::Dictionary::setFeature
services::Status setFeature(size_t idx)
Definition: data_dictionary.h:346
daal::data_management::interface1::Dictionary::Dictionary
Dictionary(size_t nfeat, FeaturesEqual featuresEqual=notEqual)
Definition: data_dictionary.h:175
daal::data_management::interface1::Dictionary::setNumberOfFeatures
virtual services::Status setNumberOfFeatures(size_t numberOfFeatures)
Definition: data_dictionary.h:268
daal::data_management::interface1::NumericTableFeature::getSerializationTag
virtual int getSerializationTag() const DAAL_C11_OVERRIDE
Definition: data_dictionary.h:132
daal::data_management::interface1::Dictionary::getSerializationTag
virtual int getSerializationTag() const DAAL_C11_OVERRIDE
Definition: data_dictionary.h:167
daal::data_management::interface1::NumericTableFeature::operator=
NumericTableFeature & operator=(const NumericTableFeature &f)
Definition: data_dictionary.h:78
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:325
daal::data_management::interface1::SerializationIface
Abstract interface class that defines the interface for serialization and deserialization.
Definition: data_serialize.h:52
daal::data_management::interface1::Dictionary::getFeaturesEqual
FeaturesEqual getFeaturesEqual() const
Definition: data_dictionary.h:296
daal::data_management::interface1::Dictionary::create
static services::SharedPtr< Dictionary > create(services::Status *stat=NULL)
Definition: data_dictionary.h:204
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:188
daal::services::SerializationTag
Definition: error_indexes.h:59
daal::services::ErrorIncorrectNumberOfFeatures
Definition: error_indexes.h:72
daal::data_management::interface1::NumericTableFeature
Data structure describes the Numeric Table feature.
Definition: data_dictionary.h:53
daal::data_management::interface1::InputDataArchive
Provides methods to create an archive data object (serialized) and access this object.
Definition: data_archive.h:725
daal::data_management::interface1::Dictionary::resetDictionary
services::Status resetDictionary()
Definition: data_dictionary.h:218
daal::data_management::interface1::NumericTableFeature::NumericTableFeature
NumericTableFeature()
Definition: data_dictionary.h:66
daal::data_management::interface1::Dictionary::setAllFeatures
services::Status setAllFeatures()
Definition: data_dictionary.h:257
daal::data_management::interface1::Dictionary::getNumberOfFeatures
size_t getNumberOfFeatures() const
Definition: data_dictionary.h:287
daal::services::ErrorUndefinedFeature
Definition: error_indexes.h:142
daal::data_management::interface1::Dictionary::Dictionary
Dictionary()
Definition: data_dictionary.h:197