16 #ifndef __DATA_SOURCE_MODIFIERS_CSV_INTERNAL_ENGINE_H__
17 #define __DATA_SOURCE_MODIFIERS_CSV_INTERNAL_ENGINE_H__
21 #include "services/internal/error_handling_helpers.h"
22 #include "data_management/features/internal/helpers.h"
23 #include "data_management/features/internal/identifiers_impl.h"
24 #include "data_management/data_source/modifiers/csv/modifier.h"
25 #include "data_management/data_source/modifiers/internal/engine.h"
26 #include "data_management/data_source/internal/csv_feature_utils.h"
30 namespace data_management
39 using data_management::internal::CSVFeaturesInfo;
45 class InputFeatureInfo :
public modifiers::internal::InputFeatureInfo
48 InputFeatureInfo() : _detectedFeatureType(features::DAAL_CATEGORICAL), _token() { }
50 explicit InputFeatureInfo(features::FeatureType detectedFeatureType) :
51 _detectedFeatureType(detectedFeatureType) { }
53 const services::StringView &getToken()
const
58 features::FeatureType getDetectedFeatureType()
const
60 return _detectedFeatureType;
63 void setToken(
const services::StringView &token)
69 services::StringView _token;
70 features::FeatureType _detectedFeatureType;
77 class OutputFeatureInfo :
public modifiers::internal::OutputFeatureInfo { };
83 class ConfigImpl :
public Config,
84 public modifiers::internal::Config<InputFeatureInfo,
88 typedef modifiers::internal::Config<InputFeatureInfo,
89 OutputFeatureInfo> impl;
94 explicit ConfigImpl(
const services::internal::CollectionPtr<InputFeatureInfo *> &pickedInputFeatures,
95 services::Status *status = NULL) :
96 impl(pickedInputFeatures, status) { }
98 virtual size_t getNumberOfInputFeatures()
const DAAL_C11_OVERRIDE
100 return impl::getNumberOfInputFeatures();
103 virtual features::FeatureType getInputFeatureDetectedType(
size_t index)
const DAAL_C11_OVERRIDE
105 return impl::getPickedInputFeature(index).getDetectedFeatureType();
108 virtual services::Status setNumberOfOutputFeatures(
size_t numberOfOutputFeatures) DAAL_C11_OVERRIDE
110 return impl::setNumberOfOutputFeatures(numberOfOutputFeatures);
113 virtual services::Status setOutputFeatureType(
size_t outputFeatureIndex,
114 features::FeatureType featureType) DAAL_C11_OVERRIDE
116 return impl::setOutputFeatureType(outputFeatureIndex, featureType);
119 virtual services::Status setNumberOfCategories(
size_t outputFeatureIndex,
120 size_t numberOfCategories) DAAL_C11_OVERRIDE
122 return impl::setNumberOfCategories(outputFeatureIndex, numberOfCategories);
125 virtual services::Status setCategoricalDictionary(
size_t outputFeatureIndex,
126 const CategoricalFeatureDictionaryPtr &dictionary) DAAL_C11_OVERRIDE
128 return impl::setCategoricalDictionary(outputFeatureIndex, dictionary);
136 class ContextImpl :
public Context,
137 public modifiers::internal::Context<InputFeatureInfo,
141 typedef modifiers::internal::Context<InputFeatureInfo,
142 OutputFeatureInfo> impl;
147 explicit ContextImpl(
const services::internal::CollectionPtr<InputFeatureInfo *> &pickedInputFeatures,
148 services::Status *status = NULL) :
149 impl(pickedInputFeatures, status) { }
151 virtual size_t getNumberOfTokens()
const DAAL_C11_OVERRIDE
153 return impl::getNumberOfInputFeatures();
156 virtual services::StringView getToken(
size_t index)
const DAAL_C11_OVERRIDE
158 return impl::getPickedInputFeature(index).getToken();
161 virtual services::BufferView<DAAL_DATA_TYPE> getOutputBuffer()
const DAAL_C11_OVERRIDE
163 return impl::getOutputBuffer();
171 class ModifiersManager :
public modifiers::internal::ModifiersManager<FeatureModifierIface,
172 ConfigImpl, ContextImpl>
175 static services::SharedPtr<ModifiersManager> create(services::Status *status = NULL)
177 return services::internal::wrapSharedAndTryThrow<ModifiersManager>(
new ModifiersManager(), status);
180 void setToken(
size_t tokenIndex,
const services::StringView &token)
182 getBinder().getInputFeatureInfo(tokenIndex).setToken(token);
185 services::Status prepare(
const CSVFeaturesInfo &featuresInfo)
187 services::Status status;
189 const features::FeatureIdMappingIfacePtr featureMapping = createFeatureMapping(featuresInfo, &status);
190 DAAL_CHECK_STATUS_VAR(status);
192 const services::internal::CollectionPtr<InputFeatureInfo> inputFeaturesInfo =
193 createInputFeaturesInfo(featuresInfo, &status);
194 DAAL_CHECK_STATUS_VAR(status);
196 status |= getBinder().bind(featureMapping, inputFeaturesInfo);
202 services::internal::CollectionPtr<InputFeatureInfo> createInputFeaturesInfo(
const CSVFeaturesInfo &featuresInfo,
203 services::Status *status = NULL)
205 const size_t numberOfFeatures = featuresInfo.getNumberOfFeatures();
207 services::internal::CollectionPtr<InputFeatureInfo> inputFeaturesInfo =
208 services::internal::HeapAllocatableCollection<InputFeatureInfo>::create(numberOfFeatures);
209 if (!inputFeaturesInfo)
211 services::internal::tryAssignStatusAndThrow(status, services::ErrorMemoryAllocationFailed);
212 return inputFeaturesInfo;
215 for (
size_t i = 0; i < numberOfFeatures; i++)
217 features::FeatureType fType = featuresInfo.getDetectedFeatureType(i);
218 (*inputFeaturesInfo)[i] = InputFeatureInfo(fType);
221 return inputFeaturesInfo;
224 features::FeatureIdMappingIfacePtr createFeatureMapping(
const CSVFeaturesInfo &featuresInfo,
225 services::Status *status = NULL)
227 const size_t numberOfFeatures = featuresInfo.getNumberOfFeatures();
229 services::Status localStatus;
230 const features::internal::FeatureIdDefaultMappingPtr mapping =
231 features::internal::FeatureIdDefaultMapping::create(numberOfFeatures, &localStatus);
234 services::internal::tryAssignStatusAndThrow(status, localStatus);
238 if (featuresInfo.areFeatureNamesAvailable())
240 for (
size_t i = 0; i < numberOfFeatures; ++i)
242 mapping->setFeatureKey(i, featuresInfo.getFeatureName(i));
250 ModifiersManager() { }
252 typedef services::SharedPtr<ModifiersManager> ModifiersManagerPtr;
daal::services::internal::HeapAllocatableCollection
Wrapper for services::Collection that allocates and deallocates memory using internal new/delete oper...
Definition: internal/collection.h:92
daal
Definition: algorithm_base_common.h:31
daal::data_management::modifiers::internal::Config
Base class for modifier configuration.
Definition: data_management/data_source/modifiers/internal/engine.h:100
daal::data_management::modifiers::csv::internal::ConfigImpl
Internal implementation of feature modifier configuration.
Definition: data_management/data_source/modifiers/csv/internal/engine.h:83
daal::data_management::modifiers::csv::internal::ModifiersManager
Class that holds modifiers and implements logic of modifiers applying flow.
Definition: data_management/data_source/modifiers/csv/internal/engine.h:171
daal::services::internal::CollectionPtr
Shared pointer to the Collection object.
Definition: internal/collection.h:136
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:147
daal::data_management::modifiers::internal::OutputFeatureInfo
Base class represents output feature for modifier, contains information about single output feature...
Definition: data_management/data_source/modifiers/internal/engine.h:41
daal::data_management::modifiers::internal::Context
Base class for modifier context.
Definition: data_management/data_source/modifiers/internal/engine.h:214
daal::data_management::modifiers::internal::ModifiersManager
Class that holds modifiers and implements logic of modifiers applying flow.
Definition: data_management/data_source/modifiers/internal/engine.h:449
daal::data_management::modifiers::csv::internal::ContextImpl
Internal implementation of feature modifier context.
Definition: data_management/data_source/modifiers/csv/internal/engine.h:136
daal::data_management::modifiers::csv::internal::OutputFeatureInfo
Class represents configuration of single output feature.
Definition: data_management/data_source/modifiers/csv/internal/engine.h:77