Posted by
Bob Loushin on
URL: http://imagej.273.s1.nabble.com/Trainable-Segmentation-tp5002107p5002156.html
Johannes,
Thank you for the detailed reply. As mentioned in my earlier response, I
will download FIJI to try the Trainable Segmentation. I'm encouraged to see
that transitioning from ImageJ is so straightforward; that makes it much
more likely that it will be my eventual solution.
As far as syntax highlighting goes, Notepad++ actually does an excellent job
of that for many languages, including all of the ones I use except perhaps
macro (I haven't checked). It's even customizable, so I could add syntax
highlighting for macros if I wanted, but it's not worth my time. If my code
will be more complex than about one page I switch to Java anyway, so I
haven't felt this was an issue. Switching to Java is prompted by the desire
to break things up into smaller classes and functions (which is clumsy in
macro), not a lack of syntax highlighting. But since it's available, it
will be an added convenience! For those unfamiliar with Notepad++, it's an
open source text editor. It's very similar to ImageJ/FIJI in many ways: an
active user community, extendable through plug-ins, highly customizable. I
don't know if it's available cross platform, I've only used it in Windows.
It even has a hex editor plug-in, which I've used to decipher different
image header formats. A tabbed interface makes it easy to keep several
classes open at once and switch back and forth between them.
I don't need to be convinced that, from a user's standpoint, there is no
learning curve to switching from ImageJ to FIJI. I've downloaded it and
test run it in the past to see if there was anything it had that I needed
but ImageJ didn't have. At the time, there wasn't, but that was a while
ago, and much has changed since then. But as you say, the interfaces are
identical.
I am intrigued by the possibility of automating the updates. This is one of
those things I always assumed was too much hassle for small projects but
very useful for big ones. If it is as easy as you say, however, it may be
worthwhile for my situation. I'll definitely look into it.
I would also like to address a comment Curtis Rueden made in his response.
I apologize for leaving the impression that I felt FIJI was not, in general,
as easy to use as ImageJ. It would be more accurate to say that when I did
a side by side comparison 3 or 4 years ago, I found the programming
interface of ImageJ to be a better fit to my needs. But I'm open to change,
and as I said, I will try it again.
Again, thank you for creating such a useful tool!
Bob
-----Original Message-----
From: Johannes Schindelin
Sent: Wednesday, March 13, 2013 1:58 PM
To:
[hidden email]
Subject: Re: Trainable Segmentation
Hi Bob,
On Tue, 12 Mar 2013, Bob wrote:
> Both you and Mr. Schindelin
Actually, just "Johannes" is fine.
> gave very similar answers to my question--answers which, as a regular
> reader of the group, I expected. I was also hoping to hear something
> along the lines of "Go to x and download the plugin, it's clean of any
> other dependencies", but that does not seem to be true in this case.
> I'll try to address your question, though.
Yes, I know that you were hoping for something like that, but I hoped to
give you even simpler instructions than "go to a website, download this
file, then on the same website, download that file, too, and yet another
file, and then, on every computer you have ImageJ installed, find the
folder into which it was installed, open the subdirectory called plugins/,
copy the files you downloaded, restart ImageJ and test that everything
still works correctly."
You see, the intention of the Fiji project is not to require users to learn
new tricks. Its intention is to let users download the .zip, unpack it,
and start processing and analyzing images. No hassles with keeping things
up-to-date. No hassles with copying files. No hassles with having to
remember where things go.
> There are good reasons, from my perspective, to choose ImageJ over FIJI.
I am really glad that you give me the opportunity to address your
concerns. Please bear with me, I think that you will understand at the end
of this mail that Fiji caters to users just like you.
> 1) I've already got an installed base of half a dozen non-programmer
> users using ImageJ, with a bunch of plug-ins installed, many of which I
> wrote, and many of which I didn't. Switching would involve the hassle
> of converting all their machines (personally--they aren't savvy enough
> to do it themselves), and then reinstalling all the plug-ins under FIJI
> as well, although some might already be there.
You can turn an existing ImageJ installation into a Fiji installation with
one drag 'n drop followed by pressing Ctrl+J:
http://fiji.sc/Frequently_Asked_Questions#How_do_I_turn_my_ImageJ_installation_into_a_Fiji_one.3F(Note: I just added this FAQ entry, triggered by your email, even if the
functionality existed for some time now.)
> 2) I'm not a real programmer--I just play one at work. All the fancy
> tools real programmers use are a barrier to entry for me. Don't get me
> wrong--Eclipse, Github, Netbeans etc. are all great tools for those who
> code for a living. But I spend maybe 15% of my time programming at
> work. I'll go months without writing a line of code, until a problem
> comes along that needs it. Then it's critically important! The rest of
> the time I'm in the lab, at meetings, juggling budgets, etc. Even if
> all those tools cut down my programming time by half, it would take
> years to recover the time invested in learning them because I don't code
> enough to make it worthwhile. I have other areas of expertise that are
> more critical to my job that I invest my training time in.
I would call you a real programmer by that description (including the
lack of time ;-)), but of course not a computer scientist.
And that is perfectly okay: I put a lot of time and effort into making
Fiji easy to use for *both* programming experts as well as self-taught
programmers. As well as users who do not want to write a single line of
code.
Sure, it is nice that you can use Eclipse, GitHub and Maven if you are an
expert in those technologies. It really helps getting started developing
with Fiji in that case.
But Fiji was started with the wet lab in mind. Biologists, physicists,
technical assistants who just need to get the job done. In some cases --
probably very similar to yours, I guess! -- those users started using the
macro language *because* it helped getting things done, faster. Some of
these power users needed more, still, and learnt Java. Or one of the
scripting languages Fiji supports (and these power users are the reason
Fiji supports scripting languages -- why learn Java if you know, say,
Python already?).
And just like you, those power users did not want to learn new tools.
*Unless* they were easy to use and got the job done quicker. If the time
spent on learning the tool and using the tool was shorter than doing
things without the tool, it was worth their time.
> 3) So I have to stick to simple to learn. Formal training is out of
> the question. Every language I currently use (Java, macro, Visual
> Basic, a smattering of JavaScript) is self-taught. Notepad++ to edit.
> "Compile and run" in ImageJ, and hope any error messages aren't too
> mysterious. Hand coded build files to make .jars for the more complex
> stuff. My "code repository" is a folder full of .java files (backed up
> offsite, naturally). Need a plugin? Pull it off the ImageJ site and
> dump it in the plugins folder. The code is at the same place, or often
> right in the .jar! Marvelously simple. But my projects are small enough
> that I can get away with that. ImageJ is a perfect match for this
> style. Yes, FIJI can be used the same way.
I challenge you to download & unpack Fiji, start it and hit the '[' key.
It will open the Script Editor. Just open a macro of yours. See the syntax
highlighting? Makes things simpler, does it not? We included that only
because it gets things done, faster.
Or even better: open a .java file of yours. Hit Ctrl+R and see it compiled
and run. Then change something in the file. Hit Ctrl+R and see the new
version compiled and run. I bet this is much faster than what you did
earlier: edit things in Notepad++, switch focus to ImageJ, then click
Plugins>Compile and Run..., double-click the .java file in the file
chooser.
As to bundling plugins in a .jar file? Easy: in the Script Editor, select
File>Export as .jar.
Bundling plugins in a .jar file together with their .java source? In the
Script Editor, select File>Export as .jar (with source).
> But the spirit of it seems to be more oriented towards using real
> programming tools, and making sure everything fits correctly, etc.
I hope that I convinced you by now that you do not need to change anything
in the development style you developed over the years. You simply have a
new swiss army knife available. That is all.
Nobody forces you to use advanced development tools. Or have additional
correctness checks or something.
> Great for efficiency but again that barrier thing.
The barrier is maybe lower than you think ;-)
> So the short answer to the question "Why ImageJ instead of FIJI?" is, in
> my case, ImageJ has everything I need and less that I don't.
Well, you said that you downloaded and wrote plugins. So ImageJ does not
have everything you need. It is, however, extensible. And that is exactly
what Fiji provides: extensions.
> FIJI seems to add a lot of stuff I don't need without adding anything I
> do (well, except maybe Trainable Segmentation...).
Certainly, Fiji bundles so many things that it is almost guaranteed that
you do not need all of them.
It was never the point of having a distribution that fits one particular
set of scientists perfectly, and just that. It always intended to have the
things you need, and the things somebody else needs, and all it costs to
use it is to download and unpack an archive, and then double-click an
icon, that's all.
> I guess the purpose of this lengthy response is a gentle reminder to the
> experts that not everybody else can be. Where possible, suggest
> solutions that require little or no specialized knowledge. Sometimes
> quick and dirty really is better than elegant and bullet proof, if it's
> a lot simpler. I can't be an expert in everything. My plumber,
> accountant, and karate instructor all tell me I could be so much better
> at what they do if I just devoted the effort to it that they do...but
> none of them have a degree in my field, either. So most of the people
> asking questions on the list are not only less of a programming expert
> than the FIJI team, they also are less likely to be able to invest the
> time and energy to become one.
Of course, I know that designing and maintaining Fiji is something that
requires a certain skill set that not every biologist has.
As I mentioned earlier, though: the point of Fiji is not to be
complicated. Certain parts are, but it is *my* job to take care of them.
*Your* job is to benefit from the hard work that was put into Fiji, and to
make sure that I am reminded of things that are still not as simple as
they could be.
> For the case at hand, I'll download FIJI just to try out the Trainable
> Segmentation. If it handles my problem, great! Then I'll need to
> decide if it's easier to switch everybody to FIJI or come up the
> learning curve (it might not be very big...I haven't looked) on using a
> real code repository so I can pull what I need out of it and drop it
> into ImageJ.
I am sure that you will find that Fiji looks pretty similar to ImageJ.
That is not a coincidence, it is intentional. Fiji is just ImageJ. It was
never intended to be something else than a distribution of ImageJ with
some plugins that make life easier.
The learning curve associated with switching from ImageJ to Fiji, hence,
is expected to be virtually zero.
Of course, you can make your own life harder by trying to rip out a couple
of things from Fiji and put them into a bare-bones ImageJ installation.
But why? What would be the point, other than spending time that would be
better spent in one of the meetings you mentioned earlier, or juggling
budgets, just to get exactly the same you have already, with Fiji?
> Is the stuff in the repository in .jar files and ready to install, or
> would I also need to rebuild it? I'll figure it out if I need to.
As Fiji tries to make things easier, not more difficult, for the users,
everything is ready to run. (Not in the source code repository, though,
that is the playground for the developers.)
> Thanks for letting me ramble. And thank you (both the ImageJ and FIJI
> teams), not only for your help, but for all the time and energy you
> spend on making an incredibly useful tool for the rest of us to
> use--even if we can't master the intricacies it takes to build it.
If you want to build it from scratch, it's very easy, too ('sh Build.sh'
after checking out the source from git://github.com/fiji/fiji), but I
believe that you will be satisfied with the downloadable .zip file.
And I kept one goodie for the end of this mail. You mentioned that you
have multiple installations of ImageJ which you have to update with your
custom plugins yourself, manually, because your users are not savvy enough
to do it themselves.
This is where the updater comes in.
Now, I hear you say: "But I do not have an update site!". And my response:
you can have an update site in less than half an hour. And it will save
you dozens of hours in the future because you can just upload new versions
of the plugins to the update site, and the users will get those updates
automatically.
Have a Dropbox account [*1*]? Then you have all you need for your very own
update site.
(Even if you lack a Dropbox account, it is dead simple to get one, and for
the purposes of an update site, a free account will do just fine.)
Simply read through
http://fiji.sc/How_to_set_up_and_populate_an_update_siteand pay special attention to the Dropbox section. (This should not take
more than 2 minutes of your time, and to set up the update site and to
upload your custom plugins should not take more than 15 minutes in
addition.)
Then tell your users to follow
http://fiji.sc/Update_Sites with your
update site's URL, and you're set [*2*]!
Summary: Fiji is intended to make life easy and simple, even for
scientists who did not study computer science.
Ciao,
Johannes
Footnote *1*: Kudos to Curtis for thinking of using Dropbox as an update
site. It is a brilliant idea!
Footnote *2*: At the moment, the updater will not suggest automatically to
update when a Dropbox update site you follow has new updates. As a user,
you do not have to understand the technical details unless you want to,
suffice to say that one of the next updates will bring you a fix for that!
--
ImageJ mailing list:
http://imagej.nih.gov/ij/list.html
--
ImageJ mailing list:
http://imagej.nih.gov/ij/list.html