Can getDirectory() automatically select a predefined folder path?

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

Can getDirectory() automatically select a predefined folder path?

DaveMc
This post was updated on .
Hi All,

I'm writing a macro for a user of our core facility and wondering if I can streamline it even more. What he wants to do is open large folders of ~1500 RGB images, split the channels saving only the red and green appending the file names in a new subfolder, then convert and save those as 16-bit in another new subfolder.

The macro is working well but he has to wait until the split step is done then choose that folder to start the 16-bit step.

The question is...can I use the getDirectory function, or another option, to get the macro to automatically select the subfolder the split channels are in by path and automatically start the 16-bit step without him having to choose it?

Thanks!
Dave

Here's the code...

------------------

macro "Split channels then convert to 16-bit"

{
        {
        // Open and split channels then save to new folder...
                dir1 = getDirectory("Choose Original Images Directory");
                list = getFileList(dir1);
                setBatchMode(true);
                for (i=0; i<list.length; i++) {
                        path = dir1+list[i];
                        open(path);
                        run("Split Channels");
                        dir2 = dir1+"split"+File.separator;
                        File.makeDirectory(dir2);
                        path = dir2+list[i];
                        dotIndex = lastIndexOf(path, "."); path = substring(path, 0, dotIndex); // remove ext.
                // save(path+"_blue.tif");
                        close();
                        save(path+"_green.tif");
                        close();
                        save(path+"_red.tif");
                        close();
                }
        }

        {
        // Open split channels and save as 16-bit to new folder...
                dir1 = getDirectory("Choose Split Channels Directory");
                list = getFileList(dir1);
                setBatchMode(true);
                for (i=0; i<list.length; i++) {
                        path = dir1+list[i];
                        open(path);
                        run("16-bit");
                        dir2 = dir1+"16-bit"+File.separator;
                        File.makeDirectory(dir2);
                        path = dir2+list[i];
                        dotIndex = lastIndexOf(path, "."); path = substring(path, 0, dotIndex); // remove ext
                        save(path+"-16bit.tif");
                        close();
                }
        }

        {
                exit("Finished")
        }
}
Reply | Threaded
Open this post in threaded view
|

Re: Can getDirectory() automatically select a predefined folder path?

George Patterson
Hi Dave,
If I've understood what you need I don't think you need any other
functions.  Just a few small changes should be needed.
I've copied your macro below with those changes.
Best,
George


macro "Split channels then convert to 16-bit"

{
        {
        // Open and split channels then save to new folder...
                dir1 = getDirectory("Choose Original Images Directory");
                list = getFileList(dir1);
                setBatchMode(true);
                for (i=0; i<list.length; i++) {
                        path = dir1+list[i];
                        open(path);
                        run("Split Channels");
                        dir2 = dir1+"split"+File.separator;
                        File.makeDirectory(dir2);
                        path = dir2+list[i];
                        dotIndex = lastIndexOf(path, "."); path =
substring(path, 0, dotIndex);
// remove ext.
                //      save(path+"_blue.tif");
                        close();
                        save(path+"_green.tif");
                        close();
                        save(path+"_red.tif");
                        close();
                }
        }

        {
        // Open split channels and save as 16-bit then save to new folder...
                //dir1 = getDirectory("Choose Split Channels Directory");
                //list = getFileList(dir1);
                list = getFileList(dir2);
                setBatchMode(true);
                for (i=0; i<list.length; i++) {
                        //path = dir1+list[i];
                        path = dir2+list[i];
                        open(path);
                        run("16-bit");
                        //dir2 = dir1+"16-bit"+File.separator;
                        //File.makeDirectory(dir2);
                        //path = dir2+list[i];
                        dir3 = dir2+"16-bit"+File.separator;
                        File.makeDirectory(dir3);
                        path = dir3+list[i];
                        dotIndex = lastIndexOf(path, "."); path =
substring(path, 0, dotIndex);
// remove ext
                        save(path+"-16bit.tif");
                        close();
                }
        }

        {
                exit("Finished")
        }


On Fri, Sep 5, 2014 at 4:09 PM, DaveMc <[hidden email]> wrote:

> Hi All,
>
> I'm writing a macro for a user of our core facility and wondering if I can
> streamline it even more. What he wants to do is open large folders (~1500)
> of RGB images, split the channels saving only the red and green appending
> the file names in a new subfolder, then convert and save those as 16-bit in
> another new subfolder.
>
> The macro is working well but he has to wait until the split step is done
> then choose that folder to start the 16-bit step.
>
> The question is...can I use the getDirectory function, or another option,
> to
> get the macro to automatically select the subfolder the split channels are
> in by path and automatically start the 16-bit step without him having to
> choose it?
>
> Thanks!
> Dave
>
> Here's the code...
>
> ------------------
>
> macro "Split channels then convert to 16-bit"
>
> {
>         {
>         // Open and split channels then save to new folder...
>                 dir1 = getDirectory("Choose Original Images Directory");
>                 list = getFileList(dir1);
>                 setBatchMode(true);
>                 for (i=0; i<list.length; i++) {
>                         path = dir1+list[i];
>                         open(path);
>                         run("Split Channels");
>                         dir2 = dir1+"split"+File.separator;
>                         File.makeDirectory(dir2);
>                         path = dir2+list[i];
>                         dotIndex = lastIndexOf(path, "."); path =
> substring(path, 0, dotIndex);
> // remove ext.
>                 //      save(path+"_blue.tif");
>                         close();
>                         save(path+"_green.tif");
>                         close();
>                         save(path+"_red.tif");
>                         close();
>                 }
>         }
>
>         {
>         // Open split channels and save as 16-bit then save to new
> folder...
>                 dir1 = getDirectory("Choose Split Channels Directory");
>                 list = getFileList(dir1);
>                 setBatchMode(true);
>                 for (i=0; i<list.length; i++) {
>                         path = dir1+list[i];
>                         open(path);
>                         run("16-bit");
>                         dir2 = dir1+"16-bit"+File.separator;
>                         File.makeDirectory(dir2);
>                         path = dir2+list[i];
>                         dotIndex = lastIndexOf(path, "."); path =
> substring(path, 0, dotIndex);
> // remove ext
>                         save(path+"-16bit.tif");
>                         close();
>                 }
>         }
>
>         {
>                 exit("Finished")
>         }
>
>
>
>
> --
> View this message in context:
> http://imagej.1557.x6.nabble.com/Can-getDirectory-automatically-select-a-predefined-folder-path-tp5009535.html
> Sent from the ImageJ mailing list archive at Nabble.com.
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

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

Re: Can getDirectory() automatically select a predefined folder path?

DaveMc
Hi George,

That works perfect, thanks! I even tried something real similar but see now I had the lines in the wrong order.

Thanks again for the help!

Cheers,
Dave