private static Iterable<SufficientStatistics> sufficientStatisticsMap(Iterator<DataInstance> iter, EF_BayesianNetwork ef_bayesianNetwork) { SufficientStatistics accumulator = null; if (iter.hasNext()) accumulator = ef_bayesianNetwork.getSufficientStatistics(iter.next());; while (iter.hasNext()) { accumulator.sum(ef_bayesianNetwork.getSufficientStatistics(iter.next())); } // FIXME: Is this really necessary? ArrayList<SufficientStatistics> result = new ArrayList<SufficientStatistics>(); result.add(accumulator); return result; }
@Override public SufficientStatistics map(DataInstance dataInstance) throws Exception { this.counterInstances.add(1.0); return this.ef_bayesianNetwork.getSufficientStatistics(dataInstance); }
@Override public void mapPartition(Iterable<DataInstance> values, Collector<SufficientStatistics> out) throws Exception { SufficientStatistics accumulator = null; for (DataInstance value : values) { this.counterInstances.add(1.0); if (accumulator==null) accumulator=this.ef_bayesianNetwork.getSufficientStatistics(value); else accumulator.sum(this.ef_bayesianNetwork.getSufficientStatistics(value)); } out.collect(accumulator); } }
/** * {@inheritDoc} */ @Override public SufficientStatistics getSufficientStatistics(DynamicDataInstance data) { DynamiceBNCompoundVector vectorSS = this.createEmtpyCompoundVector(); if (data.getTimeID()==0) { vectorSS.setIndicatorTime0(1.0); vectorSS.setVectorTime0(this.bayesianNetworkTime0.getSufficientStatistics(data)); }else { vectorSS.setIndicatorTimeT(1.0); vectorSS.setVectorTimeT(this.bayesianNetworkTimeT.getSufficientStatistics(data)); } return vectorSS; }