Example usage for weka.core Instances numInstances

List of usage examples for weka.core Instances numInstances

Introduction

In this page you can find the example usage for weka.core Instances numInstances.

Prototype


publicint numInstances() 

Source Link

Document

Returns the number of instances in the dataset.

Usage

From source file:lu.lippmann.cdb.common.gui.ts.TimeSeriesChartUtil.java

License:Open Source License

private static void fillWithSingleAxisInterval(final Instances dataSet, final int dateIdx,
        final YIntervalSeriesCollection tsDataset, final double deviation, final int deviatedAttrIdx) {
    final int numInstances = dataSet.numInstances();

    for (final Integer i : WekaDataStatsUtil.getNumericAttributesIndexes(dataSet)) {
        if (dataSet.attributeStats(i).missingCount == dataSet.numInstances()) {
            System.out.println("TimeSeriesChartUtil: Only missing values for '" + dataSet.attribute(i).name()
                    + "', so skip it!");
            continue;
        }//from www .j a v a  2  s .  c om
        final YIntervalSeries ts = new YIntervalSeries(dataSet.attribute(i).name());
        for (int k = 0; k < numInstances; k++) {
            final Instance instancek = dataSet.instance(k);
            final long timeInMilliSec = (long) instancek.value(dateIdx);

            if (instancek.isMissing(i)) {
                //ts.add(timeInMilliSec,null,0d,0d);               
            } else {
                if (i == deviatedAttrIdx && k > 0 && k < (numInstances - 1)) {
                    System.out.println(numInstances + " " + k + " " + instancek.value(i) + " "
                            + (instancek.value(i) - deviation) + " " + (instancek.value(i) + deviation));
                    ts.add(timeInMilliSec, instancek.value(i), instancek.value(i) - deviation,
                            instancek.value(i) + deviation);
                } else {
                    ts.add(timeInMilliSec, instancek.value(i), instancek.value(i), instancek.value(i));
                }
                //System.out.println(instancek.value(i)+" "+(instancek.value(i)-deviation)+" "+(instancek.value(i)+deviation));
            }
        }
        if (!ts.isEmpty())
            tsDataset.addSeries(ts);
    }
}

From source file:lu.lippmann.cdb.common.gui.ts.TimeSeriesChartUtil.java

License:Open Source License

private static void fillWithMultipleAxis(final Instances dataSet, final int dateIdx,
        final TimeSeriesCollection tsDataset, final JFreeChart tsChart) {
    final int numInstances = dataSet.numInstances();

    int axisNumber = 0;
    final Calendar cal = Calendar.getInstance();
    for (final Integer i : WekaDataStatsUtil.getNumericAttributesIndexes(dataSet)) {
        final TimeSeries ts = new TimeSeries(dataSet.attribute(i).name());
        for (int k = 0; k < numInstances; k++) {
            final long timeInMilliSec = (long) dataSet.instance(k).value(dateIdx);
            cal.setTimeInMillis(timeInMilliSec);
            if (dataSet.instance(k).isMissing(i)) {
                ts.addOrUpdate(new Millisecond(cal.getTime()), null);
            } else {
                ts.addOrUpdate(new Millisecond(cal.getTime()), dataSet.instance(k).value(i));
            }/*from  w  w w  .j a va 2  s .c  o  m*/
        }
        if (!ts.isEmpty()) {
            if (axisNumber == 0) {
                tsDataset.addSeries(ts);
            } else {
                final XYPlot plot = tsChart.getXYPlot();
                final NumberAxis axisToAdd = new NumberAxis(dataSet.attribute(i).name());
                axisToAdd.setAutoRangeIncludesZero(false);
                plot.setRangeAxis(axisNumber, axisToAdd);
                final TimeSeriesCollection t = new TimeSeriesCollection();
                t.addSeries(ts);
                plot.setDataset(axisNumber, t);
                plot.mapDatasetToRangeAxis(axisNumber, axisNumber);
                final StandardXYItemRenderer renderer2 = new StandardXYItemRenderer();
                renderer2.setSeriesPaint(0, ColorHelper.getColorForAString(dataSet.attribute(i).name()));
                plot.setRenderer(axisNumber, renderer2);
            }
            axisNumber++;
        }
    }
}

From source file:lu.lippmann.cdb.datasetview.DatasetView.java

License:Open Source License

