/**
* Copyright (c) 2010 Darmstadt University of Technology.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Johannes Lerch - initial API and implementation.
*/
package org.eclipse.recommenders.commons.bayesnet;
import java.io.Serializable;
@Deprecated
public class Node implements Serializable {
private static final long serialVersionUID = 6120294183622148914L;
private static final Node[] EMPTY_PARENTS = new Node[0];
private static final String[] EMPTY_STATES = new String[0];
private static final double[] EMPTY_PROBABILITIES = new double[0];
private final String identifier;
private Node[] parents = EMPTY_PARENTS;
private String[] states = EMPTY_STATES;
private double[] probabilities = EMPTY_PROBABILITIES;
public Node(final String identifier) {
this.identifier = identifier;
}
public void setStates(final String[] states) {
this.states = states;
}
public int numberOfStates() {
return states.length;
}
public void setParents(final Node[] parents) {
this.parents = parents;
}
public int numberOfParents() {
if (parents == null) {
return 0;
}
return parents.length;
}
public Node[] getParents() {
return parents;
}
public void setProbabilities(final double[] probabilities) {
this.probabilities = probabilities;
}
public boolean isValid() {
if (parents.length > 0) {
int parentStates = 1;
for (final Node parent : parents) {
parentStates *= parent.numberOfStates();
}
if (probabilities.length != parentStates * states.length) {
return false;
}
} else if (probabilities.length != states.length) {
return false;
}
for (int i = 0; i < probabilities.length; i++) {
if (Double.isInfinite(probabilities[i])) {
return false;
}
if (Double.isNaN(probabilities[i])) {
return false;
}
}
return true;
}
public String getIdentifier() {
return identifier;
}
public String[] getStates() {
return states;
}
/**
* Returns the probabilities of this node column wise
*/
public double[] getProbabilities() {
return probabilities;
}
}