/** * Construct a new RemoteExperiment using an empty Experiment as base * Experiment * * @throws Exception if the base experiment is null */ public RemoteExperiment() throws Exception { this(new Experiment()); }
public void runExperiment(boolean verbose) { while (hasMoreIterations()) { try { if (verbose) { String current = "Iteration:"; if (getUsePropertyIterator()) { int cnum = getCurrentPropertyNumber(); String ctype = getPropertyArray().getClass().getComponentType() .getName(); int lastDot = ctype.lastIndexOf('.'); if (lastDot != -1) { ctype = ctype.substring(lastDot + 1); } String cname = " " + ctype + "=" + (cnum + 1) + ":" + getPropertyArrayValue(cnum).getClass().getName(); current += cname; } String dname = ((File) getDatasets().elementAt( getCurrentDatasetNumber())).getName(); current += " Dataset=" + dname + " Run=" + (getCurrentRunNumber()); System.out.println(current); } nextIteration(); } catch (Exception ex) { ex.printStackTrace(); System.err.println(ex.getMessage()); advanceCounters(); // Try to keep plowing through } } }
/** * additional post-processing can happen in derived classes after reading from * XML. * * @param o the object to perform some additional processing on * @return the processed object * @throws Exception if post-processing fails */ @Override protected Object readPostProcess(Object o) throws Exception { Element node; Experiment exp; int i; Vector<Element> children; exp = (Experiment) o; // classfirst children = XMLDocument.getChildTags(m_Document.getDocument() .getDocumentElement()); for (i = 0; i < children.size(); i++) { node = children.get(i); if (node.getAttribute(ATT_NAME).equals(NAME_CLASSFIRST)) { exp .classFirst(new Boolean(XMLDocument.getContent(node)).booleanValue()); break; } } return o; }
if (m_RunNumber > getRunUpper()) { m_RunNumber = getRunLower(); m_DatasetNumber++; m_CurrentInstances = null; if (m_DatasetNumber >= getDatasets().size()) { m_DatasetNumber = 0; if (m_UsePropertyIterator) { if (m_RunNumber > getRunUpper()) { m_RunNumber = getRunLower(); if (m_UsePropertyIterator) { m_PropertyNumber++; m_DatasetNumber++; m_CurrentInstances = null; if (m_DatasetNumber >= getDatasets().size()) { m_Finished = true; m_DatasetNumber++; m_CurrentInstances = null; if (m_DatasetNumber >= getDatasets().size()) { m_Finished = true;
String[] options = new String[rpOptions.length + getDatasets().size() * 2 + 11]; int current = 0; options[current++] = "" + getRunLower(); options[current++] = "-U"; options[current++] = "" + getRunUpper(); if (getDatasets().size() != 0) { for (int i = 0; i < getDatasets().size(); i++) { options[current++] = "-T"; options[current++] = getDatasets().elementAt(i).toString(); if (getResultListener() != null) { options[current++] = "-D"; options[current++] = getResultListener().getClass().getName(); if (getResultProducer() != null) { options[current++] = "-P"; options[current++] = getResultProducer().getClass().getName(); if (!getNotes().equals("")) { options[current++] = "-N"; options[current++] = getNotes();
if (exp.getResultListener() instanceof DatabaseResultListener) { m_ResultsDestinationCBox.setSelectedItem(DEST_DATABASE_TEXT); m_ResultsDestinationPathLabel.setText("URL:"); m_destinationDatabaseURL = ((DatabaseResultListener)exp.getResultListener()).getDatabaseURL(); m_ResultsDestinationPathTField.setText(m_destinationDatabaseURL); m_BrowseDestinationButton.setEnabled(true); } else if (exp.getResultListener() instanceof InstancesResultListener) { m_ResultsDestinationCBox.setSelectedItem(DEST_ARFF_TEXT); m_ResultsDestinationPathLabel.setText("Filename:"); m_destinationFilename = ((InstancesResultListener)exp.getResultListener()).outputFileName(); m_ResultsDestinationPathTField.setText(m_destinationFilename); m_BrowseDestinationButton.setEnabled(true); } else if (exp.getResultListener() instanceof CSVResultListener) { m_ResultsDestinationCBox.setSelectedItem(DEST_CSV_TEXT); m_ResultsDestinationPathLabel.setText("Filename:"); m_destinationFilename = ((CSVResultListener)exp.getResultListener()).outputFileName(); m_ResultsDestinationPathTField.setText(m_destinationFilename); m_BrowseDestinationButton.setEnabled(true); if (exp.getResultProducer() instanceof CrossValidationResultProducer) { CrossValidationResultProducer cvrp = (CrossValidationResultProducer) exp.getResultProducer(); m_numFolds = cvrp.getNumFolds(); m_ExperimentParameterTField.setText("" + m_numFolds); } else if (exp.getResultProducer() instanceof RandomSplitResultProducer) { RandomSplitResultProducer rsrp = (RandomSplitResultProducer) exp.getResultProducer(); if (rsrp.getRandomizeData()) { m_ExperimentTypeCBox.setSelectedItem(TYPE_RANDOMSPLIT_TEXT);
boolean iteratorOn = exp.getUsePropertyIterator(); Object propArray = exp.getPropertyArray(); PropertyNode[] propPath = exp.getPropertyPath(); m_RPEditor.setValue(m_Exp.getResultProducer()); m_RPEditor.setEnabled(true); m_RPEditorPanel.setEnabled(true); m_RPEditorPanel.repaint(); m_RLEditor.setValue(m_Exp.getResultListener()); m_RLEditor.setEnabled(true); m_RLEditorPanel.setEnabled(true); m_RLEditorPanel.repaint(); m_NotesText.setText(exp.getNotes()); m_NotesButton.setEnabled(true); m_advanceDataSetFirst.setSelected(m_Exp.getAdvanceDataSetFirst()); m_advanceIteratorFirst.setSelected(!m_Exp.getAdvanceDataSetFirst()); m_advanceDataSetFirst.setEnabled(true); m_advanceIteratorFirst.setEnabled(true); exp.setPropertyPath(propPath); exp.setPropertyArray(propArray); exp.setUsePropertyIterator(iteratorOn);
/** * Set the base experiment. A sub experiment will be created for each run in * the base experiment. * * @param base the base experiment to use. * @throws Exception if supplied base experiment is null */ public void setBaseExperiment(Experiment base) throws Exception { if (base == null) { throw new Exception("Base experiment is null!"); } m_baseExperiment = base; setRunLower(m_baseExperiment.getRunLower()); setRunUpper(m_baseExperiment.getRunUpper()); setResultListener(m_baseExperiment.getResultListener()); setResultProducer(m_baseExperiment.getResultProducer()); setDatasets(m_baseExperiment.getDatasets()); setUsePropertyIterator(m_baseExperiment.getUsePropertyIterator()); setPropertyPath(m_baseExperiment.getPropertyPath()); setPropertyArray(m_baseExperiment.getPropertyArray()); setNotes(m_baseExperiment.getNotes()); m_ClassFirst = m_baseExperiment.m_ClassFirst; m_AdvanceDataSetFirst = m_baseExperiment.m_AdvanceDataSetFirst; }
boolean verbose = Utils.getFlag("verbose", args); if (expFile.length() == 0) { exp = new Experiment(); try { exp.setOptions(args); Utils.checkForRemainingOptions(args); } catch (Exception ex) { exp = read(expFile); if (dataName.length() != 0) { File dataset = new File(dataName); exp.getDatasets().addElement(dataset); System.err.println("Experiment:\n" + exp.toString()); write(saveFile, exp); exp.initialize(); System.err.println("Iterating..."); exp.runExperiment(verbose); System.err.println("Postprocessing..."); exp.postProcess();
setRunLower(Integer.parseInt(lowerString)); } else { setRunLower(1); setRunUpper(Integer.parseInt(upperString)); } else { setRunUpper(10); if (getRunLower() > getRunUpper()) { throw new Exception("Lower (" + getRunLower() + ") is greater than upper (" + getRunUpper() + ")"); setNotes(Utils.getOption('N', options)); getDatasets().removeAllElements(); String dataName; do { if (dataName.length() != 0) { File dataset = new File(dataName); getDatasets().addElement(dataset); if (getDatasets().size() == 0) { throw new Exception("Required: -T <arff file name>"); setResultListener((ResultListener) Utils.forName(ResultListener.class, clName, rlOptions)); setResultProducer((ResultProducer) Utils.forName(ResultProducer.class,
String goodResult = "(sub)experiment completed successfully"; String subTaskType; if (m_experiment.getRunLower() != m_experiment.getRunUpper()) { subTaskType = "(dataset " + ((File) m_experiment.getDatasets().elementAt(0)).getName(); } else { subTaskType = "(exp run # " + m_experiment.getRunLower(); m_experiment.initialize(); System.err.println("Iterating " + subTaskType + ")..."); while (m_experiment.hasMoreIterations()) { m_experiment.nextIteration(); m_experiment.postProcess(); } catch (Exception ex) { ex.printStackTrace();
int numExps; if (getSplitByDataSet()) { numExps = m_baseExperiment.getDatasets().size(); } else if (getSplitByProperty()) { numExps = m_baseExperiment.getPropertyArrayLength(); } else { numExps = getRunUpper() - getRunLower() + 1; for (int i = 0; i < m_baseExperiment.getDatasets().size(); i++) { m_subExperiments[i] = (Experiment) so.getObject(); temp.addElement(m_baseExperiment.getDatasets().get(i)); m_subExperiments[i].setDatasets(temp); m_subExpQueue.push(new Integer(i)); for (int i = 0; i < m_baseExperiment.getPropertyArrayLength(); i++) { m_subExperiments[i] = (Experiment) so.getObject(); Object[] a = new Object[1]; a[0] = m_baseExperiment.getPropertyArrayValue(i); m_subExperiments[i].setPropertyArray(a); m_subExpQueue.push(new Integer(i)); m_subExperiments[i - getRunLower()] = (Experiment) so.getObject(); m_subExperiments[i - getRunLower()].setRunLower(i); m_subExperiments[i - getRunLower()].setRunUpper(i);
m_RunNumber = getRunLower(); m_DatasetNumber = 0; m_PropertyNumber = 0; throw new Exception("Null array for property iterator"); if (getRunLower() > getRunUpper()) { throw new Exception("Lower run number is greater than upper run number"); if (getDatasets().size() == 0) { throw new Exception("No datasets have been specified"); determineAdditionalResultMeasures();
public void actionPerformed(ActionEvent e) { Experiment newExp = new Experiment(); CrossValidationResultProducer cvrp = new CrossValidationResultProducer(); cvrp.setNumFolds(10); cvrp.setSplitEvaluator(new ClassifierSplitEvaluator()); newExp.setResultProducer(cvrp); newExp.setPropertyArray(new Classifier[0]); newExp.setUsePropertyIterator(true); setExperiment(newExp);
setProperty(0, m_ResultProducer); m_CurrentProperty = m_PropertyNumber; File currentFile = (File) getDatasets().elementAt(m_DatasetNumber); AbstractFileLoader loader = ConverterUtils.getLoaderForFile(currentFile); loader.setFile(currentFile); advanceCounters();
if (getSplitByDataSet()) { subTaskType = "dataset: " + ((File) m_subExperiments[wexp].getDatasets().elementAt(0)) .getName(); } else if (getSplitByProperty()) { subTaskType = "property: " + m_subExperiments[wexp].getPropertyArrayValue(0).getClass().getName() + " :" + m_subExperiments[wexp].getPropertyArrayValue(0); } else { subTaskType = "run: " + m_subExperiments[wexp].getRunLower();
exp = new Experiment(); System.err.println("Initial Experiment:\n" + exp.toString()); final JFrame jf = new JFrame("Run Weka Experiment"); jf.getContentPane().setLayout(new BorderLayout());
if ((getSplitByDataSet() && (m_baseExperiment.getDatasets().size() == m_finishedCount)) || (getSplitByProperty() && (m_baseExperiment.getPropertyArrayLength() == m_finishedCount)) || (!getSplitByDataSet() && !getSplitByProperty() && (getRunUpper() - getRunLower() + 1) == m_finishedCount)) { notifyListeners(false, true, false, "Experiment completed successfully.");
base = new Experiment(); try { base.setOptions(args); Utils.checkForRemainingOptions(args); } catch (Exception ex) {
/** * Tells the panel to act on a new experiment. * * @param exp a value of type 'Experiment' */ public void setExperiment(Experiment exp) { m_Exp = exp; m_List.setModel(m_Exp.getDatasets()); m_AddBut.setEnabled(true); setButtons(null); }