Trainable Weka Segmentation - Result image calibration

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Trainable Weka Segmentation - Result image calibration

Jan Eglinger
Hi Ignacio,

I have a question/feature request for your Trainable Weka Segmentation
plugin again :)
Currently, the probability map you get upon clicking the "Get
probability" button is not calibrated/scaled. I think adding a simple

   result.setCalibration(trainingImage.getCalibration())

to WekaSegmentation.java in line #4489 [1] would do the trick.
I would have filed a pull request, but couldn't test it quickly because
of maven-javadoc-plugin failing when trying to run maven (I have to sort
that out later).

In addition, I noticed that a NullPointerException is thrown (now
displayed in the new ImageJ Console [2]) upon starting Trainable Weka
Segmentation, related to the GenericObjectEditor class of weka when you
try to insert classifiers [3]. I pasted the stack trace below [4]. Don't
know if that's something important to fix, but it might annoy users now
that the Console is there.

Best regards,
Jan


[1]:
https://github.com/fiji/Trainable_Segmentation/blob/master/src/main/java/trainableSegmentation/WekaSegmentation.java#L4489

[2]: http://imagej.net/2015-03-26_-_ImageJ_2.0.0-rc-28_released

[3]:
https://github.com/fiji/Trainable_Segmentation/blob/master/src/main/java/trainableSegmentation/Weka_Segmentation.java#L2350-2371

[4]: Console output:

Refreshing GOE props...
java.lang.NullPointerException
        at weka.core.ClassCache.initFromManifest(ClassCache.java:248)
        at weka.core.ClassCache.initFromJar(ClassCache.java:293)
        at weka.core.ClassCache.initFromClasspathPart(ClassCache.java:351)
        at weka.core.ClassCache.initialize(ClassCache.java:373)
        at weka.core.ClassCache.<init>(ClassCache.java:111)
        at weka.core.ClassDiscovery.initCache(ClassDiscovery.java:447)
        at weka.core.ClassDiscovery.clearCache(ClassDiscovery.java:481)
        at weka.core.ClassDiscovery.clearClassCache(ClassDiscovery.java:490)
        at
weka.core.WekaPackageManager.refreshGOEProperties(WekaPackageManager.java:1143)
        at weka.core.WekaPackageManager.loadPackages(WekaPackageManager.java:1134)
        at weka.core.WekaPackageManager.loadPackages(WekaPackageManager.java:1047)
        at
weka.gui.GenericObjectEditor.determineClasses(GenericObjectEditor.java:177)
        at weka.gui.GenericObjectEditor.<clinit>(GenericObjectEditor.java:247)
        at sun.misc.Unsafe.ensureClassInitialized(Native Method)
        at
sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:25)
        at
sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:122)
        at java.lang.reflect.Field.acquireFieldAccessor(Field.java:918)
        at java.lang.reflect.Field.getFieldAccessor(Field.java:899)
        at java.lang.reflect.Field.get(Field.java:358)
        at
trainableSegmentation.Weka_Segmentation.<clinit>(Weka_Segmentation.java:2358)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at java.lang.Class.newInstance0(Class.java:355)
        at java.lang.Class.newInstance(Class.java:308)
        at ij.IJ.runUserPlugIn(IJ.java:197)
        at ij.IJ.runPlugIn(IJ.java:163)
        at ij.Executer.runCommand(Executer.java:131)
        at ij.Executer.run(Executer.java:64)
        at java.lang.Thread.run(Thread.java:619)

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: Trainable Weka Segmentation - Result image calibration

Ignacio Arganda-Carreras-2
Hello Jan,

Thanks for reporting all of this. I will have a look and try to fix it as
soon as i can!

Best,

ignacio

On Tue, Mar 31, 2015 at 12:15 PM, Jan Eglinger <[hidden email]>
wrote:

> Hi Ignacio,
>
> I have a question/feature request for your Trainable Weka Segmentation
> plugin again :)
> Currently, the probability map you get upon clicking the "Get probability"
> button is not calibrated/scaled. I think adding a simple
>
>   result.setCalibration(trainingImage.getCalibration())
>
> to WekaSegmentation.java in line #4489 [1] would do the trick.
> I would have filed a pull request, but couldn't test it quickly because of
> maven-javadoc-plugin failing when trying to run maven (I have to sort that
> out later).
>
> In addition, I noticed that a NullPointerException is thrown (now
> displayed in the new ImageJ Console [2]) upon starting Trainable Weka
> Segmentation, related to the GenericObjectEditor class of weka when you try
> to insert classifiers [3]. I pasted the stack trace below [4]. Don't know
> if that's something important to fix, but it might annoy users now that the
> Console is there.
>
> Best regards,
> Jan
>
>
> [1]: https://github.com/fiji/Trainable_Segmentation/blob/
> master/src/main/java/trainableSegmentation/WekaSegmentation.java#L4489
>
> [2]: http://imagej.net/2015-03-26_-_ImageJ_2.0.0-rc-28_released
>
> [3]: https://github.com/fiji/Trainable_Segmentation/blob/
> master/src/main/java/trainableSegmentation/Weka_
> Segmentation.java#L2350-2371
>
> [4]: Console output:
>
> Refreshing GOE props...
> java.lang.NullPointerException
>         at weka.core.ClassCache.initFromManifest(ClassCache.java:248)
>         at weka.core.ClassCache.initFromJar(ClassCache.java:293)
>         at weka.core.ClassCache.initFromClasspathPart(ClassCache.java:351)
>         at weka.core.ClassCache.initialize(ClassCache.java:373)
>         at weka.core.ClassCache.<init>(ClassCache.java:111)
>         at weka.core.ClassDiscovery.initCache(ClassDiscovery.java:447)
>         at weka.core.ClassDiscovery.clearCache(ClassDiscovery.java:481)
>         at weka.core.ClassDiscovery.clearClassCache(
> ClassDiscovery.java:490)
>         at weka.core.WekaPackageManager.refreshGOEProperties(
> WekaPackageManager.java:1143)
>         at weka.core.WekaPackageManager.loadPackages(
> WekaPackageManager.java:1134)
>         at weka.core.WekaPackageManager.loadPackages(
> WekaPackageManager.java:1047)
>         at weka.gui.GenericObjectEditor.determineClasses(
> GenericObjectEditor.java:177)
>         at weka.gui.GenericObjectEditor.<clinit>(GenericObjectEditor.
> java:247)
>         at sun.misc.Unsafe.ensureClassInitialized(Native Method)
>         at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(
> UnsafeFieldAccessorFactory.java:25)
>         at sun.reflect.ReflectionFactory.newFieldAccessor(
> ReflectionFactory.java:122)
>         at java.lang.reflect.Field.acquireFieldAccessor(Field.java:918)
>         at java.lang.reflect.Field.getFieldAccessor(Field.java:899)
>         at java.lang.reflect.Field.get(Field.java:358)
>         at trainableSegmentation.Weka_Segmentation.<clinit>(Weka_
> Segmentation.java:2358)
>         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
>         at sun.reflect.NativeConstructorAccessorImpl.newInstance(
> NativeConstructorAccessorImpl.java:39)
>         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(
> DelegatingConstructorAccessorImpl.java:27)
>         at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>         at java.lang.Class.newInstance0(Class.java:355)
>         at java.lang.Class.newInstance(Class.java:308)
>         at ij.IJ.runUserPlugIn(IJ.java:197)
>         at ij.IJ.runPlugIn(IJ.java:163)
>         at ij.Executer.runCommand(Executer.java:131)
>         at ij.Executer.run(Executer.java:64)
>         at java.lang.Thread.run(Thread.java:619)
>



--
Ignacio Arganda-Carreras, Ph.D.
Institut Jean-Pierre Bourgin, UMR1318 INRA-AgroParisTech
Bâtiment 2
INRA Centre de Versailles-Grignon
Route de St-Cyr (RD10)
78026 Versailles Cedex France

Tel : +33 (0)1 30 83 30 00 - fax : +33 (0)1 30 83 33 19
Website: http://sites.google.com/site/iargandacarreras/
<http://biocomp.cnb.csic.es/~iarganda/index_EN.html>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: Trainable Weka Segmentation - Result image calibration

Ignacio Arganda-Carreras-2
Hello Jan,

Regarding the exceptions you mentioned, I had a look and it seems they are
originated in the weka library reading Fiji jars without manifest.
Therefore it's not related to the plugin. I hope this will be fixed with
the updates of those external jars. I cannot even reproduce the error with
the debugger in Eclipse...