public DatasetView setDataSet(final Instances pdataSet) {
    if (pdataSet.classIndex() != -1 && !pdataSet.classAttribute().isNominal())
        pdataSet.setClassIndex(-1);/*www . ja v  a 2  s  .  c  o m*/

    if (this.initialDataSet == null) {
        this.initialDataSet = pdataSet;
        this.initialCompleteness = new CompletenessComputer(this.initialDataSet);
        this.dataCompletenessProgressBar.setMaximum(pdataSet.numInstances() * pdataSet.numAttributes());
        reinitDataCompleteness();
    }

    this.dataSet = pdataSet;

    if (!filtered)
        this.notFilteredDataSet = pdataSet;

    updateClassSelectionMenu();
    this.supervisedTransformPane.setVisible(pdataSet.classIndex() != -1);

    for (final TabView tv : tabViews) {
        tv.update(dataSet);
    }

    try {
        updateFiltersPane(dataSet);
    } catch (Exception e) {
        eventPublisher.publish(new ErrorOccuredEvent("Error when updating filters", e));
    }

    updateTooltipShowingDatasetDimensions();

    return this;
}

From source file:lu.lippmann.cdb.datasetview.tabs.MDSTabView.java

License:Open Source License

/**
 * {@inheritDoc}/*from  w  w w . j  a  va2 s  . com*/
 */
@Override
public void update0(final Instances dataSet) throws Exception {
    this.jxp.removeAll();

    if (this.distComboListener != null)
        distCombo.removeActionListener(this.distComboListener);
    this.distComboListener = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if (!currentDist.equals(distCombo.getSelectedItem()))
                update(dataSet);
            currentDist = distCombo.getSelectedItem();

            final MDSDistancesEnum mde = MDSDistancesEnum.valueOf(currentDist.toString());
            boolean showDistanceParameters = (mde.equals(MDSDistancesEnum.MINKOWSKI));
            distanceParameters.setVisible(showDistanceParameters);
            distanceParametersLabel.setVisible(showDistanceParameters);
        }
    };
    this.distCombo.addActionListener(this.distComboListener);

    if (this.distanceParametersListener != null)
        distanceParameters.removeActionListener(this.distanceParametersListener);
    this.distanceParameters.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            if (!currentParameter.equals(distanceParameters.getText()))
                update(dataSet);
            currentParameter = distanceParameters.getText();
        }
    });
    this.distanceParameters.addActionListener(this.distanceParametersListener);

    if (this.shihListener != null)
        shihCheckbox.removeActionListener(this.shihListener);
    this.shihListener = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            update(dataSet);
        }
    };
    this.shihCheckbox.addActionListener(this.shihListener);
    this.shihCheckbox.setEnabled(!WekaDataStatsUtil.areAllAttributesNominal(dataSet));

    if (this.ignoreListener != null)
        ignoreClassCheckbox.removeActionListener(this.ignoreListener);
    this.ignoreListener = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            update(dataSet);
        }
    };
    this.ignoreClassCheckbox.addActionListener(this.ignoreListener);
    this.ignoreClassCheckbox.setEnabled(dataSet.classIndex() != -1);

    if (this.maxInstancesListener != null)
        maxInstances.removeKeyListener(this.maxInstancesListener);
    this.maxInstancesListener = new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            final int cCode = e.getKeyCode();
            if (cCode == KeyEvent.VK_ENTER) {
                update(dataSet);
                e.consume();
            }
        }
    };
    this.maxInstances.addKeyListener(maxInstancesListener);

    if (this.normalizeListener != null)
        normalizeCheckbox.removeActionListener(this.normalizeListener);
    this.normalizeListener = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            update(dataSet);
        }
    };
    this.normalizeCheckbox.addActionListener(this.normalizeListener);

    //TODO : use proper layout ...
    final JXPanel northPanel = new JXPanel();
    northPanel.setLayout(new GridBagLayout());
    final GridBagConstraints gbc = new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.gridwidth = 2;
    gbc.weightx = 1;
    gbc.fill = GridBagConstraints.BOTH;
    northPanel.add(this.distCombo, gbc);
    gbc.weightx = 0;
    gbc.gridwidth = 1;
    gbc.gridy = 1;
    northPanel.add(this.distanceParametersLabel, gbc);
    gbc.gridx = 1;
    northPanel.add(this.distanceParameters, gbc);

    this.jxp.add(northPanel, BorderLayout.NORTH);

    final MDSDistancesEnum mde = MDSDistancesEnum.valueOf(distCombo.getSelectedItem().toString());
    final String strOrder = distanceParameters.getText();
    if (mde.equals(MDSDistancesEnum.MINKOWSKI)) {
        mde.setParameters(new String[] { strOrder });
    }
    Instances usedDataSet = dataSet;
    if (shihCheckbox.isSelected()) {
        //Modify instance using SHIH Algorithm
        final Shih2010 shih = new Shih2010(dataSet);
        usedDataSet = shih.getModifiedInstances();
    }

    this.kmeansButton = new JButton("K-means");
    this.maxKField = new JTextField("10");

    //Create whole panel
    final JXPanel southPanel = new JXPanel();
    southPanel.add(shihCheckbox);
    southPanel.add(ignoreClassCheckbox);
    southPanel.add(normalizeCheckbox);
    southPanel.add(maxInstances);
    southPanel.add(new JLabel("Maximum K"));
    southPanel.add(maxKField);
    southPanel.add(kmeansButton);
    this.jxp.add(southPanel, BorderLayout.SOUTH);

    //Compute MDS
    final MDSResult mdsResult = ClassicMDS.doMDS(usedDataSet, mde, 2, Integer.valueOf(maxInstances.getText()),
            ignoreClassCheckbox.isSelected(), normalizeCheckbox.isSelected());

    final JXPanel mdsView = MDSViewBuilder.buildMDSViewFromDataSet(dataSet, mdsResult,
            Integer.valueOf(maxInstances.getText()), new Listener<Instances>() {
                @Override
                public void onAction(final Instances parameter) {
                    pushDataChange(new DataChange(parameter, TabView.DataChangeTypeEnum.Selection));
                }
            });
    this.jxp.add(mdsView, BorderLayout.CENTER);

    this.kmeansButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                //List of coordinates (x,y) of collapsed instances
                final Instances coordsInstances = mdsResult.buildInstancesFromMatrix();
                //FIXME dangerous : K-means on ordered collapsedInstance coordinates
                final KmeansImproved km = new KmeansImproved(coordsInstances,
                        Integer.valueOf(maxKField.getText()));
                final double[] ass = km.getClusteredInstances();
                int usedK = km.getUsedKmeans().getNumClusters();
                final StringBuilder labels = new StringBuilder();
                for (int i = 0; i < usedK; i++) {
                    labels.append("cluster").append((i + 1));
                    if (i < usedK - 1)
                        labels.append(",");
                }

                //Build modified dataset
                String attributeName = "cluster_proj";
                while (dataSet.attribute(attributeName) != null)
                    attributeName += "_proj";
                final Add addFilter = new Add();
                addFilter.setAttributeIndex("last");
                addFilter.setAttributeName(attributeName);
                addFilter.setNominalLabels(labels.toString());
                addFilter.setInputFormat(dataSet);
                final Instances modDataset = Filter.useFilter(dataSet, addFilter);
                final int nbInstances = modDataset.numInstances();
                final int nbAttributes = modDataset.numAttributes();

                if (mdsResult.getCInstances().isCollapsed()) {
                    //
                    final KmeansResult kmr = mdsResult.getCInstances().getCentroidMap();
                    final List<Instances> clusters = kmr.getClusters();
                    int nbClusters = clusters.size();

                    //Build a map between any instance and it's cluster's centroid
                    final Map<ComparableInstance, Integer> mapCentroid = new HashMap<ComparableInstance, Integer>();
                    for (int i = 0; i < nbClusters; i++) {
                        final Instances cluster = clusters.get(i);
                        final int clusterSize = cluster.size();
                        for (int k = 0; k < clusterSize; k++) {
                            mapCentroid.put(new ComparableInstance(cluster.instance(k)), i);
                        }
                    }

                    //Use the previous map to add the additionnal feature for every element !
                    for (int i = 0; i < nbInstances; i++) {
                        final int centroidIndex = mapCentroid.get(new ComparableInstance(dataSet.instance(i)));
                        final String value = "cluster" + (int) (ass[centroidIndex] + 1);
                        modDataset.instance(i).setValue(nbAttributes - 1, value);
                    }
                } else {
                    for (int i = 0; i < nbInstances; i++) {
                        final String value = "cluster" + (int) (ass[i] + 1);
                        modDataset.instance(i).setValue(nbAttributes - 1, value);
                    }
                }
                pushDataChange(new DataChange(modDataset, TabView.DataChangeTypeEnum.Update));
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        }
    });

    this.jxp.repaint();
}

