Package ca.nengo.ui.dataList

Source Code of ca.nengo.ui.dataList.ProbePlotHelper

package ca.nengo.ui.dataList;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import ca.nengo.model.SimulationMode;
import ca.nengo.model.nef.NEFEnsemble;
import ca.nengo.ui.actions.PlotTimeSeries;
import ca.nengo.ui.lib.actions.StandardAction;
import ca.nengo.ui.util.NengoConfigManager;
import ca.nengo.ui.util.NengoConfigManager.UserProperties;
import ca.nengo.util.Probe;
import ca.nengo.util.TimeSeries;

/**
* Helps plot probes
*
* @author Shu Wu
*/
public class ProbePlotHelper {

    private static ProbePlotHelper singleton;

    /**
     * @return TODO
     */
    public static ProbePlotHelper getInstance() {
        if (singleton == null) {
            singleton = new ProbePlotHelper();
        }
        return singleton;
    }

    /**
     * TODO
     */
    public final float DEFAULT_PLOTTER_TAU_FILTER = 0.01f;

    /**
     * TODO
     */
    public final int DEFAULT_SUB_SAMPLING = 0;

    private ProbePlotHelper() {
    }

    /**
     * @param probe
     * @param plotName
     * @return The default plotting action
     */
    public StandardAction getDefaultAction(Probe probe, String plotName) {

        return getDefaultAction(probe.getData(), plotName, isApplyTauFilterByDefault(probe));

    }

    /**
     * @param applyFilterByDefault
     * @param data
     * @param plotName
     * @return The default plotting action
     */
    public StandardAction getDefaultAction(TimeSeries data,
            String plotName,
            boolean applyFilterByDefault) {

        if (applyFilterByDefault) {
            return new PlotTimeSeries("Plot w/ filter", data, plotName, false,
                    getDefaultTauFilter(), getDefaultSubSampling());
        } else {
            return new PlotTimeSeries("Plot raw data", data, plotName, false, 0, 0);
        }

    }

    /**
     * @return TODO
     */
    public int getDefaultSubSampling() {
        String savedValue = NengoConfigManager.getUserProperty(UserProperties.PlotterDefaultSubSampling);
        return savedValue != null ? Integer.parseInt(savedValue) : DEFAULT_SUB_SAMPLING;

    }

    /**
     * @return TODO
     */
    public float getDefaultTauFilter() {
        String savedTau = NengoConfigManager.getUserProperty(UserProperties.PlotterDefaultTauFilter);
        return savedTau != null ? Float.parseFloat(savedTau) : DEFAULT_PLOTTER_TAU_FILTER;

    }

    /**
     * @param data TODO
     * @param plotName TODO
     * @return TODO
     */
    public Collection<StandardAction> getPlotActions(TimeSeries data, String plotName) {
        List<StandardAction> actions = new ArrayList<StandardAction>(2);

        actions.add(new PlotTimeSeries("Plot raw data", data, plotName, false, 0, 0));
        actions.add(new PlotTimeSeries("Plot w/ options", data, plotName, true,
                getDefaultTauFilter(), getDefaultSubSampling()));
        return actions;
    }

    /**
     * @param probe
     *            Probe
     * @return Whether to apply tau filters in timeseries plots for that probe
     */
    public boolean isApplyTauFilterByDefault(Probe probe) {

        if (probe.getTarget() instanceof NEFEnsemble) {
            NEFEnsemble e = (NEFEnsemble) probe.getTarget();
            if ((e.getMode() == SimulationMode.DEFAULT )
                || (e.getMode() == SimulationMode.PRECISE)
                || (e.getMode() == SimulationMode.APPROXIMATE)
                || (e.getMode() == SimulationMode.EXPRESS)) {
                return true;
            }
        }
        return false;
    }

    /**
     * @param value TODO
     */
    public void setDefaultSubSampling(int value) {
        NengoConfigManager.setUserProperty(UserProperties.PlotterDefaultSubSampling,
                Integer.toString(value));
    }

    /**
     * @param value TODO
     */
    public void setDefaultTauFilter(float value) {
        NengoConfigManager.setUserProperty(UserProperties.PlotterDefaultTauFilter,
                Float.toString(value));
    }

}
TOP

Related Classes of ca.nengo.ui.dataList.ProbePlotHelper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.