Cheers!

ignacio

On Tue, Mar 31, 2015 at 12:53 PM, Ignacio Arganda-Carreras <
[hidden email]> wrote:

> Hello Jan,
>
> Thanks for reporting all of this. I will have a look and try to fix it as
> soon as i can!
>
> Best,
>
> ignacio
>
> On Tue, Mar 31, 2015 at 12:15 PM, Jan Eglinger <[hidden email]>
> wrote:
>
>> Hi Ignacio,
>>
>> I have a question/feature request for your Trainable Weka Segmentation
>> plugin again :)
>> Currently, the probability map you get upon clicking the "Get
>> probability" button is not calibrated/scaled. I think adding a simple
>>
>>   result.setCalibration(trainingImage.getCalibration())
>>
>> to WekaSegmentation.java in line #4489 [1] would do the trick.
>> I would have filed a pull request, but couldn't test it quickly because
>> of maven-javadoc-plugin failing when trying to run maven (I have to sort
>> that out later).
>>
>> In addition, I noticed that a NullPointerException is thrown (now
>> displayed in the new ImageJ Console [2]) upon starting Trainable Weka
>> Segmentation, related to the GenericObjectEditor class of weka when you try
>> to insert classifiers [3]. I pasted the stack trace below [4]. Don't know
>> if that's something important to fix, but it might annoy users now that the
>> Console is there.
>>
>> Best regards,
>> Jan
>>
>>
>> [1]: https://github.com/fiji/Trainable_Segmentation/blob/
>> master/src/main/java/trainableSegmentation/WekaSegmentation.java#L4489
>>
>> [2]: http://imagej.net/2015-03-26_-_ImageJ_2.0.0-rc-28_released
>>
>> [3]: https://github.com/fiji/Trainable_Segmentation/blob/
>> master/src/main/java/trainableSegmentation/Weka_
>> Segmentation.java#L2350-2371
>>
>> [4]: Console output:
>>
>> Refreshing GOE props...
>> java.lang.NullPointerException
>>         at weka.core.ClassCache.initFromManifest(ClassCache.java:248)
>>         at weka.core.ClassCache.initFromJar(ClassCache.java:293)
>>         at weka.core.ClassCache.initFromClasspathPart(
>> ClassCache.java:351)
>>         at weka.core.ClassCache.initialize(ClassCache.java:373)
>>         at weka.core.ClassCache.<init>(ClassCache.java:111)
>>         at weka.core.ClassDiscovery.initCache(ClassDiscovery.java:447)
>>         at weka.core.ClassDiscovery.clearCache(ClassDiscovery.java:481)
>>         at weka.core.ClassDiscovery.clearClassCache(
>> ClassDiscovery.java:490)
>>         at weka.core.WekaPackageManager.refreshGOEProperties(
>> WekaPackageManager.java:1143)
>>         at weka.core.WekaPackageManager.loadPackages(
>> WekaPackageManager.java:1134)
>>         at weka.core.WekaPackageManager.loadPackages(
>> WekaPackageManager.java:1047)
>>         at weka.gui.GenericObjectEditor.determineClasses(
>> GenericObjectEditor.java:177)
>>         at weka.gui.GenericObjectEditor.<clinit>(GenericObjectEditor.
>> java:247)
>>         at sun.misc.Unsafe.ensureClassInitialized(Native Method)
>>         at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(
>> UnsafeFieldAccessorFactory.java:25)
>>         at sun.reflect.ReflectionFactory.newFieldAccessor(
>> ReflectionFactory.java:122)
>>         at java.lang.reflect.Field.acquireFieldAccessor(Field.java:918)
>>         at java.lang.reflect.Field.getFieldAccessor(Field.java:899)
>>         at java.lang.reflect.Field.get(Field.java:358)
>>         at trainableSegmentation.Weka_Segmentation.<clinit>(Weka_
>> Segmentation.java:2358)
>>         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>> Method)
>>         at sun.reflect.NativeConstructorAccessorImpl.newInstance(
>> NativeConstructorAccessorImpl.java:39)
>>         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(
>> DelegatingConstructorAccessorImpl.java:27)
>>         at java.lang.reflect.Constructor.newInstance(Constructor.java:
>> 513)
>>         at java.lang.Class.newInstance0(Class.java:355)
>>         at java.lang.Class.newInstance(Class.java:308)
>>         at ij.IJ.runUserPlugIn(IJ.java:197)
>>         at ij.IJ.runPlugIn(IJ.java:163)
>>         at ij.Executer.runCommand(Executer.java:131)
>>         at ij.Executer.run(Executer.java:64)
>>         at java.lang.Thread.run(Thread.java:619)
>>
>
>
>
> --
> Ignacio Arganda-Carreras, Ph.D.
> Institut Jean-Pierre Bourgin, UMR1318 INRA-AgroParisTech
> Bâtiment 2
> INRA Centre de Versailles-Grignon
> Route de St-Cyr (RD10)
> 78026 Versailles Cedex France
>
> Tel : +33 (0)1 30 83 30 00 - fax : +33 (0)1 30 83 33 19
> Website: http://sites.google.com/site/iargandacarreras/
> <http://biocomp.cnb.csic.es/~iarganda/index_EN.html>
>