From source file:lu.lippmann.cdb.datasetview.tabs.PieChartTabView.java

License:Open Source License

/**
 * {@inheritDoc}//from ww  w.ja v  a2s .c  o m
 */
@Override
public void update0(final Instances dataSet) throws Exception {
    for (final Object k : this.pieDataset.getKeys()) {
        this.pieDataset.remove((Comparable<?>) k);
    }

    final int numInstances = dataSet.numInstances();
    for (final Map.Entry<Object, Integer> entry : WekaDataStatsUtil.getClassRepartition(dataSet).entrySet()) {
        if (entry.getValue().doubleValue() > 0) {
            this.pieDataset.setValue(entry.getKey().toString(), entry.getValue().doubleValue() / numInstances);
            final Color color = ColorHelper.getRandomBrightColor();
            ((PiePlot) this.pieChart.getPlot()).setSectionPaint(entry.getKey().toString(), color);
        }
    }

    chartPanel.repaint();
}

From source file:lu.lippmann.cdb.datasetview.tabs.ScatterPlotTabView.java

License:Open Source License

private static ChartPanel buildChartPanel(final Instances dataSet, final int xidx, final int yidx,
        final int coloridx, final boolean asSerie) {
    final XYSeriesCollection data = new XYSeriesCollection();
    final Map<Integer, List<Instance>> filteredInstances = new HashMap<Integer, List<Instance>>();
    final int classIndex = dataSet.classIndex();
    if (classIndex < 0) {
        final XYSeries series = new XYSeries("Serie", false);
        for (int i = 0; i < dataSet.numInstances(); i++) {
            series.add(dataSet.instance(i).value(xidx), dataSet.instance(i).value(yidx));

        }/*w w w  .j a  v a2  s.  c  om*/
        data.addSeries(series);
    } else {
        final Set<String> pvs = WekaDataStatsUtil.getPresentValuesForNominalAttribute(dataSet, classIndex);
        int p = 0;
        for (final String pv : pvs) {
            final XYSeries series = new XYSeries(pv, false);
            for (int i = 0; i < dataSet.numInstances(); i++) {
                if (dataSet.instance(i).stringValue(classIndex).equals(pv)) {
                    if (!filteredInstances.containsKey(p)) {
                        filteredInstances.put(p, new ArrayList<Instance>());
                    }
                    filteredInstances.get(p).add(dataSet.instance(i));

                    series.add(dataSet.instance(i).value(xidx), dataSet.instance(i).value(yidx));
                }
            }
            data.addSeries(series);

            p++;
        }

    }

    final JFreeChart chart = ChartFactory.createScatterPlot("Scatter Plot", // chart title
            dataSet.attribute(xidx).name(), // x axis label
            dataSet.attribute(yidx).name(), // y axis label
            data, // data
            PlotOrientation.VERTICAL, true, // include legend
            true, // tooltips
            false // urls
    );

    final XYPlot xyPlot = (XYPlot) chart.getPlot();
    final XYToolTipGenerator gen = new XYToolTipGenerator() {
        @Override
        public String generateToolTip(final XYDataset dataset, final int series, final int item) {
            if (classIndex < 0) {
                return InstanceFormatter.htmlFormat(dataSet.instance(item), true);
            } else {
                return InstanceFormatter.htmlFormat(filteredInstances.get(series).get(item), true);
            }
        }
    };

    int nbSeries;
    if (classIndex < 0) {
        nbSeries = 1;
    } else {
        nbSeries = filteredInstances.keySet().size();
    }

    final XYItemRenderer renderer = new XYLineAndShapeRenderer(asSerie, true) {
        /** */
        private static final long serialVersionUID = 1L;

        @Override
        public Paint getItemPaint(final int row, final int col) {
            //System.out.println(row+" "+col);
            if (classIndex < 0) {
                final double v = dataSet.instance(col).value(coloridx);
                final double[] minmax = WekaDataStatsUtil.getMinMaxForAttributeAsArrayOfDoubles(dataSet,
                        coloridx);

                final double rated = (v - minmax[0]) / (minmax[1] - minmax[0]);
                System.out.println("rated -> " + rated + " min=" + minmax[0] + "max=" + minmax[1]);
                final int colorIdx = (int) Math.round((ColorHelper.YlGnBu_9_COLORS.length - 1) * rated);

                //System.out.println(minmax[0]+" "+minmax[1]+" "+v+" "+rated+" "+colorIdx);
                return ColorHelper.YlGnBu_9_COLORS[colorIdx];
            } else
                return super.getItemPaint(row, col);
        }
    };
    xyPlot.setRenderer(renderer);

    for (int i = 0; i < nbSeries; i++) {
        renderer.setSeriesToolTipGenerator(i, gen);
    }

    return new ChartPanel(chart);
}

From source file:lu.lippmann.cdb.datasetview.tabs.StatsTabView.java

License:Open Source License

public static Instances buildStatsForNumericalAttributes(final Instances dataset) throws Exception {
    final StringBuilder sb = new StringBuilder("@relation blabla\n");
    sb.append("@attribute 'name' string\n");
    sb.append("@attribute 'min' string\n");
    sb.append("@attribute 'max' string\n");
    sb.append("@attribute 'mean' string\n");
    sb.append("@attribute 'stdDev' string\n");
    sb.append("@attribute 'missing values count' string\n");
    sb.append("@attribute 'missing values %' string\n");
    sb.append("@attribute 'values repartition' string\n");
    sb.append("@data\n");

    for (int i = 0; i < dataset.numAttributes(); i++) {
        if (dataset.attribute(i).isNumeric() && !dataset.attribute(i).isDate()) {
            sb.append(dataset.attribute(i).name()).append(",")
                    .append(FormatterUtil.DECIMAL_FORMAT.format(dataset.attributeStats(i).numericStats.min))
                    .append(",")
                    .append(FormatterUtil.DECIMAL_FORMAT.format(dataset.attributeStats(i).numericStats.max))
                    .append(",")
                    .append(FormatterUtil.DECIMAL_FORMAT.format(dataset.attributeStats(i).numericStats.mean))
                    .append(",")
                    .append(FormatterUtil.DECIMAL_FORMAT.format(dataset.attributeStats(i).numericStats.stdDev))
                    .append(",").append(dataset.attributeStats(i).missingCount).append(",")
                    .append(FormatterUtil.DECIMAL_FORMAT
                            .format(100d * dataset.attributeStats(i).missingCount / dataset.numInstances()))
                    .append(",").append("''").append("\n");
        } else if (dataset.attribute(i).isNominal()) {
            sb.append(dataset.attribute(i).name()).append(",'','','','','','','");

            final Map<Object, String> nominalRep = WekaDataStatsUtil
                    .getNominalRepartitionForDescription(dataset, i);
            for (Map.Entry<Object, String> e : nominalRep.entrySet()) {
                sb.append(e.getKey()).append("=").append(e.getValue()).append(" ");
            }// w w  w.  j  a v  a 2s  .  com

            sb.append("'\n");
        }
    }

    final Instances newds = WekaDataAccessUtil.loadInstancesFromARFFString(sb.toString(), false, false);

    if (WekaDataStatsUtil.getNominalAttributesIndexes(dataset).length == 0) {
        newds.deleteAttributeAt(newds.numAttributes() - 1);
    }
    return newds;
}

From source file:lu.lippmann.cdb.datasetview.tabs.TimeSeriesCalendarPanel.java

License:Open Source License

public void refresh(final Instances dataSet, final int dateIdx, final int attrToHighlightIdx,
        final Mode calendarMode) {
    this.jxp.removeAll();

    final SimpleDateFormat f = new SimpleDateFormat(dataSet.attribute(dateIdx).getDateFormat());

    final LinkedHashMap<Date, Color> map = new LinkedHashMap<Date, Color>();
    final AttributeStats attributeStats = (attrToHighlightIdx < 0) ? null
            : dataSet.attributeStats(attrToHighlightIdx);
    for (int i = 0; i < dataSet.numInstances(); i++) {
        //System.out.println(i+" "+dataSet.instance(i).value(dateIdx));
        final String val = dataSet.instance(i).stringValue(dateIdx);

        try {//from w w  w  .  ja v a  2  s. co  m
            final Date d = f.parse(val);
            if (attrToHighlightIdx < 0) {
                map.put(d, Color.BLACK);
            } else if (dataSet.attribute(attrToHighlightIdx).isNominal()) {
                final int idxOfColor = ((int) dataSet.instance(i).value(attrToHighlightIdx)
                        * (this.colors.length - 1 - this.firstColorIdx)) / attributeStats.nominalCounts.length;
                map.put(d, this.colors[idxOfColor + this.firstColorIdx]);
            } else {
                final double normalizedValue = (dataSet.instance(i).value(attrToHighlightIdx)
                        - attributeStats.numericStats.min)
                        / (attributeStats.numericStats.max - attributeStats.numericStats.min);
                final int idxOfColor = (int) (normalizedValue * (this.colors.length - 1 - this.firstColorIdx));
                //System.out.println(normalizedValue+" "+idxOfColor);
                map.put(d, this.colors[idxOfColor + this.firstColorIdx]);
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

    final JScrollPane scrollp = new JScrollPane(
            MonthCalendarView.buildMultPanel(map, calendarMode, (int) jxp.getSize().getWidth()),
            JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

    scrollp.setPreferredSize(new Dimension((int) jxp.getSize().getWidth() * 95 / 100,
            (int) jxp.getSize().getHeight() * 95 / 100));

    this.jxp.add(scrollp, BorderLayout.CENTER);

    if (attrToHighlightIdx >= 0) {
        final JXPanel legendPanel = new JXPanel();
        legendPanel.setBorder(new TitledBorder("Legend"));
        legendPanel.setBackground(Color.WHITE);
        legendPanel.setLayout(new GridLayout(0, 1));

        if (dataSet.attribute(attrToHighlightIdx).isNominal()) {
            int c = 0;
            final Map<Object, Integer> pv = WekaDataStatsUtil.getNominalRepartition(dataSet,
                    attrToHighlightIdx);
            for (final Map.Entry<Object, Integer> entry : pv.entrySet()) {
                final JXLabel comp = new JXLabel(entry.getKey().toString());
                final int idxOfColor = (c * (this.colors.length - this.firstColorIdx))
                        / attributeStats.nominalCounts.length;
                comp.setForeground(this.colors[idxOfColor + this.firstColorIdx]);
                legendPanel.add(comp);
                c++;
            }
        } else if (dataSet.attribute(attrToHighlightIdx).isNumeric()) {
            final JXLabel compMin = new JXLabel("Min: " + attributeStats.numericStats.min);
            compMin.setForeground(this.colors[this.firstColorIdx]);
            legendPanel.add(compMin);
            final JXLabel compMax = new JXLabel("Max: " + attributeStats.numericStats.max);
            compMax.setForeground(this.colors[this.colors.length - 1]);
            legendPanel.add(compMax);
        }
        this.jxp.add(legendPanel, BorderLayout.NORTH);
    }

    final JXPanel settingsPanel = new JXPanel();
    settingsPanel.setLayout(new GridLayout(1, 0));
    final JComboBox calendarModeCombo = new JComboBox(Mode.values());
    calendarModeCombo.setBorder(new TitledBorder("Mode"));
    final JComboBox attrToHighlightCombo = new JComboBox(
            WekaDataStatsUtil.getAttributeNames(dataSet).toArray());
    attrToHighlightCombo.setBorder(new TitledBorder("Attribute to highlight"));

    calendarModeCombo.setSelectedItem(calendarMode);
    calendarModeCombo.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            refresh(dataSet, dateIdx, attrToHighlightCombo.getSelectedIndex(),
                    Mode.valueOf(calendarModeCombo.getSelectedItem().toString()));
        }
    });
    settingsPanel.add(calendarModeCombo);

    attrToHighlightCombo.setSelectedIndex(attrToHighlightIdx);
    attrToHighlightCombo.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            refresh(dataSet, dateIdx, attrToHighlightCombo.getSelectedIndex(),
                    Mode.valueOf(calendarModeCombo.getSelectedItem().toString()));
        }
    });
    settingsPanel.add(attrToHighlightCombo);
    this.jxp.add(settingsPanel, BorderLayout.SOUTH);
}

From source file:lu.lippmann.cdb.datasetview.tabs.TimeSeriesSimilarityPanel.java

License:Open Source License

