📄 resultspanel.java
字号:
JLabel lab = new JLabel("Run field", SwingConstants.RIGHT); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.EAST; gbC.gridy = 1; gbC.gridx = 0; gbC.insets = new Insets(2, 10, 2, 10); gbL.setConstraints(lab, gbC); p3.add(lab); gbC = new GridBagConstraints(); gbC.gridy = 1; gbC.gridx = 1; gbC.weightx = 100; gbC.insets = new Insets(5,0,5,0); gbL.setConstraints(m_RunCombo, gbC); p3.add(m_RunCombo); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.EAST; gbC.gridy = 2; gbC.gridx = 0; gbC.insets = new Insets(2, 10, 2, 10); gbL.setConstraints(m_ResultKeyLabel, gbC); p3.add(m_ResultKeyLabel); gbC = new GridBagConstraints(); gbC.gridy = 2; gbC.gridx = 1; gbC.weightx = 100; gbC.insets = new Insets(5,0,5,0); gbL.setConstraints(m_ResultKeyBut, gbC); p3.add(m_ResultKeyBut); lab = new JLabel("Comparison field", SwingConstants.RIGHT); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.EAST; gbC.gridy = 3; gbC.gridx = 0; gbC.insets = new Insets(2, 10, 2, 10); gbL.setConstraints(lab, gbC); p3.add(lab); gbC = new GridBagConstraints(); gbC.gridy = 3; gbC.gridx = 1; gbC.weightx = 100; gbC.insets = new Insets(5,0,5,0); gbL.setConstraints(m_CompareCombo, gbC); p3.add(m_CompareCombo); lab = new JLabel("Significance", SwingConstants.RIGHT); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.EAST; gbC.gridy = 4; gbC.gridx = 0; gbC.insets = new Insets(2, 10, 2, 10); gbL.setConstraints(lab, gbC); p3.add(lab); gbC = new GridBagConstraints(); gbC.gridy = 4; gbC.gridx = 1; gbC.weightx = 100; gbL.setConstraints(m_SigTex, gbC); p3.add(m_SigTex); lab = new JLabel("Test base", SwingConstants.RIGHT); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.EAST; gbC.gridy = 5; gbC.gridx = 0; gbC.insets = new Insets(2, 10, 2, 10); gbL.setConstraints(lab, gbC); p3.add(lab); gbC = new GridBagConstraints(); gbC.fill = GridBagConstraints.HORIZONTAL; gbC.gridy = 5; gbC.gridx = 1; gbC.weightx = 100; gbC.insets = new Insets(5,0,5,0); gbL.setConstraints(m_TestsButton, gbC); p3.add(m_TestsButton); //=============== BEGIN EDIT melville =============== lab = new JLabel("Significant digits", SwingConstants.RIGHT); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.EAST; gbC.gridy = 6; gbC.gridx = 0; gbC.insets = new Insets(2, 10, 2, 10); gbL.setConstraints(lab, gbC); p3.add(lab); gbC = new GridBagConstraints(); gbC.gridy = 6; gbC.gridx = 1; gbC.weightx = 100; gbL.setConstraints(m_PrecTex, gbC); p3.add(m_PrecTex); //=============== END EDIT melville =============== lab = new JLabel("Show std. deviations", SwingConstants.RIGHT); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.EAST; gbC.gridy = 7; gbC.gridx = 0; gbC.insets = new Insets(2, 10, 2, 10); gbL.setConstraints(lab, gbC); p3.add(lab); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.WEST; gbC.gridy = 7; gbC.gridx = 1; gbC.weightx = 100; gbC.insets = new Insets(5,0,5,0); gbL.setConstraints(m_ShowStdDevs, gbC); p3.add(m_ShowStdDevs); JPanel output = new JPanel(); output.setLayout(new BorderLayout()); output.setBorder(BorderFactory.createTitledBorder("Test output")); output.add(new JScrollPane(m_OutText), BorderLayout.CENTER); JPanel mondo = new JPanel(); gbL = new GridBagLayout(); mondo.setLayout(gbL); gbC = new GridBagConstraints(); // gbC.anchor = GridBagConstraints.WEST; // gbC.fill = GridBagConstraints.HORIZONTAL; gbC.gridy = 0; gbC.gridx = 0; gbL.setConstraints(p3, gbC); mondo.add(p3); JPanel bts = new JPanel(); bts.setLayout(new GridLayout(1,2,5,5)); bts.add(m_PerformBut); bts.add(m_SaveOutBut); //=============== BEGIN EDIT mbilenko =============== bts.add(m_PlotBut); //=============== END EDIT mbilenko =============== gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.NORTH; gbC.fill = GridBagConstraints.HORIZONTAL; gbC.gridy = 1; gbC.gridx = 0; gbC.insets = new Insets(5,5,5,5); gbL.setConstraints(bts, gbC); mondo.add(bts); gbC = new GridBagConstraints(); //gbC.anchor = GridBagConstraints.NORTH; gbC.fill = GridBagConstraints.BOTH; gbC.gridy = 2; gbC.gridx = 0; gbC.weightx = 0; gbL.setConstraints(m_History, gbC); mondo.add(m_History); 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); //=============== BEGIN EDIT melville =============== m_PrecTex.setPreferredSize(COMBO_SIZE); m_PrecTex.setMaximumSize(COMBO_SIZE); m_PrecTex.setMinimumSize(COMBO_SIZE); //=============== END EDIT melville =============== } /** * 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 = ""; //=============== BEGIN EDIT melville =============== boolean noise = false;//keep track of whether noise levels eval is required boolean learning = false;//keep track of whether learning curve eval is required boolean fraction = false;//keep track of whether fractions of datasets are provided for learning //the key on which to base the learning curves (either total instances or fraction) int learning_key = -1; boolean classificationTask = false;//used to determine if regression measures should be selected //=============== END EDIT melville =============== 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); //=============== BEGIN EDIT melville =============== //If learning curves were generated then treat each //dataset + pt combination as a different dataset if(name.toLowerCase().equals("key_noise_levels")){ //noise overrides learning curves - but treat noise levels //like pts on learning curve learning_key = i; learning = true; noise = true; //fraction = true; }else if(name.toLowerCase().equals("key_fraction_instances") && !noise){ //fraction overrides total_instances learning_key = i; learning = true; fraction = true; }else if(name.toLowerCase().equals("key_total_instances") && !learning){ learning_key = i; learning = true; }else //=============== END EDIT melville =============== if (name.toLowerCase().equals("key_dataset")) { m_DatasetKeyList.addSelectionInterval(i, i); selectedListDataset += "," + (i + 1); } else if ((runCol == -1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -