[ImageJ-devel] Auto-Documentation of Processing Chain: Extension of @Parameter Annotation
Johannes Schindelin
Johannes.Schindelin at gmx.de
Tue Mar 15 01:49:24 CDT 2011
Hi,
On Tue, 8 Mar 2011, Oliver Gress wrote:
> we have developed a way for automatic documentation of the processing
> chain of an image or other results in ImageJ. For improved integration
> with IJ, we would like to discuss a modification/extension of the
> @Parameter annotation in IJ-Dev.
Great!
Somebody made a similar thing (chaining plugins) on top of the Parameter
framework, but unfortunately did so in a manner that cannot be merged back
easily. So I appreciate very much your willingness to work on getting your
enhancements included!
> The basic concept is to consider each processing step as an "operator",
> that takes some input and computes results, which might become input to
> another operator. Such an operator may be an ImageJ plugin or any java
> class that satisfies the specification.
>
> The specific interface of such an operator is described by inputs,
> parameters, supplementals and outputs.
>
> Inputs and outputs are used to trace the processing chain, from which a
> "history" graph is created.
>
> Parameters are inputs that are not traced but recorded. Supplementals
> are not recorded at all and are intended for parameters that have no
> effect on the results (e.g. a verbose flag).
Sounds good!
> We employ java annotations to determine the above interpretation of the
> fields of a class and thus the interface of an operator. At the moment,
> we use our own annotation class, because @Parameter from IJ-Dev does not
> allow the detailed categorization of arguments that would be required by
> our concept. It only allows to specify if an argument is output or not.
>
> I know that @Parameter is intended to describe the parameters of a
> plugin, e.g. to create a parameter dialog automatically.
Yes, but also more:
http://pacific.mpi-cbg.de/cgi-bin/gitweb.cgi?p=imagej2/.git;a=blob;f=core/plugin/src/main/java/imagej/plugin/Parameter.java;h=fcf73c23565abd8a359a0422bfd8f4503f450154;hb=83c6c9241723d64c3c97ea2e9c150548f568771b
> I'd like to ask if the idea of @Parameter could be extended to a more
> general point of view:
>
> Would it be possible to extend or modify the @Parameter annotation to
> categorize a field as input, output, parameter or supplemental? Our
> annotation also takes an "explanation" string to describe the parameter
> in human-readable form, but it is not essential for the automatic
> documentation.
Sure, as long as you make those fields optional, the @Parameter can be
enhanced. If you're working with Git, you might use our mirror at
git://pacific.mpi-cbg.de/imagej2/.git, otherwise work with with Subversion
on http://dev.imagejdev.org/svn/imagej/trunk.
> We would really like to merge these annotations, because the processing
> chain documentation could be easily employed by IJ plugins that use the
> @Parameter annotation and no additional annotation would be necessary.
>
> Another question: Is there any interest in an automatic documentation of
> the processing chain?
I think that this is a good idea, but it can be taken a bit further:
http://imageflow.danielsenff.de/
Note that ImageFlow is only intended for macros, and as such is not easily
extended to real script languages or on-the-fly construction of Java
classes. But it is a start.
> I have uploaded an excerpt of our manual for further reading on the
> operator and history concept:
> http://users.informatik.uni-halle.de/~gress/mitobo_manual_excerpt.pdf
> The manual is rewritten at the moment, therefore only an excerpt. If you
> find a link to our website, please don't refer to the resources that can
> be found there because they are outdated. There will be a new version
> soon (depending on the annotation issue).
This is interesting. Any chance that all components become Open Source? I
am especially intrigued by the mention of CellSegmentation in the
manual...
BTW you might also be interested in having a look at Imglib. It is still
in a stabilizing phase, but the base concepts are described here:
http://pacific.mpi-cbg.de/cgi-bin/gitweb.cgi?p=imglib.git;a=blob_plain;f=imglib/doc/imglib2.svg;hb=imglib2
Basically, you will never need 4-nested loops to do neighborhood
operations again :-)
Ciao,
Johannes
More information about the ImageJ-devel
mailing list