/** Perform the sub task */ public void execute() { m_random = new Random(m_rowNumber * 11); m_dataGenerator.setSeed(m_rowNumber * 11); m_result = new RemoteResult(m_rowNumber, m_panelWidth); m_status.setTaskResult(m_result); m_status.setExecutionStatus(TaskStatusInfo.PROCESSING); try { m_numOfSamplesPerGenerator = (int) Math.pow(m_samplesBase, m_trainingData.numAttributes() - 3); if (m_trainingData == null) { throw new Exception("No training data set (BoundaryPanel)"); } if (m_classifier == null) { throw new Exception("No classifier set (BoundaryPanel)"); } if (m_dataGenerator == null) { throw new Exception("No data generator set (BoundaryPanel)"); } if (m_trainingData.attribute(m_xAttribute).isNominal() || m_trainingData.attribute(m_yAttribute).isNominal()) { throw new Exception( "Visualization dimensions must be numeric " + "(RemoteBoundaryVisualizerSubTask)"); } m_attsToWeightOn = new boolean[m_trainingData.numAttributes()]; m_attsToWeightOn[m_xAttribute] = true; m_attsToWeightOn[m_yAttribute] = true; // generate samples m_weightingAttsValues = new double[m_attsToWeightOn.length]; m_vals = new double[m_trainingData.numAttributes()]; m_predInst = new Instance(1.0, m_vals); m_predInst.setDataset(m_trainingData); System.err.println("Executing row number " + m_rowNumber); for (int j = 0; j < m_panelWidth; j++) { double[] preds = calculateRegionProbs(j, m_rowNumber); m_result.setLocationProbs(j, preds); m_result.setPercentCompleted((int) (100 * ((double) j / (double) m_panelWidth))); } } catch (Exception ex) { m_status.setExecutionStatus(TaskStatusInfo.FAILED); m_status.setStatusMessage("Row " + m_rowNumber + " failed."); System.err.print(ex); return; } // finished m_status.setExecutionStatus(TaskStatusInfo.FINISHED); m_status.setStatusMessage("Row " + m_rowNumber + " completed successfully."); }