tischi / fiji-plugin-morphometry

0 stars 1 forks source link

Spindle: Versions #77

Open tischi opened 5 years ago

tischi commented 5 years ago

Hi All,

Since the version number of ../jars/fiji-plugins-morphometry-*.jar might also change because of reasons that are not related to the spindle morphometry measurement plugin, I decided to put a version number into the plugin itself (lower right corner):

image
tischi commented 5 years ago

Versions previous to 0.5.5

These versions do not have a version number. But we could keep a list here. Could you please post here the version numbers of the ../jars/fiji-plugins-morphometry-*.jar that you were previously using?

tischi commented 5 years ago

Version 0.5.5

Major changes

Relation to jars

Corresponds to jars starting from version number fiji-plugin-morphometry-0.4.16.jar

TobiasKletter commented 5 years ago

Versions previous to 0.5.5

These versions do not have a version number. But we could keep a list here. Could you please post here the version numbers of the ../jars/fiji-plugins-morphometry-*.jar that you were previously using?

@tischi Currently using: fiji-plugin-morphometry-0.4.15.jar

tischi commented 5 years ago

Are results from fiji-plugin-morphometry-0.4.15.jar already in the graphs (Zwischenergebnisse.pdf) that Nils was posting? If so, how is it called there?

n-dempe commented 5 years ago

Are results from fiji-plugin-morphometry-0.4.15.jar already in the graphs (Zwischenergebnisse.pdf) that Nils was posting? If so, how is it called there?

yes, for Spindle Width fiji-plugin-morphometry-0.4.15.jar is called "new plugin" in the graphs for Spindle Length, DNA longest axis there were no differences between between 0.4.15 and the previous version.

TobiasKletter commented 5 years ago

A little feedback from the analysis of a dataset with rather suboptimal input images:

For reasons, the DNA signal in this dataset was mostly really weak and I anticipated some problems because of that.

The current version (0.5.5) and the version before performed differently:

Plugin Version Pre-0.5.5: total n = 826 n correct (as judged by pole placement) = 139 n incorrect = 606 n "not processed" (java.lang.IndexOutOfBoundsException or java.lang.NullPointerException) = 81

Plugin Version 0.5.5: total n = 826 n correct (as judged by pole placement) = 360 n incorrect = 276 n "not processed" (java.lang.IndexOutOfBoundsException or java.lang.NullPointerException) = 190

Here are some example files: Throws exception only in new version https://www.dropbox.com/s/thy8mtfkix5vuqn/Throws_Exception_Version_055_only.tif?dl=0

Throws exception in both versions https://www.dropbox.com/s/x7omhzw7dwgl3uw/Throws_Exception_Version_pre055_and_055.tif?dl=0

Output images from each version of the same input image https://www.dropbox.com/s/bql0pymjgtlbsg4/Version_pre055-out.tif?dl=0 https://www.dropbox.com/s/02si1lqj9jsca9s/Version_055-out.tif?dl=0 (input image https://www.dropbox.com/s/98dkn8lx926ewik/HighZoom--W0000--P0001-T0030.tif?dl=0)

(In the 0.5.5 output, the channel containing the tubulin mask doesn't seem to be aligned with the other channels?)

Please let me know if you'd be interested in seeing other examples from this set or the full exception messages!?

tischi commented 5 years ago

Thanks!

  1. I will try to fix the exceptions!
  2. I will see why the tubular mask is not aligned!
tischi commented 5 years ago

The dynamic range is really super low:

image

I could try to make it work, but, as an alternative: Would it be an option if the plugin would throw some meaningful error there? What would you think?

tischi commented 5 years ago

...another challenge here is that the coverslip seems to be relatively bright in the DNA channel Do you know why that is? Do you maybe have a reflection there?

image
tischi commented 5 years ago

same issue with the other image: very low dynamic range in DNA and, I think, a reflection signal from the coverslip (which microscope was that?):

image
TobiasKletter commented 5 years ago

Yes, I think having an error message would be totally fine - I wouldn't want to use these images for quantification anyways because of the low signal-to-noise, so I don't think the plugin needs to be able to cope with these.

Good that you pointed out the reflection issue. I thought we solved it but it seems to appear again when the dynamic range is so low. This is all data from the LSM800.

tischi commented 5 years ago

ok! makes sense. I will implement a proper error message for such cases.

What shall we do in terms of output? Should it simply produce no output files?

TobiasKletter commented 5 years ago

Maybe have the measurements.txt file but with "NaN" for every column? Then we can easily check for these cases in the concatenated table...

TobiasKletter commented 5 years ago

...except the PathInputImage, that's really useful of course.

tischi commented 5 years ago

That makes sense! In addition, there could be a column in the table, called "Comments", and maybe there could be some text, such as "Too low dynamic range in DNA". And in images, where everything went fine we say: "No comment". What do you think?

TobiasKletter commented 5 years ago

Sounds good!

tischi commented 5 years ago

Version 0.5.6

Major changes

Relation to jars

Corresponds to jars starting from version number fiji-plugin-morphometry-0.4.18.jar

@TobiasKletter @n-dempe Could you please test it? (Update Fiji to get it)

TobiasKletter commented 5 years ago

20190816_20190622_055vs056_SThreshold 20190816_20190622_055vs056_SVolume 20190816_20190622_055vs056_SWidth 20190816_20190622_055vs056_SWidthmin

tischi commented 5 years ago

Version 0.5.7

Major changes

Relation to jars

Corresponds to jars starting from version number fiji-plugin-morphometry-0.4.19.jar

@TobiasKletter @n-dempe Could you please test it? (Update Fiji to get it)

n-dempe commented 4 years ago

Just to clarify :

If 0.4.19.jar. is version 0.5.7 then 0.4.15.jar is which version?

TobiasKletter commented 4 years ago

@n-dempe I think 0.4.15.jar should correspond to version 0.5.4

TobiasKletter commented 4 years ago

@tischi https://www.dropbox.com/sh/wmltcno4312rd69/AACJfsQiwnj9VE4ZL5cRwCiga?dl=0&lst= The two last ones in this folder are throwing exceptions and we can't figure out why... Signal-to-noise in DNA channel should be fine, no? Or are the bright non-mitotic DNA signals disrupting something?

tischi commented 4 years ago

Version 0.5.8

Major changes

Relation to jars

Corresponds to jars starting from version number fiji-plugin-morphometry-0.5.0.jar

TobiasKletter commented 4 years ago

@tischi

Hi! Since the latest update, I can no longer use the batch processing function, and the following message pops up: Screenshot 2019-11-12 at 10 39 37 Same happened on a different computer after updating. Re-installing Fiji didn't help so I figured it's on the plugin end?

tischi commented 4 years ago

I tried this with other Commands and it seems to me not specific to our Spindle Morphometry.

  1. Could you please try if that also happens with a fresh Fiji for some other plugin (before you add my update site)?
  2. If yes, could you please post this issue on www.image.sc?
TobiasKletter commented 4 years ago

Sadly no reply yet on image.sc ... For the time being, I tried to call it within an Imagej macro. Would that work, in theory? My code did not (it opens the GUI and wants me to click "ok"), but I might be just missing something:

parent_Dir = "/Path/To/Parent/Directory/";
in_Dir = parent_Dir + "InputFolder/";
out_Dir = parent_Dir + "OutputFolder/";
Voxel_size = 0.25;
Dynamic_range = 7;
DNA_Channel = 2;
Spindle_Channel = 1;
Intermediate_Results = false;  

fileList = getFileList(in_Dir);

setBatchMode(true);
for (i = 0; i < fileList.length; i++) 
    {
    fileName = in_Dir + fileList[i];
    print("Processing: " + fileName);
    import_Args = "Input Image File=" + fileName + "Input Image Files Parent Directory=" + parent_Dir + "Output Directory=" + out_Dir + "Voxel Size for Analysis=" + Voxel_size + "Minimum dynamic range [segmentation threshold gray value]=" + Dynamic_range + "DNA Channel [one-based index]=" + DNA_Channel + "Spindle Channel [one-based index]=" + Spindle_Channel + "Show Intermediate Results=" + Intermediate_Results; 
    run("Spindle Morphometry", import_Args);
    }
setBatchMode(false);
print("Finished analysis.")

Also, it appears that there is some hick-up anyways. When executing the plugin (in non-batch mode...), it throws the following error:

## Spindle Morphometry Measurement
Processing file HighZoom--W0000--P0001-T0002.tif
Create isotropic images...
DNA initial threshold: 49.0
Remove small regions...
Determining DNA axes...
[ERROR] Module threw error
java.lang.NoClassDefFoundError: mcib3d/image3d/ImageInt
    at de.embl.cba.morphometry.spindle.SpindleMorphometry.determineDnaAxes(SpindleMorphometry.java:755)
    at de.embl.cba.morphometry.spindle.SpindleMorphometry.measure(SpindleMorphometry.java:134)
    at de.embl.cba.morphometry.spindle.SpindleMorphometry.run(SpindleMorphometry.java:102)
    at de.embl.cba.morphometry.commands.SpindleMorphometryCommand.processFile(SpindleMorphometryCommand.java:120)
    at de.embl.cba.morphometry.commands.SpindleMorphometryCommand.run(SpindleMorphometryCommand.java:77)
    at org.scijava.command.CommandModule.run(CommandModule.java:199)
    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.lambda$wrap$2(DefaultThreadService.java:228)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: mcib3d.image3d.ImageInt
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 14 more
tischi commented 4 years ago

java.lang.NoClassDefFoundError: mcib3d/image3d/ImageInt

you need to also install the update site: 3D Image Suite

TobiasKletter commented 4 years ago

Aaah, I wasn't aware! Thanks, works perfectly now.

TobiasKletter commented 4 years ago

Hi @tischi since the last update, we get the following error:

(Fiji Is Just) ImageJ 2.0.0-rc-69/1.52p; Java 1.8.0_202 [64-bit]; Mac OS X 10.14.5; 201MB of 4670MB (4%)

java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.NullPointerException
    at net.imagej.legacy.LegacyService.runLegacyCompatibleCommand(LegacyService.java:309)
    at net.imagej.legacy.DefaultLegacyHooks.interceptRunPlugIn(DefaultLegacyHooks.java:163)
    at ij.IJ.runPlugIn(IJ.java)
    at ij.Executer.runCommand(Executer.java:137)
    at ij.Executer.run(Executer.java:66)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.concurrent.ExecutionException: java.lang.NullPointerException
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:192)
    at net.imagej.legacy.LegacyService.runLegacyCompatibleCommand(LegacyService.java:305)
    ... 5 more
