Sholl Analysis (Tracings) - Odd Bug

imagej
sholl
sholl-analysis
simpleneuritetracer

#1

I am experiencing an unusual and oddly specific bug with the ‘Sholl Analysis (Tracings)…’ plugin. When I select the “Center” to be “soma” AND check the box to “Include only paths tagged with the following labels” the plugin fails. It simply won’t complete the function. I’ve tried ticking off different settings and it appears this specific combination is the culprit - which is of course the one I need - I’m trying to do sholl analysis on Dendrites using the soma for the Sholl center.


#2

And after a 5-10 minutes of it not doing anything I get this prompt Exception

(Fiji Is Just) ImageJ 2.0.0-rc-65/1.51t; Java 1.8.0_66 [64-bit]; Mac OS X 10.12.6; 475MB of 6446MB (7%)
 
java.lang.IllegalArgumentException: Counter==0
	at ij.measure.ResultsTable.addValue(ResultsTable.java:151)
	at ij.measure.ResultsTable.addValue(ResultsTable.java:178)
	at sholl.Sholl_Analysis.getFittedProfile(Sholl_Analysis.java:943)
	at sholl.Sholl_Analysis.run(Sholl_Analysis.java:472)
	at sholl.Sholl_Analysis.runInTabularMode(Sholl_Analysis.java:2683)
	at sholl.Sholl_Analysis.analyzeProfile(Sholl_Analysis.java:2670)
	at tracing.ShollAnalysisPlugin.run(ShollAnalysisPlugin.java:230)
	at ij.IJ.runUserPlugIn(IJ.java:221)
	at ij.IJ.runPlugIn(IJ.java:185)
	at ij.Executer.runCommand(Executer.java:137)
	at ij.Executer.run(Executer.java:66)
	at ij.IJ.run(IJ.java:301)
	at ij.IJ.run(IJ.java:276)
	at ij.macro.Functions.doRun(Functions.java:604)
	at ij.macro.Functions.doFunction(Functions.java:96)
	at ij.macro.Interpreter.doStatement(Interpreter.java:248)
	at ij.macro.Interpreter.doStatements(Interpreter.java:234)
	at ij.macro.Interpreter.run(Interpreter.java:117)
	at ij.macro.Interpreter.run(Interpreter.java:88)
	at ij.macro.Interpreter.run(Interpreter.java:99)
	at ij.plugin.Macro_Runner.runMacro(Macro_Runner.java:161)
	at ij.IJ.runMacro(IJ.java:138)
	at ij.IJ.runMacro(IJ.java:127)
	at net.imagej.legacy.IJ1Helper$3.call(IJ1Helper.java:1096)
	at net.imagej.legacy.IJ1Helper$3.call(IJ1Helper.java:1092)
	at net.imagej.legacy.IJ1Helper.runMacroFriendly(IJ1Helper.java:1043)
	at net.imagej.legacy.IJ1Helper.runMacro(IJ1Helper.java:1092)
	at net.imagej.legacy.plugin.IJ1MacroEngine.eval(IJ1MacroEngine.java:137)
	at org.scijava.script.ScriptModule.run(ScriptModule.java:160)
	at org.scijava.module.ModuleRunner.run(ModuleRunner.java:168)
	at org.scijava.module.ModuleRunner.call(ModuleRunner.java:127)
	at org.scijava.module.ModuleRunner.call(ModuleRunner.java:66)
	at org.scijava.thread.DefaultThreadService$3.call(DefaultThreadService.java:238)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

#3

@Eric_Zluhan,

First of all, apologies for the late reply and thank you for the bug report. This is an awkward one. The exception is caused by the plugin trying to access an empty table. The issue is that the table should not be empty when the call happens. So I have to say I am clueless as why your data triggers generates an empty table. My guess is that there is something else going on related to the labels you choose. Maybe no paths have the selected labels?

There have been several minor fixes for issues reported by users in the last couple of months (see Release Notes). Let’s do like this: I’ll push those fixes to the updater, in case they have already addressed this issue, and I will also push an update that would allow you to do the analysis using the Simple Neurite Tracer GUI. If none of those work, then I would ask you to put your traces/swc file somewhere where I can download it, so that I can have a look at it.

