+ "\n\n" + m_eval.toSummaryString() + "\n" + m_eval.toClassDetailsString() + "\n" + m_eval.toMatrixString();
+ "\n\n" + m_eval.toSummaryString();  if (ce.getTestSet().getDataSet(). classAttribute().isNominal()) { resultT += "\n" + m_eval.toClassDetailsString() + "\n" + m_eval.toMatrixString(); }
	    public void run() {	      final String oldText = m_visual.getText();	      try {		if (ce.getSetNumber() == 1 || 		    ce.getClassifier() != m_classifier) {		  m_eval = new Evaluation(ce.getTestSet().getDataSet());		  m_classifier = ce.getClassifier();		  m_predInstances = 		    weka.gui.explorer.ClassifierPanel.		    setUpVisualizableInstances(new Instances(ce.getTestSet().getDataSet()));		  m_preds = new FastVector();		  m_plotShape = new FastVector();		  m_plotSize = new FastVector();		}		if (ce.getSetNumber() <= ce.getMaxSetNumber()) {		  m_visual.setText("Evaluating ("+ce.getSetNumber()+")...");		  if (m_logger != null) {		    m_logger.statusMessage("ClassifierPerformaceEvaluator : "					   +"evaluating ("+ce.getSetNumber()					   +")...");		  }		  m_visual.setAnimated();		  /*		  m_eval.evaluateModel(ce.getClassifier(), 		  ce.getTestSet().getDataSet()); */		  for (int i = 0; i < ce.getTestSet().getDataSet().numInstances(); i++) {		    Instance temp = ce.getTestSet().getDataSet().instance(i);		    weka.gui.explorer.ClassifierPanel.		    processClassifierPrediction(temp, ce.getClassifier(),						m_eval, m_preds,						m_predInstances, m_plotShape,						m_plotSize);		  }		}				if (ce.getSetNumber() == ce.getMaxSetNumber()) {		  System.err.println(m_eval.toSummaryString());		  // m_resultsString.append(m_eval.toSummaryString());		  // m_outText.setText(m_resultsString.toString());		  String textTitle = m_classifier.getClass().getName();		  textTitle = 		    textTitle.substring(textTitle.lastIndexOf('.')+1,					textTitle.length());		  String resultT = "=== Evaluation result ===\n\n"		    + "Scheme: " + textTitle + "\n"		    + "Relation: " + ce.getTestSet().getDataSet().relationName()		    + "\n\n" + m_eval.toSummaryString()                    + "\n" + m_eval.toClassDetailsString()                    + "\n" + m_eval.toMatrixString();		  TextEvent te = 		    new TextEvent(ClassifierPerformanceEvaluator.this, 				  resultT,				  textTitle);		  notifyTextListeners(te);                  // set up visualizable errors                  if (m_visualizableErrorListeners.size() > 0) {                    PlotData2D errorD = new PlotData2D(m_predInstances);                    errorD.setShapeSize(m_plotSize);                    errorD.setShapeType(m_plotShape);                    errorD.setPlotName(textTitle+" ("                                       +ce.getTestSet().getDataSet().relationName()                                       +")");                    errorD.addInstanceNumberAttribute();                    VisualizableErrorEvent vel =                       new VisualizableErrorEvent(ClassifierPerformanceEvaluator.this,                                                 errorD);                    notifyVisualizableErrorListeners(vel);                  }                  		  if (ce.getTestSet().getDataSet().classAttribute().isNominal()) {		    ThresholdCurve tc = new ThresholdCurve();		    Instances result = tc.getCurve(m_preds, 0);		    result.		      setRelationName(ce.getTestSet().getDataSet().relationName());		    PlotData2D pd = new PlotData2D(result);		    pd.setPlotName(textTitle+" ("				   +ce.getTestSet().getDataSet().				                   classAttribute().value(0)				   +")");		    boolean [] connectPoints = 		      new boolean [result.numInstances()];		    for (int jj = 1; jj < connectPoints.length; jj++) {		      connectPoints[jj] = true;		    }		    pd.setConnectPoints(connectPoints);		    ThresholdDataEvent rde = 		      new ThresholdDataEvent(ClassifierPerformanceEvaluator.this,				       pd);		    notifyThresholdListeners(rde);		    /*te = new TextEvent(ClassifierPerformanceEvaluator.this,				       result.toString(),				       "ThresholdCurveInst");				       notifyTextListeners(te); */		  }		  if (m_logger != null) {		    m_logger.statusMessage("Done.");		  }		}	      } catch (Exception ex) {		ex.printStackTrace();	      } finally {		m_visual.setText(oldText);		m_visual.setStatic();		m_evaluateThread = null;		if (isInterrupted()) {		  if (m_logger != null) {		    m_logger.logMessage("Evaluation interrupted!");		    m_logger.statusMessage("OK");		  }		}		block(false);	      }	    }