Example usage for weka.core.converters ConverterUtils getLoaderForFile

List of usage examples for weka.core.converters ConverterUtils getLoaderForFile

Introduction

In this page you can find the example usage for weka.core.converters ConverterUtils getLoaderForFile.

Prototype

public static AbstractFileLoader getLoaderForFile(File file) 

Source Link

Document

tries to determine the loader to use for this kind of file, returns null if none can be found.

Usage

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));
}