Re: Trainable Segmentation

Posted by dscho on
URL: http://imagej.273.s1.nabble.com/Trainable-Segmentation-tp5002107p5002152.html

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_site

and 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