<div dir="ltr">On Wed, May 15, 2013 at 9:08 AM, Michael Zinsmaier <span dir="ltr"><<a href="mailto:michael.zinsmaier@gmx.de" target="_blank">michael.zinsmaier@gmx.de</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
  

    
  
  <div text="#000000" bgcolor="#FFFFFF">
    
    <div><span>Hi all,</span></div>
    <div><br>
    </div>
    <div><span>after you guys have made so
        much progress during the hackathon, we felt motivated to review
        our</span><span> KNIME-</span><span>ImageJ2 integration and try to
        further improve it, as we want to have everything set-up when
        you release ImageJ2 ;-)</span></div>
    <div><br></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF">
<div><span>Anyway, we discussed several
        things and a lot of questions came up concerning ImageJ2</span><span>:</span></div>
    <div><br></div></div></blockquote><div>Thx guys, lots of stuff below also applies to CellProfiler running ImageJ2.0 plugins. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF"><div></div></div></blockquote><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF"><div>
    </div>
    <div>* Why is the threshold 
        plugin an interactive command? This for instance prevents the
        plugin from  beeing executing in headless mode (and hence from
        appearing as a KNIME node), which might be desirable in some
        use  cases.<br></div></div></blockquote><div style><br></div><div style>I hadn't looked at the interactive commands with regard to CellProfiler. It looks like "buttons" could be interpreted as possible headless actions that could be performed... at least in some cases. I have CellProfiler analogs for most of the parameter types, but that one is new. I'm thinking that I might detect whether a plugin is interactive and, if so, display each button as a radio button, so that the button's callback could be executed in the context of a CellProfiler headless pipeline execution. For Threshold, I can see reasons for executing the callbacks for "auto", "apply" and "delete" in a headless context - unfortunately, CellProfiler would convert the ThresholdOverlay to a binary mask, so "delete" doesn't make much sense for us.</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF"><div></div>
    <div><br>
    </div>
    <div><br></div>
    <div><span>* In KNIME we are
        currently loading all available plugins in the classpath which
        are headless executable. But therewith plugins like "Help",
        "Easteregg", "LoadDataSet" will appear as KNIME nodes as well.
        However they can't do anything useful in the KNIME context (as
        they are  ImageJ2 specific). Are you planing to re-organize the
        plugins, e.g. such that plugins, which are interesting for any
        application reside in their own jar-file?</span></div>
    <div><br></div></div></blockquote><div style>We're using the plugin menu system to display the available plugins hierarchically in CellProfiler. I guess that some plugins are less useful or arguably useless but who am I to judge (I'm still waiting for someone to publish a paper citing use of CellProfiler's "game of life" morphology operation). Hopefully, the hierarchy leads the users to the most useful plugins. I could see some other sort of annotation, e.g. "tags", but I don't want to be the one who manages the tag ongology ;-).</div>
<div style><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF">
<div>
    </div>
    <div> <br></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF">
<div>
    </div>
    <div><span>*</span><span> Are the</span><span>re</span><span>  plans how the "dimension
        selection" will be integrated into ImageJ2,  i.e. how algorithms
        can be run on arbitrary dimensions? (Mapping from  AxesNames to
        indicies of dimensions in images). Can we help here?</span><span> (</span><span>see Doc hackathon!?</span><span>)</span></div>
    <div><br></div></div></blockquote><div style>CellProfiler does use the AxesNames to transform the N-dimensional arrays to our representation. I think that there's enough functionality in the restructuring commands to let power users pull out individual hyperplanes for processing in lower dimensions. Perhaps a "ExtractData" and "ReplaceData" plugin need to be added in order to create and reinsert lower-dimension datasets?</div>
<div style><br></div><div style>There isn't any mechanism to handle AxesNames algebra - you don't know whether a plugin will reduce or augment a dataset's dimensionality or whether a plugin is only suitable for two dimensions. CellProfiler and, I'm guessing, Knime do a lot of matching inputs to outputs which is a contrast to ImageJ. I think our users can handle this ambiguity (they'd use only 2-D or N-D plugins adaptable to 2-D), but annotation improvements here would be nice.</div>
<div style><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF">
<div>
    </div>
    <div><span>* ROIs: Are there plans to
        support Labelings in ImageJ2? Or will Labelings somehow be
        replaced in the future?</span></div></div></blockquote><div><br></div><div style>We're also looking forward to labelings being first-class entities in ImageJ, partially my fault personally that this is not better developed. I'm mostly interested in us having some agreement for the datatype for a labeling parameter - I think that once we have that sort of interoperability, we'll see lots of progress in both segmentation methods and use of segmentations in downstream analysis. </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF"><div><span> </span></div>

    <div><span> </span><span>       </span></div>
    <div><span>*</span><span> </span><span>In the</span><span> current snapshot (compared to
        beta6) some functionality</span><span> was moved</span><span> from  ImageJ to sifio /
        scijava (e.g. the Services).  </span><span>Regarding this some
        questions:</span></div>
    <div>  - The services seem to have
        some  ordering requirements now, we had to move<br></div>
    <div><span>   </span><span> ModuleService behin</span><span>d</span><span>  MenuService in the
        constructor call to avoid a null pointer during</span></div>
    <div><span>    </span><span>initialization
        (onEvent(ModulesAddedEvent) was called before initialize). Is
        there a defined</span></div>
    <div><span>    s</span><span>ervice order?</span></div></div></blockquote><div style>It would be nice to have a headless service profile, something a little easier than leaving out the AWT dependent jars and crossing fingers. CellProfiler might instantiate both GUI and headless contexts in the same JVM - we'd appreciate being able to choose the UI configuration in a simple way.</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF">
    <div><span>    </span></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF">
<div><span>          </span></div>
    <div><span>((</span><span>So far, we have tons of ideas
        where we could do more things together. Thank you in advance for
        answering all these questions ;)</span><span> ))</span></div></div></blockquote><div><br></div><div style>Likewise, thank you, thank you - don't misconstrue any of the above as demands. We all appreciate how all of this is being done and the time it all takes. </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF">
    <div><br>
    </div>
    <div><span>Cheers,</span></div>
    <div><br>
    </div>
    <div><span>Martin, Christian and Michael
        Z.</span></div>
  </div>

<br>_______________________________________________<br>
ImageJ-devel mailing list<br>
<a href="mailto:ImageJ-devel@imagej.net" target="_blank">ImageJ-devel@imagej.net</a><br>
<a href="http://imagej.net/mailman/listinfo/imagej-devel" target="_blank">http://imagej.net/mailman/listinfo/imagej-devel</a><br>
<br></blockquote></div><br></div></div>