use of org.kie.pmml.commons.testingutility.KiePMMLTestingModel in project drools by kiegroup.
the class KiePMMLModelRetrieverTest method getFromCommonDataAndTransformationDictionaryAndModelWithProvider.
@Test
public void getFromCommonDataAndTransformationDictionaryAndModelWithProvider() throws Exception {
pmml = KiePMMLUtil.load(getFileInputStream(MULTIPLE_TARGETS_SOURCE), MULTIPLE_TARGETS_SOURCE);
TestModel model = new TestModel();
pmml.getModels().set(0, model);
final CommonCompilationDTO<TestModel> compilationDTO = CommonCompilationDTO.fromGeneratedPackageNameAndFields(PACKAGE_NAME, pmml, model, new HasClassLoaderMock());
final Optional<KiePMMLModel> retrieved = getFromCommonDataAndTransformationDictionaryAndModel(compilationDTO);
assertNotNull(retrieved);
assertTrue(retrieved.isPresent());
assertTrue(retrieved.get() instanceof KiePMMLTestingModel);
}
use of org.kie.pmml.commons.testingutility.KiePMMLTestingModel in project drools by kiegroup.
the class PMMLRuntimeFactoryInternalTest method createKieBaseFromKnowledgeBuilder.
@Test
public void createKieBaseFromKnowledgeBuilder() {
KnowledgeBuilderImpl knowledgeBuilder = new KnowledgeBuilderImpl();
knowledgeBuilder.addPackage(CoreComponentFactory.get().createKnowledgePackage("namespace_1"));
knowledgeBuilder.addPackage(CoreComponentFactory.get().createKnowledgePackage("namespace_2"));
PMMLPackage pmmlPkg = new PMMLPackageImpl();
pmmlPkg.addAll(Collections.singleton(new KiePMMLTestingModel("FAKE", Collections.emptyList())));
InternalKnowledgePackage pmmlKnowledgePackage = CoreComponentFactory.get().createKnowledgePackage("pmmled_package");
pmmlKnowledgePackage.getResourceTypePackages().put(ResourceType.PMML, pmmlPkg);
KieBase retrieved = PMMLRuntimeFactoryInternal.createKieBase(knowledgeBuilder);
assertNotNull(retrieved);
assertFalse(retrieved.getKiePackages().isEmpty());
assertEquals(knowledgeBuilder.getKnowledgePackages().size(), retrieved.getKiePackages().size());
knowledgeBuilder.getKnowledgePackages().forEach(kBuilderPackage -> {
assertNotNull(retrieved.getKiePackage(kBuilderPackage.getName()));
ResourceTypePackage knowledgeBuilderResourceTypePackage = ((InternalKnowledgePackage) kBuilderPackage).getResourceTypePackages().get(ResourceType.PMML);
if (((InternalKnowledgePackage) kBuilderPackage).getResourceTypePackages().get(ResourceType.PMML) != null) {
InternalKnowledgePackage retrievedKiePackage = (InternalKnowledgePackage) retrieved.getKiePackage(kBuilderPackage.getName());
ResourceTypePackage retrievedResourceTypePackage = retrievedKiePackage.getResourceTypePackages().get(ResourceType.PMML);
assertNotNull(retrievedKiePackage.getResourceTypePackages().get(ResourceType.PMML));
assertEquals(knowledgeBuilderResourceTypePackage, retrievedResourceTypePackage);
}
});
}
use of org.kie.pmml.commons.testingutility.KiePMMLTestingModel in project drools by kiegroup.
the class PreProcessTest method executeTransformations.
@Test
public void executeTransformations() {
// <DefineFunction name="CUSTOM_FUNCTION" optype="continuous" dataType="double">
// <ParameterField name="PARAM_1" />
// <ParameterField name="PARAM_2" />
// <Apply function="/">
// <FieldRef>PARAM_1</FieldRef>
// <FieldRef>PARAM_2</FieldRef>
// </Apply>
// </DefineFunction>
final KiePMMLParameterField kiePMMLParameterField1 = KiePMMLParameterField.builder(PARAM_1, Collections.emptyList()).build();
final KiePMMLParameterField kiePMMLParameterField2 = KiePMMLParameterField.builder(PARAM_2, Collections.emptyList()).build();
final KiePMMLFieldRef kiePMMLFieldRef1 = new KiePMMLFieldRef(PARAM_1, Collections.emptyList(), null);
final KiePMMLFieldRef kiePMMLFieldRef2 = new KiePMMLFieldRef(PARAM_2, Collections.emptyList(), null);
final KiePMMLApply kiePMMLApplyRef = KiePMMLApply.builder("NAMEREF", Collections.emptyList(), "/").withKiePMMLExpressions(Arrays.asList(kiePMMLFieldRef1, kiePMMLFieldRef2)).build();
final KiePMMLDefineFunction defineFunction = new KiePMMLDefineFunction(CUSTOM_FUNCTION, Collections.emptyList(), DATA_TYPE.DOUBLE, OP_TYPE.CONTINUOUS, Arrays.asList(kiePMMLParameterField1, kiePMMLParameterField2), kiePMMLApplyRef);
// <DerivedField name="CUSTOM_REF_FIELD" optype="continuous" dataType="double">
// <Apply function="CUSTOM_FUNCTION">
// <FieldRef>INPUT_FIELD</FieldRef>
// <Constant>5.0</Constant>
// </Apply>
// </DerivedField>
final KiePMMLFieldRef kiePMMLFieldRef3 = new KiePMMLFieldRef(INPUT_FIELD, Collections.emptyList(), null);
final KiePMMLConstant kiePMMLConstant1 = new KiePMMLConstant(PARAM_2, Collections.emptyList(), value2, null);
final KiePMMLApply kiePMMLApply = KiePMMLApply.builder("NAME", Collections.emptyList(), CUSTOM_FUNCTION).withKiePMMLExpressions(Arrays.asList(kiePMMLFieldRef3, kiePMMLConstant1)).build();
final KiePMMLDerivedField derivedField = KiePMMLDerivedField.builder(CUSTOM_REF_FIELD, Collections.emptyList(), DATA_TYPE.DOUBLE, OP_TYPE.CONTINUOUS, kiePMMLApply).build();
// From TransformationDictionary
KiePMMLTransformationDictionary transformationDictionary = KiePMMLTransformationDictionary.builder("transformationDictionary", Collections.emptyList()).withDefineFunctions(Collections.singletonList(defineFunction)).withDerivedFields(Collections.singletonList(derivedField)).build();
KiePMMLTestingModel kiePMMLModel = KiePMMLTestingModel.builder("TESTINGMODEL", Collections.emptyList(), MINING_FUNCTION.REGRESSION).withKiePMMLTransformationDictionary(transformationDictionary).build();
//
final PMMLRequestData pmmlRequestData = new PMMLRequestData();
pmmlRequestData.addRequestParam(INPUT_FIELD, value1);
Map<String, ParameterInfo> mappedRequestParams = pmmlRequestData.getMappedRequestParams();
final List<KiePMMLNameValue> kiePMMLNameValues = PreProcess.getKiePMMLNameValuesFromParameterInfos(mappedRequestParams.values());
Optional<KiePMMLNameValue> retrieved = kiePMMLNameValues.stream().filter(kiePMMLNameValue -> kiePMMLNameValue.getName().equals(INPUT_FIELD)).findFirst();
assertTrue(retrieved.isPresent());
assertEquals(value1, retrieved.get().getValue());
ProcessingDTO processingDTO = new ProcessingDTO(kiePMMLModel, kiePMMLNameValues);
PreProcess.executeTransformations(processingDTO, pmmlRequestData);
mappedRequestParams = pmmlRequestData.getMappedRequestParams();
Object expected = value1 / value2;
assertTrue(mappedRequestParams.containsKey(CUSTOM_REF_FIELD));
assertEquals(expected, mappedRequestParams.get(CUSTOM_REF_FIELD).getValue());
retrieved = kiePMMLNameValues.stream().filter(kiePMMLNameValue -> kiePMMLNameValue.getName().equals(CUSTOM_REF_FIELD)).findFirst();
assertTrue(retrieved.isPresent());
assertEquals(expected, retrieved.get().getValue());
}
use of org.kie.pmml.commons.testingutility.KiePMMLTestingModel in project drools by kiegroup.
the class PostProcessTest method populateTransformedOutputFieldWithApplyDefineFunctionFromApply.
@Test
public void populateTransformedOutputFieldWithApplyDefineFunctionFromApply() {
// <DefineFunction name="CUSTOM_FUNCTION" optype="continuous" dataType="double">
// <ParameterField name="PARAM_1" />
// <Apply function="/">
// <FieldRef>PARAM_1</FieldRef>
// <Constant>5.0</Constant>
// </Apply>
// </DefineFunction>
final KiePMMLParameterField kiePMMLParameterField = KiePMMLParameterField.builder(PARAM_1, Collections.emptyList()).build();
final KiePMMLFieldRef kiePMMLFieldRef1 = new KiePMMLFieldRef(PARAM_1, Collections.emptyList(), null);
final KiePMMLConstant kiePMMLConstant2 = new KiePMMLConstant(PARAM_2, Collections.emptyList(), value2, null);
final KiePMMLApply kiePMMLApplyRef = KiePMMLApply.builder("NAMEREF", Collections.emptyList(), "/").withKiePMMLExpressions(Arrays.asList(kiePMMLFieldRef1, kiePMMLConstant2)).build();
final KiePMMLDefineFunction defineFunction = new KiePMMLDefineFunction(CUSTOM_FUNCTION, Collections.emptyList(), DATA_TYPE.DOUBLE, OP_TYPE.CONTINUOUS, Collections.singletonList(kiePMMLParameterField), kiePMMLApplyRef);
// <Apply function="CUSTOM_FUNCTION">
// <Constant>100.0</Constant>
// </Apply>
final KiePMMLConstant kiePMMLConstant3 = new KiePMMLConstant(PARAM_2, Collections.emptyList(), value1, null);
KiePMMLApply kiePMMLApply = KiePMMLApply.builder("NAME", Collections.emptyList(), CUSTOM_FUNCTION).withKiePMMLExpressions(Collections.singletonList(kiePMMLConstant3)).build();
KiePMMLOutputField outputField = KiePMMLOutputField.builder(OUTPUT_NAME, Collections.emptyList()).withResultFeature(RESULT_FEATURE.TRANSFORMED_VALUE).withKiePMMLExpression(kiePMMLApply).build();
// From TransformationDictionary
KiePMMLTransformationDictionary transformationDictionary = KiePMMLTransformationDictionary.builder("transformationDictionary", Collections.emptyList()).withDefineFunctions(Collections.singletonList(defineFunction)).build();
KiePMMLTestingModel kiePMMLModel = testingModelBuilder(outputField).withKiePMMLTransformationDictionary(transformationDictionary).build();
ProcessingDTO processingDTO = buildProcessingDTOWithEmptyNameValues(kiePMMLModel);
PMML4Result toUpdate = new PMML4Result();
PostProcess.populateOutputFields(toUpdate, processingDTO);
assertFalse(toUpdate.getResultVariables().isEmpty());
assertTrue(toUpdate.getResultVariables().containsKey(OUTPUT_NAME));
assertEquals(value1 / value2, toUpdate.getResultVariables().get(OUTPUT_NAME));
}
use of org.kie.pmml.commons.testingutility.KiePMMLTestingModel in project drools by kiegroup.
the class PostProcessTest method populateTransformedOutputFieldWithApplyDerivedFieldFromFieldRef.
@Test
public void populateTransformedOutputFieldWithApplyDerivedFieldFromFieldRef() {
// <DerivedField name="CUSTOM_REF_FIELD" optype="continuous" dataType="double">
// <Constant>100.0</Constant>
// </DerivedField>
final KiePMMLConstant kiePMMLConstant1 = new KiePMMLConstant(PARAM_1, Collections.emptyList(), value1, null);
final KiePMMLDerivedField derivedField1 = KiePMMLDerivedField.builder(CUSTOM_REF_FIELD, Collections.emptyList(), DATA_TYPE.DOUBLE, OP_TYPE.CONTINUOUS, kiePMMLConstant1).build();
// <DerivedField name="CUSTOM_FIELD" optype="continuous" dataType="double">
// <FieldRef>CUSTOM_REF_FIELD</FieldRef>
// </DerivedField>
final KiePMMLFieldRef kiePMMLFieldRef = new KiePMMLFieldRef(CUSTOM_REF_FIELD, Collections.emptyList(), null);
final KiePMMLDerivedField derivedField2 = KiePMMLDerivedField.builder(CUSTOM_FIELD, Collections.emptyList(), DATA_TYPE.DOUBLE, OP_TYPE.CONTINUOUS, kiePMMLFieldRef).build();
// <Apply function="/">
// <FieldRef>CUSTOM_FIELD</FieldRef>
// <Constant>5.0</Constant>
// </Apply>
final KiePMMLFieldRef kiePMMLFieldRef2 = new KiePMMLFieldRef(CUSTOM_FIELD, Collections.emptyList(), null);
final KiePMMLConstant kiePMMLConstant2 = new KiePMMLConstant(PARAM_2, Collections.emptyList(), value2, null);
KiePMMLApply kiePMMLApply = KiePMMLApply.builder("NAME", Collections.emptyList(), "/").withKiePMMLExpressions(Arrays.asList(kiePMMLFieldRef2, kiePMMLConstant2)).build();
KiePMMLOutputField outputField = KiePMMLOutputField.builder(OUTPUT_NAME, Collections.emptyList()).withResultFeature(RESULT_FEATURE.TRANSFORMED_VALUE).withKiePMMLExpression(kiePMMLApply).build();
// From TransformationDictionary
KiePMMLTransformationDictionary transformationDictionary = KiePMMLTransformationDictionary.builder("transformationDictionary", Collections.emptyList()).withDerivedFields(Arrays.asList(derivedField1, derivedField2)).build();
KiePMMLTestingModel kiePMMLModel1 = testingModelBuilder(outputField).withKiePMMLTransformationDictionary(transformationDictionary).build();
ProcessingDTO processingDTO1 = buildProcessingDTOWithEmptyNameValues(kiePMMLModel1);
PMML4Result toUpdate1 = new PMML4Result();
PostProcess.populateOutputFields(toUpdate1, processingDTO1);
assertFalse(toUpdate1.getResultVariables().isEmpty());
assertTrue(toUpdate1.getResultVariables().containsKey(OUTPUT_NAME));
assertEquals(value1 / value2, toUpdate1.getResultVariables().get(OUTPUT_NAME));
// From LocalTransformations
KiePMMLLocalTransformations localTransformations = KiePMMLLocalTransformations.builder("localTransformations", Collections.emptyList()).withDerivedFields(Arrays.asList(derivedField1, derivedField2)).build();
KiePMMLTestingModel kiePMMLModel2 = testingModelBuilder(outputField).withKiePMMLLocalTransformations(localTransformations).build();
ProcessingDTO processingDTO2 = buildProcessingDTOWithEmptyNameValues(kiePMMLModel2);
PMML4Result toUpdate2 = new PMML4Result();
PostProcess.populateOutputFields(toUpdate2, processingDTO2);
assertFalse(toUpdate2.getResultVariables().isEmpty());
assertTrue(toUpdate2.getResultVariables().containsKey(OUTPUT_NAME));
assertEquals(value1 / value2, toUpdate2.getResultVariables().get(OUTPUT_NAME));
}
Aggregations