Fiji/ImageJ Headless if not in path?

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

Fiji/ImageJ Headless if not in path?

Adam Hughes
Hi,

I'm trying to run a fiji macro in headless mode through python.  I'm on
ubuntu, but also need to do this on a Mac.  I've downloaded fiji from
source, and can doubleclick the icon to launch the application fine.  The
icon refers to the file:

~/Fiji.app/ImageJ2.desktop

However, to use Fiji in headless mode, the guides imply that I want to do
this:

 ImageJ --headless -macro path-to-Macro.ijm

Or

 fiji --headless -macro path-to-Macro.ijm

However, fiji and ImageJ are not in python.  So this command doesn't work.
Does anyone know how to configure a Mac and/or Ubuntu system path so that
we could just run fiji from any terminal?  At the end of the day, my python
function looks like this (currently not working):

def IJwatershed(bw_image):
    imsave('fooing', bw_image)
    macro_file = 'Watershed.imj'
   * path_to_fiji* = '/home/glue/Desktop/Fiji.app/ImageJ2.desktop'
    command = "%s --headless %s" % (path_to_fiji, macro_file)
    with open('foo', 'w') as dnull:
        p = subprocess.call(command, shell=False)# stderr=subprocess.PIPE)

And it seems to not work because of my *path_to_fiji *not being understood.

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

Re: Fiji/ImageJ Headless if not in path?

ctrueden
Hi Adam,

> Does anyone know how to configure a Mac and/or Ubuntu system path so
> that we could just run fiji from any terminal?

The issue is complicated by the fact that the launcher executable is named
differently for every platform.

Personally, I work around it via the following shell script:
*
https://github.com/imagej/imagej-omero/blob/imagej-omero-0.2.1/bin/run-class