private void refresh0(final Instances dataSet) {
    if (dataSet.numInstances() < MAX_ROWS_COUNT) {
        try {/*www .ja  v  a2 s .  co m*/
            final Instances newds = WekaDataProcessingUtil.buildFilteredByAttributesDataSet(dataSet,
                    WekaDataStatsUtil.getNumericAttributesIndexesAsArray(dataSet));
            final Instances featuresDs = buildFeatureDS(newds);

            final JXPanel projView;
            if (mode.equals(Mode.MDS)) {
                final int limitForCollapsing = 1000;
                final boolean normalized = false; //TODO checkbox
                final MDSResult mdsResult = ClassicMDS.doMDS(featuresDs, MDSDistancesEnum.EUCLIDEAN, 2,
                        limitForCollapsing, true, normalized);
                projView = MDSViewBuilder.buildMDSViewFromDataSet(featuresDs, mdsResult, limitForCollapsing,
                        new Listener<Instances>() {
                            @Override
                            public void onAction(final Instances parameter) {
                            }
                        }, FEATUREDESC_ATTRNAME);
            } else {
                projView = null;
            }
            this.jxp.removeAll();
            this.jxp.add(projView, BorderLayout.CENTER);
        } catch (Exception e) {
            e.printStackTrace();
        }
    } else {
        this.jxp.removeAll();
        this.jxp.add(new JXLabel("Time series are too big (limit=" + MAX_ROWS_COUNT + ")."),
                BorderLayout.CENTER);
    }
}

From source file:lu.lippmann.cdb.datasetview.tabs.TimeSeriesTabView.java

License:Open Source License

private void fillTabs(final Instances dataSet) {
    if (dataSet.numInstances() > MAX_SIZE) {
        throw new IllegalStateException("Time series are too long (" + dataSet.numInstances()
                + "), and records count should be > " + MAX_SIZE + ": please filter data before using it.");
    }/*from   ww w . j  a  v  a 2  s  .c o  m*/

    final int dateIdx = dataSet.attribute(dateAttributeField.getSelectedItem().toString()).index();

    if (this.oneGraphOneAxisPanel != null) {
        //EXECUTOR.execute(new Runnable()
        //SwingUtilities.invokeLater(new Runnable()
        //{
        //@Override
        //public void run() 
        {
            System.out.println("TimeSeriesTabView: building 'one graph one axis' subpanel ...");
            oneGraphOneAxisPanel.removeAll();
            final ChartPanel oneGraphOneAxisChartPanel = TimeSeriesChartUtil
                    .buildChartPanelForAllAttributes(dataSet, false, dateIdx, null);
            oneGraphOneAxisPanel.add(oneGraphOneAxisChartPanel, BorderLayout.CENTER);
        }
        //});
    }

    /*System.out.println("TimeSeriesTabView: building 'one graph multiple axis' subpanel ...");      
    this.oneGraphMultipleAxisPanel.removeAll();
    final ChartPanel oneGraphMultipleAxisChartPanel=TimeSeriesChartUtil.buildChartPanelForAllAttributes(dataSet,true,dateIdx);
    this.oneGraphMultipleAxisPanel.add(oneGraphMultipleAxisChartPanel,BorderLayout.CENTER);*/

    if (this.multipleGraphsPanel != null) {
        //EXECUTOR.execute(new Runnable()
        //SwingUtilities.invokeLater(new Runnable()
        //{
        //@Override
        //public void run() 
        {
            System.out.println("TimeSeriesTabView: building 'multiple graphs' subpanel ...");
            multipleGraphsPanel.removeAll();
            multipleGraphsPanel.add(TimeSeriesChartUtil.buildPanelWithChartForEachAttribute(dataSet, dateIdx),
                    BorderLayout.CENTER);
        }
        //});         
    }

    if (this.clusteringPanel != null) {
        //EXECUTOR.execute(new Runnable()
        //SwingUtilities.invokeLater(new Runnable()
        //{
        //@Override
        //public void run() 
        {
            System.out.println("TimeSeriesTabView: building 'clustering' subpanel ...");
            clusteringPanel.refresh(dataSet, dateIdx);
        }
        //});   
    }

    if (this.similarityPanel != null) {
        //EXECUTOR.execute(new Runnable()
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                System.out.println("TimeSeriesTabView: building 'similarity' subpanel ...");
                similarityPanel.refresh(dataSet);
            }
        });
    }

    if (this.calendarPanel != null) {
        //EXECUTOR.execute(new Runnable()
        //SwingUtilities.invokeLater(new Runnable()
        //{
        //@Override
        //public void run() 
        {
            System.out.println("TimeSeriesTabView: building 'calendar' subpanel ...");
            calendarPanel.refresh(dataSet, dateIdx);
        }
        //});            
    }
}