Caused by: java.lang.NullPointerException
    at de.embl.cba.morphometry.commands.SpindleMorphometryCommand.processFile(SpindleMorphometryCommand.java:159)
    at de.embl.cba.morphometry.commands.SpindleMorphometryCommand.run(SpindleMorphometryCommand.java:94)
    at org.scijava.command.CommandModule.run(CommandModule.java:199)
    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.lambda$wrap$2(DefaultThreadService.java:228)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    ... 1 more

Any idea?

tischi commented 4 years ago

I do not have an immediate idea. Are there outputs in the IJ log Window?

tischi commented 4 years ago

I found the error. I introduced an error on purpose just to stop the code while trying to develop an improved method to find the cell center in images with more than one cell. I fixed it and uploaded to Fiji.

TobiasKletter commented 4 years ago

Works again, thanks!

tischi commented 4 years ago

@TobiasKletter

There is a new version!

Spindle Morphometry Version 0.5.9

Major changes

Some code snippets

Spindle CoV (Coefficient of Variation)
final ArrayList< Double > intensitiesWithMask =
        getValuesWithinMaskAsList( intensities, mask );

final double mean = Utils.mean( intensitiesWithMask );
final double sdev = Utils.sdev( intensitiesWithMask, mean );

double cov = sdev / ( mean - meanOffset );

with meanOffset here being the Spindle_Intensity_Threshold.

Jars

Jars with a version number >= 0.5.3

tischi commented 4 years ago

@TobiasKletter

Could you please:

  1. Download a fresh Fiji
  2. Download, unzip, and put those two files into the jars folder: https://oc.embl.de/index.php/s/SvKMxKttl7nhbDO

You should see at the very bottom of the plugins menu:

image

TobiasKletter commented 4 years ago

Works nicely 👍 I will try to quality control how the new DNA segmentation and the spindle angles perform! Anything else I should test?

tischi commented 4 years ago

Just test everything and make issues, but now here: https://github.com/tischi/spindle3d/issues I will be on holidays for 3 weeks from Monday on. Tomorrow I could still do some fixes.