public static void baseTest(ExecutionEnvironment env, DataStream<DataInstance> data, BayesianNetwork network, int batchSize, double error) throws IOException, ClassNotFoundException {
DataStreamWriter.writeDataToFile(data, "./datasets/simulated/tmp.arff");
DataFlink<DataInstance> dataFlink = DataFlinkLoader.loadDataFromFile(env, "./datasets/simulated/tmp.arff", false);
network.getDAG().getVariables().setAttributes(dataFlink.getAttributes());
dVMP parallelVB = new dVMP();
parallelVB.setOutput(true);
parallelVB.setMaximumGlobalIterations(10);
parallelVB.setSeed(5);
parallelVB.setBatchSize(batchSize);
parallelVB.setLocalThreshold(0.001);
parallelVB.setGlobalThreshold(0.01);
parallelVB.setMaximumLocalIterations(100);
parallelVB.setMaximumGlobalIterations(100);
parallelVB.setDAG(network.getDAG());
parallelVB.initLearning();
parallelVB.updateModel(dataFlink);
BayesianNetwork bnet = parallelVB.getLearntBayesianNetwork();
for (Variable var : network.getVariables()) {
if (Main.VERBOSE) System.out.println("\n------ Variable " + var.getName() + " ------");
if (Main.VERBOSE) System.out.println("\nTrue distribution:\n" + network.getConditionalDistribution(var));
if (Main.VERBOSE) System.out.println("\nLearned distribution:\n" + bnet.getConditionalDistribution(var));
Assert.assertTrue(bnet.getConditionalDistribution(var).equalDist(network.getConditionalDistribution(var), error));
}
Assert.assertTrue(bnet.equalBNs(network, error));
}