use of org.iobserve.analysis.clustering.filter.models.BehaviorModel in project iobserve-analysis by research-iobserve.
the class TBehaviorModelCreation method execute.
@Override
protected void execute(final Instances instances) {
final int size = instances.numInstances();
for (int i = 0; i < size; i++) {
final Instance instance = instances.instance(i);
final Optional<BehaviorModel> behaviorModel = this.createBehaviorModel(instances, instance);
final String modelName = this.namePrefix + i;
behaviorModel.ifPresent(model -> model.setName(modelName));
behaviorModel.ifPresent(this.outputPort::send);
}
}
use of org.iobserve.analysis.clustering.filter.models.BehaviorModel in project iobserve-analysis by research-iobserve.
the class TBehaviorModelCreation method createBehaviorModel.
/**
* create a BehaviorModel from Instance.
*
* @param instances
* instances containing the attribute names
* @param instance
* instance containing the attributes
* @return behavior model if relevant
*/
private Optional<BehaviorModel> createBehaviorModel(final Instances instances, final Instance instance) {
final int size = instance.numAttributes();
final BehaviorModel behaviorModel = new BehaviorModel();
for (int i = 0; i < size; i++) {
final Attribute attribute = instances.attribute(i);
final String attributeName = attribute.name();
final Double attributeValue = instance.value(attribute);
if (this.matchEdge(attributeName)) {
final Optional<EntryCallEdge> edge = this.createEdge(attributeName, attributeValue);
if (edge.isPresent()) {
behaviorModel.addEdge(edge.get());
}
} else if (this.matchNode(attributeName)) {
final Optional<EntryCallNode> node = this.createNode(attributeName, attributeValue);
if (node.isPresent()) {
behaviorModel.addNode(node.get());
}
}
}
if (behaviorModel.getEdges().isEmpty() && behaviorModel.getNodes().isEmpty()) {
return Optional.empty();
}
return Optional.of(behaviorModel);
}
use of org.iobserve.analysis.clustering.filter.models.BehaviorModel in project iobserve-analysis by research-iobserve.
the class ModelComparisonStageTest method createReferenceModel.
private BehaviorModel createReferenceModel() {
final BehaviorModel model = new BehaviorModel();
model.addNode(this.nodeA);
model.addNode(this.nodeB);
model.addNode(this.nodeC);
final EntryCallEdge edgeAB = new EntryCallEdge(this.nodeA, this.nodeB);
edgeAB.addCalls(4);
model.addEdge(edgeAB);
final EntryCallEdge edgeBA = new EntryCallEdge(this.nodeB, this.nodeA);
edgeBA.addCalls(3);
model.addEdge(edgeBA);
final EntryCallEdge edgeBC = new EntryCallEdge(this.nodeB, this.nodeC);
edgeBA.addCalls(1);
model.addEdge(edgeBC);
return model;
}
use of org.iobserve.analysis.clustering.filter.models.BehaviorModel in project iobserve-analysis by research-iobserve.
the class ModelComparisonStageTest method createTestModel.
private BehaviorModel createTestModel() {
final BehaviorModel model = new BehaviorModel();
model.addNode(this.nodeAtest);
model.addNode(this.nodeBtest);
model.addNode(this.nodeDtest);
final EntryCallEdge edgeAB = new EntryCallEdge(this.nodeAtest, this.nodeBtest);
edgeAB.addCalls(4);
model.addEdge(edgeAB);
final EntryCallEdge edgeBA = new EntryCallEdge(this.nodeBtest, this.nodeAtest);
edgeBA.addCalls(3);
model.addEdge(edgeBA);
final EntryCallEdge edgeBD = new EntryCallEdge(this.nodeBtest, this.nodeDtest);
edgeBA.addCalls(1);
model.addEdge(edgeBD);
return model;
}
use of org.iobserve.analysis.clustering.filter.models.BehaviorModel in project iobserve-analysis by research-iobserve.
the class TUsageModelToBehaviorModel method traverseBranch.
private Map<EntryCallNode, Double> traverseBranch(final BehaviorModel behaviorModel, final Optional<Map<EntryCallNode, Double>> optPreviousNodes, final Branch branch) {
// assign new probabilities to the nodes
final Map<BranchTransition, Map<EntryCallNode, Double>> transitionMap = new HashMap<>();
for (final BranchTransition transition : branch.getBranchTransitions_Branch()) {
final Map<EntryCallNode, Double> branchMap = new HashMap<>();
optPreviousNodes.ifPresent(previousNodes -> previousNodes.keySet().stream().forEach(node -> branchMap.put(node, transition.getBranchProbability())));
transitionMap.put(transition, branchMap);
}
// traverse all branches and collect the end nodes
final Map<EntryCallNode, Double> endNodes = branch.getBranchTransitions_Branch().stream().map(transition -> this.traverseScenarioBehavior(transition.getBranchedBehaviour_BranchTransition(), behaviorModel, // all
Optional.of(transitionMap.get(transition)))).collect(HashMap::new, Map::putAll, // collect endNodes
Map::putAll);
return endNodes;
}
Aggregations