Alternately, the ImageJ.sh script (
https://github.com/imagej/imagej/blob/imagej-2.0.0-rc-29/bin/ImageJ.sh)
tries very hard to launch ImageJ without using any launcher executable. In
that way, you can run ImageJ on platforms for which no launcher has been
compiled, such as the Raspberry Pi.

HTH,
Curtis

On Thu, Apr 23, 2015 at 3:32 PM, Adam Hughes <[hidden email]> wrote:

> Hi,
>
> I'm trying to run a fiji macro in headless mode through python.  I'm on
> ubuntu, but also need to do this on a Mac.  I've downloaded fiji from
> source, and can doubleclick the icon to launch the application fine.  The
> icon refers to the file:
>
> ~/Fiji.app/ImageJ2.desktop
>
> However, to use Fiji in headless mode, the guides imply that I want to do
> this:
>
>  ImageJ --headless -macro path-to-Macro.ijm
>
> Or
>
>  fiji --headless -macro path-to-Macro.ijm
>
> However, fiji and ImageJ are not in python.  So this command doesn't work.
> Does anyone know how to configure a Mac and/or Ubuntu system path so that
> we could just run fiji from any terminal?  At the end of the day, my python
> function looks like this (currently not working):
>
> def IJwatershed(bw_image):
>     imsave('fooing', bw_image)
>     macro_file = 'Watershed.imj'
>    * path_to_fiji* = '/home/glue/Desktop/Fiji.app/ImageJ2.desktop'
>     command = "%s --headless %s" % (path_to_fiji, macro_file)
>     with open('foo', 'w') as dnull:
>         p = subprocess.call(command, shell=False)# stderr=subprocess.PIPE)
>
> And it seems to not work because of my *path_to_fiji *not being understood.
>
> --
> 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: Fiji/ImageJ Headless if not in path?

Adam Hughes
Thanks.  Is there a version of fiji on MAC that would install itself to the
system path?  I mean, is everyone using this workaround or am I using the
wrong version of fiji or something?

On Thu, Apr 23, 2015 at 4:44 PM, Curtis Rueden <[hidden email]> wrote:

> Hi Adam,
>
> > Does anyone know how to configure a Mac and/or Ubuntu system path so
> > that we could just run fiji from any terminal?
>
> The issue is complicated by the fact that the launcher executable is named
> differently for every platform.
>
> Personally, I work around it via the following shell script:
> *
>
> https://github.com/imagej/imagej-omero/blob/imagej-omero-0.2.1/bin/run-class
>
> Alternately, the ImageJ.sh script (
> https://github.com/imagej/imagej/blob/imagej-2.0.0-rc-29/bin/ImageJ.sh)
> tries very hard to launch ImageJ without using any launcher executable. In
> that way, you can run ImageJ on platforms for which no launcher has been
> compiled, such as the Raspberry Pi.
>
> HTH,
> Curtis
>
> On Thu, Apr 23, 2015 at 3:32 PM, Adam Hughes <[hidden email]>
> wrote:
>
> > Hi,
> >
> > I'm trying to run a fiji macro in headless mode through python.  I'm on
> > ubuntu, but also need to do this on a Mac.  I've downloaded fiji from
> > source, and can doubleclick the icon to launch the application fine.  The
> > icon refers to the file:
> >
> > ~/Fiji.app/ImageJ2.desktop
> >
> > However, to use Fiji in headless mode, the guides imply that I want to do
> > this:
> >
> >  ImageJ --headless -macro path-to-Macro.ijm
> >
> > Or
> >
> >  fiji --headless -macro path-to-Macro.ijm
> >
> > However, fiji and ImageJ are not in python.  So this command doesn't
> work.
> > Does anyone know how to configure a Mac and/or Ubuntu system path so that
> > we could just run fiji from any terminal?  At the end of the day, my
> python
> > function looks like this (currently not working):
> >
> > def IJwatershed(bw_image):
> >     imsave('fooing', bw_image)
> >     macro_file = 'Watershed.imj'
> >    * path_to_fiji* = '/home/glue/Desktop/Fiji.app/ImageJ2.desktop'
> >     command = "%s --headless %s" % (path_to_fiji, macro_file)
> >     with open('foo', 'w') as dnull:
> >         p = subprocess.call(command, shell=False)#
> stderr=subprocess.PIPE)
> >
> > And it seems to not work because of my *path_to_fiji *not being
> understood.
> >
> > --
> > 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: Fiji/ImageJ Headless if not in path?

ctrueden
Hi Adam,

> Is there a version of fiji on MAC that would install itself to the
> system path?

Sorry, I don't understand the question. Even if you include the ImageJ
launcher's directory on the system path, it still wouldn't be enough, since
the executable file name differs across OSes.

Given a path to a Fiji.app directory, your Python code could synthesize the
correct launcher to use, similar to the shell script I linked -- but in
Python, of course.

Another option would be to make it an installation requirement for users to
symlink "fiji" somewhere on their path, so that your Python code doesn't
need to worry about it.

> is everyone using this workaround or am I using the wrong version of
> fiji or something?

I don't think many people call ImageJ from Python. Usually it is the other
way around: call Python (or Jython) from ImageJ:

* http://imagej.net/Python
* https://github.com/scijava/scripting-cpython
* https://github.com/scijava/scripting-jython

Someone else did just ask about this on StackOverflow, though:
* http://stackoverflow.com/q/29749687/1207769

Regards,
Curtis


On Thu, Apr 23, 2015 at 4:11 PM, Adam Hughes <[hidden email]> wrote:

> Thanks.  Is there a version of fiji on MAC that would install itself to the
> system path?  I mean, is everyone using this workaround or am I using the
> wrong version of fiji or something?
>
> On Thu, Apr 23, 2015 at 4:44 PM, Curtis Rueden <[hidden email]> wrote:
>
> > Hi Adam,
> >
> > > Does anyone know how to configure a Mac and/or Ubuntu system path so
> > > that we could just run fiji from any terminal?
> >
> > The issue is complicated by the fact that the launcher executable is
> named
> > differently for every platform.
> >
> > Personally, I work around it via the following shell script:
> > *
> >
> >
> https://github.com/imagej/imagej-omero/blob/imagej-omero-0.2.1/bin/run-class
> >
> > Alternately, the ImageJ.sh script (
> > https://github.com/imagej/imagej/blob/imagej-2.0.0-rc-29/bin/ImageJ.sh)
> > tries very hard to launch ImageJ without using any launcher executable.
> In
> > that way, you can run ImageJ on platforms for which no launcher has been
> > compiled, such as the Raspberry Pi.
> >
> > HTH,
> > Curtis
> >
> > On Thu, Apr 23, 2015 at 3:32 PM, Adam Hughes <[hidden email]>
> > wrote:
> >
> > > Hi,
> > >
> > > I'm trying to run a fiji macro in headless mode through python.  I'm on
> > > ubuntu, but also need to do this on a Mac.  I've downloaded fiji from
> > > source, and can doubleclick the icon to launch the application fine.
> The
> > > icon refers to the file:
> > >
> > > ~/Fiji.app/ImageJ2.desktop
> > >
> > > However, to use Fiji in headless mode, the guides imply that I want to
> do
> > > this:
> > >
> > >  ImageJ --headless -macro path-to-Macro.ijm
> > >
> > > Or
> > >
> > >  fiji --headless -macro path-to-Macro.ijm
> > >
> > > However, fiji and ImageJ are not in python.  So this command doesn't
> > work.
> > > Does anyone know how to configure a Mac and/or Ubuntu system path so
> that
> > > we could just run fiji from any terminal?  At the end of the day, my
> > python
> > > function looks like this (currently not working):
> > >
> > > def IJwatershed(bw_image):
> > >     imsave('fooing', bw_image)
> > >     macro_file = 'Watershed.imj'
> > >    * path_to_fiji* = '/home/glue/Desktop/Fiji.app/ImageJ2.desktop'
> > >     command = "%s --headless %s" % (path_to_fiji, macro_file)
> > >     with open('foo', 'w') as dnull:
> > >         p = subprocess.call(command, shell=False)#
> > stderr=subprocess.PIPE)
> > >
> > > And it seems to not work because of my *path_to_fiji *not being
> > understood.
> > >
> > > --
> > > 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
jni
Reply | Threaded
Open this post in threaded view
|

Re: Fiji/ImageJ Headless if not in path?

jni
Curtis, I'm guessing Adam was asking whether there is a Fiji installer that would place the ImageJ-macosx binary (perhaps renamed) in a system path such as /usr/local/bin.






For what it's worth, on Mac OS X, I usually alias the binary executable inside the Fiji.app:




alias fiji=/Applications/Fiji.app/Contents/MacOS/ImageJ-macosx

On Fri, Apr 24, 2015 at 8:27 AM, Curtis Rueden <[hidden email]> wrote:

> Hi Adam,
>> Is there a version of fiji on MAC that would install itself to the
>> system path?
> Sorry, I don't understand the question. Even if you include the ImageJ
> launcher's directory on the system path, it still wouldn't be enough, since
> the executable file name differs across OSes.
> Given a path to a Fiji.app directory, your Python code could synthesize the
> correct launcher to use, similar to the shell script I linked -- but in
> Python, of course.
> Another option would be to make it an installation requirement for users to
> symlink "fiji" somewhere on their path, so that your Python code doesn't
> need to worry about it.
>> is everyone using this workaround or am I using the wrong version of
>> fiji or something?
> I don't think many people call ImageJ from Python. Usually it is the other
> way around: call Python (or Jython) from ImageJ:
> * http://imagej.net/Python
> * https://github.com/scijava/scripting-cpython
> * https://github.com/scijava/scripting-jython
> Someone else did just ask about this on StackOverflow, though:
> * http://stackoverflow.com/q/29749687/1207769
> Regards,
> Curtis
> On Thu, Apr 23, 2015 at 4:11 PM, Adam Hughes <[hidden email]> wrote:
>> Thanks.  Is there a version of fiji on MAC that would install itself to the
>> system path?  I mean, is everyone using this workaround or am I using the
>> wrong version of fiji or something?
>>
>> On Thu, Apr 23, 2015 at 4:44 PM, Curtis Rueden <[hidden email]> wrote:
>>
>> > Hi Adam,
>> >
>> > > Does anyone know how to configure a Mac and/or Ubuntu system path so
>> > > that we could just run fiji from any terminal?
>> >
>> > The issue is complicated by the fact that the launcher executable is
>> named
>> > differently for every platform.
>> >
>> > Personally, I work around it via the following shell script:
>> > *
>> >
>> >
>> https://github.com/imagej/imagej-omero/blob/imagej-omero-0.2.1/bin/run-class
>> >
>> > Alternately, the ImageJ.sh script (
>> > https://github.com/imagej/imagej/blob/imagej-2.0.0-rc-29/bin/ImageJ.sh)
>> > tries very hard to launch ImageJ without using any launcher executable.
>> In
>> > that way, you can run ImageJ on platforms for which no launcher has been
>> > compiled, such as the Raspberry Pi.
>> >
>> > HTH,
>> > Curtis
>> >
>> > On Thu, Apr 23, 2015 at 3:32 PM, Adam Hughes <[hidden email]>
>> > wrote:
>> >
>> > > Hi,
>> > >
>> > > I'm trying to run a fiji macro in headless mode through python.  I'm on
>> > > ubuntu, but also need to do this on a Mac.  I've downloaded fiji from
>> > > source, and can doubleclick the icon to launch the application fine.
>> The
>> > > icon refers to the file:
>> > >
>> > > ~/Fiji.app/ImageJ2.desktop
>> > >
>> > > However, to use Fiji in headless mode, the guides imply that I want to
>> do
>> > > this:
>> > >
>> > >  ImageJ --headless -macro path-to-Macro.ijm
>> > >
>> > > Or
>> > >
>> > >  fiji --headless -macro path-to-Macro.ijm
>> > >
>> > > However, fiji and ImageJ are not in python.  So this command doesn't
>> > work.
>> > > Does anyone know how to configure a Mac and/or Ubuntu system path so
>> that
>> > > we could just run fiji from any terminal?  At the end of the day, my
>> > python
>> > > function looks like this (currently not working):
>> > >
>> > > def IJwatershed(bw_image):
>> > >     imsave('fooing', bw_image)
>> > >     macro_file = 'Watershed.imj'
>> > >    * path_to_fiji* = '/home/glue/Desktop/Fiji.app/ImageJ2.desktop'
>> > >     command = "%s --headless %s" % (path_to_fiji, macro_file)
>> > >     with open('foo', 'w') as dnull:
>> > >         p = subprocess.call(command, shell=False)#
>> > stderr=subprocess.PIPE)
>> > >
>> > > And it seems to not work because of my *path_to_fiji *not being
>> > understood.
>> > >
>> > > --
>> > > 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: Fiji/ImageJ Headless if not in path?

Adam Hughes
Thanks, that is correct Juan.   I'll try out the alias

On Thu, Apr 23, 2015 at 10:42 PM, Juan Nunez-Iglesias <[hidden email]>
wrote:

> Curtis, I'm guessing Adam was asking whether there is a Fiji installer
> that would place the ImageJ-macosx binary (perhaps renamed) in a system
> path such as /usr/local/bin.
>
>
>
>
>
>
> For what it's worth, on Mac OS X, I usually alias the binary executable
> inside the Fiji.app:
>
>
>
>
> alias fiji=/Applications/Fiji.app/Contents/MacOS/ImageJ-macosx
>
> On Fri, Apr 24, 2015 at 8:27 AM, Curtis Rueden <[hidden email]> wrote:
>
> > Hi Adam,
> >> Is there a version of fiji on MAC that would install itself to the
> >> system path?
> > Sorry, I don't understand the question. Even if you include the ImageJ
> > launcher's directory on the system path, it still wouldn't be enough,
> since
> > the executable file name differs across OSes.
> > Given a path to a Fiji.app directory, your Python code could synthesize
> the
> > correct launcher to use, similar to the shell script I linked -- but in
> > Python, of course.
> > Another option would be to make it an installation requirement for users
> to
> > symlink "fiji" somewhere on their path, so that your Python code doesn't
> > need to worry about it.
> >> is everyone using this workaround or am I using the wrong version of
> >> fiji or something?
> > I don't think many people call ImageJ from Python. Usually it is the
> other
> > way around: call Python (or Jython) from ImageJ:
> > * http://imagej.net/Python
> > * https://github.com/scijava/scripting-cpython
> > * https://github.com/scijava/scripting-jython
> > Someone else did just ask about this on StackOverflow, though:
> > * http://stackoverflow.com/q/29749687/1207769
> > Regards,
> > Curtis
> > On Thu, Apr 23, 2015 at 4:11 PM, Adam Hughes <[hidden email]>
> wrote:
> >> Thanks.  Is there a version of fiji on MAC that would install itself to
> the
> >> system path?  I mean, is everyone using this workaround or am I using
> the
> >> wrong version of fiji or something?
> >>
> >> On Thu, Apr 23, 2015 at 4:44 PM, Curtis Rueden <[hidden email]>
> wrote:
> >>
> >> > Hi Adam,
> >> >
> >> > > Does anyone know how to configure a Mac and/or Ubuntu system path so
> >> > > that we could just run fiji from any terminal?
> >> >
> >> > The issue is complicated by the fact that the launcher executable is
> >> named
> >> > differently for every platform.
> >> >
> >> > Personally, I work around it via the following shell script:
> >> > *
> >> >
> >> >
> >>
> https://github.com/imagej/imagej-omero/blob/imagej-omero-0.2.1/bin/run-class
> >> >
> >> > Alternately, the ImageJ.sh script (
> >> >
> https://github.com/imagej/imagej/blob/imagej-2.0.0-rc-29/bin/ImageJ.sh)
> >> > tries very hard to launch ImageJ without using any launcher
> executable.
> >> In
> >> > that way, you can run ImageJ on platforms for which no launcher has
> been
> >> > compiled, such as the Raspberry Pi.
> >> >
> >> > HTH,
> >> > Curtis
> >> >
> >> > On Thu, Apr 23, 2015 at 3:32 PM, Adam Hughes <[hidden email]>
> >> > wrote:
> >> >
> >> > > Hi,
> >> > >
> >> > > I'm trying to run a fiji macro in headless mode through python.
> I'm on
> >> > > ubuntu, but also need to do this on a Mac.  I've downloaded fiji
> from
> >> > > source, and can doubleclick the icon to launch the application fine.
> >> The
> >> > > icon refers to the file:
> >> > >
> >> > > ~/Fiji.app/ImageJ2.desktop
> >> > >
> >> > > However, to use Fiji in headless mode, the guides imply that I want
> to
> >> do
> >> > > this:
> >> > >
> >> > >  ImageJ --headless -macro path-to-Macro.ijm
> >> > >
> >> > > Or
> >> > >
> >> > >  fiji --headless -macro path-to-Macro.ijm
> >> > >
> >> > > However, fiji and ImageJ are not in python.  So this command doesn't
> >> > work.
> >> > > Does anyone know how to configure a Mac and/or Ubuntu system path so
> >> that
> >> > > we could just run fiji from any terminal?  At the end of the day, my
> >> > python
> >> > > function looks like this (currently not working):
> >> > >
> >> > > def IJwatershed(bw_image):
> >> > >     imsave('fooing', bw_image)
> >> > >     macro_file = 'Watershed.imj'
> >> > >    * path_to_fiji* = '/home/glue/Desktop/Fiji.app/ImageJ2.desktop'
> >> > >     command = "%s --headless %s" % (path_to_fiji, macro_file)
> >> > >     with open('foo', 'w') as dnull:
> >> > >         p = subprocess.call(command, shell=False)#
> >> > stderr=subprocess.PIPE)
> >> > >
> >> > > And it seems to not work because of my *path_to_fiji *not being
> >> > understood.
> >> > >
> >> > > --
> >> > > 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: Fiji/ImageJ Headless if not in path?

Adam Hughes
This is becoming a can of worms due to my inexperience.  When I make the
alias and the bash_profile, it overwrites my enthought canopy links.  In
other words, when I have a bash profile, my OS defaults back to the system
python.  Before I go down this road of putting canopy back into the
bash_profile path, I just wanted to ask something.  I had this working on
an older script by explicitly calling the following code:

/ImageJ/jre/bin/java -Xmx512m -jar ImageJ/ij.jar
What was this doing? Is this still valid (eg if I do this with the new
version of ImageJ and/or Fiji, will it run code in headless mode?

On Fri, Apr 24, 2015 at 10:47 AM, Adam Hughes <[hidden email]>
wrote:

> Thanks, that is correct Juan.   I'll try out the alias
>
> On Thu, Apr 23, 2015 at 10:42 PM, Juan Nunez-Iglesias <[hidden email]>
> wrote:
>
>> Curtis, I'm guessing Adam was asking whether there is a Fiji installer
>> that would place the ImageJ-macosx binary (perhaps renamed) in a system
>> path such as /usr/local/bin.
>>
>>
>>
>>
>>
>>
>> For what it's worth, on Mac OS X, I usually alias the binary executable
>> inside the Fiji.app:
>>
>>
>>
>>
>> alias fiji=/Applications/Fiji.app/Contents/MacOS/ImageJ-macosx
>>
>> On Fri, Apr 24, 2015 at 8:27 AM, Curtis Rueden <[hidden email]> wrote:
>>
>> > Hi Adam,
>> >> Is there a version of fiji on MAC that would install itself to the
>> >> system path?
>> > Sorry, I don't understand the question. Even if you include the ImageJ
>> > launcher's directory on the system path, it still wouldn't be enough,
>> since
>> > the executable file name differs across OSes.
>> > Given a path to a Fiji.app directory, your Python code could synthesize
>> the
>> > correct launcher to use, similar to the shell script I linked -- but in
>> > Python, of course.
>> > Another option would be to make it an installation requirement for
>> users to
>> > symlink "fiji" somewhere on their path, so that your Python code doesn't
>> > need to worry about it.
>> >> is everyone using this workaround or am I using the wrong version of
>> >> fiji or something?
>> > I don't think many people call ImageJ from Python. Usually it is the
>> other
>> > way around: call Python (or Jython) from ImageJ:
>> > * http://imagej.net/Python
>> > * https://github.com/scijava/scripting-cpython
>> > * https://github.com/scijava/scripting-jython
>> > Someone else did just ask about this on StackOverflow, though:
>> > * http://stackoverflow.com/q/29749687/1207769
>> > Regards,
>> > Curtis
>> > On Thu, Apr 23, 2015 at 4:11 PM, Adam Hughes <[hidden email]>
>> wrote:
>> >> Thanks.  Is there a version of fiji on MAC that would install itself
>> to the
>> >> system path?  I mean, is everyone using this workaround or am I using
>> the
>> >> wrong version of fiji or something?
>> >>
>> >> On Thu, Apr 23, 2015 at 4:44 PM, Curtis Rueden <[hidden email]>
>> wrote:
>> >>
>> >> > Hi Adam,
>> >> >
>> >> > > Does anyone know how to configure a Mac and/or Ubuntu system path
>> so
>> >> > > that we could just run fiji from any terminal?
>> >> >
>> >> > The issue is complicated by the fact that the launcher executable is
>> >> named
>> >> > differently for every platform.
>> >> >
>> >> > Personally, I work around it via the following shell script:
>> >> > *
>> >> >
>> >> >
>> >>
>> https://github.com/imagej/imagej-omero/blob/imagej-omero-0.2.1/bin/run-class
>> >> >
>> >> > Alternately, the ImageJ.sh script (
>> >> >
>> https://github.com/imagej/imagej/blob/imagej-2.0.0-rc-29/bin/ImageJ.sh)
>> >> > tries very hard to launch ImageJ without using any launcher
>> executable.
>> >> In
>> >> > that way, you can run ImageJ on platforms for which no launcher has
>> been
>> >> > compiled, such as the Raspberry Pi.
>> >> >
>> >> > HTH,
>> >> > Curtis
>> >> >
>> >> > On Thu, Apr 23, 2015 at 3:32 PM, Adam Hughes <[hidden email]
>> >
>> >> > wrote:
>> >> >
>> >> > > Hi,
>> >> > >
>> >> > > I'm trying to run a fiji macro in headless mode through python.
>> I'm on
>> >> > > ubuntu, but also need to do this on a Mac.  I've downloaded fiji
>> from
>> >> > > source, and can doubleclick the icon to launch the application
>> fine.
>> >> The
>> >> > > icon refers to the file:
>> >> > >
>> >> > > ~/Fiji.app/ImageJ2.desktop
>> >> > >
>> >> > > However, to use Fiji in headless mode, the guides imply that I
>> want to
>> >> do
>> >> > > this:
>> >> > >
>> >> > >  ImageJ --headless -macro path-to-Macro.ijm
>> >> > >
>> >> > > Or
>> >> > >
>> >> > >  fiji --headless -macro path-to-Macro.ijm
>> >> > >
>> >> > > However, fiji and ImageJ are not in python.  So this command
>> doesn't
>> >> > work.
>> >> > > Does anyone know how to configure a Mac and/or Ubuntu system path
>> so
>> >> that
>> >> > > we could just run fiji from any terminal?  At the end of the day,
>> my
>> >> > python
>> >> > > function looks like this (currently not working):
>> >> > >
>> >> > > def IJwatershed(bw_image):
>> >> > >     imsave('fooing', bw_image)
>> >> > >     macro_file = 'Watershed.imj'
>> >> > >    * path_to_fiji* = '/home/glue/Desktop/Fiji.app/ImageJ2.desktop'
>> >> > >     command = "%s --headless %s" % (path_to_fiji, macro_file)
>> >> > >     with open('foo', 'w') as dnull:
>> >> > >         p = subprocess.call(command, shell=False)#
>> >> > stderr=subprocess.PIPE)
>> >> > >
>> >> > > And it seems to not work because of my *path_to_fiji *not being
>> >> > understood.
>> >> > >
>> >> > > --
>> >> > > 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: Fiji/ImageJ Headless if not in path?

ctrueden
Hi Adam,

> /ImageJ/jre/bin/java -Xmx512m -jar ImageJ/ij.jar
> What was this doing? Is this still valid (eg if I do this with the new
> version of ImageJ and/or Fiji, will it run code in headless mode?

It will not launch ImageJ2, only ImageJ1. So the headless mode (which is an
ImageJ2 feature) will not work.

I think using the launcher is your least painful route here, at least for
the time being.

Here is python code that determines the right one to use:

  #!/usr/bin/python
  def launcher():
      import struct, sys
      bits = struct.calcsize('P') * 8
      if sys.platform.startswith('win'):
          return 'ImageJ-win' + bits + '.exe'
      elif sys.platform == 'darwin':
          return 'Contents/MacOS/ImageJ-macosx'
      elif sys.platform.startswith('linux'):
          return 'ImageJ-linux' + bits
      return "ImageJ.sh"
  print launcher()

(You might also want to check that the executable returned actually exists
on the file system, and issue a friendly error if not, before blindly
calling it.)

Alternately, if you want to know an invocation to jre/bin/java that will do
the job, try running:

    ImageJ-linux64 --dry-run

And it will show you a long string that represents what the launcher does
to actually spin up ImageJ. But embedding that string into your python code
strikes me as much more fragile.

> I'm guessing Adam was asking whether there is a Fiji installer that
> would place the ImageJ-macosx binary (perhaps renamed) in a system
> path such as /usr/local/bin.

OK, that makes sense. A couple comments about that:

1) There used to be some Debian packaging for Fiji, but it was too hard to
maintain. I would like to resurrect Debian packaging for core ImageJ2 only
-- this would avoid many licensing problems, and still allow users to
enable Fiji by toggling the Fiji update site.

2) On the OS X side, there is an issue in the issue tracker for creating a
Homebrew tap for ImageJ: https://github.com/imagej/imagej/issues/124

Both of those would give you what you want: an "imagej" executable on the
system path. But unfortunately, due to project priorities, neither are
likely to be achieved soon unless someone in the community champions the
effort. And neither would address the situation for Windows, the most
popular platform.

Regards,
Curtis

On Fri, Apr 24, 2015 at 12:48 PM, Adam Hughes <[hidden email]>
wrote:

> This is becoming a can of worms due to my inexperience.  When I make the
> alias and the bash_profile, it overwrites my enthought canopy links.  In
> other words, when I have a bash profile, my OS defaults back to the system
> python.  Before I go down this road of putting canopy back into the
> bash_profile path, I just wanted to ask something.  I had this working on
> an older script by explicitly calling the following code:
>
> /ImageJ/jre/bin/java -Xmx512m -jar ImageJ/ij.jar
> What was this doing? Is this still valid (eg if I do this with the new
> version of ImageJ and/or Fiji, will it run code in headless mode?
>
> On Fri, Apr 24, 2015 at 10:47 AM, Adam Hughes <[hidden email]>
> wrote:
>
> > Thanks, that is correct Juan.   I'll try out the alias
> >
> > On Thu, Apr 23, 2015 at 10:42 PM, Juan Nunez-Iglesias <
> [hidden email]>
> > wrote:
> >
> >> Curtis, I'm guessing Adam was asking whether there is a Fiji installer
> >> that would place the ImageJ-macosx binary (perhaps renamed) in a system
> >> path such as /usr/local/bin.
> >>
> >>
> >>
> >>
> >>
> >>
> >> For what it's worth, on Mac OS X, I usually alias the binary executable
> >> inside the Fiji.app:
> >>
> >>
> >>
> >>
> >> alias fiji=/Applications/Fiji.app/Contents/MacOS/ImageJ-macosx
> >>
> >> On Fri, Apr 24, 2015 at 8:27 AM, Curtis Rueden <[hidden email]>
> wrote:
> >>
> >> > Hi Adam,
> >> >> Is there a version of fiji on MAC that would install itself to the
> >> >> system path?
> >> > Sorry, I don't understand the question. Even if you include the ImageJ
> >> > launcher's directory on the system path, it still wouldn't be enough,
> >> since
> >> > the executable file name differs across OSes.
> >> > Given a path to a Fiji.app directory, your Python code could
> synthesize
> >> the
> >> > correct launcher to use, similar to the shell script I linked -- but
> in
> >> > Python, of course.
> >> > Another option would be to make it an installation requirement for
> >> users to
> >> > symlink "fiji" somewhere on their path, so that your Python code
> doesn't
> >> > need to worry about it.
> >> >> is everyone using this workaround or am I using the wrong version of
> >> >> fiji or something?
> >> > I don't think many people call ImageJ from Python. Usually it is the
> >> other
> >> > way around: call Python (or Jython) from ImageJ:
> >> > * http://imagej.net/Python
> >> > * https://github.com/scijava/scripting-cpython
> >> > * https://github.com/scijava/scripting-jython
> >> > Someone else did just ask about this on StackOverflow, though:
> >> > * http://stackoverflow.com/q/29749687/1207769
> >> > Regards,
> >> > Curtis
> >> > On Thu, Apr 23, 2015 at 4:11 PM, Adam Hughes <[hidden email]>
> >> wrote:
> >> >> Thanks.  Is there a version of fiji on MAC that would install itself
> >> to the
> >> >> system path?  I mean, is everyone using this workaround or am I using
> >> the
> >> >> wrong version of fiji or something?
> >> >>
> >> >> On Thu, Apr 23, 2015 at 4:44 PM, Curtis Rueden <[hidden email]>
> >> wrote:
> >> >>
> >> >> > Hi Adam,
> >> >> >
> >> >> > > Does anyone know how to configure a Mac and/or Ubuntu system path
> >> so
> >> >> > > that we could just run fiji from any terminal?
> >> >> >
> >> >> > The issue is complicated by the fact that the launcher executable
> is
> >> >> named
> >> >> > differently for every platform.
> >> >> >
> >> >> > Personally, I work around it via the following shell script:
> >> >> > *
> >> >> >
> >> >> >
> >> >>
> >>
> https://github.com/imagej/imagej-omero/blob/imagej-omero-0.2.1/bin/run-class
> >> >> >
> >> >> > Alternately, the ImageJ.sh script (
> >> >> >
> >> https://github.com/imagej/imagej/blob/imagej-2.0.0-rc-29/bin/ImageJ.sh)
> >> >> > tries very hard to launch ImageJ without using any launcher
> >> executable.
> >> >> In
> >> >> > that way, you can run ImageJ on platforms for which no launcher has
> >> been
> >> >> > compiled, such as the Raspberry Pi.
> >> >> >
> >> >> > HTH,
> >> >> > Curtis
> >> >> >
> >> >> > On Thu, Apr 23, 2015 at 3:32 PM, Adam Hughes <
> [hidden email]
> >> >
> >> >> > wrote:
> >> >> >
> >> >> > > Hi,
> >> >> > >
> >> >> > > I'm trying to run a fiji macro in headless mode through python.
> >> I'm on
> >> >> > > ubuntu, but also need to do this on a Mac.  I've downloaded fiji
> >> from
> >> >> > > source, and can doubleclick the icon to launch the application
> >> fine.
> >> >> The
> >> >> > > icon refers to the file:
> >> >> > >
> >> >> > > ~/Fiji.app/ImageJ2.desktop
> >> >> > >
> >> >> > > However, to use Fiji in headless mode, the guides imply that I
> >> want to
> >> >> do
> >> >> > > this:
> >> >> > >
> >> >> > >  ImageJ --headless -macro path-to-Macro.ijm
> >> >> > >
> >> >> > > Or
> >> >> > >
> >> >> > >  fiji --headless -macro path-to-Macro.ijm
> >> >> > >
> >> >> > > However, fiji and ImageJ are not in python.  So this command
> >> doesn't
> >> >> > work.
> >> >> > > Does anyone know how to configure a Mac and/or Ubuntu system path
> >> so
> >> >> that
> >> >> > > we could just run fiji from any terminal?  At the end of the day,
> >> my
> >> >> > python
> >> >> > > function looks like this (currently not working):
> >> >> > >
> >> >> > > def IJwatershed(bw_image):
> >> >> > >     imsave('fooing', bw_image)
> >> >> > >     macro_file = 'Watershed.imj'
> >> >> > >    * path_to_fiji* =
> '/home/glue/Desktop/Fiji.app/ImageJ2.desktop'
> >> >> > >     command = "%s --headless %s" % (path_to_fiji, macro_file)
> >> >> > >     with open('foo', 'w') as dnull:
> >> >> > >         p = subprocess.call(command, shell=False)#
> >> >> > stderr=subprocess.PIPE)
> >> >> > >
> >> >> > > And it seems to not work because of my *path_to_fiji *not being
> >> >> > understood.
> >> >> > >
> >> >> > > --
> >> >> > > 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