--
Ignacio Arganda-Carreras, Ph.D.
Institut Jean-Pierre Bourgin, UMR1318 INRA-AgroParisTech
Bâtiment 2
INRA Centre de Versailles-Grignon
Route de St-Cyr (RD10)
78026 Versailles Cedex France

Tel : +33 (0)1 30 83 30 00 - fax : +33 (0)1 30 83 33 19
Website: http://sites.google.com/site/iargandacarreras/
<http://biocomp.cnb.csic.es/~iarganda/index_EN.html>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: Trainable Weka Segmentation - Result image calibration

ctrueden
Hi Ignacio,

> I had a look and it seems they are originated in the weka library
> reading Fiji jars without manifest. Therefore it's not related to the
> plugin. I hope this will be fixed with the updates of those external
> jars.

I filed an issue so we will not forget:
  https://github.com/fiji/fiji/issues/120

Regards,
Curtis


On Tue, Apr 14, 2015 at 5:47 AM, Ignacio Arganda-Carreras <
[hidden email]> wrote:

> Hello Jan,
>
> Regarding the exceptions you mentioned, I had a look and it seems they are
> originated in the weka library reading Fiji jars without manifest.
> Therefore it's not related to the plugin. I hope this will be fixed with
> the updates of those external jars. I cannot even reproduce the error with
> the debugger in Eclipse...
>
> Cheers!
>
> ignacio
>
> On Tue, Mar 31, 2015 at 12:53 PM, Ignacio Arganda-Carreras <
> [hidden email]> wrote:
>
> > Hello Jan,
> >
> > Thanks for reporting all of this. I will have a look and try to fix it as
> > soon as i can!
> >
> > Best,
> >
> > ignacio
> >
> > On Tue, Mar 31, 2015 at 12:15 PM, Jan Eglinger <[hidden email]>
> > wrote:
> >
> >> Hi Ignacio,
> >>
> >> I have a question/feature request for your Trainable Weka Segmentation
> >> plugin again :)
> >> Currently, the probability map you get upon clicking the "Get
> >> probability" button is not calibrated/scaled. I think adding a simple
> >>
> >>   result.setCalibration(trainingImage.getCalibration())
> >>
> >> to WekaSegmentation.java in line #4489 [1] would do the trick.
> >> I would have filed a pull request, but couldn't test it quickly because
> >> of maven-javadoc-plugin failing when trying to run maven (I have to sort
> >> that out later).
> >>
> >> In addition, I noticed that a NullPointerException is thrown (now
> >> displayed in the new ImageJ Console [2]) upon starting Trainable Weka
> >> Segmentation, related to the GenericObjectEditor class of weka when you
> try
> >> to insert classifiers [3]. I pasted the stack trace below [4]. Don't
> know
> >> if that's something important to fix, but it might annoy users now that
> the
> >> Console is there.
> >>
> >> Best regards,
> >> Jan
> >>
> >>
> >> [1]: https://github.com/fiji/Trainable_Segmentation/blob/
> >> master/src/main/java/trainableSegmentation/WekaSegmentation.java#L4489
> >>
> >> [2]: http://imagej.net/2015-03-26_-_ImageJ_2.0.0-rc-28_released
> >>
> >> [3]: https://github.com/fiji/Trainable_Segmentation/blob/
> >> master/src/main/java/trainableSegmentation/Weka_
> >> Segmentation.java#L2350-2371
> >>
> >> [4]: Console output:
> >>
> >> Refreshing GOE props...
> >> java.lang.NullPointerException
> >>         at weka.core.ClassCache.initFromManifest(ClassCache.java:248)
> >>         at weka.core.ClassCache.initFromJar(ClassCache.java:293)
> >>         at weka.core.ClassCache.initFromClasspathPart(
> >> ClassCache.java:351)
> >>         at weka.core.ClassCache.initialize(ClassCache.java:373)
> >>         at weka.core.ClassCache.<init>(ClassCache.java:111)
> >>         at weka.core.ClassDiscovery.initCache(ClassDiscovery.java:447)
> >>         at weka.core.ClassDiscovery.clearCache(ClassDiscovery.java:481)
> >>         at weka.core.ClassDiscovery.clearClassCache(
> >> ClassDiscovery.java:490)
> >>         at weka.core.WekaPackageManager.refreshGOEProperties(
> >> WekaPackageManager.java:1143)
> >>         at weka.core.WekaPackageManager.loadPackages(
> >> WekaPackageManager.java:1134)
> >>         at weka.core.WekaPackageManager.loadPackages(
> >> WekaPackageManager.java:1047)
> >>         at weka.gui.GenericObjectEditor.determineClasses(
> >> GenericObjectEditor.java:177)
> >>         at weka.gui.GenericObjectEditor.<clinit>(GenericObjectEditor.
> >> java:247)
> >>         at sun.misc.Unsafe.ensureClassInitialized(Native Method)
> >>         at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(
> >> UnsafeFieldAccessorFactory.java:25)
> >>         at sun.reflect.ReflectionFactory.newFieldAccessor(
> >> ReflectionFactory.java:122)
> >>         at java.lang.reflect.Field.acquireFieldAccessor(Field.java:918)
> >>         at java.lang.reflect.Field.getFieldAccessor(Field.java:899)
> >>         at java.lang.reflect.Field.get(Field.java:358)
> >>         at trainableSegmentation.Weka_Segmentation.<clinit>(Weka_
> >> Segmentation.java:2358)
> >>         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> >> Method)
> >>         at sun.reflect.NativeConstructorAccessorImpl.newInstance(
> >> NativeConstructorAccessorImpl.java:39)
> >>         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(
> >> DelegatingConstructorAccessorImpl.java:27)
> >>         at java.lang.reflect.Constructor.newInstance(Constructor.java:
> >> 513)
> >>         at java.lang.Class.newInstance0(Class.java:355)
> >>         at java.lang.Class.newInstance(Class.java:308)
> >>         at ij.IJ.runUserPlugIn(IJ.java:197)
> >>         at ij.IJ.runPlugIn(IJ.java:163)
> >>         at ij.Executer.runCommand(Executer.java:131)
> >>         at ij.Executer.run(Executer.java:64)
> >>         at java.lang.Thread.run(Thread.java:619)
> >>
> >
> >
> >
> > --
> > Ignacio Arganda-Carreras, Ph.D.
> > Institut Jean-Pierre Bourgin, UMR1318 INRA-AgroParisTech
> > Bâtiment 2
> > INRA Centre de Versailles-Grignon
> > Route de St-Cyr (RD10)
> > 78026 Versailles Cedex France
> >
> > Tel : +33 (0)1 30 83 30 00 - fax : +33 (0)1 30 83 33 19
> > Website: http://sites.google.com/site/iargandacarreras/
> > <http://biocomp.cnb.csic.es/~iarganda/index_EN.html>
> >
>
>
>
> --
> Ignacio Arganda-Carreras, Ph.D.
> Institut Jean-Pierre Bourgin, UMR1318 INRA-AgroParisTech
> Bâtiment 2
> INRA Centre de Versailles-Grignon
> Route de St-Cyr (RD10)
> 78026 Versailles Cedex France
>
> Tel : +33 (0)1 30 83 30 00 - fax : +33 (0)1 30 83 33 19
> Website: http://sites.google.com/site/iargandacarreras/
> <http://biocomp.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