@Override public String toString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(this.getId()); if (this.getLabel() != null) { stringBuilder.append(" (").append(this.getLabel()).append(")"); } stringBuilder.append(": "); stringBuilder.append(this.getClass().getSimpleName()); if (hasValue()) { stringBuilder.append("(" + getValue() + ")"); } return stringBuilder.toString(); }
private Map<VertexLabel, Vertex> buildLabelMap(Set<? extends Vertex> vertices) { Map<VertexLabel, Vertex> labelMap = new HashMap<>(); for (Vertex v : vertices) { VertexLabel label = v.getLabel(); if (v.getIndentation() == this.indentation && label != null) { if (labelMap.containsKey(label)) { throw new IllegalArgumentException("Vertex Label Repeated: " + label); } else { labelMap.put(label, v); } } } return labelMap; }
public <T extends Vertex<?>> T add(T v) { return add(v.getLabel(), v); }
public VertexDotLabel(Vertex vertex) { this.vertex = vertex; if (vertex.getLabel() != null) { vertexLabel = vertex.getLabel().getUnqualifiedName(); } DisplayInformationForOutput vertexAnnotation = vertex.getClass().getAnnotation(DisplayInformationForOutput.class); if (vertexAnnotation != null && !vertexAnnotation.displayName().isEmpty()) { annotation = vertexAnnotation.displayName(); } }
private static void checkAndLinkInputs(BayesianNetwork bayesianNetwork, Map<VertexLabel, Vertex> inputs) { for (Map.Entry<VertexLabel, Vertex> entry : inputs.entrySet()) { Vertex v = bayesianNetwork.getVertexByLabel(entry.getKey()); if (v == null) { throw new IllegalArgumentException("No node labelled \"" + entry.getKey() + "\" found"); } if (v instanceof ProxyVertex) { ProxyVertex proxyVertex = (ProxyVertex) v; if (proxyVertex.hasParent()) { throw new IllegalArgumentException("Proxy Vertex for \"" + v.getLabel() + "\" already has Parent"); } else { proxyVertex.setParent(entry.getValue()); } } else { throw new IllegalArgumentException("Input node \"" + entry.getKey() + "\" is not a Proxy Vertex"); } } }
private static <V extends Vertex<?>> Map<VertexLabel, Vertex<?>> buildMapForBaseCase(V first, V[] others) { ImmutableMap.Builder<VertexLabel, Vertex<?>> baseCaseMap = ImmutableMap.builder(); baseCaseMap.put(VALUE_OUT_LABEL, first); for (V vertex : others) { VertexLabel label = vertex.getLabel(); if (label == null) { label = new VertexLabel(String.format("base_case_vertex_%d", vertex.hashCode())); } baseCaseMap.put(label, vertex); } try { return baseCaseMap.build(); } catch (IllegalArgumentException e) { throw new LoopConstructionException("Duplicate label found in base case"); } }
private static void increaseDepth(BayesianNetwork bayesianNetwork, Map<VertexLabel, Vertex> outputVertices) { VertexId newPrefix = new VertexId(); bayesianNetwork.incrementIndentation(); bayesianNetwork.getVertices().stream() .filter(v -> !outputVertices.containsKey(v.getLabel())) .forEach(v -> v.getId().addPrefix(newPrefix)); bayesianNetwork.getVertices().stream() .filter(v -> outputVertices.containsKey(v.getLabel())) .forEach(v -> v.getId().resetID()); }
private void connectTransitionVariables(VertexDictionary candidateVertices, Plate plate, Map<VertexLabel, VertexLabel> transitionMapping) throws PlateConstructionException { Collection<Vertex<?>> proxyVertices = plate.getProxyVertices(); for (Vertex<?> proxy : proxyVertices) { VertexLabel proxyLabel = proxy.getLabel().withoutOuterNamespace(); VertexLabel defaultParentLabel = getDefaultParentLabel(proxyLabel); VertexLabel parentLabel = transitionMapping.getOrDefault(proxyLabel, defaultParentLabel); if (parentLabel == null) { throw new PlateConstructionException("Cannot find transition mapping for " + proxy.getLabel()); } if (candidateVertices == null) { throw new IllegalArgumentException("You must provide a base case for the Transition Vertices - use withInitialState()"); } Vertex<?> parent = candidateVertices.get(parentLabel); if (parent == null) { throw new PlateConstructionException("Cannot find VertexLabel " + parentLabel); } proxy.setParents(parent); } }
private KeanuSavedBayesNet.Vertex buildVertex(Vertex vertex) { KeanuSavedBayesNet.Vertex.Builder vertexBuilder = KeanuSavedBayesNet.Vertex.newBuilder(); if (vertex.getLabel() != null) { vertexBuilder = vertexBuilder.setLabel(vertex.getLabel().toString()); } vertexBuilder = vertexBuilder.setId(KeanuSavedBayesNet.VertexID.newBuilder().setId(vertex.getId().toString())); vertexBuilder = vertexBuilder.setVertexType(vertex.getClass().getCanonicalName()); vertexBuilder = vertexBuilder.addAllShape(Longs.asList(vertex.getShape())); saveParams(vertexBuilder, vertex); return vertexBuilder.build(); }
@Before public void createPlate() throws Exception { when(vertex1.getLabel()).thenReturn(VERTEX_LABEL_1); plate = new Plate(); plate.add(vertex1); plate.add(VERTEX_LABEL_2, vertex2); }