Login  Register

Re: wait for a result to appear

Posted by bnorthan on Aug 17, 2016; 7:47pm
URL: http://imagej.273.s1.nabble.com/wait-for-a-result-to-appear-tp5017029p5017044.html

Hi Timothy

I helped write the deconvolution ops, so I wish they were further along,
however right now they do not have a GUI placed around them, or are they
easily usable with multi-channel images.

Have you tried deconvolution lab??  It is OK for single channel images.
Unfortunately deconvolution lab has issues with multi channel images.  It
is not easy to deconvolve multichannel images without splitting channels
before hand.

Also it is not easy to script with Deconvolution Lab.

In the near future I hope to be able to do more testing on the ops
deconvolution, and write a wrapper for multichannel images.  I will keep
you updated.

Brian


On Wed, Aug 17, 2016 at 3:29 PM, Feinstein, Timothy N <[hidden email]> wrote:

> 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%7c9ef9f489e0a04eeb87cc3a526112
> fd0d%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%7c9ef9f489e0a04eeb87cc3a526112
> fd0d%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%7c9ef9f489e0a04eeb87cc3a526112
> fd0d%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%7c735fd07cf8494373641d08d3c6b0
> f63
> >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%7c9ef9f489e0a04eeb87cc3a526112
> fd0d%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%7c9ef9f489e0a04eeb87cc3a526112
> fd0d%7c1&sdata=1oUyPax9xlcVh%2
> >fGJABMkuuskiozXfw3AqW0ZJ1BnzkI%3d
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

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