Thanks for your patience!


#4

I just updated and still have the issue. I tried doing the analysis in SNT but that did not work for me at all. I got this error:

Exception in thread "AWT-EventQueue-0" java.lang.NoSuchMethodError: org.jfree.chart.renderer.xy.XYBarRenderer.setGradientPaintTransformer(Lorg/jfree/ui/GradientPaintTransformer;)V
	at tracing.ShollAnalysisDialog$ShollResults.createGraph(ShollAnalysisDialog.java:769)
	at tracing.ShollAnalysisDialog.updateResults(ShollAnalysisDialog.java:254)
	at tracing.ShollAnalysisDialog.<init>(ShollAnalysisDialog.java:1094)
	at tracing.InteractiveTracerCanvas.startShollAnalysis(InteractiveTracerCanvas.java:113)
	at tracing.QueueJumpingKeyListener.keyPressed(QueueJumpingKeyListener.java:142)
	at java.awt.Component.processKeyEvent(Component.java:6493)
	at java.awt.Component.processEvent(Component.java:6312)
	at java.awt.Component.dispatchEventImpl(Component.java:4891)
	at java.awt.Component.dispatchEvent(Component.java:4713)
	at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:806)
	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1074)
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:945)
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:771)
	at java.awt.Component.dispatchEventImpl(Component.java:4762)
	at java.awt.Component.dispatchEvent(Component.java:4713)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.awt.EventQueue$4.run(EventQueue.java:729)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Exception in thread "AWT-EventQueue-0" java.lang.NoSuchMethodError: org.jfree.chart.renderer.xy.XYBarRenderer.setGradientPaintTransformer(Lorg/jfree/ui/GradientPaintTransformer;)V
	at tracing.ShollAnalysisDialog$ShollResults.createGraph(ShollAnalysisDialog.java:769)
	at tracing.ShollAnalysisDialog.updateResults(ShollAnalysisDialog.java:254)
	at tracing.ShollAnalysisDialog.<init>(ShollAnalysisDialog.java:1094)
	at tracing.InteractiveTracerCanvas.startShollAnalysis(InteractiveTracerCanvas.java:113)
	at tracing.QueueJumpingKeyListener.keyPressed(QueueJumpingKeyListener.java:142)
	at java.awt.Component.processKeyEvent(Component.java:6493)
	at java.awt.Component.processEvent(Component.java:6312)
	at java.awt.Component.dispatchEventImpl(Component.java:4891)
	at java.awt.Component.dispatchEvent(Component.java:4713)
	at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:806)
	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1074)
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:945)
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:771)
	at java.awt.Component.dispatchEventImpl(Component.java:4762)
	at java.awt.Component.dispatchEvent(Component.java:4713)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.awt.EventQueue$4.run(EventQueue.java:729)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

#5

here is a onedrive link to the files I’m working with
https://1drv.ms/f/s!Akaac8GZS5Ivg4ASSTUwN2Sgv_24Bg


#6

Thanks for the files. I have not release any version yet. Will let you know when I upload everything. See Issues Running Sholl Analysis on Simple Neurite Tracer for details.


#7

@Eric_Zluhan, The issue relates to the fact that the current release version of SNT cannot cope well with single point paths (that you used to mark the soma). However, your description that the ‘Sholl Analysis (Tracings)… command does nothing’ when parsing the file you just provided is strange. You should certainly be getting the following error:

image

Either way, in the immediate run you have two options:

  1. Perform the analysis within SNT (you will be able to do so using v3.1.6, just uploaded to the java8 update site)
  2. Redraw the soma path, using at least two points (they can be extremely closed)
    I know none of these are optimal. SNT is currently being rewritten to take advantage of IJ2 features, and is not afflicted by this issue. I will try to push a beta release to the Neuroanatomy update site, so that none of these proposed workarounds are needed.

#8

Okay thank you for looking into this!