public double[] calculateUpdatedMarginals(int nodeIndex) {
    double[] marginals = new double[evidence.getNumCategories(nodeIndex)];

    for (int i = 0; i < getBayesIm().getNumColumns(nodeIndex); i++) {
      marginals[i] = getMarginal(nodeIndex, i);
    }

    return marginals;
  }
  public double[] calculatePriorMarginals(int nodeIndex) {
    Evidence evidence = getEvidence();
    setEvidence(Evidence.tautology(evidence.getVariableSource()));

    double[] marginals = new double[evidence.getNumCategories(nodeIndex)];

    for (int i = 0; i < getBayesIm().getNumColumns(nodeIndex); i++) {
      marginals[i] = getMarginal(nodeIndex, i);
    }

    setEvidence(evidence);
    return marginals;
  }