Re: wait for a result to appear

Posted by TimFeinstein on
URL: http://imagej.273.s1.nabble.com/wait-for-a-result-to-appear-tp5017029p5017043.html

Thanks Curtis.  The first talk refers to Iterative 3D Deconvolution, which
was released and last updated in 2005.  Multiview deconvolution is for
light sheet data.  Heck I would be using it now if I could get multiview
reconstruction to work on my home-made instrument.  Apparently you need a
very carefully registered sample holder.

I understand that Ops and GPU deconvolution will be great, eventually.
Could anyone share their favorite deconvolution plugin that they use right
now?  

I have used commercial packages like Huygens with great success.  However
at the moment I would like to use ImageJ to deconvolve basic widefield
data for routine tasks.  PID is the best of the options I have tested but
it appears not super compatible with scripting.

All the best,


Tim

Timothy Feinstein, Ph.D.
Research Scientist
University of Pittsburgh Department of Developmental Biology





On 8/17/16, 11:01 AM, "ImageJ Interest Group on behalf of Curtis Rueden"
<[hidden email] on behalf of [hidden email]> wrote:

>Hi Timothy,
>
>It is worth noting that Parallel Iterative Deconvolution has not been
>maintained for many years. I wonder if you have tried any of the more
>recent deconvolution plugins and algorithms?
>
>There were two presentations at the last ImageJ conference:
>
>* Brian Northan - Flexible Deconvolution using ImageJ Ops
> -- video -
>https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fvimeo.com
>%2f140098821&data=01%7c01%7ctnf8%40pitt.edu%7c735fd07cf8494373641d08d3c6b0
>f63b%7c9ef9f489e0a04eeb87cc3a526112fd0d%7c1&sdata=J4MQM6Df0cOfXJP5UEjdpyiw
>UsSsJbqX6QqXAqqJsDg%3d
> -- abstract -
>https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fimagej.net
>%2fConference_2015_Program%23Brian_Northan_-_&data=01%7c01%7ctnf8%40pitt.e
>du%7c735fd07cf8494373641d08d3c6b0f63b%7c9ef9f489e0a04eeb87cc3a526112fd0d%7
>c1&sdata=sZJpBwn6yHYxk3TzzGkWcFCSBIu%2b1jOIWkM7E5eUmQA%3d
>Flexible_deconvolution_using_ImageJ_Ops
> -- slides -
>https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fimagej.gi
>thub.io%2fpresentations%2f2015-09-04-&data=01%7c01%7ctnf8%40pitt.edu%7c735
>fd07cf8494373641d08d3c6b0f63b%7c9ef9f489e0a04eeb87cc3a526112fd0d%7c1&sdata
>=lDtyBOntnQcBWB%2bEdh5dH6GueMCEjc2AixX5oSygyzI%3d
>imagej2-deconvolution/
>
>* Benjamin Schmid - Real-time multi-view deconvolution of time-lapse data
>on the GPU
> -- video -
>https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fvimeo.com
>%2f140098826&data=01%7c01%7ctnf8%40pitt.edu%7c735fd07cf8494373641d08d3c6b0
>f63b%7c9ef9f489e0a04eeb87cc3a526112fd0d%7c1&sdata=W5yKLyy8h3JfHp4nPZberW7a
>7gWFAwWfmQdGaWxscuI%3d
> -- abstract -
>https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fimagej.net
>%2fConference_2015_Program%23&data=01%7c01%7ctnf8%40pitt.edu%7c735fd07cf84
>94373641d08d3c6b0f63b%7c9ef9f489e0a04eeb87cc3a526112fd0d%7c1&sdata=vHT%2f7
>4UKsKVqYwFR21Y2bIkEJB6A5xRzY4reQyaVUCo%3d
>Benjamin_Schmid_-_Real-time_multi-view_deconvolution_of_
>time-lapse_data_on_the_GPU
>
>See also:
>https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fimagej.net
>%2fDeconvolution&data=01%7c01%7ctnf8%40pitt.edu%7c735fd07cf8494373641d08d3
>c6b0f63b%7c9ef9f489e0a04eeb87cc3a526112fd0d%7c1&sdata=1qD5mPYlW4Dcu%2fXO2S
>qzXPOW6k7sW3ghnLcE%2bqSz6gw%3d
>
>And improvements to that wiki page are very welcome.
>
>Regards,
>Curtis
>
>--
>Curtis Rueden
>LOCI software architect -
>https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2floci.wisc.
>edu%2fsoftware&data=01%7c01%7ctnf8%40pitt.edu%7c735fd07cf8494373641d08d3c6
>b0f63b%7c9ef9f489e0a04eeb87cc3a526112fd0d%7c1&sdata=Dg44RANnXrWmSyj%2bH5hZ
>ahzOvervqLECK6%2fzlNQVPGE%3d
>ImageJ2 lead, Fiji maintainer -
>https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fimagej.net
>%2fUser%3aRueden&data=01%7c01%7ctnf8%40pitt.edu%7c735fd07cf8494373641d08d3
>c6b0f63b%7c9ef9f489e0a04eeb87cc3a526112fd0d%7c1&sdata=w6O2NK61LNyiQffGf9Q9
>P8wn%2f8DTGSEx4EvGjPWZrMg%3d
>Did you know ImageJ has a forum?
>https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fforum.imag
>ej.net%2f&data=01%7c01%7ctnf8%40pitt.edu%7c735fd07cf8494373641d08d3c6b0f63
>b%7c9ef9f489e0a04eeb87cc3a526112fd0d%7c1&sdata=ETP6QBbg%2fsFtHR7fc2ZCxJbr5
>uKj1LX0pL25izztuSI%3d
>
>
>On Wed, Aug 17, 2016 at 9:41 AM, Feinstein, Timothy N <[hidden email]>
>wrote:
>
>> Thank you Aryeh!  I feel silly for missing that basic bit of Java logic.
>>
>> Well, that part works now.  Now my problem is that any subsequent
>>command
>> appears to supercede Parallel Iterative Deconvolution, even 'wait()'.
>>It
>> is entirely possible that PID automation only works in isolation and not
>> inside any more extensive macro.  If anyone thinks the problem is
>> solvable, I pasted my code at the bottom. Note that some long lines of
>> code will have several paragraph breaks in them when pasting out of an
>> email.
>>
>> All the best,
>>
>>
>> Tim
>>
>> Timothy Feinstein, Ph.D.
>> Research Scientist
>> University of Pittsburgh Department of Developmental Biology
>>
>>
>>
>> On 8/16/16, 10:41 PM, "ImageJ Interest Group on behalf of Aryeh Weiss"
>> <[hidden email] on behalf of [hidden email]> wrote:
>>
>> >On 17/08/2016 4:34 AM, Feinstein, Timothy N wrote:
>> >>Hello,
>> >>
>> >>I am trying to automate the plugin Parallel Iterative Deconvolution.
>> >>This plugin does not seem designed for multi-channel images and
>> >>especially for doing them in batches, so I am trying to patch
>>together a
>> >>work-around.  The workflow is basically to pre-process for background
>> >>subtraction, split channels, deconvolve each channel with the
>> >>appropriate point spread function, delete the originals, merge the
>> >>results back into one composite and save.
>> >>
>> >>This all works fine, except that ImageJ cannot tell that the plugin is
>> >>still running, so it blazes ahead without the results appearing.  I
>> >>believe in theory I can use the WHILE statement to say something like:
>> >>
>> >>while (isOpen("C1-"+Filename[i]+"_WPL_decon") = False) {
>> >>      wait(1000);
>> >>}
>> >
>> >I think you need == , not =.
>> >Try:
>> >
>> >while (isOpen("C1-"+Filename[i]+"_WPL_decon") == False) {
>> >
>> >
>> >>Ideally this should hold the macro in stasis until the deconvolution
>> >>cycle is finished and a result appears.  However ImageJ seems to
>>think I
>> >>am missing a parentheses at the equals sign.  And I am not sure
>>whether
>> >>this strategy would work anyway.
>> >>
>> >>Any advice would be appreciated.  Best,
>> >>
>> >>
>> >>Tim
>> >>
>> >>Timothy Feinstein, Ph.D.
>> >>
>> >>--
>> >>ImageJ mailing list:
>> >><a href="https://na01.safelinks.protection.outlook.com/?url=http%">https://na01.safelinks.protection.outlook.com/?url=http%
>> 3a%2f%2fimagej.ni
>> >>h.gov%2fij%2flist.html&data=01%7c01%7ctnf8%40pitt.edu%7cce
>> 9b31c0a3ad42887
>> >>10708d3c649942d%7c9ef9f489e0a04eeb87cc3a526112fd0d%7c1&
>> sdata=aK0y7w7ZqIAw
>> >>8CRfzK6chXWzbWzCmjTj6vZqjPDDi6k%3d
>> >
>> >
>> >--
>> >Aryeh Weiss
>> >Faculty of Engineering
>> >Bar Ilan University
>> >Ramat Gan 52900 Israel
>> >
>> >Ph:  972-3-5317638
>> >FAX: 972-3-7384051
>> >
>> >--
>> >ImageJ mailing list:
>> ><a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%">https://na01.safelinks.protection.outlook.com/?url=http%3a%
>> 2f%2fimagej.nih
>> >.gov%2fij%2flist.html&data=01%7c01%7ctnf8%40pitt.edu%7cce9b
>> 31c0a3ad4288710
>> >708d3c649942d%7c9ef9f489e0a04eeb87cc3a526112fd0d%7c1&sdata=
>> aK0y7w7ZqIAw8CR
>> >fzK6chXWzbWzCmjTj6vZqjPDDi6k%3d
>> dir = getDirectory("Input files");
>> output = getDirectory("Save the results");
>> filename = getFileList(dir);
>>
>> _______________________________________________________
>>
>>
>> dir = getDirectory("Input files");
>> output = getDirectory("Save the results");
>> filename = getFileList(dir);
>>
>>
>> pathGreen = File.openDialog("Select the green PSF");
>> pathRed = File.openDialog("Select the red PSF");
>> pathFarRed = File.openDialog("Select the far red PSF");
>>
>> setBatchMode(false);
>>
>> //define the parameters of deconvolution
>>
>> function deconvolution() {
>>     pathToBlurredImage = image;
>>     pathToDeblurredImage = deconImage;
>>     pathToPsf = psf;
>>     boundary = "REFLEXIVE"; //available options: REFLEXIVE, PERIODIC,
>>ZERO
>>     resizing = "AUTO"; // available options: AUTO, MINIMAL,
>> NEXT_POWER_OF_TWO
>>     output = "SAME_AS_SOURCE"; // available options: SAME_AS_SOURCE,
>>BYTE,
>> SHORT, FLOAT
>>     precision = "SINGLE"; //available options: SINGLE, DOUBLE
>>     threshold = "-1"; //if -1, then disabled
>>     maxIters = "10";
>>     nOfThreads = "8";
>>     showIter = "false";
>>     gamma = "0";
>>     filterXY = "1.0";
>>     filterZ = "1.0";
>>     normalize = "false";
>>     logMean = "false";
>>     antiRing = "true";
>>     changeThreshPercent = "0.01";
>>     db = "false";
>>     detectDivergence = "true";
>>
>> call("edu.emory.mathcs.restoretools.iterative.ParallelIterat
>> iveDeconvolutio
>> n3D.deconvolveWPL", pathToBlurredImage, pathToPsf, pathToDeblurredImage,
>> boundary, resizing, output, precision, threshold, maxIters, nOfThreads,
>> showIter, gamma, filterXY, filterZ, normalize, logMean, antiRing,
>> changeThreshPercent, db, detectDivergence);
>> }
>>
>> //process each file in the input folder
>>
>> for (i=0; i<filename.length; i++) {
>>     if(endsWith(filename[i], ".tif")) {
>>         open(dir+filename[i]);
>>         red = "C2-"+filename[i]+"_WPL_decon";
>>         blue = "C3-"+filename[i]+"_WPL_decon";
>>         green = "C1-"+filename[i]+"_WPL_decon";
>>
>> //pre-processing for PID: background subtract, add a small saturated
>>spot
>> to the first frame in each channel (to get around a quirk in PID's
>> design), crop (if desired), split channels
>>
>>         name=getTitle;
>>         run("Subtract Background...", "rolling=50 stack");
>>          run("Canvas Size...", "width=256 height=256 position=Center
>> zero");
>>          Stack.setSlice(1)
>>          Stack.setChannel(1)
>>          makeRectangle(0, 0, 3, 3);
>>          run("Add...", "value=65535 slice");
>>          Stack.setChannel(2)
>>          makeRectangle(0, 0, 3, 3);
>>          run("Add...", "value=65535 slice");
>>          Stack.setChannel(3)
>>          makeRectangle(0, 0, 3, 3);
>>          run("Add...", "value=65535 slice");
>>          run("Split Channels");
>>
>> //deconvolve each channel
>>
>> selectWindow("C1-"+filename[i]);
>>     image = getTitle;
>>     deconImage = image+"_WPL_decon";
>>     psf = pathGreen;
>>     deconvolution();
>>      while (isOpen(image+"_WPL_decon") == false) {
>>         wait(1000);
>>     }
>>
>>     //selectWindow("C1-"+name);
>>     //close;
>>
>>     selectWindow("C2-"+filename[i]);
>>     image = getTitle;
>>     deconImage = image+"_WPL_decon";
>>     psf = pathRed;
>>     deconvolution();
>>     while (isOpen(image+"_WPL_decon") == false) {
>>         wait(1000);
>>     }
>>
>>     //selectWindow("C2-"+name);
>>     //close;
>>
>>     selectWindow("C3-"+filename[i]);
>>     image = getTitle;
>>     deconImage = image+"_WPL_decon";
>>     psf = pathRed;
>>     deconvolution();
>>      while (isOpen(image+"_WPL_decon") == false) {
>>         wait(1000);
>>     }
>>
>>     //selectWindow("C3-"+name);
>>     //close;
>>
>> //reassemble a TIFF from the deconvolved channels and save it
>>
>>     run("Merge Channels...", "red=["+red+"] green=["+green+"]
>> blue=["+blue+"] gray=*None* create");
>>     rename(filename[i]+"_deconvolved");
>>     saveName=getTitle;
>>     saveAs("Tiff", output+saveName);
>>     close();
>>
>>        }
>> }
>>
>>
>> >
>>
>> --
>> ImageJ mailing list:
>>https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fimagej.ni
>>h.gov%2fij%2flist.html&data=01%7c01%7ctnf8%40pitt.edu%7c735fd07cf84943736
>>41d08d3c6b0f63b%7c9ef9f489e0a04eeb87cc3a526112fd0d%7c1&sdata=1oUyPax9xlcV
>>h%2fGJABMkuuskiozXfw3AqW0ZJ1BnzkI%3d
>>
>
>--
>ImageJ mailing list:
>https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fimagej.nih
>.gov%2fij%2flist.html&data=01%7c01%7ctnf8%40pitt.edu%7c735fd07cf8494373641
>d08d3c6b0f63b%7c9ef9f489e0a04eeb87cc3a526112fd0d%7c1&sdata=1oUyPax9xlcVh%2
>fGJABMkuuskiozXfw3AqW0ZJ1BnzkI%3d

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html