📄 resultspanel.java
字号:
gbC = new GridBagConstraints(); gbC.fill = GridBagConstraints.BOTH; gbC.gridy = 0; gbC.gridx = 1; gbC.gridheight = 3; gbC.weightx = 100; gbC.weighty = 100; gbL.setConstraints(output, gbC); mondo.add(output); setLayout(new BorderLayout()); add(p1, BorderLayout.NORTH); add(mondo , BorderLayout.CENTER); } /** * Sets the combo-boxes to a fixed size so they don't take up too much room * that would be better devoted to the test output box */ protected void setComboSizes() { m_DatasetKeyBut.setPreferredSize(COMBO_SIZE); m_RunCombo.setPreferredSize(COMBO_SIZE); m_ResultKeyBut.setPreferredSize(COMBO_SIZE); m_CompareCombo.setPreferredSize(COMBO_SIZE); m_SigTex.setPreferredSize(COMBO_SIZE); m_DatasetKeyBut.setMaximumSize(COMBO_SIZE); m_RunCombo.setMaximumSize(COMBO_SIZE); m_ResultKeyBut.setMaximumSize(COMBO_SIZE); m_CompareCombo.setMaximumSize(COMBO_SIZE); m_SigTex.setMaximumSize(COMBO_SIZE); m_DatasetKeyBut.setMinimumSize(COMBO_SIZE); m_RunCombo.setMinimumSize(COMBO_SIZE); m_ResultKeyBut.setMinimumSize(COMBO_SIZE); m_CompareCombo.setMinimumSize(COMBO_SIZE); m_SigTex.setMinimumSize(COMBO_SIZE); } /** * Tells the panel to use a new experiment. * * @param exp a value of type 'Experiment' */ public void setExperiment(Experiment exp) { m_Exp = exp; setFromExpEnabled(); } /** * Updates whether the current experiment is of a type that we can * determine the results destination. */ protected void setFromExpEnabled() { if ((m_Exp.getResultListener() instanceof InstancesResultListener) || (m_Exp.getResultListener() instanceof DatabaseResultListener)) { m_FromExpBut.setEnabled(true); } else { m_FromExpBut.setEnabled(false); } } /** * Queries the user enough to make a database query to retrieve experiment * results. */ protected void setInstancesFromDBaseQuery() { try { if (m_InstanceQuery == null) { m_InstanceQuery = new InstanceQuery(); } String dbaseURL = m_InstanceQuery.getDatabaseURL(); dbaseURL = (String) JOptionPane.showInputDialog(this, "Enter the database URL", "Query Database", JOptionPane.PLAIN_MESSAGE, null, null, dbaseURL); if (dbaseURL == null) { m_FromLab.setText("Cancelled"); return; } m_InstanceQuery.setDatabaseURL(dbaseURL); m_InstanceQuery.connectToDatabase(); if (!m_InstanceQuery.experimentIndexExists()) { m_FromLab.setText("No experiment index"); return; } m_FromLab.setText("Getting experiment index"); Instances index = m_InstanceQuery.retrieveInstances("SELECT * FROM " + InstanceQuery.EXP_INDEX_TABLE); if (index.numInstances() == 0) { m_FromLab.setText("No experiments available"); return; } m_FromLab.setText("Got experiment index"); DefaultListModel lm = new DefaultListModel(); for (int i = 0; i < index.numInstances(); i++) { lm.addElement(index.instance(i).toString()); } JList jl = new JList(lm); ListSelectorDialog jd = new ListSelectorDialog(null, jl); int result = jd.showDialog(); if (result != ListSelectorDialog.APPROVE_OPTION) { m_FromLab.setText("Cancelled"); return; } Instance selInst = index.instance(jl.getSelectedIndex()); Attribute tableAttr = index.attribute(InstanceQuery.EXP_RESULT_COL); String table = InstanceQuery.EXP_RESULT_PREFIX + selInst.toString(tableAttr); setInstancesFromDatabaseTable(table); } catch (Exception ex) { m_FromLab.setText("Problem reading database"); } } /** * Examines the supplied experiment to determine the results destination * and attempts to load the results. * * @param exp a value of type 'Experiment' */ protected void setInstancesFromExp(Experiment exp) { if (exp.getResultListener() instanceof InstancesResultListener) { File resultFile = ((InstancesResultListener) exp.getResultListener()) .getOutputFile(); if ((resultFile == null) || (resultFile.getName().equals("-"))) { m_FromLab.setText("No result file"); } else { setInstancesFromFile(resultFile); } } else if (exp.getResultListener() instanceof DatabaseResultListener) { String dbaseURL = ((DatabaseResultListener) exp.getResultListener()) .getDatabaseURL(); try { if (m_InstanceQuery == null) { m_InstanceQuery = new InstanceQuery(); } m_InstanceQuery.setDatabaseURL(dbaseURL); m_InstanceQuery.connectToDatabase(); String tableName = m_InstanceQuery .getResultsTableName(exp.getResultProducer()); setInstancesFromDatabaseTable(tableName); } catch (Exception ex) { m_FromLab.setText("Problem reading database"); } } else { m_FromLab.setText("Can't get results from experiment"); } } /** * Queries a database to load results from the specified table name. The * database connection must have already made by m_InstanceQuery. * * @param tableName the name of the table containing results to retrieve. */ protected void setInstancesFromDatabaseTable(String tableName) { try { m_FromLab.setText("Reading from database, please wait..."); final Instances i = m_InstanceQuery.retrieveInstances("SELECT * FROM " + tableName); SwingUtilities.invokeAndWait(new Runnable() { public void run() { setInstances(i); } }); m_InstanceQuery.disconnectFromDatabase(); } catch (Exception ex) { m_FromLab.setText(ex.getMessage()); } } /** * Loads results from a set of instances contained in the supplied * file. * * @param f a value of type 'File' */ protected void setInstancesFromFile(File f) { try { m_FromLab.setText("Reading from file..."); Reader r = new BufferedReader(new FileReader(f)); setInstances(new Instances(r)); } catch (Exception ex) { ex.printStackTrace(); m_FromLab.setText(ex.getMessage()); } } /** * Sets up the panel with a new set of instances, attempting * to guess the correct settings for various columns. * * @param newInstances the new set of results. */ public void setInstances(Instances newInstances) { m_Instances = newInstances; m_TTester.setInstances(m_Instances); m_FromLab.setText("Got " + m_Instances.numInstances() + " results"); // Temporarily remove the configuration listener m_RunCombo.removeActionListener(m_ConfigureListener); // Do other stuff m_DatasetKeyModel.removeAllElements(); m_RunModel.removeAllElements(); m_ResultKeyModel.removeAllElements(); m_CompareModel.removeAllElements(); int datasetCol = -1; int runCol = -1; String selectedList = ""; String selectedListDataset = ""; for (int i = 0; i < m_Instances.numAttributes(); i++) { String name = m_Instances.attribute(i).name(); m_DatasetKeyModel.addElement(name); m_RunModel.addElement(name); m_ResultKeyModel.addElement(name); m_CompareModel.addElement(name); if (name.toLowerCase().equals("key_dataset")) { m_DatasetKeyList.addSelectionInterval(i, i); selectedListDataset += "," + (i + 1); } else if ((runCol == -1) && (name.toLowerCase().equals("key_run"))) { m_RunCombo.setSelectedIndex(i); runCol = i; } else if (name.toLowerCase().equals("key_scheme") || name.toLowerCase().equals("key_scheme_options") || name.toLowerCase().equals("key_scheme_version_id")) { m_ResultKeyList.addSelectionInterval(i, i); selectedList += "," + (i + 1); } else if (name.toLowerCase().indexOf("percent_correct") != -1) { m_CompareCombo.setSelectedIndex(i); // break; } } if (runCol == -1) { runCol = 0; } m_DatasetKeyBut.setEnabled(true); m_RunCombo.setEnabled(true); m_ResultKeyBut.setEnabled(true); m_CompareCombo.setEnabled(true); // Reconnect the configuration listener m_RunCombo.addActionListener(m_ConfigureListener); // Set up the TTester with the new data m_TTester.setRunColumn(runCol); Range generatorRange = new Range(); if (selectedList.length() != 0) { try { generatorRange.setRanges(selectedList); } catch (Exception ex) { ex.printStackTrace(); System.err.println(ex.getMessage()); } } m_TTester.setResultsetKeyColumns(generatorRange); generatorRange = new Range(); if (selectedListDataset.length() != 0) { try { generatorRange.setRanges(selectedListDataset); } catch (Exception ex) { ex.printStackTrace(); System.err.println(ex.getMessage()); } } m_TTester.setDatasetKeyColumns(generatorRange); m_SigTex.setEnabled(true); setTTester(); } /** * Updates the test chooser with possible tests */ protected void setTTester() { String name = (new SimpleDateFormat("HH:mm:ss - ")) .format(new Date()) + "Available resultsets"; StringBuffer outBuff = new StringBuffer(); outBuff.append("Available resultsets\n" + m_TTester.resultsetKey() + "\n\n"); m_History.addResult(name, outBuff); m_History.setSingle(name); m_TestsModel.removeAllElements(); for (int i = 0; i < m_TTester.getNumResultsets(); i++) { String tname = m_TTester.getResultsetName(i); /* if (tname.length() > 20) { tname = tname.substring(0, 20); } */ m_TestsModel.addElement(tname); } m_TestsModel.addElement("Summary"); m_TestsModel.addElement("Ranking"); m_TestsList.setSelectedIndex(0); m_TestsButton.setEnabled(true); m_PerformBut.setEnabled(true); } /** * Carries out a t-test using the current configuration. */ protected void performTest() { String sigStr = m_SigTex.getText(); if (sigStr.length() != 0) { m_TTester.setSignificanceLevel((new Double(sigStr)).doubleValue()); } else { m_TTester.setSignificanceLevel(0.05); } // Carry out the test chosen and biff the results to the output area m_TTester.setShowStdDevs(m_ShowStdDevs.isSelected()); int compareCol = m_CompareCombo.getSelectedIndex(); int tType = m_TestsList.getSelectedIndex(); String name = (new SimpleDateFormat("HH:mm:ss - ")) .format(new Date()) + (String) m_CompareCombo.getSelectedItem() + " - " + (String) m_TestsList.getSelectedValue(); StringBuffer outBuff = new StringBuffer(); outBuff.append(m_TTester.header(compareCol)); outBuff.append("\n"); m_History.addResult(name, outBuff); m_History.setSingle(name); try { if (tType < m_TTester.getNumResultsets()) { outBuff.append(m_TTester.multiResultsetFull(tType, compareCol)); } else if (tType == m_TTester.getNumResultsets()) { outBuff.append(m_TTester.multiResultsetSummary(compareCol)); } else { outBuff.append(m_TTester.multiResultsetRanking(compareCol)); } outBuff.append("\n"); } catch (Exception ex) { outBuff.append(ex.getMessage() + "\n"); } m_History.updateResult(name); } public void setResultKeyFromDialog() { ListSelectorDialog jd = new ListSelectorDialog(null, m_ResultKeyList); // Open the dialog int result = jd.showDialog(); // If accepted, update the ttester if (result == ListSelectorDialog.APPROVE_OPTION) { int [] selected = m_ResultKeyList.getSelectedIndices(); String selectedList = ""; for (int i = 0; i < selected.length; i++) { selectedList += "," + (selected[i] + 1); } Range generatorRange = new Range(); if (selectedList.length() != 0) { try { generatorRange.setRanges(selectedList); } catch (Exception ex) { ex.printStackTrace(); System.err.println(ex.getMessage()); } } m_TTester.setResultsetKeyColumns(generatorRange); setTTester(); } } public void setDatasetKeyFromDialog() { ListSelectorDialog jd = new ListSelectorDialog(null, m_DatasetKeyList); // Open the dialog int result = jd.showDialog(); // If accepted, update the ttester if (result == ListSelectorDialog.APPROVE_OPTION) { int [] selected = m_DatasetKeyList.getSelectedIndices(); String selectedList = ""; for (int i = 0; i < selected.length; i++) { selectedList += "," + (selected[i] + 1); } Range generatorRange = new Range(); if (selectedList.length() != 0) { try { generatorRange.setRanges(selectedList); } catch (Exception ex) { ex.printStackTrace(); System.err.println(ex.getMessage()); } } m_TTester.setDatasetKeyColumns(generatorRange); setTTester(); } } public void setTestBaseFromDialog() { ListSelectorDialog jd = new ListSelectorDialog(null, m_TestsList); // Open the dialog jd.showDialog(); } /** * Save the currently selected result buffer to a file. */ protected void saveBuffer() { StringBuffer sb = m_History.getSelectedBuffer(); if (sb != null) { if (m_SaveOut.save(sb)) { JOptionPane.showMessageDialog(this, "File saved", "Results", JOptionPane.INFORMATION_MESSAGE); } } else { m_SaveOutBut.setEnabled(false); } } /** * Tests out the results panel from the command line. * * @param args ignored */ public static void main(String [] args) { try { final JFrame jf = new JFrame("Weka Experiment: Results Analysis"); jf.getContentPane().setLayout(new BorderLayout()); final ResultsPanel sp = new ResultsPanel(); //sp.setBorder(BorderFactory.createTitledBorder("Setup")); jf.getContentPane().add(sp, BorderLayout.CENTER); jf.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { jf.dispose(); System.exit(0); } }); jf.pack(); jf.setSize(700, 550); jf.setVisible(true); } catch (Exception ex) { ex.printStackTrace(); System.err.println(ex.getMessage()); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -