I have just fixed the bug and made a new release of the plugin. Please go
ahead and update Fiji again.
> Hi Ignacio, thanks for the quick response. I updated FiJi, as well as
> downloaded a fresh install and updated it, still get the same error.
>
> Sean
>
> -----Original Message-----
> From: ImageJ Interest Group [mailto:
[hidden email]] On Behalf Of
> Ignacio Arganda-Carreras
> Sent: Wednesday, November 19, 2014 10:38 AM
> To:
[hidden email]
> Subject: Re: WEKA scripting
>
> Hello Sean,
>
> That seems a bug that was fixed in the latest release. Can you please
> update your Fiji and let me know if the problem persists?
>
> Thanks!
>
> ignacio
>
> On Wed, Nov 19, 2014 at 11:16 AM, McKinney, Sean <
[hidden email]> wrote:
>
> > I was trying to use an old script, was getting an error on the
> > wekaSegmentation.trainClassifier() (ArrayIndexOutOfBoundsException).
> > I switched to the webpage example (modified to handle an issue with
> > pulling the clown.jpg) and get the same error. My FiJi is fully up to
> > date. Any ideas?
> >
> > Sean
> >
> > importClass(Packages.ij.IJ);
> > importClass(Packages.ij.ImagePlus);
> > importClass(Packages.ij.ImageStack);
> > importClass(Packages.ij.gui.PolygonRoi);
> > importClass(Packages.ij.plugin.Duplicator);
> > importClass(Packages.ij.process.FloatPolygon);
> > importClass(Packages.ij.process.StackConverter);
> > importClass(Packages.trainableSegmentation.FeatureStack);
> > importClass(Packages.trainableSegmentation.FeatureStackArray);
> > importClass(Packages.trainableSegmentation.WekaSegmentation);
> > importClass(Packages.ij.WindowManager);
> >
> > var image=WindowManager.getCurrentImage();
> >
> > //var image = IJ.openImage(System.getProperty("ij.dir") +
> > "/samples/clown.jpg"); if (image.getStackSize() > 1)
> > new StackConverter(image).convertToGray32();
> > else
> > image.setProcessor(image.getProcessor().convertToFloat());
> > var duplicator = new Duplicator();
> > // process the image into different stacks, one per feature:
> > var smoothed = duplicator.run(image);
> > IJ.run(smoothed, "Gaussian Blur...", "radius=20"); var medianed =
> > duplicator.run(image); IJ.run(medianed, "Median...", "radius=10"); //
> > add new feature here (1/2) // the FeatureStackArray contains a
> > FeatureStack for every slice in our original image var featuresArray =
> > new FeatureStackArray(image.getStackSize(), 1, 16, false,
> > 1, 19, null);
> > // turn the list of stacks into FeatureStack instances, one per
> > original // slice. Each FeatureStack contains exactly one slice per
> feature.
> > for (var slice = 1; slice <= image.getStackSize(); slice++) {
> > var stack = new ImageStack(image.getWidth(), image.getHeight());
> > stack.addSlice("smoothed",
> > smoothed.getStack().getProcessor(slice));
> > stack.addSlice("medianed",
> > medianed.getStack().getProcessor(slice));
> > // add new feature here (2/2) and do not forget to add it with a
> > // unique slice label!
> > // create empty feature stack
> > var features = new FeatureStack( stack.getWidth(),
> > stack.getHeight(), false );
> > // set my features to the feature stack
> > features.setStack( stack );
> > // put my feature stack into the array
> > featuresArray.set(features, slice - 1);
> >
> > featuresArray.setEnabledFeatures(features.getEnabledFeatures());
> > }
> > var wekaSegmentation = new WekaSegmentation(image);
> > wekaSegmentation.setFeatureStackArray(featuresArray);
> > // set examples for class 1 (= foreground) and 0 (= background))
> > function addExample(classNum, slice, xArray, yArray) {
> > var polygon = new FloatPolygon(xArray, yArray);
> > var roi = new PolygonRoi(polygon, PolygonRoi.FREELINE);
> > IJ.log("roi: " + roi);
> > wekaSegmentation.addExample(classNum, roi, slice); }
> > /*
> > * generate these with the macro:
> > getSelectionCoordinates(x, y);
> > print('['); Array.print(x); print('],");
> > print('['); Array.print(y); print(']"); */ addExample(1, 1,
> > [ 82,85,85,86,87,87,87,88,88,88,88,88,88,88,88,86,86,84,83,82,81,
> > 80,80,78,76,75,74,74,73,72,71,70,70,68,65,63,62,60,58,57,55,55,
> > 54,53,51,50,49,49,49,51,52,53,54,55,55,56,56 ],
> > [
> 141,137,136,134,133,132,130,129,128,127,126,125,124,123,122,121,
> >
> 120,119,118,118,116,116,115,115,114,114,113,112,111,111,111,111,
> >
> 110,110,110,110,111,112,113,114,114,115,116,117,118,119,119,120,
> > 121,123,125,126,128,128,129,129,130 ] ); addExample(0, 1,
> > [ 167,165,163,161,158,157,157,157,157,157,157,157,158 ],
> > [ 30,29,29,29,29,29,28,26,25,24,23,22,21 ] ); // train
> > classifier if (!wekaSegmentation.trainClassifier())
> > throw new RuntimeException("Uh oh! No training today.");
> > output = wekaSegmentation.applyClassifier(image);
> > output.show();
> >
> > --
> > ImageJ mailing list:
http://imagej.nih.gov/ij/list.html> >
>
>
>
> --
> Ignacio Arganda-Carreras, Ph.D.
> Seung's lab, 46-5065
> Department of Brain and Cognitive Sciences Massachusetts Institute of
> Technology
> 43 Vassar St.
> Cambridge, MA 02139
> USA
>
> Phone: (001) 617-324-3747
> Website:
http://bioweb.cnb.csic.es/~iarganda/index_EN.html>
> --
> ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>
> --
> ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>
Ignacio Arganda-Carreras, Ph.D.
43 Vassar St.