Skip to content
Snippets Groups Projects
Commit ae51cebc authored by jakubs's avatar jakubs
Browse files

SSDM-3410 add feature vectors vocabulary terms to api

SVN: 36028
parent 860c841a
No related branches found
No related tags found
No related merge requests found
...@@ -622,31 +622,36 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc<IDssServiceRpc ...@@ -622,31 +622,36 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc<IDssServiceRpc
for (FeatureTableRow featureTableRow : datasetFeatures.getFeatures()) for (FeatureTableRow featureTableRow : datasetFeatures.getFeatures())
{ {
WellLocation wellPosition = featureTableRow.getWellLocation(); WellLocation wellPosition = featureTableRow.getWellLocation();
double[] values = getFloatFeaturesAsDouble(featureTableRow); featureVectors.add(getFeatureVector(convert(wellPosition), featureTableRow));
featureVectors.add(new FeatureVector(convert(wellPosition), values));
} }
return new FeatureVectorDataset(dataset, datasetFeatures.getFeatureCodes(), return new FeatureVectorDataset(dataset, datasetFeatures.getFeatureCodes(),
datasetFeatures.getFeatureLabels(), featureVectors); datasetFeatures.getFeatureLabels(), featureVectors);
} }
// TODO 2010-11-29, Tomasz Pylak: allow to access Vocabulary Features in the API private static FeatureVector getFeatureVector(WellPosition position, FeatureTableRow featureTableRow)
private static double[] getFloatFeaturesAsDouble(FeatureTableRow featureTableRow)
{ {
FeatureValue[] featureValues = featureTableRow.getFeatureValues(); FeatureValue[] featureValues = featureTableRow.getFeatureValues();
double[] doubleValues = new double[featureValues.length]; double[] doubleValues = new double[featureValues.length];
String[] vocabularyTerms = new String[featureValues.length];
boolean[] vocabularyFeatureFlags = new boolean[featureValues.length];
for (int i = 0; i < featureValues.length; ++i) for (int i = 0; i < featureValues.length; ++i)
{ {
FeatureValue featureValue = featureValues[i]; FeatureValue featureValue = featureValues[i];
if (featureValue.isFloat()) if (featureValue.isFloat())
{ {
doubleValues[i] = featureValue.asFloat(); doubleValues[i] = featureValue.asFloat();
} else } else if (featureValue.isVocabularyTerm())
{ {
// convert a vocabulary term to NaN vocabularyFeatureFlags[i] = true;
vocabularyTerms[i] = featureValue.tryAsVocabularyTerm();
doubleValues[i] = Double.NaN; doubleValues[i] = Double.NaN;
} else
{
throw new IllegalStateException("Feature can be only either a float or a vocabulary term");
} }
} }
return doubleValues; return new FeatureVector(position, doubleValues, vocabularyFeatureFlags, vocabularyTerms);
} }
private static WellPosition convert(WellLocation wellPosition) private static WellPosition convert(WellLocation wellPosition)
...@@ -694,8 +699,9 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc<IDssServiceRpc ...@@ -694,8 +699,9 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc<IDssServiceRpc
private FeatureVectorWithDescription createFeatureVector(FeatureTableRow featureTableRow, private FeatureVectorWithDescription createFeatureVector(FeatureTableRow featureTableRow,
final List<String> featureCodes) final List<String> featureCodes)
{ {
FeatureVector feature = getFeatureVector(featureTableRow.getReference().getWellPosition(), featureTableRow);
return new FeatureVectorWithDescription(featureTableRow.getReference(), featureCodes, return new FeatureVectorWithDescription(featureTableRow.getReference(), featureCodes,
getFloatFeaturesAsDouble(featureTableRow)); feature.getValues());
} }
@Override @Override
......
...@@ -32,6 +32,14 @@ public class FeatureVectorWithDescription extends FeatureVector implements IFeat ...@@ -32,6 +32,14 @@ public class FeatureVectorWithDescription extends FeatureVector implements IFeat
this.featureNames = featureNames; this.featureNames = featureNames;
} }
public FeatureVectorWithDescription(FeatureVectorDatasetWellReference dataset,
List<String> featureNames, double[] values, boolean[] vocabularyFeatureFlags, String[] vocabularyTerms)
{
super(dataset.getWellPosition(), values, vocabularyFeatureFlags, vocabularyTerms);
this.datasetWellReference = dataset;
this.featureNames = featureNames;
}
/** /**
* Identifier of the dataset and well of this feature vector. * Identifier of the dataset and well of this feature vector.
*/ */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment