private static Set<Vertex<?>> parentsThatAreNotCalculated(Collection<Vertex> parents) { Set<Vertex<?>> notCalculatedParents = new HashSet<>(); for (Vertex<?> next : parents) { if (!next.hasValue()) { notCalculatedParents.add(next); } } return notCalculatedParents; }
private static <T> T getPlaceholderVertexValue(Vertex<T> vertex) { if (!vertex.hasValue()) { throw new IllegalStateException("Cannot get value because PlaceholderVertex has not been initialized."); } return vertex.getValue(); } }
@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(); }
@Override public T getValue() { return hasValue() ? state.getValue() : lazyEval(); }
@Override public void saveValue(Vertex vertex) { if (vertex.hasValue() && vertex.getValue() instanceof Tensor) { setDotLabelWithValue(vertex); } else { dotLabels.add(new VertexDotLabel(vertex)); } }
@Override public void saveValue(Vertex vertex) { if (vertex.hasValue()) { KeanuSavedBayesNet.StoredValue value = getValue(vertex, vertex.getValue().toString()); modelBuilder.getNetworkStateBuilder().addDefaultState(value); } }
private void setDotLabelWithValue(Vertex<? extends Tensor> vertex) { VertexDotLabel vertexDotLabel = new VertexDotLabel(vertex); if (vertex.hasValue() && vertex.getValue().isScalar()) { vertexDotLabel.setValue("" + vertex.getValue().scalar()); } dotLabels.add(vertexDotLabel); }
private static <T> void updateVertexValue(Vertex<T> vertex) { if (vertex.isProbabilistic()) { if (!vertex.hasValue()) { vertex.setValue(vertex.sample()); } } else { if (!vertex.isObserved()) { vertex.setValue(((NonProbabilistic<T>) vertex).calculate()); } } } }