[ome-devel] Client Architecture: A Proposal
Ilya Goldberg
igg at nih.gov
Thu Aug 26 15:50:16 BST 2004
On Aug 26, 2004, at 3:53 AM, Joshua Moore wrote:
> Check. I think this is what I needed to hear or "Get bent, Josh." I
> don't think I can match Doug's rate, but I'll get to work. If anyone
> is interested, get in touch.
Well, I'll have another go at you then.
The sign over your door says "Gridcomputing for the Lifesciences", so
why all this talk about clients?
Here's something meatier to think about:
The OME analysis engine is built to execute analysis chains - a DAG of
analysis modules. The nodes in the DAG are the analysis modules. The
edges connect outputs to inputs. Each analysis module is effectively
an XML wrapper around some code. The code can be a command-line
executable, a matlab module, a perl class, etc. Each kind of code has
its own "AnalysisHandler", so there's one for Matlab, one for
command-line executables, etc. Between the XML wrapper and the
implementation-specific handler, the analysis engine can execute an
analysis implemented any which way you want - passing information into
the module from the DB and collecting it from the module to put back
into the DB, and pass it on down the edge to the next node.
An almost magical aspect of the Analysis Engine is that it knows all of
the data dependency. It can generate lists of tasks that can execute
concurrently because it knows they are independent. It then knows
enough to wait for the results, then generate a new list of tasks, etc.
Until its done executing the chain. So the key thing here is that
right now it just executes them all on the same box. In fact a very
silly implementation of this knowledge of dependency can be turned on
and off with a flag, which will cause the AE to fork as many times as
necessary to execute all independent tasks concurrently. What would be
really cool is break this linkage somewhere between the analysis engine
and the various handlers so that all it has to do is issue commands
into some computational black box and wait for the black box to return
the results. None of us know enough about grid computing to think
intelligently about where it would be appropriate to make this break,
what kind of information we send across it, and how we send it. It
could be that the black box should talk to the DB directly (using our
Perl APIs to do so - or not), or it could be more appropriate to send
the inputs and outputs back and forth and have the analysis engine talk
to the DB. It could be that the entire analysis engine should live in
the black box. Or all this might sound completely cookoo because my
knowledge of grid computing can be summarized on the back of a postage
stamp with a felt-tip marker. However its done, it would be very nice
to preserve this agnosticism about the implementation of the module -
so that we could still write modules in our favorite way. Of course,
since determining data dependency is probably the most difficult task
in figuring out the granularity of the parallelism, the fact that this
is already done should obviously be taken advantage of.
What do you think of them apples?
-Ilya
>
> -Josh.
>
> Ilya Goldberg wrote:
>
>> So here's a counter proposal. You seem to know about Eclipse, so why
>> not try building a plug-in for it to make an initial connection to
>> OME and pull some of its primary objects out (Projects, Datasets,
>> Images, etc). If you can do it easily, and it provides missing
>> functionality, then maybe everyone will join the band-wagon. I think
>> its easier to think about these things and evaluate them once there's
>> some kind of proof of concept to look at - your vision made concrete.
>> Its not very difficult to build this initial connection - Doug did
>> it once using the OS X development tools in an afternoon. We decided
>> against pursuing it because of the limited audience, but it
>> illustrates that with the right tools something surprisingly
>> functional can be built very quickly.
>>
>> -Ilya
>
>
> _______________________________________________
> ome-devel mailing list
> ome-devel at lists.openmicroscopy.org.uk
> http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-devel
>
More information about the ome-devel
mailing list