Updates 2016/12/02

Initially, I had a release planned for this week, but with a plethora of minor bug fixes/UI improvements happening and other projects demanding time, I had to abandon this plan. Hopefully, this will eventuate next week instead.


  • Interactive actors now call the root actor's stopExecution method instead of their own, in order to stop the flow.
  • The SelectArraySubset interactive transformer now updates the message label with each interaction and double-clicking on an item automatically selects it and accepts the dialog.
  • Spreadsheet tables now interpret Long cell values as Double, in order to get correct sorting of columns with mixed Long/Double values.
  • adams-weka: Fixed the batch-filtering functionality of the Weka Investigator's preprocess tab.


  • The ImageViewer sink now accepts objects implementing BufferedImageSupporter as well.
  • adams-spectral-core has been renamed to adams-spectral-2dim (as it is for 2-dimensional spectra).
  • adams-weka:
    • Weka Investigator:
      • Start buttons now display a tooltip if disabled, explaining why process cannot be started (hover over the button to display it).
      • PCA tab now offers checkbox for skipping nominal attributes.
      • Closing a tab now prompts the user whether to go ahead with it (to avoid losses of tabs when quickly switching between them and accidentally hitting the close button).
      • The ClassifierErrors output generator now allows anti-aliasing to be configured (default is Auto, i.e., if more than 1000 datapoints, it gets turned off to speed up the plot).
    • The unsupervised instance-based filters DatasetCleaner and DatasetLabeler now have the additional flag -only-first-batch, which applies the filter only to the first batch of the data.


  • Added RomanToInt and IntToRoman conversions for handling Roman numerals.
  • Added Kendall-Theil robust regression calculation: ArrayKendallTheil, StatUtils.kendallTheil, KendallTheilOverlayPaintlet.
  • Added the BufferedImageSupporterToBufferedImageContainer conversion to allow attaching of metadata.
  • Added meta-data text overlay for images, e.g., used in the ImageViewer sink: MetaDataText.
  • The SetContainerValue control actor allows updating of a single container value, using data from either a callable actor or storage.
  • adams-ml:
    • The PredictionEccentricity transformer allows the calculation of the eccentricity for the predictions generated by a regressor.
    • The ActualVsPredictedPlot sink now implements AntiAliasingSupporter, i.e., you can turn on/off anti-aliasing for pretty/fast plots.
  • adams-spectral-2dim:
    • Added PLS spectrum batch filter, which makes use of the new PLS algorithm class hierarchy to transform the spectral data.
    • Added PCA spectrum batch filter.
  • adams-spreadsheet:
    • The JFreeChartPlot sink allows plots from spreadsheet columns using JFreeChart plot library and the JFreeChartFileWriter outputs image files from generated plots.
    • The Spreadsheet file viewer now has a chart plugin using JFreeChart.
  • adams-weka:
    • Added WekaGenericPLSMatrixAccess transformer which gives access to internal PLS matrices of the new AbstractPLS class hierarchy.
    • PLS-based classifier that uses the new PLS class hierarchy: weka.classifiers.functions.PLSWeighted.
    • The classify/cluster tab in the Weka Investigator now have Build model evaluations that just generate a model and save it to disk.
    • The Data table of the Weka Investigator now has a plugin for plotting using JFreeChart.
    • The WekaSpreadSheetToPredictions transformer allows the recreation of an Evaluation object simply from predictions of a model (actual/predicted).
    • weka.filters.FilteredFilter is a filter for applying a pre-filter to the data before using the main filter (eg for selecting a subset).
    • The Weka Investigator now offers an output generator for displaying/calculating the Prediction Eccentricity of the predictions (Classify tab, numeric classes only).
    • It is now possible to compare the predictions of two models evaluated in the same way on the same dataset (with a numeric class) through the Compare models menu item in the result history of the Classify tab of the Weka Investigator.