List of usage examples for weka.core.converters AbstractFileLoader setFile
@Override public void setFile(File file) throws IOException
From source file:adams.flow.transformer.WekaFileReader.java
License:Open Source License
/** * Executes the flow item./* w w w . j av a2s . c o m*/ * * @return null if everything is fine, otherwise error message */ @Override protected String doExecute() { String result; AbstractFileLoader loader; Object obj; File file; URL url; boolean isArff; String[] exts; String ext; result = null; try { obj = m_InputToken.getPayload(); exts = FileUtils.getExtensions(obj.toString().toLowerCase()); if ((exts != null) && (exts.length > 0)) { ext = exts[0]; isArff = (ext.equals("arff") || ext.equals("arff.gz")); } else { ext = ""; isArff = false; } file = null; url = null; if (obj instanceof File) file = new File(((File) obj).getAbsolutePath()); else if (obj instanceof URL) url = (URL) obj; else file = new File((new PlaceholderFile((String) obj)).getAbsolutePath()); m_Source = null; if (m_UseCustomLoader) { loader = m_CustomLoader; if (url != null) ((URLSourcedLoader) loader).setURL(url.toString()); else loader.setFile(file); m_Source = new DataSource(loader); } else { if (ext.isEmpty()) { result = "File has no extension to be used by file type detection, but no custom loader defined!"; } else { if (isArff) { if (url != null) { loader = new AArffLoader(); ((URLSourcedLoader) loader).setURL(url.toString()); } else { loader = new SimpleArffLoader(); loader.setFile(file); } m_Source = new DataSource(loader); } else { if (url != null) m_Source = new DataSource(url.toString()); else m_Source = new DataSource(file.getAbsolutePath()); } } } // obtain structure if (m_Source != null) m_Structure = m_Source.getStructure(); } catch (Exception e) { result = handleException("Failed to load data from: " + m_InputToken.getPayload(), e); } return result; }
From source file:adams.flow.transformer.WekaReorderAttributesToReference.java
License:Open Source License
/** * Loads the reference data.//from ww w .j av a 2s . com * * @return null if everything worked, otherwise an error message */ protected String setUpReference() { String result; AbstractFileLoader loader; DataSource source; MessageCollection errors; result = null; if (m_ReferenceFile.isDirectory()) { // obtain reference from callable actor try { errors = new MessageCollection(); m_Reference = (Instances) CallableActorHelper.getSetupFromSource(null, m_ReferenceActor, this, errors); if (m_Reference == null) { if (!errors.isEmpty()) result = errors.toString(); } } catch (Exception e) { m_Reference = null; result = handleException( "Failed to obtain reference from callable actor '" + m_ReferenceActor + "': ", e); } } else { // load reference try { if (m_UseCustomLoader) { loader = m_CustomLoader; loader.setFile(m_ReferenceFile.getAbsoluteFile()); source = new DataSource(loader); } else { source = new DataSource(m_ReferenceFile.getAbsolutePath()); } m_Reference = source.getDataSet(); if (m_Reference == null) result = "Failed to load reference dataset from '" + m_ReferenceFile + "'!"; } catch (Exception e) { m_Reference = null; result = handleException("Failed to load reference dataset from '" + m_ReferenceFile + "': ", e); } } return result; }
From source file:adams.gui.menu.AppendDatasets.java
License:Open Source License
/** * Performs the append./*from w w w. ja va 2s .c o 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.//w w w. ja v a 2s . c om * * @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. */// www. j a v a 2s . com @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 w ww . j a v a2s. co m*/ @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.// www . ja va2 s . co m * * @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 a va 2s. c o 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 with the given loader. * //w ww. jav a 2 s .co m * @param files the files to open * @param loader the loader to use * @return null if successful, otherwise error message */ protected String open(File[] files, AbstractFileLoader loader) { Instances[] datasets; int i; if (files.length < 2) return "You must supply at least two files!"; if (loader == null) return "No file loader specified!"; datasets = new Instances[files.length]; for (i = 0; i < files.length; i++) { try { loader.setFile(files[i].getAbsoluteFile()); datasets[i] = loader.getStructure(); loader.reset(); } catch (Exception e) { return "Failed to load dataset from " + files[i] + ":\n" + Utils.throwableToString(e); } } compare(files, datasets); return null; }
From source file:meka.gui.dataviewer.DataTableModel.java
License:Open Source License
/** * loads the specified ARFF file/* w w w .ja v a 2 s.c om*/ * * @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); } } }