List of usage examples for weka.core.converters ConverterUtils getLoaderForFile
public static AbstractFileLoader getLoaderForFile(File file)
From source file:adams.gui.chooser.DatasetFileChooserPanel.java
License:Open Source License
/** * Initializes the converters./*from w w w . jav a 2 s . c om*/ * * @param path the path/filename to use */ protected void initializeConverters(File path) { if ((path.length() > 0) && path.isFile()) { try { m_Loader = ConverterUtils.getLoaderForFile(path.getAbsoluteFile()); if (m_Loader != null) m_Loader.setFile(path.getAbsoluteFile()); } catch (Exception e) { e.printStackTrace(); } m_Saver = ConverterUtils.getSaverForFile(path.getAbsoluteFile()); } else { m_Loader = null; m_Saver = null; } }
From source file:adams.gui.menu.AppendDatasets.java
License:Open Source License
/** * Performs the append.// w w w .j a va2 s. co m * * @param frame the frame to close * @param input the files to merge * @param output the output file */ protected void doAppend(ChildFrame frame, File[] input, File output) { Instances[] data; Instances full; int i; int n; AbstractFileLoader loader; DataSink sink; int count; TIntArrayList transferAtt; int index; if (input.length < 2) { GUIHelper.showErrorMessage(getOwner(), "At least two files are required!"); return; } // load and check compatibility loader = ConverterUtils.getLoaderForFile(input[0]); data = new Instances[input.length]; count = 0; transferAtt = new TIntArrayList(); for (i = 0; i < input.length; i++) { try { loader.setFile(input[i]); data[i] = DataSource.read(loader); if (i > 0) { if (!data[0].equalHeaders(data[i])) { GUIHelper.showErrorMessage(getOwner(), "Datasets '" + input[0] + "' and '" + input[i] + "' are not compatible!\n" + data[0].equalHeadersMsg(data[i])); return; } } else { for (n = 0; n < data[0].numAttributes(); n++) { if (data[0].attribute(n).isString() || data[0].attribute(n).isRelationValued()) transferAtt.add(n); } } count += data[i].numInstances(); } catch (Exception e) { GUIHelper.showErrorMessage(getOwner(), "Failed to read '" + input[i] + "'!\n" + Utils.throwableToString(e)); return; } } // combine full = new Instances(data[0], count); for (i = 0; i < data.length; i++) { for (Instance inst : data[i]) { if (transferAtt.size() > 0) { for (n = 0; n < transferAtt.size(); n++) { index = transferAtt.get(n); if (inst.attribute(index).isString()) full.attribute(index).addStringValue(inst.stringValue(index)); else if (inst.attribute(n).isRelationValued()) full.attribute(index).addRelation(inst.relationalValue(index)); else throw new IllegalStateException( "Unhandled attribute type: " + Attribute.typeToString(inst.attribute(index))); } } full.add(inst); } } // save try { sink = new DataSink(output.getAbsolutePath()); sink.write(full); } catch (Exception e) { GUIHelper.showErrorMessage(getOwner(), "Failed to save data to '" + output + "'!\n" + Utils.throwableToString(e)); return; } GUIHelper.showInformationMessage(null, "Successfully appended!\n" + output); frame.dispose(); }
From source file:adams.gui.menu.BatchFilterDatasets.java
License:Open Source License
/** * Performs the batch filtering.//from w ww . j a v a2s . com * * @param frame the frame to close * @param input the files to filter * @param filter the filter setup * @param classIndex the class index, empty for no class * @param keep whether to keep the relation name * @param outdir the output directory */ protected void batchFilter(ChildFrame frame, String[] input, Filter filter, String classIndex, boolean keep, File outdir) { Instances[] data; int i; AbstractFileLoader loader; Instances filtered; int clsIndex; String outfile; StringBuilder outfiles; if (input.length < 2) { GUIHelper.showErrorMessage(getOwner(), "At least two files are required!"); return; } // load and check compatibility loader = ConverterUtils.getLoaderForFile(input[0]); data = new Instances[input.length]; for (i = 0; i < input.length; i++) { try { loader.setFile(new File(input[i])); data[i] = DataSource.read(loader); } catch (Exception e) { GUIHelper.showErrorMessage(getOwner(), "Failed to read '" + input[i] + "'!\n" + Utils.throwableToString(e)); return; } } // class index if (classIndex.isEmpty()) { clsIndex = -1; } else { try { if (classIndex.equalsIgnoreCase("first")) clsIndex = 0; else if (classIndex.equalsIgnoreCase("last")) clsIndex = data[0].numAttributes() - 1; else clsIndex = Integer.parseInt(classIndex) - 1; } catch (Exception e) { GUIHelper.showErrorMessage(getOwner(), "Failed to parse class attribute index: " + classIndex + "\n" + Utils.throwableToString(e)); return; } } // filter outfiles = new StringBuilder(); for (i = 0; i < input.length; i++) { try { outfile = outdir.getAbsolutePath() + File.separator + new File(input[i]).getName(); data[i].setClassIndex(clsIndex); if (i == 0) filter.setInputFormat(data[i]); filtered = Filter.useFilter(data[i], filter); if (keep) filtered.setRelationName(data[i].relationName()); DataSink.write(outfile, filtered); if (outfiles.length() > 0) outfiles.append("\n"); outfiles.append(outfile); } catch (Exception e) { GUIHelper.showErrorMessage(getOwner(), "Failed to filter dataset #" + (i + 1) + " ('" + input[i] + "')!\n" + Utils.throwableToString(e)); return; } } GUIHelper.showInformationMessage(null, "Successfully filtered!\n" + outfiles); frame.dispose(); }
From source file:adams.gui.menu.Explorer.java
License:Open Source License
/** * Launches the functionality of the menu item. *//*from w ww . ja v a2s . co m*/ @Override public void launch() { weka.gui.explorer.Explorer explorer = new weka.gui.explorer.Explorer(); createChildFrame(explorer, GUIHelper.getDefaultDialogDimension()); if (m_Parameters.length > 0) { PlaceholderFile[] files = new PlaceholderFile[m_Parameters.length]; for (int i = 0; i < m_Parameters.length; i++) files[i] = new PlaceholderFile(m_Parameters[i]); try { AbstractFileLoader loader = ConverterUtils.getLoaderForFile(files[0]); loader.setFile(files[0].getAbsoluteFile()); explorer.getPreprocessPanel().setInstancesFromFile(loader); } catch (Exception e) { GUIHelper.showErrorMessage(getOwner(), "Failed to load: " + files[0] + "\n" + Utils.throwableToString(e)); } } }
From source file:adams.gui.menu.InstancesPlot.java
License:Open Source License
/** * Launches the functionality of the menu item. *///from ww w .j ava 2s . c om @Override public void launch() { File file; AbstractFileLoader loader; if (m_Parameters.length == 0) { // choose file int retVal = m_FileChooser.showOpenDialog(getOwner()); if (retVal != JFileChooser.APPROVE_OPTION) return; file = m_FileChooser.getSelectedFile(); loader = m_FileChooser.getLoader(); } else { file = new PlaceholderFile(m_Parameters[0]).getAbsoluteFile(); loader = ConverterUtils.getLoaderForFile(file); } // build plot VisualizePanel panel = new VisualizePanel(); getLogger().severe("Loading instances from " + file); try { loader.setFile(file); Instances i = loader.getDataSet(); i.setClassIndex(i.numAttributes() - 1); PlotData2D pd1 = new PlotData2D(i); pd1.setPlotName("Master plot"); panel.setMasterPlot(pd1); } catch (Exception e) { getLogger().log(Level.SEVERE, "Failed to load: " + file, e); GUIHelper.showErrorMessage(getOwner(), "Error loading file '" + file + "':\n" + Utils.throwableToString(e)); return; } // create frame ChildFrame frame = createChildFrame(panel, GUIHelper.getDefaultDialogDimension()); frame.setTitle(frame.getTitle() + " - " + file); }
From source file:adams.gui.menu.MergeDatasets.java
License:Open Source License
/** * Performs the merge.//from w ww .jav a 2 s . c om * * @param frame the frame to close * @param input the files to merge * @param merge the merge setup * @param output the output file */ protected void doMerge(ChildFrame frame, File[] input, WekaMergeInstancesActor merge, File output) { Instances[] data; Instances full; int i; AbstractFileLoader loader; DataSink sink; Token token; String msg; if (input.length < 2) { GUIHelper.showErrorMessage(getOwner(), "At least two files are required!"); return; } // load and check compatibility loader = ConverterUtils.getLoaderForFile(input[0]); data = new Instances[input.length]; for (i = 0; i < input.length; i++) { try { loader.setFile(input[i]); data[i] = DataSource.read(loader); } catch (Exception e) { GUIHelper.showErrorMessage(getOwner(), "Failed to read '" + input[i] + "'!\n" + Utils.throwableToString(e)); return; } } // merge msg = merge.setUp(); if (msg != null) { GUIHelper.showErrorMessage(getOwner(), "Failed to set up merge actor!\n" + msg); return; } token = new Token(data); merge.input(token); msg = merge.execute(); if (msg != null) { GUIHelper.showErrorMessage(getOwner(), "Failed to merge files!\n" + Utils.flatten(input, "\n") + "\n\n" + msg); return; } token = merge.output(); full = (Instances) token.getPayload(); // save try { sink = new DataSink(output.getAbsolutePath()); sink.write(full); } catch (Exception e) { GUIHelper.showErrorMessage(getOwner(), "Failed to save data to '" + output + "'!\n" + Utils.throwableToString(e)); return; } GUIHelper.showInformationMessage(null, "Successfully merged!\n" + output); frame.dispose(); }
From source file:adams.gui.menu.Workbench.java
License:Open Source License
/** * Launches the functionality of the menu item. *//*from w w w . j av a 2 s . co m*/ @Override public void launch() { WorkbenchApp app = new WorkbenchApp(); createChildFrame(app, GUIHelper.getDefaultLargeDialogDimension()); if (app.getMainPerspective().acceptsInstances()) { if (m_Parameters.length > 0) { PlaceholderFile[] files = new PlaceholderFile[m_Parameters.length]; for (int i = 0; i < m_Parameters.length; i++) files[i] = new PlaceholderFile(m_Parameters[i]); try { AbstractFileLoader loader = ConverterUtils.getLoaderForFile(files[0]); loader.setFile(files[0].getAbsoluteFile()); app.getMainPerspective().setInstances(loader.getDataSet()); } catch (Exception e) { GUIHelper.showErrorMessage(getOwner(), "Failed to load: " + files[0] + "\n" + Utils.throwableToString(e)); } } } }
From source file:adams.gui.tools.DatasetCompatibilityPanel.java
License:Open Source License
/** * Opens the specified files, determines the loader automatically. * //from w w w . ja v a 2s .c om * @param files the files to open * @return null if successful, otherwise error message */ public String open(File[] files) { AbstractFileLoader loader; if (files.length < 2) return "You must supply at least two files!"; loader = ConverterUtils.getLoaderForFile(files[0].getAbsoluteFile()); if (loader == null) return "Failed to determine loader for files!"; return open(files, loader); }
From source file:meka.gui.dataviewer.DataTableModel.java
License:Open Source License
/** * loads the specified ARFF file//from w w w . j a v a 2 s. c o m * * @param filename the file to load * @param loaders optional varargs for a loader to use */ protected void loadFile(String filename, AbstractFileLoader... loaders) { AbstractFileLoader loader; Instances data; if (loaders == null || loaders.length == 0) { loader = ConverterUtils.getLoaderForFile(filename); } else { loader = loaders[0]; } if (loader != null) { try { loader.setFile(new File(filename)); data = loader.getDataSet(); // fix class attributes definition in relation name if necessary MLUtils.fixRelationName(data); MLUtils.prepareData(data); setInstances(data); } catch (Exception e) { ComponentHelper.showMessageBox(null, "Error loading file...", e.toString(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE); System.out.println(e); setInstances(null); } } }
From source file:meka.gui.dataviewer.DataViewerMainPanel.java
License:Open Source License
/** * loads the specified file/*from ww w . j a va2 s. com*/ * * @param filename the file to load * @param loaders optional varargs loader to use */ public void loadFile(String filename, AbstractFileLoader... loaders) { DataPanel panel; AbstractFileLoader loader; panel = new DataPanel(filename, loaders); panel.addChangeListener(this); m_TabbedPane.addTab(panel.getTitle(), panel); m_TabbedPane.setSelectedIndex(m_TabbedPane.getTabCount() - 1); if (loaders == null) loader = ConverterUtils.getLoaderForFile(filename); else loader = loaders[0]; m_RecentFilesHandler.addRecentItem(new RecentFilesHandlerWithCommandline.Setup(new File(filename), loader)); }