Writing ImageJ Macros a better way

classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|

Writing ImageJ Macros a better way

Alex-2
All,

I know there's lots of information on the web but it seems very scattered and unclear what's considered "best practice."
I've been writing ImageJ macros for some time using the ImageJ Macro language and the built in script editor.  Obviously this has it's limitations.  The scope of the Macro Language itself isn't really a problem but some of my macros have become so complex that debugging and changing them is very difficult. 

I'm pretty handy at Python, R, and C but don't have any experience with Java.   Also, I'm working on MacOS.
I've tired the Eclipse ImageJ plugin (https://github.com/Bio7/EclipseImageJ1Plugin) but it leaves a lot to be desired as it's very clunky and still only seems to show variables and their values in ImageJ itself.

What would you consider the best way to write ImageJ macros in an IDE that offers real debugging functionality?  What's the best step-by-step resource for learning out more advanced ImageJ macro programming techniques?
ThanksAlex

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

Re: Writing ImageJ Macros a better way

Brandon Hurr
Alex,

I'm very much in a similar boat to you. I'm skilled in R and can manage in
python and C when I have to, but Java is hard for me for some reason. I
typically write macros in the GUI editor in FIJI and I'm on a mac. My
macros have increased in complexity and have become much more difficult to
manage in recent years.

The syntax highlighting in FIJI's editor is the best I've used so far. Most
front end's don't seem to know what to do with ImageJ script, but they have
better tools for refactoring. Secondarily, I've used textWrangler/BBedit
with the module mentioned here:
http://imagej.1557.x6.nabble.com/BBEdit-language-module-for-ImageJ-macros-td3686081.html
It works pretty well and is easier on the eyes than FIJIs editor.

Advice will vary a lot as each person works best in their own way, but one
way that has helped me loads is to functionalize things as much as
possible. If you have a piece of code that runs in many places, make a
function out of it and use it instead. This abstracts pieces away from the
core code and allows you to focus more on the flow of things. Then when you
get a problem you can more easily focus on that piece. I used to have
scripts that were 1500 lines long. Now the core loops and functions are
more like 200 lines and the functions that run within that core are the
other 1300 lines. You could even tear those pieces out into other scripts
(functions script) or rewrite in Java for speed if you need it and can do
that.

I also know that FIJI can use python, javascript and other languages to run
the core functions, but the documentation around this is not nearly as good
as the imagej scripting language docs and examples that are on the
internet. At least the last time I looked, which admittedly was a while
ago.

HTH,
Brandon



On Tue, Jun 19, 2018 at 3:33 PM Alex <
[hidden email]> wrote:

> All,
>
> I know there's lots of information on the web but it seems very scattered
> and unclear what's considered "best practice."
> I've been writing ImageJ macros for some time using the ImageJ Macro
> language and the built in script editor.  Obviously this has it's
> limitations.  The scope of the Macro Language itself isn't really a problem
> but some of my macros have become so complex that debugging and changing
> them is very difficult.
>
> I'm pretty handy at Python, R, and C but don't have any experience with
> Java.   Also, I'm working on MacOS.
> I've tired the Eclipse ImageJ plugin (
> https://github.com/Bio7/EclipseImageJ1Plugin) but it leaves a lot to be
> desired as it's very clunky and still only seems to show variables and
> their values in ImageJ itself.
>
> What would you consider the best way to write ImageJ macros in an IDE that
> offers real debugging functionality?  What's the best step-by-step resource
> for learning out more advanced ImageJ macro programming techniques?
> ThanksAlex
>
> --
> 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: Writing ImageJ Macros a better way

Alex-2
 Brandon,

Thanks ... I found a bbedit language module a while back so I've been able to look at the code with syntax highlighting.   The biggest issue I can see with the Fiji Editor is that there's no debugger.  The only way I could figure out how to debug was to copy the code back into the main ImageJ macro editor. 

I guess the one thing I'm looking for is some way to debug macros with an editor that provides real stop, step, step into, etc functionality.  The macro editor's "run to insertion point" is a really clumsy way to do stops.  When you've got lots of loops and sub-functions it really doesn't work well at all. 

Is there something I'm missing about the Fiji Editor?
ThanksAlex

   On Wednesday, June 20, 2018, 8:55:59 AM PDT, Brandon Hurr <[hidden email]> wrote:  
 
 Alex,

I'm very much in a similar boat to you. I'm skilled in R and can manage in
python and C when I have to, but Java is hard for me for some reason. I
typically write macros in the GUI editor in FIJI and I'm on a mac. My
macros have increased in complexity and have become much more difficult to
manage in recent years.

The syntax highlighting in FIJI's editor is the best I've used so far. Most
front end's don't seem to know what to do with ImageJ script, but they have
better tools for refactoring. Secondarily, I've used textWrangler/BBedit
with the module mentioned here:
http://imagej.1557.x6.nabble.com/BBEdit-language-module-for-ImageJ-macros-td3686081.html
It works pretty well and is easier on the eyes than FIJIs editor.

Advice will vary a lot as each person works best in their own way, but one
way that has helped me loads is to functionalize things as much as
possible. If you have a piece of code that runs in many places, make a
function out of it and use it instead. This abstracts pieces away from the
core code and allows you to focus more on the flow of things. Then when you
get a problem you can more easily focus on that piece. I used to have
scripts that were 1500 lines long. Now the core loops and functions are
more like 200 lines and the functions that run within that core are the
other 1300 lines. You could even tear those pieces out into other scripts
(functions script) or rewrite in Java for speed if you need it and can do
that.

I also know that FIJI can use python, javascript and other languages to run
the core functions, but the documentation around this is not nearly as good
as the imagej scripting language docs and examples that are on the
internet. At least the last time I looked, which admittedly was a while
ago.

HTH,
Brandon



On Tue, Jun 19, 2018 at 3:33 PM Alex <
[hidden email]> wrote:

> All,
>
> I know there's lots of information on the web but it seems very scattered
> and unclear what's considered "best practice."
> I've been writing ImageJ macros for some time using the ImageJ Macro
> language and the built in script editor.  Obviously this has it's
> limitations.  The scope of the Macro Language itself isn't really a problem
> but some of my macros have become so complex that debugging and changing
> them is very difficult.
>
> I'm pretty handy at Python, R, and C but don't have any experience with
> Java.  Also, I'm working on MacOS.
> I've tired the Eclipse ImageJ plugin (
> https://github.com/Bio7/EclipseImageJ1Plugin) but it leaves a lot to be
> desired as it's very clunky and still only seems to show variables and
> their values in ImageJ itself.
>
> What would you consider the best way to write ImageJ macros in an IDE that
> offers real debugging functionality?  What's the best step-by-step resource
> for learning out more advanced ImageJ macro programming techniques?
> ThanksAlex
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

--
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: Writing ImageJ Macros a better way

Bram van den Broek
Hi Alex,

Not sure if this is any help, but I tend to put 'waitForUser' statements at certain points in the code to check what's going on (or wrong). After many years of manual typing and deleting, I've only just made this into a function. Something like the code below. You can quickly disable the checkpoints by setting debug_mode to false.

--------------------------------------------
debug_mode = true;
n=1;

// code
checkpoint("before filter");
// more code
checkpoint("after filter");
// more code
checkpoint("");
// more code

function checkpoint(message) {
        if(debug_mode==true) {
                setBatchMode("show"); //If you run your macro in Batch mode.
                print("Checkpoint "+n+" reached");
                waitForUser("Checkpoint "+n+": "+message);
                setBatchMode("hide"); //If you run your macro in Batch mode.
                n++;
        }
}
------------------------------------------

Best regards,
Bram

------
Bram van den Broek
Advanced Microscopy and Image Analysis
BioImaging Facility / Cell Biology
The Netherlands Cancer Institute





________________________________________
From: Alex <[hidden email]>
Sent: Wednesday, June 20, 2018 7:32 PM
To: [hidden email]
Subject: Re: Writing ImageJ Macros a better way

 Brandon,

Thanks ... I found a bbedit language module a while back so I've been able to look at the code with syntax highlighting.   The biggest issue I can see with the Fiji Editor is that there's no debugger.  The only way I could figure out how to debug was to copy the code back into the main ImageJ macro editor.

I guess the one thing I'm looking for is some way to debug macros with an editor that provides real stop, step, step into, etc functionality.  The macro editor's "run to insertion point" is a really clumsy way to do stops.  When you've got lots of loops and sub-functions it really doesn't work well at all.

Is there something I'm missing about the Fiji Editor?
ThanksAlex

   On Wednesday, June 20, 2018, 8:55:59 AM PDT, Brandon Hurr <[hidden email]> wrote:

 Alex,

I'm very much in a similar boat to you. I'm skilled in R and can manage in
python and C when I have to, but Java is hard for me for some reason. I
typically write macros in the GUI editor in FIJI and I'm on a mac. My
macros have increased in complexity and have become much more difficult to
manage in recent years.

The syntax highlighting in FIJI's editor is the best I've used so far. Most
front end's don't seem to know what to do with ImageJ script, but they have
better tools for refactoring. Secondarily, I've used textWrangler/BBedit
with the module mentioned here:
http://imagej.1557.x6.nabble.com/BBEdit-language-module-for-ImageJ-macros-td3686081.html
It works pretty well and is easier on the eyes than FIJIs editor.

Advice will vary a lot as each person works best in their own way, but one
way that has helped me loads is to functionalize things as much as
possible. If you have a piece of code that runs in many places, make a
function out of it and use it instead. This abstracts pieces away from the
core code and allows you to focus more on the flow of things. Then when you
get a problem you can more easily focus on that piece. I used to have
scripts that were 1500 lines long. Now the core loops and functions are
more like 200 lines and the functions that run within that core are the
other 1300 lines. You could even tear those pieces out into other scripts
(functions script) or rewrite in Java for speed if you need it and can do
that.

I also know that FIJI can use python, javascript and other languages to run
the core functions, but the documentation around this is not nearly as good
as the imagej scripting language docs and examples that are on the
internet. At least the last time I looked, which admittedly was a while
ago.

HTH,
Brandon



On Tue, Jun 19, 2018 at 3:33 PM Alex <
[hidden email]> wrote:

> All,
>
> I know there's lots of information on the web but it seems very scattered
> and unclear what's considered "best practice."
> I've been writing ImageJ macros for some time using the ImageJ Macro
> language and the built in script editor.  Obviously this has it's
> limitations.  The scope of the Macro Language itself isn't really a problem
> but some of my macros have become so complex that debugging and changing
> them is very difficult.
>
> I'm pretty handy at Python, R, and C but don't have any experience with
> Java.  Also, I'm working on MacOS.
> I've tired the Eclipse ImageJ plugin (
> https://github.com/Bio7/EclipseImageJ1Plugin) but it leaves a lot to be
> desired as it's very clunky and still only seems to show variables and
> their values in ImageJ itself.
>
> What would you consider the best way to write ImageJ macros in an IDE that
> offers real debugging functionality?  What's the best step-by-step resource
> for learning out more advanced ImageJ macro programming techniques?
> ThanksAlex
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

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


--
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: Writing ImageJ Macros a better way

Alex-2
 
Thanks Bram ... slick workaround.  Would be nice if we didn't have to resort to such trickery.
Does anyone know why the screenshots on this page show a "Breakpoints" menu in the Fiji Script Editor that doesn't appear to be in the software?
https://imagej.net/Using_the_Script_Editor

Alex



    On Wednesday, June 20, 2018, 3:15:39 PM PDT, Bram van den Broek <[hidden email]> wrote:  
 
 Hi Alex,

Not sure if this is any help, but I tend to put 'waitForUser' statements at certain points in the code to check what's going on (or wrong). After many years of manual typing and deleting, I've only just made this into a function. Something like the code below. You can quickly disable the checkpoints by setting debug_mode to false.

--------------------------------------------
debug_mode = true;
n=1;

// code
checkpoint("before filter");
// more code
checkpoint("after filter");
// more code
checkpoint("");
// more code

function checkpoint(message) {
    if(debug_mode==true) {
        setBatchMode("show");    //If you run your macro in Batch mode.
        print("Checkpoint "+n+" reached");
        waitForUser("Checkpoint "+n+": "+message);
        setBatchMode("hide");    //If you run your macro in Batch mode.
        n++;
    }
}
------------------------------------------

Best regards,
Bram

------
Bram van den Broek
Advanced Microscopy and Image Analysis
BioImaging Facility / Cell Biology
The Netherlands Cancer Institute





________________________________________
From: Alex <[hidden email]>
Sent: Wednesday, June 20, 2018 7:32 PM
To: [hidden email]
Subject: Re: Writing ImageJ Macros a better way

 Brandon,

Thanks ... I found a bbedit language module a while back so I've been able to look at the code with syntax highlighting.  The biggest issue I can see with the Fiji Editor is that there's no debugger.  The only way I could figure out how to debug was to copy the code back into the main ImageJ macro editor.

I guess the one thing I'm looking for is some way to debug macros with an editor that provides real stop, step, step into, etc functionality.  The macro editor's "run to insertion point" is a really clumsy way to do stops.  When you've got lots of loops and sub-functions it really doesn't work well at all.

Is there something I'm missing about the Fiji Editor?
ThanksAlex

  On Wednesday, June 20, 2018, 8:55:59 AM PDT, Brandon Hurr <[hidden email]> wrote:

 Alex,

I'm very much in a similar boat to you. I'm skilled in R and can manage in
python and C when I have to, but Java is hard for me for some reason. I
typically write macros in the GUI editor in FIJI and I'm on a mac. My
macros have increased in complexity and have become much more difficult to
manage in recent years.

The syntax highlighting in FIJI's editor is the best I've used so far. Most
front end's don't seem to know what to do with ImageJ script, but they have
better tools for refactoring. Secondarily, I've used textWrangler/BBedit
with the module mentioned here:
http://imagej.1557.x6.nabble.com/BBEdit-language-module-for-ImageJ-macros-td3686081.html
It works pretty well and is easier on the eyes than FIJIs editor.

Advice will vary a lot as each person works best in their own way, but one
way that has helped me loads is to functionalize things as much as
possible. If you have a piece of code that runs in many places, make a
function out of it and use it instead. This abstracts pieces away from the
core code and allows you to focus more on the flow of things. Then when you
get a problem you can more easily focus on that piece. I used to have
scripts that were 1500 lines long. Now the core loops and functions are
more like 200 lines and the functions that run within that core are the
other 1300 lines. You could even tear those pieces out into other scripts
(functions script) or rewrite in Java for speed if you need it and can do
that.

I also know that FIJI can use python, javascript and other languages to run
the core functions, but the documentation around this is not nearly as good
as the imagej scripting language docs and examples that are on the
internet. At least the last time I looked, which admittedly was a while
ago.

HTH,
Brandon



On Tue, Jun 19, 2018 at 3:33 PM Alex <
[hidden email]> wrote:

> All,
>
> I know there's lots of information on the web but it seems very scattered
> and unclear what's considered "best practice."
> I've been writing ImageJ macros for some time using the ImageJ Macro
> language and the built in script editor.  Obviously this has it's
> limitations.  The scope of the Macro Language itself isn't really a problem
> but some of my macros have become so complex that debugging and changing
> them is very difficult.
>
> I'm pretty handy at Python, R, and C but don't have any experience with
> Java.  Also, I'm working on MacOS.
> I've tired the Eclipse ImageJ plugin (
> https://github.com/Bio7/EclipseImageJ1Plugin) but it leaves a lot to be
> desired as it's very clunky and still only seems to show variables and
> their values in ImageJ itself.
>
> What would you consider the best way to write ImageJ macros in an IDE that
> offers real debugging functionality?  What's the best step-by-step resource
> for learning out more advanced ImageJ macro programming techniques?
> ThanksAlex
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

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


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

--
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: Writing ImageJ Macros a better way

Curtis Rueden
In reply to this post by Bram van den Broek
Hi Alex,

> Does anyone know why the screenshots on this page show a "Breakpoints"
> menu in the Fiji Script Editor that doesn't appear to be in the
> software?

The debugger/breakpoint support was never completed, and removed in 2012.
https://github.com/scijava/script-editor/commit/
87e05e3108d42c6276e786ba5d850c3d831de85c

> Would be nice if we didn't have to resort to such trickery.

See this issue:
https://github.com/scijava/script-editor/issues/5

As I wrote there:

> Unfortunately, I have too many other urgent priorities to work on the
> Script Editor right now, and there is unfortunately no one else taking
> care of this component besides me. However, if you or your group have
> any programming resources/capabilities which can be directed toward
> this mini-project, I would be delighted to provide guidance and
> support toward getting the feature implemented. Otherwise, I will get
> to it eventually, since this is a feature which I agree would be
> really useful—it's just going to be a few months at least if it falls
> on me personally to do it.

In general, if you want better development tools, then I strongly encourage
you to use a script language other than ImageJ macro. The macro language is
a custom language that does not have any tooling support outside of ImageJ,
whereas the other script languages have a much broader base of community
support beyond ImageJ only. My personal favorite is Groovy. For a list of
available languages and brief summary of strengths and weaknesses, see
http://imagej.net/Scripting#Supported_languages

Regards,
Curtis

--
Curtis Rueden
LOCI software architect - https://loci.wisc.edu/software
ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
Did you know ImageJ has a forum? http://forum.imagej.net/


On Wed, Jun 20, 2018 at 6:06 PM, Alex <00000313423ff55b-dmarc-
[hidden email]> wrote:

>
> Thanks Bram ... slick workaround.  Would be nice if we didn't have to
> resort to such trickery.
> Does anyone know why the screenshots on this page show a "Breakpoints"
> menu in the Fiji Script Editor that doesn't appear to be in the software?
> https://imagej.net/Using_the_Script_Editor
>
> Alex
>
>
>
>     On Wednesday, June 20, 2018, 3:15:39 PM PDT, Bram van den Broek <
> [hidden email]> wrote:
>
>  Hi Alex,
>
> Not sure if this is any help, but I tend to put 'waitForUser' statements
> at certain points in the code to check what's going on (or wrong). After
> many years of manual typing and deleting, I've only just made this into a
> function. Something like the code below. You can quickly disable the
> checkpoints by setting debug_mode to false.
>
> --------------------------------------------
> debug_mode = true;
> n=1;
>
> // code
> checkpoint("before filter");
> // more code
> checkpoint("after filter");
> // more code
> checkpoint("");
> // more code
>
> function checkpoint(message) {
>     if(debug_mode==true) {
>         setBatchMode("show");    //If you run your macro in Batch mode.
>         print("Checkpoint "+n+" reached");
>         waitForUser("Checkpoint "+n+": "+message);
>         setBatchMode("hide");    //If you run your macro in Batch mode.
>         n++;
>     }
> }
> ------------------------------------------
>
> Best regards,
> Bram
>
> ------
> Bram van den Broek
> Advanced Microscopy and Image Analysis
> BioImaging Facility / Cell Biology
> The Netherlands Cancer Institute
>
>
>
>
>
> ________________________________________
> From: Alex <[hidden email]>
> Sent: Wednesday, June 20, 2018 7:32 PM
> To: [hidden email]
> Subject: Re: Writing ImageJ Macros a better way
>
>  Brandon,
>
> Thanks ... I found a bbedit language module a while back so I've been able
> to look at the code with syntax highlighting.  The biggest issue I can see
> with the Fiji Editor is that there's no debugger.  The only way I could
> figure out how to debug was to copy the code back into the main ImageJ
> macro editor.
>
> I guess the one thing I'm looking for is some way to debug macros with an
> editor that provides real stop, step, step into, etc functionality.  The
> macro editor's "run to insertion point" is a really clumsy way to do
> stops.  When you've got lots of loops and sub-functions it really doesn't
> work well at all.
>
> Is there something I'm missing about the Fiji Editor?
> ThanksAlex
>
>   On Wednesday, June 20, 2018, 8:55:59 AM PDT, Brandon Hurr <
> [hidden email]> wrote:
>
>  Alex,
>
> I'm very much in a similar boat to you. I'm skilled in R and can manage in
> python and C when I have to, but Java is hard for me for some reason. I
> typically write macros in the GUI editor in FIJI and I'm on a mac. My
> macros have increased in complexity and have become much more difficult to
> manage in recent years.
>
> The syntax highlighting in FIJI's editor is the best I've used so far. Most
> front end's don't seem to know what to do with ImageJ script, but they have
> better tools for refactoring. Secondarily, I've used textWrangler/BBedit
> with the module mentioned here:
> http://imagej.1557.x6.nabble.com/BBEdit-language-module-for-
> ImageJ-macros-td3686081.html
> It works pretty well and is easier on the eyes than FIJIs editor.
>
> Advice will vary a lot as each person works best in their own way, but one
> way that has helped me loads is to functionalize things as much as
> possible. If you have a piece of code that runs in many places, make a
> function out of it and use it instead. This abstracts pieces away from the
> core code and allows you to focus more on the flow of things. Then when you
> get a problem you can more easily focus on that piece. I used to have
> scripts that were 1500 lines long. Now the core loops and functions are
> more like 200 lines and the functions that run within that core are the
> other 1300 lines. You could even tear those pieces out into other scripts
> (functions script) or rewrite in Java for speed if you need it and can do
> that.
>
> I also know that FIJI can use python, javascript and other languages to run
> the core functions, but the documentation around this is not nearly as good
> as the imagej scripting language docs and examples that are on the
> internet. At least the last time I looked, which admittedly was a while
> ago.
>
> HTH,
> Brandon
>
>
>
> On Tue, Jun 19, 2018 at 3:33 PM Alex <
> [hidden email]> wrote:
>
> > All,
> >
> > I know there's lots of information on the web but it seems very scattered
> > and unclear what's considered "best practice."
> > I've been writing ImageJ macros for some time using the ImageJ Macro
> > language and the built in script editor.  Obviously this has it's
> > limitations.  The scope of the Macro Language itself isn't really a
> problem
> > but some of my macros have become so complex that debugging and changing
> > them is very difficult.
> >
> > I'm pretty handy at Python, R, and C but don't have any experience with
> > Java.  Also, I'm working on MacOS.
> > I've tired the Eclipse ImageJ plugin (
> > https://github.com/Bio7/EclipseImageJ1Plugin) but it leaves a lot to be
> > desired as it's very clunky and still only seems to show variables and
> > their values in ImageJ itself.
> >
> > What would you consider the best way to write ImageJ macros in an IDE
> that
> > offers real debugging functionality?  What's the best step-by-step
> resource
> > for learning out more advanced ImageJ macro programming techniques?
> > ThanksAlex
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
> --
> 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: Writing ImageJ Macros a better way

Alex-2
Curtis
Thanks so much for your support and for your development efforts.  I know what it’s like to develop be the sole maintainer for open source projects.  

>In general, if you want better development >tools, then I strongly encourage
>you to use a script language other than >ImageJ macro.
I’m happy to move to Python me to develop Python based imagej scripts with a real IDE (preferably pycharm) with debugger full support?
Thanks so much
Alex

Sent from Yahoo Mail for iPhone


On Wednesday, June 20, 2018, 4:38 PM, Curtis Rueden <[hidden email]> wrote:

Hi Alex,

> Does anyone know why the screenshots on this page show a "Breakpoints"
> menu in the Fiji Script Editor that doesn't appear to be in the
> software?

The debugger/breakpoint support was never completed, and removed in 2012.
https://github.com/scijava/script-editor/commit/
87e05e3108d42c6276e786ba5d850c3d831de85c

> Would be nice if we didn't have to resort to such trickery.

See this issue:
https://github.com/scijava/script-editor/issues/5

As I wrote there:

> Unfortunately, I have too many other urgent priorities to work on the
> Script Editor right now, and there is unfortunately no one else taking
> care of this component besides me. However, if you or your group have
> any programming resources/capabilities which can be directed toward
> this mini-project, I would be delighted to provide guidance and
> support toward getting the feature implemented. Otherwise, I will get
> to it eventually, since this is a feature which I agree would be
> really useful—it's just going to be a few months at least if it falls
> on me personally to do it.

In general, if you want better development tools, then I strongly encourage
you to use a script language other than ImageJ macro. The macro language is
a custom language that does not have any tooling support outside of ImageJ,
whereas the other script languages have a much broader base of community
support beyond ImageJ only. My personal favorite is Groovy. For a list of
available languages and brief summary of strengths and weaknesses, see
http://imagej.net/Scripting#Supported_languages

Regards,
Curtis

--
Curtis Rueden
LOCI software architect - https://loci.wisc.edu/software
ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
Did you know ImageJ has a forum? http://forum.imagej.net/


On Wed, Jun 20, 2018 at 6:06 PM, Alex <00000313423ff55b-dmarc-
[hidden email]> wrote:

>
> Thanks Bram ... slick workaround.  Would be nice if we didn't have to
> resort to such trickery.
> Does anyone know why the screenshots on this page show a "Breakpoints"
> menu in the Fiji Script Editor that doesn't appear to be in the software?
> https://imagej.net/Using_the_Script_Editor
>
> Alex
>
>
>
>    On Wednesday, June 20, 2018, 3:15:39 PM PDT, Bram van den Broek <
> [hidden email]> wrote:
>
>  Hi Alex,
>
> Not sure if this is any help, but I tend to put 'waitForUser' statements
> at certain points in the code to check what's going on (or wrong). After
> many years of manual typing and deleting, I've only just made this into a
> function. Something like the code below. You can quickly disable the
> checkpoints by setting debug_mode to false.
>
> --------------------------------------------
> debug_mode = true;
> n=1;
>
> // code
> checkpoint("before filter");
> // more code
> checkpoint("after filter");
> // more code
> checkpoint("");
> // more code
>
> function checkpoint(message) {
>    if(debug_mode==true) {
>        setBatchMode("show");    //If you run your macro in Batch mode.
>        print("Checkpoint "+n+" reached");
>        waitForUser("Checkpoint "+n+": "+message);
>        setBatchMode("hide");    //If you run your macro in Batch mode.
>        n++;
>    }
> }
> ------------------------------------------
>
> Best regards,
> Bram
>
> ------
> Bram van den Broek
> Advanced Microscopy and Image Analysis
> BioImaging Facility / Cell Biology
> The Netherlands Cancer Institute
>
>
>
>
>
> ________________________________________
> From: Alex <[hidden email]>
> Sent: Wednesday, June 20, 2018 7:32 PM
> To: [hidden email]
> Subject: Re: Writing ImageJ Macros a better way
>
>  Brandon,
>
> Thanks ... I found a bbedit language module a while back so I've been able
> to look at the code with syntax highlighting.  The biggest issue I can see
> with the Fiji Editor is that there's no debugger.  The only way I could
> figure out how to debug was to copy the code back into the main ImageJ
> macro editor.
>
> I guess the one thing I'm looking for is some way to debug macros with an
> editor that provides real stop, step, step into, etc functionality.  The
> macro editor's "run to insertion point" is a really clumsy way to do
> stops.  When you've got lots of loops and sub-functions it really doesn't
> work well at all.
>
> Is there something I'm missing about the Fiji Editor?
> ThanksAlex
>
>  On Wednesday, June 20, 2018, 8:55:59 AM PDT, Brandon Hurr <
> [hidden email]> wrote:
>
>  Alex,
>
> I'm very much in a similar boat to you. I'm skilled in R and can manage in
> python and C when I have to, but Java is hard for me for some reason. I
> typically write macros in the GUI editor in FIJI and I'm on a mac. My
> macros have increased in complexity and have become much more difficult to
> manage in recent years.
>
> The syntax highlighting in FIJI's editor is the best I've used so far. Most
> front end's don't seem to know what to do with ImageJ script, but they have
> better tools for refactoring. Secondarily, I've used textWrangler/BBedit
> with the module mentioned here:
> http://imagej.1557.x6.nabble.com/BBEdit-language-module-for-
> ImageJ-macros-td3686081.html
> It works pretty well and is easier on the eyes than FIJIs editor.
>
> Advice will vary a lot as each person works best in their own way, but one
> way that has helped me loads is to functionalize things as much as
> possible. If you have a piece of code that runs in many places, make a
> function out of it and use it instead. This abstracts pieces away from the
> core code and allows you to focus more on the flow of things. Then when you
> get a problem you can more easily focus on that piece. I used to have
> scripts that were 1500 lines long. Now the core loops and functions are
> more like 200 lines and the functions that run within that core are the
> other 1300 lines. You could even tear those pieces out into other scripts
> (functions script) or rewrite in Java for speed if you need it and can do
> that.
>
> I also know that FIJI can use python, javascript and other languages to run
> the core functions, but the documentation around this is not nearly as good
> as the imagej scripting language docs and examples that are on the
> internet. At least the last time I looked, which admittedly was a while
> ago.
>
> HTH,
> Brandon
>
>
>
> On Tue, Jun 19, 2018 at 3:33 PM Alex <
> [hidden email]> wrote:
>
> > All,
> >
> > I know there's lots of information on the web but it seems very scattered
> > and unclear what's considered "best practice."
> > I've been writing ImageJ macros for some time using the ImageJ Macro
> > language and the built in script editor.  Obviously this has it's
> > limitations.  The scope of the Macro Language itself isn't really a
> problem
> > but some of my macros have become so complex that debugging and changing
> > them is very difficult.
> >
> > I'm pretty handy at Python, R, and C but don't have any experience with
> > Java.  Also, I'm working on MacOS.
> > I've tired the Eclipse ImageJ plugin (
> > https://github.com/Bio7/EclipseImageJ1Plugin) but it leaves a lot to be
> > desired as it's very clunky and still only seems to show variables and
> > their values in ImageJ itself.
> >
> > What would you consider the best way to write ImageJ macros in an IDE
> that
> > offers real debugging functionality?  What's the best step-by-step
> resource
> > for learning out more advanced ImageJ macro programming techniques?
> > ThanksAlex
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

--
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: Writing ImageJ Macros a better way

Curtis Rueden
In reply to this post by Curtis Rueden
Hi Alex,

Maybe these threads are helpful?

-
http://forum.imagej.net/t/writing-and-running-ij-scripts-in-jython-externally/8843/3
- http://forum.imagej.net/t/import-python-packages-in-pycharm/3540/4

A guide to developing ImageJ code with PyCharm would be a welcome
contribution to the ImageJ wiki.

We also have experimental support for calling ImageJ from Python, so that
you can use ImageJ e.g. from a Jupyter notebook with Python kernel. More
documentation and example notebooks coming soon, but for now, you can take
a look at https://github.com/imagej/imagej.py#usage

Regards,
Curtis

--
Curtis Rueden
LOCI software architect - https://loci.wisc.edu/software
ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
Did you know ImageJ has a forum? http://forum.imagej.net/


On Wed, Jun 20, 2018 at 7:14 PM, Alex <
[hidden email]> wrote:

> Curtis
> Thanks so much for your support and for your development efforts.  I know
> what it’s like to develop be the sole maintainer for open source projects.
>
> >In general, if you want better development >tools, then I strongly
> encourage
> >you to use a script language other than >ImageJ macro.
> I’m happy to move to Python me to develop Python based imagej scripts with
> a real IDE (preferably pycharm) with debugger full support?
> Thanks so much
> Alex
>
> Sent from Yahoo Mail for iPhone
>
>
> On Wednesday, June 20, 2018, 4:38 PM, Curtis Rueden <
> [hidden email]> wrote:
>
> Hi Alex,
>
> > Does anyone know why the screenshots on this page show a "Breakpoints"
> > menu in the Fiji Script Editor that doesn't appear to be in the
> > software?
>
> The debugger/breakpoint support was never completed, and removed in 2012.
> https://github.com/scijava/script-editor/commit/
> 87e05e3108d42c6276e786ba5d850c3d831de85c
>
> > Would be nice if we didn't have to resort to such trickery.
>
> See this issue:
> https://github.com/scijava/script-editor/issues/5
>
> As I wrote there:
>
> > Unfortunately, I have too many other urgent priorities to work on the
> > Script Editor right now, and there is unfortunately no one else taking
> > care of this component besides me. However, if you or your group have
> > any programming resources/capabilities which can be directed toward
> > this mini-project, I would be delighted to provide guidance and
> > support toward getting the feature implemented. Otherwise, I will get
> > to it eventually, since this is a feature which I agree would be
> > really useful—it's just going to be a few months at least if it falls
> > on me personally to do it.
>
> In general, if you want better development tools, then I strongly encourage
> you to use a script language other than ImageJ macro. The macro language is
> a custom language that does not have any tooling support outside of ImageJ,
> whereas the other script languages have a much broader base of community
> support beyond ImageJ only. My personal favorite is Groovy. For a list of
> available languages and brief summary of strengths and weaknesses, see
> http://imagej.net/Scripting#Supported_languages
>
> Regards,
> Curtis
>
> --
> Curtis Rueden
> LOCI software architect - https://loci.wisc.edu/software
> ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
> Did you know ImageJ has a forum? http://forum.imagej.net/
>
>
> On Wed, Jun 20, 2018 at 6:06 PM, Alex <00000313423ff55b-dmarc-
> [hidden email]> wrote:
>
> >
> > Thanks Bram ... slick workaround.  Would be nice if we didn't have to
> > resort to such trickery.
> > Does anyone know why the screenshots on this page show a "Breakpoints"
> > menu in the Fiji Script Editor that doesn't appear to be in the software?
> > https://imagej.net/Using_the_Script_Editor
> >
> > Alex
> >
> >
> >
> >    On Wednesday, June 20, 2018, 3:15:39 PM PDT, Bram van den Broek <
> > [hidden email]> wrote:
> >
> >  Hi Alex,
> >
> > Not sure if this is any help, but I tend to put 'waitForUser' statements
> > at certain points in the code to check what's going on (or wrong). After
> > many years of manual typing and deleting, I've only just made this into a
> > function. Something like the code below. You can quickly disable the
> > checkpoints by setting debug_mode to false.
> >
> > --------------------------------------------
> > debug_mode = true;
> > n=1;
> >
> > // code
> > checkpoint("before filter");
> > // more code
> > checkpoint("after filter");
> > // more code
> > checkpoint("");
> > // more code
> >
> > function checkpoint(message) {
> >    if(debug_mode==true) {
> >        setBatchMode("show");    //If you run your macro in Batch mode.
> >        print("Checkpoint "+n+" reached");
> >        waitForUser("Checkpoint "+n+": "+message);
> >        setBatchMode("hide");    //If you run your macro in Batch mode.
> >        n++;
> >    }
> > }
> > ------------------------------------------
> >
> > Best regards,
> > Bram
> >
> > ------
> > Bram van den Broek
> > Advanced Microscopy and Image Analysis
> > BioImaging Facility / Cell Biology
> > The Netherlands Cancer Institute
> >
> >
> >
> >
> >
> > ________________________________________
> > From: Alex <[hidden email]>
> > Sent: Wednesday, June 20, 2018 7:32 PM
> > To: [hidden email]
> > Subject: Re: Writing ImageJ Macros a better way
> >
> >  Brandon,
> >
> > Thanks ... I found a bbedit language module a while back so I've been
> able
> > to look at the code with syntax highlighting.  The biggest issue I can
> see
> > with the Fiji Editor is that there's no debugger.  The only way I could
> > figure out how to debug was to copy the code back into the main ImageJ
> > macro editor.
> >
> > I guess the one thing I'm looking for is some way to debug macros with an
> > editor that provides real stop, step, step into, etc functionality.  The
> > macro editor's "run to insertion point" is a really clumsy way to do
> > stops.  When you've got lots of loops and sub-functions it really doesn't
> > work well at all.
> >
> > Is there something I'm missing about the Fiji Editor?
> > ThanksAlex
> >
> >  On Wednesday, June 20, 2018, 8:55:59 AM PDT, Brandon Hurr <
> > [hidden email]> wrote:
> >
> >  Alex,
> >
> > I'm very much in a similar boat to you. I'm skilled in R and can manage
> in
> > python and C when I have to, but Java is hard for me for some reason. I
> > typically write macros in the GUI editor in FIJI and I'm on a mac. My
> > macros have increased in complexity and have become much more difficult
> to
> > manage in recent years.
> >
> > The syntax highlighting in FIJI's editor is the best I've used so far.
> Most
> > front end's don't seem to know what to do with ImageJ script, but they
> have
> > better tools for refactoring. Secondarily, I've used textWrangler/BBedit
> > with the module mentioned here:
> > http://imagej.1557.x6.nabble.com/BBEdit-language-module-for-
> > ImageJ-macros-td3686081.html
> > It works pretty well and is easier on the eyes than FIJIs editor.
> >
> > Advice will vary a lot as each person works best in their own way, but
> one
> > way that has helped me loads is to functionalize things as much as
> > possible. If you have a piece of code that runs in many places, make a
> > function out of it and use it instead. This abstracts pieces away from
> the
> > core code and allows you to focus more on the flow of things. Then when
> you
> > get a problem you can more easily focus on that piece. I used to have
> > scripts that were 1500 lines long. Now the core loops and functions are
> > more like 200 lines and the functions that run within that core are the
> > other 1300 lines. You could even tear those pieces out into other scripts
> > (functions script) or rewrite in Java for speed if you need it and can do
> > that.
> >
> > I also know that FIJI can use python, javascript and other languages to
> run
> > the core functions, but the documentation around this is not nearly as
> good
> > as the imagej scripting language docs and examples that are on the
> > internet. At least the last time I looked, which admittedly was a while
> > ago.
> >
> > HTH,
> > Brandon
> >
> >
> >
> > On Tue, Jun 19, 2018 at 3:33 PM Alex <
> > [hidden email]> wrote:
> >
> > > All,
> > >
> > > I know there's lots of information on the web but it seems very
> scattered
> > > and unclear what's considered "best practice."
> > > I've been writing ImageJ macros for some time using the ImageJ Macro
> > > language and the built in script editor.  Obviously this has it's
> > > limitations.  The scope of the Macro Language itself isn't really a
> > problem
> > > but some of my macros have become so complex that debugging and
> changing
> > > them is very difficult.
> > >
> > > I'm pretty handy at Python, R, and C but don't have any experience with
> > > Java.  Also, I'm working on MacOS.
> > > I've tired the Eclipse ImageJ plugin (
> > > https://github.com/Bio7/EclipseImageJ1Plugin) but it leaves a lot to
> be
> > > desired as it's very clunky and still only seems to show variables and
> > > their values in ImageJ itself.
> > >
> > > What would you consider the best way to write ImageJ macros in an IDE
> > that
> > > offers real debugging functionality?  What's the best step-by-step
> > resource
> > > for learning out more advanced ImageJ macro programming techniques?
> > > ThanksAlex
> > >
> > > --
> > > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> > >
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
>
>
> --
> 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: Writing ImageJ Macros a better way

Alex-2
 
Curtis,
This some really seems to be the winner : http://forum.imagej.net/t/import-python-packages-in-pycharm/3540/4
I think I've basically got it working in IntelliJ.   I followed the instructions here : https://github.com/qupath/qupath/wiki/Advanced-scripting-with-IntelliJ#setting-up-intellij-idea-with-qupath but exchanged the path to QuPath.jar for the path to IJ.jar.
The one thing that it doesn't seem to recognize is the Script Parameters.  I can always use the GenericDialog class, but it would be nice to have Script Parameter capability.   Using the GenericDialog class I'm able to launch GUI elements from within IntelliJ, so I know GUI capabilities are there.  

Any thoughts on why Script Parameters might not be working?  I'll be sure to wiki this up once I have a more solid understanding of what's going on.

Alex
   On Wednesday, June 20, 2018, 5:53:38 PM PDT, Curtis Rueden <[hidden email]> wrote:  
 
 Hi Alex,

Maybe these threads are helpful?

-
http://forum.imagej.net/t/writing-and-running-ij-scripts-in-jython-externally/8843/3
- http://forum.imagej.net/t/import-python-packages-in-pycharm/3540/4

A guide to developing ImageJ code with PyCharm would be a welcome
contribution to the ImageJ wiki.

We also have experimental support for calling ImageJ from Python, so that
you can use ImageJ e.g. from a Jupyter notebook with Python kernel. More
documentation and example notebooks coming soon, but for now, you can take
a look at https://github.com/imagej/imagej.py#usage

Regards,
Curtis

--
Curtis Rueden
LOCI software architect - https://loci.wisc.edu/software
ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
Did you know ImageJ has a forum? http://forum.imagej.net/


On Wed, Jun 20, 2018 at 7:14 PM, Alex <
[hidden email]> wrote:

> Curtis
> Thanks so much for your support and for your development efforts.  I know
> what it’s like to develop be the sole maintainer for open source projects.
>
> >In general, if you want better development >tools, then I strongly
> encourage
> >you to use a script language other than >ImageJ macro.
> I’m happy to move to Python me to develop Python based imagej scripts with
> a real IDE (preferably pycharm) with debugger full support?
> Thanks so much
> Alex
>
> Sent from Yahoo Mail for iPhone
>
>
> On Wednesday, June 20, 2018, 4:38 PM, Curtis Rueden <
> [hidden email]> wrote:
>
> Hi Alex,
>
> > Does anyone know why the screenshots on this page show a "Breakpoints"
> > menu in the Fiji Script Editor that doesn't appear to be in the
> > software?
>
> The debugger/breakpoint support was never completed, and removed in 2012.
> https://github.com/scijava/script-editor/commit/
> 87e05e3108d42c6276e786ba5d850c3d831de85c
>
> > Would be nice if we didn't have to resort to such trickery.
>
> See this issue:
> https://github.com/scijava/script-editor/issues/5
>
> As I wrote there:
>
> > Unfortunately, I have too many other urgent priorities to work on the
> > Script Editor right now, and there is unfortunately no one else taking
> > care of this component besides me. However, if you or your group have
> > any programming resources/capabilities which can be directed toward
> > this mini-project, I would be delighted to provide guidance and
> > support toward getting the feature implemented. Otherwise, I will get
> > to it eventually, since this is a feature which I agree would be
> > really useful—it's just going to be a few months at least if it falls
> > on me personally to do it.
>
> In general, if you want better development tools, then I strongly encourage
> you to use a script language other than ImageJ macro. The macro language is
> a custom language that does not have any tooling support outside of ImageJ,
> whereas the other script languages have a much broader base of community
> support beyond ImageJ only. My personal favorite is Groovy. For a list of
> available languages and brief summary of strengths and weaknesses, see
> http://imagej.net/Scripting#Supported_languages
>
> Regards,
> Curtis
>
> --
> Curtis Rueden
> LOCI software architect - https://loci.wisc.edu/software
> ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
> Did you know ImageJ has a forum? http://forum.imagej.net/
>
>
> On Wed, Jun 20, 2018 at 6:06 PM, Alex <00000313423ff55b-dmarc-
> [hidden email]> wrote:
>
> >
> > Thanks Bram ... slick workaround.  Would be nice if we didn't have to
> > resort to such trickery.
> > Does anyone know why the screenshots on this page show a "Breakpoints"
> > menu in the Fiji Script Editor that doesn't appear to be in the software?
> > https://imagej.net/Using_the_Script_Editor
> >
> > Alex
> >
> >
> >
> >    On Wednesday, June 20, 2018, 3:15:39 PM PDT, Bram van den Broek <
> > [hidden email]> wrote:
> >
> >  Hi Alex,
> >
> > Not sure if this is any help, but I tend to put 'waitForUser' statements
> > at certain points in the code to check what's going on (or wrong). After
> > many years of manual typing and deleting, I've only just made this into a
> > function. Something like the code below. You can quickly disable the
> > checkpoints by setting debug_mode to false.
> >
> > --------------------------------------------
> > debug_mode = true;
> > n=1;
> >
> > // code
> > checkpoint("before filter");
> > // more code
> > checkpoint("after filter");
> > // more code
> > checkpoint("");
> > // more code
> >
> > function checkpoint(message) {
> >    if(debug_mode==true) {
> >        setBatchMode("show");    //If you run your macro in Batch mode.
> >        print("Checkpoint "+n+" reached");
> >        waitForUser("Checkpoint "+n+": "+message);
> >        setBatchMode("hide");    //If you run your macro in Batch mode.
> >        n++;
> >    }
> > }
> > ------------------------------------------
> >
> > Best regards,
> > Bram
> >
> > ------
> > Bram van den Broek
> > Advanced Microscopy and Image Analysis
> > BioImaging Facility / Cell Biology
> > The Netherlands Cancer Institute
> >
> >
> >
> >
> >
> > ________________________________________
> > From: Alex <[hidden email]>
> > Sent: Wednesday, June 20, 2018 7:32 PM
> > To: [hidden email]
> > Subject: Re: Writing ImageJ Macros a better way
> >
> >  Brandon,
> >
> > Thanks ... I found a bbedit language module a while back so I've been
> able
> > to look at the code with syntax highlighting.  The biggest issue I can
> see
> > with the Fiji Editor is that there's no debugger.  The only way I could
> > figure out how to debug was to copy the code back into the main ImageJ
> > macro editor.
> >
> > I guess the one thing I'm looking for is some way to debug macros with an
> > editor that provides real stop, step, step into, etc functionality.  The
> > macro editor's "run to insertion point" is a really clumsy way to do
> > stops.  When you've got lots of loops and sub-functions it really doesn't
> > work well at all.
> >
> > Is there something I'm missing about the Fiji Editor?
> > ThanksAlex
> >
> >  On Wednesday, June 20, 2018, 8:55:59 AM PDT, Brandon Hurr <
> > [hidden email]> wrote:
> >
> >  Alex,
> >
> > I'm very much in a similar boat to you. I'm skilled in R and can manage
> in
> > python and C when I have to, but Java is hard for me for some reason. I
> > typically write macros in the GUI editor in FIJI and I'm on a mac. My
> > macros have increased in complexity and have become much more difficult
> to
> > manage in recent years.
> >
> > The syntax highlighting in FIJI's editor is the best I've used so far.
> Most
> > front end's don't seem to know what to do with ImageJ script, but they
> have
> > better tools for refactoring. Secondarily, I've used textWrangler/BBedit
> > with the module mentioned here:
> > http://imagej.1557.x6.nabble.com/BBEdit-language-module-for-
> > ImageJ-macros-td3686081.html
> > It works pretty well and is easier on the eyes than FIJIs editor.
> >
> > Advice will vary a lot as each person works best in their own way, but
> one
> > way that has helped me loads is to functionalize things as much as
> > possible. If you have a piece of code that runs in many places, make a
> > function out of it and use it instead. This abstracts pieces away from
> the
> > core code and allows you to focus more on the flow of things. Then when
> you
> > get a problem you can more easily focus on that piece. I used to have
> > scripts that were 1500 lines long. Now the core loops and functions are
> > more like 200 lines and the functions that run within that core are the
> > other 1300 lines. You could even tear those pieces out into other scripts
> > (functions script) or rewrite in Java for speed if you need it and can do
> > that.
> >
> > I also know that FIJI can use python, javascript and other languages to
> run
> > the core functions, but the documentation around this is not nearly as
> good
> > as the imagej scripting language docs and examples that are on the
> > internet. At least the last time I looked, which admittedly was a while
> > ago.
> >
> > HTH,
> > Brandon
> >
> >
> >
> > On Tue, Jun 19, 2018 at 3:33 PM Alex <
> > [hidden email]> wrote:
> >
> > > All,
> > >
> > > I know there's lots of information on the web but it seems very
> scattered
> > > and unclear what's considered "best practice."
> > > I've been writing ImageJ macros for some time using the ImageJ Macro
> > > language and the built in script editor.  Obviously this has it's
> > > limitations.  The scope of the Macro Language itself isn't really a
> > problem
> > > but some of my macros have become so complex that debugging and
> changing
> > > them is very difficult.
> > >
> > > I'm pretty handy at Python, R, and C but don't have any experience with
> > > Java.  Also, I'm working on MacOS.
> > > I've tired the Eclipse ImageJ plugin (
> > > https://github.com/Bio7/EclipseImageJ1Plugin) but it leaves a lot to
> be
> > > desired as it's very clunky and still only seems to show variables and
> > > their values in ImageJ itself.
> > >
> > > What would you consider the best way to write ImageJ macros in an IDE
> > that
> > > offers real debugging functionality?  What's the best step-by-step
> > resource
> > > for learning out more advanced ImageJ macro programming techniques?
> > > ThanksAlex
> > >
> > > --
> > > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> > >
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
>
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

--
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: Writing ImageJ Macros a better way

Curtis Rueden
In reply to this post by Curtis Rueden
Hi Alex,

> Any thoughts on why Script Parameters might not be working?

The script parameters are SciJava's extension to the script languages. In
order for them to work, the code must be executed through the SciJava
framework, not via the respective script language's usual launch mechanism.

You can work around this by specifying the desired input values in a
temporary block at the top, while developing in your IDE.

Suppose you have the following SciJava Jython script:

  #@ UIService ui
  #@ String name
  #@ int(style="scroll bar", min=1, max=20) count

  greeting = "H" + ("i" * count) + ", " + name + "!"
  ui.showDialog(greeting)

You can develop in an IDE by adding a short section, as follows:

  #@ UIService ui
  #@ String name
  #@ int(style="scroll bar", min=1, max=20) count

  # TEMP - Populate parameter values for testing.
  from net.imagej import ImageJ
  ij = ImageJ()
  ui = ij.ui()
  name = "Chuckles"
  count = 20

  greeting = "H" + ("i" * count) + ", " + name + "!"
  ui.showDialog(greeting)

And then hack to your heart's content, including use of the IDE's debugger.
When finished, delete those extra lines.

Regards,
Curtis

--
Curtis Rueden
LOCI software architect - https://loci.wisc.edu/software
ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
Did you know ImageJ has a forum? http://forum.imagej.net/


On Thu, Jun 21, 2018 at 10:50 AM, Alex <00000313423ff55b-dmarc-
[hidden email]> wrote:

>
> Curtis,
> This some really seems to be the winner : http://forum.imagej.net/t/impo
> rt-python-packages-in-pycharm/3540/4
> I think I've basically got it working in IntelliJ.   I followed the
> instructions here : https://github.com/qupath/qupa
> th/wiki/Advanced-scripting-with-IntelliJ#setting-up-
> intellij-idea-with-qupath but exchanged the path to QuPath.jar for the
> path to IJ.jar.
> The one thing that it doesn't seem to recognize is the Script Parameters.
> I can always use the GenericDialog class, but it would be nice to have
> Script Parameter capability.   Using the GenericDialog class I'm able to
> launch GUI elements from within IntelliJ, so I know GUI capabilities are
> there.
>
> Any thoughts on why Script Parameters might not be working?  I'll be sure
> to wiki this up once I have a more solid understanding of what's going on.
>
> Alex
>    On Wednesday, June 20, 2018, 5:53:38 PM PDT, Curtis Rueden <
> [hidden email]> wrote:
>
>  Hi Alex,
>
> Maybe these threads are helpful?
>
> -
> http://forum.imagej.net/t/writing-and-running-ij-scripts-in-
> jython-externally/8843/3
> - http://forum.imagej.net/t/import-python-packages-in-pycharm/3540/4
>
> A guide to developing ImageJ code with PyCharm would be a welcome
> contribution to the ImageJ wiki.
>
> We also have experimental support for calling ImageJ from Python, so that
> you can use ImageJ e.g. from a Jupyter notebook with Python kernel. More
> documentation and example notebooks coming soon, but for now, you can take
> a look at https://github.com/imagej/imagej.py#usage
>
> Regards,
> Curtis
>
> --
> Curtis Rueden
> LOCI software architect - https://loci.wisc.edu/software
> ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
> Did you know ImageJ has a forum? http://forum.imagej.net/
>
>
> On Wed, Jun 20, 2018 at 7:14 PM, Alex <
> [hidden email]> wrote:
>
> > Curtis
> > Thanks so much for your support and for your development efforts.  I know
> > what it’s like to develop be the sole maintainer for open source
> projects.
> >
> > >In general, if you want better development >tools, then I strongly
> > encourage
> > >you to use a script language other than >ImageJ macro.
> > I’m happy to move to Python me to develop Python based imagej scripts
> with
> > a real IDE (preferably pycharm) with debugger full support?
> > Thanks so much
> > Alex
> >
> > Sent from Yahoo Mail for iPhone
> >
> >
> > On Wednesday, June 20, 2018, 4:38 PM, Curtis Rueden <
> > [hidden email]> wrote:
> >
> > Hi Alex,
> >
> > > Does anyone know why the screenshots on this page show a "Breakpoints"
> > > menu in the Fiji Script Editor that doesn't appear to be in the
> > > software?
> >
> > The debugger/breakpoint support was never completed, and removed in 2012.
> > https://github.com/scijava/script-editor/commit/
> > 87e05e3108d42c6276e786ba5d850c3d831de85c
> >
> > > Would be nice if we didn't have to resort to such trickery.
> >
> > See this issue:
> > https://github.com/scijava/script-editor/issues/5
> >
> > As I wrote there:
> >
> > > Unfortunately, I have too many other urgent priorities to work on the
> > > Script Editor right now, and there is unfortunately no one else taking
> > > care of this component besides me. However, if you or your group have
> > > any programming resources/capabilities which can be directed toward
> > > this mini-project, I would be delighted to provide guidance and
> > > support toward getting the feature implemented. Otherwise, I will get
> > > to it eventually, since this is a feature which I agree would be
> > > really useful—it's just going to be a few months at least if it falls
> > > on me personally to do it.
> >
> > In general, if you want better development tools, then I strongly
> encourage
> > you to use a script language other than ImageJ macro. The macro language
> is
> > a custom language that does not have any tooling support outside of
> ImageJ,
> > whereas the other script languages have a much broader base of community
> > support beyond ImageJ only. My personal favorite is Groovy. For a list of
> > available languages and brief summary of strengths and weaknesses, see
> > http://imagej.net/Scripting#Supported_languages
> >
> > Regards,
> > Curtis
> >
> > --
> > Curtis Rueden
> > LOCI software architect - https://loci.wisc.edu/software
> > ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
> > Did you know ImageJ has a forum? http://forum.imagej.net/
> >
> >
> > On Wed, Jun 20, 2018 at 6:06 PM, Alex <00000313423ff55b-dmarc-
> > [hidden email]> wrote:
> >
> > >
> > > Thanks Bram ... slick workaround.  Would be nice if we didn't have to
> > > resort to such trickery.
> > > Does anyone know why the screenshots on this page show a "Breakpoints"
> > > menu in the Fiji Script Editor that doesn't appear to be in the
> software?
> > > https://imagej.net/Using_the_Script_Editor
> > >
> > > Alex
> > >
> > >
> > >
> > >    On Wednesday, June 20, 2018, 3:15:39 PM PDT, Bram van den Broek <
> > > [hidden email]> wrote:
> > >
> > >  Hi Alex,
> > >
> > > Not sure if this is any help, but I tend to put 'waitForUser'
> statements
> > > at certain points in the code to check what's going on (or wrong).
> After
> > > many years of manual typing and deleting, I've only just made this
> into a
> > > function. Something like the code below. You can quickly disable the
> > > checkpoints by setting debug_mode to false.
> > >
> > > --------------------------------------------
> > > debug_mode = true;
> > > n=1;
> > >
> > > // code
> > > checkpoint("before filter");
> > > // more code
> > > checkpoint("after filter");
> > > // more code
> > > checkpoint("");
> > > // more code
> > >
> > > function checkpoint(message) {
> > >    if(debug_mode==true) {
> > >        setBatchMode("show");    //If you run your macro in Batch mode.
> > >        print("Checkpoint "+n+" reached");
> > >        waitForUser("Checkpoint "+n+": "+message);
> > >        setBatchMode("hide");    //If you run your macro in Batch mode.
> > >        n++;
> > >    }
> > > }
> > > ------------------------------------------
> > >
> > > Best regards,
> > > Bram
> > >
> > > ------
> > > Bram van den Broek
> > > Advanced Microscopy and Image Analysis
> > > BioImaging Facility / Cell Biology
> > > The Netherlands Cancer Institute
> > >
> > >
> > >
> > >
> > >
> > > ________________________________________
> > > From: Alex <[hidden email]>
> > > Sent: Wednesday, June 20, 2018 7:32 PM
> > > To: [hidden email]
> > > Subject: Re: Writing ImageJ Macros a better way
> > >
> > >  Brandon,
> > >
> > > Thanks ... I found a bbedit language module a while back so I've been
> > able
> > > to look at the code with syntax highlighting.  The biggest issue I can
> > see
> > > with the Fiji Editor is that there's no debugger.  The only way I could
> > > figure out how to debug was to copy the code back into the main ImageJ
> > > macro editor.
> > >
> > > I guess the one thing I'm looking for is some way to debug macros with
> an
> > > editor that provides real stop, step, step into, etc functionality.
> The
> > > macro editor's "run to insertion point" is a really clumsy way to do
> > > stops.  When you've got lots of loops and sub-functions it really
> doesn't
> > > work well at all.
> > >
> > > Is there something I'm missing about the Fiji Editor?
> > > ThanksAlex
> > >
> > >  On Wednesday, June 20, 2018, 8:55:59 AM PDT, Brandon Hurr <
> > > [hidden email]> wrote:
> > >
> > >  Alex,
> > >
> > > I'm very much in a similar boat to you. I'm skilled in R and can manage
> > in
> > > python and C when I have to, but Java is hard for me for some reason. I
> > > typically write macros in the GUI editor in FIJI and I'm on a mac. My
> > > macros have increased in complexity and have become much more difficult
> > to
> > > manage in recent years.
> > >
> > > The syntax highlighting in FIJI's editor is the best I've used so far.
> > Most
> > > front end's don't seem to know what to do with ImageJ script, but they
> > have
> > > better tools for refactoring. Secondarily, I've used
> textWrangler/BBedit
> > > with the module mentioned here:
> > > http://imagej.1557.x6.nabble.com/BBEdit-language-module-for-
> > > ImageJ-macros-td3686081.html
> > > It works pretty well and is easier on the eyes than FIJIs editor.
> > >
> > > Advice will vary a lot as each person works best in their own way, but
> > one
> > > way that has helped me loads is to functionalize things as much as
> > > possible. If you have a piece of code that runs in many places, make a
> > > function out of it and use it instead. This abstracts pieces away from
> > the
> > > core code and allows you to focus more on the flow of things. Then when
> > you
> > > get a problem you can more easily focus on that piece. I used to have
> > > scripts that were 1500 lines long. Now the core loops and functions are
> > > more like 200 lines and the functions that run within that core are the
> > > other 1300 lines. You could even tear those pieces out into other
> scripts
> > > (functions script) or rewrite in Java for speed if you need it and can
> do
> > > that.
> > >
> > > I also know that FIJI can use python, javascript and other languages to
> > run
> > > the core functions, but the documentation around this is not nearly as
> > good
> > > as the imagej scripting language docs and examples that are on the
> > > internet. At least the last time I looked, which admittedly was a while
> > > ago.
> > >
> > > HTH,
> > > Brandon
> > >
> > >
> > >
> > > On Tue, Jun 19, 2018 at 3:33 PM Alex <
> > > [hidden email]> wrote:
> > >
> > > > All,
> > > >
> > > > I know there's lots of information on the web but it seems very
> > scattered
> > > > and unclear what's considered "best practice."
> > > > I've been writing ImageJ macros for some time using the ImageJ Macro
> > > > language and the built in script editor.  Obviously this has it's
> > > > limitations.  The scope of the Macro Language itself isn't really a
> > > problem
> > > > but some of my macros have become so complex that debugging and
> > changing
> > > > them is very difficult.
> > > >
> > > > I'm pretty handy at Python, R, and C but don't have any experience
> with
> > > > Java.  Also, I'm working on MacOS.
> > > > I've tired the Eclipse ImageJ plugin (
> > > > https://github.com/Bio7/EclipseImageJ1Plugin) but it leaves a lot to
> > be
> > > > desired as it's very clunky and still only seems to show variables
> and
> > > > their values in ImageJ itself.
> > > >
> > > > What would you consider the best way to write ImageJ macros in an IDE
> > > that
> > > > offers real debugging functionality?  What's the best step-by-step
> > > resource
> > > > for learning out more advanced ImageJ macro programming techniques?
> > > > ThanksAlex
> > > >
> > > > --
> > > > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> > > >
> > >
> > > --
> > > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> > >
> > >
> > > --
> > > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> > >
> > > --
> > > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> > >
> > > --
> > > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> > >
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >
> >
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
> --
> 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: Writing ImageJ Macros a better way

Curtis Rueden
Hi Alex,

If you really want to force the SciJava framework to harvest your
parameters in the same way as would be done when executing the script
within ImageJ, you can do that as well, although it is a bit ugly:

  #@ UIService ui
  #@ String name
  #@ int(style="scroll bar", min=1, max=20) count

  ### BEGIN TEMP
  #@--

  # Start ImageJ and show the UI.
  from net.imagej import ImageJ
  ij = ImageJ()
  ij.ui().showUI()

  # Harvest parameter values using the script service.
  script = """
  #@ UIService ui
  #@ String name
  #@ int(style='scroll bar', min=1, max=20) count
  """
  params = ij.script().run('params.py', script, True).get()
  ui = params.getInput("ui")
  name = params.getInput("name")
  count = params.getInput("count")
  ### END TEMP

  greeting = "H" + ("i" * count) + ", " + name + "!"
  ui.showDialog(greeting)

But I would not typically go to this trouble, unless needing to debug into
the input harvesting itself.

Regards,
Curtis

--
Curtis Rueden
LOCI software architect - https://loci.wisc.edu/software
ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
Did you know ImageJ has a forum? http://forum.imagej.net/


On Thu, Jun 21, 2018 at 12:43 PM, Curtis Rueden <[hidden email]> wrote:

> Hi Alex,
>
> > Any thoughts on why Script Parameters might not be working?
>
> The script parameters are SciJava's extension to the script languages. In
> order for them to work, the code must be executed through the SciJava
> framework, not via the respective script language's usual launch mechanism.
>
> You can work around this by specifying the desired input values in a
> temporary block at the top, while developing in your IDE.
>
> Suppose you have the following SciJava Jython script:
>
>   #@ UIService ui
>   #@ String name
>   #@ int(style="scroll bar", min=1, max=20) count
>
>   greeting = "H" + ("i" * count) + ", " + name + "!"
>   ui.showDialog(greeting)
>
> You can develop in an IDE by adding a short section, as follows:
>
>   #@ UIService ui
>   #@ String name
>   #@ int(style="scroll bar", min=1, max=20) count
>
>   # TEMP - Populate parameter values for testing.
>   from net.imagej import ImageJ
>   ij = ImageJ()
>   ui = ij.ui()
>   name = "Chuckles"
>   count = 20
>
>   greeting = "H" + ("i" * count) + ", " + name + "!"
>   ui.showDialog(greeting)
>
> And then hack to your heart's content, including use of the IDE's
> debugger. When finished, delete those extra lines.
>
> Regards,
> Curtis
>
> --
> Curtis Rueden
> LOCI software architect - https://loci.wisc.edu/software
> ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
> Did you know ImageJ has a forum? http://forum.imagej.net/
>
>
> On Thu, Jun 21, 2018 at 10:50 AM, Alex <00000313423ff55b-dmarc-reques
> [hidden email]> wrote:
>
>>
>> Curtis,
>> This some really seems to be the winner : http://forum.imagej.net/t/impo
>> rt-python-packages-in-pycharm/3540/4
>> I think I've basically got it working in IntelliJ.   I followed the
>> instructions here : https://github.com/qupath/qupa
>> th/wiki/Advanced-scripting-with-IntelliJ#setting-up-intellij
>> -idea-with-qupath but exchanged the path to QuPath.jar for the path to
>> IJ.jar.
>> The one thing that it doesn't seem to recognize is the Script
>> Parameters.  I can always use the GenericDialog class, but it would be nice
>> to have Script Parameter capability.   Using the GenericDialog class I'm
>> able to launch GUI elements from within IntelliJ, so I know GUI
>> capabilities are there.
>>
>> Any thoughts on why Script Parameters might not be working?  I'll be sure
>> to wiki this up once I have a more solid understanding of what's going on.
>>
>> Alex
>>    On Wednesday, June 20, 2018, 5:53:38 PM PDT, Curtis Rueden <
>> [hidden email]> wrote:
>>
>>  Hi Alex,
>>
>> Maybe these threads are helpful?
>>
>> -
>> http://forum.imagej.net/t/writing-and-running-ij-scripts-in-
>> jython-externally/8843/3
>> - http://forum.imagej.net/t/import-python-packages-in-pycharm/3540/4
>>
>> A guide to developing ImageJ code with PyCharm would be a welcome
>> contribution to the ImageJ wiki.
>>
>> We also have experimental support for calling ImageJ from Python, so that
>> you can use ImageJ e.g. from a Jupyter notebook with Python kernel. More
>> documentation and example notebooks coming soon, but for now, you can take
>> a look at https://github.com/imagej/imagej.py#usage
>>
>> Regards,
>> Curtis
>>
>> --
>> Curtis Rueden
>> LOCI software architect - https://loci.wisc.edu/software
>> ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
>> Did you know ImageJ has a forum? http://forum.imagej.net/
>>
>>
>> On Wed, Jun 20, 2018 at 7:14 PM, Alex <
>> [hidden email]> wrote:
>>
>> > Curtis
>> > Thanks so much for your support and for your development efforts.  I
>> know
>> > what it’s like to develop be the sole maintainer for open source
>> projects.
>> >
>> > >In general, if you want better development >tools, then I strongly
>> > encourage
>> > >you to use a script language other than >ImageJ macro.
>> > I’m happy to move to Python me to develop Python based imagej scripts
>> with
>> > a real IDE (preferably pycharm) with debugger full support?
>> > Thanks so much
>> > Alex
>> >
>> > Sent from Yahoo Mail for iPhone
>> >
>> >
>> > On Wednesday, June 20, 2018, 4:38 PM, Curtis Rueden <
>> > [hidden email]> wrote:
>> >
>> > Hi Alex,
>> >
>> > > Does anyone know why the screenshots on this page show a "Breakpoints"
>> > > menu in the Fiji Script Editor that doesn't appear to be in the
>> > > software?
>> >
>> > The debugger/breakpoint support was never completed, and removed in
>> 2012.
>> > https://github.com/scijava/script-editor/commit/
>> > 87e05e3108d42c6276e786ba5d850c3d831de85c
>> >
>> > > Would be nice if we didn't have to resort to such trickery.
>> >
>> > See this issue:
>> > https://github.com/scijava/script-editor/issues/5
>> >
>> > As I wrote there:
>> >
>> > > Unfortunately, I have too many other urgent priorities to work on the
>> > > Script Editor right now, and there is unfortunately no one else taking
>> > > care of this component besides me. However, if you or your group have
>> > > any programming resources/capabilities which can be directed toward
>> > > this mini-project, I would be delighted to provide guidance and
>> > > support toward getting the feature implemented. Otherwise, I will get
>> > > to it eventually, since this is a feature which I agree would be
>> > > really useful—it's just going to be a few months at least if it falls
>> > > on me personally to do it.
>> >
>> > In general, if you want better development tools, then I strongly
>> encourage
>> > you to use a script language other than ImageJ macro. The macro
>> language is
>> > a custom language that does not have any tooling support outside of
>> ImageJ,
>> > whereas the other script languages have a much broader base of community
>> > support beyond ImageJ only. My personal favorite is Groovy. For a list
>> of
>> > available languages and brief summary of strengths and weaknesses, see
>> > http://imagej.net/Scripting#Supported_languages
>> >
>> > Regards,
>> > Curtis
>> >
>> > --
>> > Curtis Rueden
>> > LOCI software architect - https://loci.wisc.edu/software
>> > ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
>> > Did you know ImageJ has a forum? http://forum.imagej.net/
>> >
>> >
>> > On Wed, Jun 20, 2018 at 6:06 PM, Alex <00000313423ff55b-dmarc-
>> > [hidden email]> wrote:
>> >
>> > >
>> > > Thanks Bram ... slick workaround.  Would be nice if we didn't have to
>> > > resort to such trickery.
>> > > Does anyone know why the screenshots on this page show a "Breakpoints"
>> > > menu in the Fiji Script Editor that doesn't appear to be in the
>> software?
>> > > https://imagej.net/Using_the_Script_Editor
>> > >
>> > > Alex
>> > >
>> > >
>> > >
>> > >    On Wednesday, June 20, 2018, 3:15:39 PM PDT, Bram van den Broek <
>> > > [hidden email]> wrote:
>> > >
>> > >  Hi Alex,
>> > >
>> > > Not sure if this is any help, but I tend to put 'waitForUser'
>> statements
>> > > at certain points in the code to check what's going on (or wrong).
>> After
>> > > many years of manual typing and deleting, I've only just made this
>> into a
>> > > function. Something like the code below. You can quickly disable the
>> > > checkpoints by setting debug_mode to false.
>> > >
>> > > --------------------------------------------
>> > > debug_mode = true;
>> > > n=1;
>> > >
>> > > // code
>> > > checkpoint("before filter");
>> > > // more code
>> > > checkpoint("after filter");
>> > > // more code
>> > > checkpoint("");
>> > > // more code
>> > >
>> > > function checkpoint(message) {
>> > >    if(debug_mode==true) {
>> > >        setBatchMode("show");    //If you run your macro in Batch mode.
>> > >        print("Checkpoint "+n+" reached");
>> > >        waitForUser("Checkpoint "+n+": "+message);
>> > >        setBatchMode("hide");    //If you run your macro in Batch mode.
>> > >        n++;
>> > >    }
>> > > }
>> > > ------------------------------------------
>> > >
>> > > Best regards,
>> > > Bram
>> > >
>> > > ------
>> > > Bram van den Broek
>> > > Advanced Microscopy and Image Analysis
>> > > BioImaging Facility / Cell Biology
>> > > The Netherlands Cancer Institute
>> > >
>> > >
>> > >
>> > >
>> > >
>> > > ________________________________________
>> > > From: Alex <[hidden email]>
>> > > Sent: Wednesday, June 20, 2018 7:32 PM
>> > > To: [hidden email]
>> > > Subject: Re: Writing ImageJ Macros a better way
>> > >
>> > >  Brandon,
>> > >
>> > > Thanks ... I found a bbedit language module a while back so I've been
>> > able
>> > > to look at the code with syntax highlighting.  The biggest issue I can
>> > see
>> > > with the Fiji Editor is that there's no debugger.  The only way I
>> could
>> > > figure out how to debug was to copy the code back into the main ImageJ
>> > > macro editor.
>> > >
>> > > I guess the one thing I'm looking for is some way to debug macros
>> with an
>> > > editor that provides real stop, step, step into, etc functionality.
>> The
>> > > macro editor's "run to insertion point" is a really clumsy way to do
>> > > stops.  When you've got lots of loops and sub-functions it really
>> doesn't
>> > > work well at all.
>> > >
>> > > Is there something I'm missing about the Fiji Editor?
>> > > ThanksAlex
>> > >
>> > >  On Wednesday, June 20, 2018, 8:55:59 AM PDT, Brandon Hurr <
>> > > [hidden email]> wrote:
>> > >
>> > >  Alex,
>> > >
>> > > I'm very much in a similar boat to you. I'm skilled in R and can
>> manage
>> > in
>> > > python and C when I have to, but Java is hard for me for some reason.
>> I
>> > > typically write macros in the GUI editor in FIJI and I'm on a mac. My
>> > > macros have increased in complexity and have become much more
>> difficult
>> > to
>> > > manage in recent years.
>> > >
>> > > The syntax highlighting in FIJI's editor is the best I've used so far.
>> > Most
>> > > front end's don't seem to know what to do with ImageJ script, but they
>> > have
>> > > better tools for refactoring. Secondarily, I've used
>> textWrangler/BBedit
>> > > with the module mentioned here:
>> > > http://imagej.1557.x6.nabble.com/BBEdit-language-module-for-
>> > > ImageJ-macros-td3686081.html
>> > > It works pretty well and is easier on the eyes than FIJIs editor.
>> > >
>> > > Advice will vary a lot as each person works best in their own way, but
>> > one
>> > > way that has helped me loads is to functionalize things as much as
>> > > possible. If you have a piece of code that runs in many places, make a
>> > > function out of it and use it instead. This abstracts pieces away from
>> > the
>> > > core code and allows you to focus more on the flow of things. Then
>> when
>> > you
>> > > get a problem you can more easily focus on that piece. I used to have
>> > > scripts that were 1500 lines long. Now the core loops and functions
>> are
>> > > more like 200 lines and the functions that run within that core are
>> the
>> > > other 1300 lines. You could even tear those pieces out into other
>> scripts
>> > > (functions script) or rewrite in Java for speed if you need it and
>> can do
>> > > that.
>> > >
>> > > I also know that FIJI can use python, javascript and other languages
>> to
>> > run
>> > > the core functions, but the documentation around this is not nearly as
>> > good
>> > > as the imagej scripting language docs and examples that are on the
>> > > internet. At least the last time I looked, which admittedly was a
>> while
>> > > ago.
>> > >
>> > > HTH,
>> > > Brandon
>> > >
>> > >
>> > >
>> > > On Tue, Jun 19, 2018 at 3:33 PM Alex <
>> > > [hidden email]> wrote:
>> > >
>> > > > All,
>> > > >
>> > > > I know there's lots of information on the web but it seems very
>> > scattered
>> > > > and unclear what's considered "best practice."
>> > > > I've been writing ImageJ macros for some time using the ImageJ Macro
>> > > > language and the built in script editor.  Obviously this has it's
>> > > > limitations.  The scope of the Macro Language itself isn't really a
>> > > problem
>> > > > but some of my macros have become so complex that debugging and
>> > changing
>> > > > them is very difficult.
>> > > >
>> > > > I'm pretty handy at Python, R, and C but don't have any experience
>> with
>> > > > Java.  Also, I'm working on MacOS.
>> > > > I've tired the Eclipse ImageJ plugin (
>> > > > https://github.com/Bio7/EclipseImageJ1Plugin) but it leaves a lot
>> to
>> > be
>> > > > desired as it's very clunky and still only seems to show variables
>> and
>> > > > their values in ImageJ itself.
>> > > >
>> > > > What would you consider the best way to write ImageJ macros in an
>> IDE
>> > > that
>> > > > offers real debugging functionality?  What's the best step-by-step
>> > > resource
>> > > > for learning out more advanced ImageJ macro programming techniques?
>> > > > ThanksAlex
>> > > >
>> > > > --
>> > > > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>> > > >
>> > >
>> > > --
>> > > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>> > >
>> > >
>> > > --
>> > > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>> > >
>> > > --
>> > > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>> > >
>> > > --
>> > > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>> > >
>> >
>> > --
>> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>> >
>> >
>> >
>> > --
>> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>> >
>>
>> --
>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>>
>> --
>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>>
>
>

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