Example usage for weka.core.converters AbstractFileLoader setFile

List of usage examples for weka.core.converters AbstractFileLoader setFile

Introduction

In this page you can find the example usage for weka.core.converters AbstractFileLoader setFile.

Prototype

@Override
public void setFile(File file) throws IOException 

Source Link

Document

sets the source File

Usage

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