[Pipet Devel] Random thoughts on application wrapping

J.W. Bizzaro bizzaro at geoserve.net
Sat Dec 18 20:24:47 EST 1999

Brad Chapman wrote:
>         I was messing around with CORBA and trying to make myself a little
> piped program that called an already existing program when I got hard into
> thinking about how to wrap applications so that they can be run within the
> python framework of Loci. So I was just wondering, what is the proposed
> mechanism for taking an existing program (say the dnacomp program of
> phylip, written in c) and allowing it to be called from a loci script. I
> could come up with two possible ways to do this:

If it runs from the command-line and is non-interactive, the default (although
somewhat sloppy perhaps) method is the one I outlined in the message
'constructing the command-line'.

Otherwise, we should have a SET of tools available for wrapping proggies FROM

> 1. The Applab way: Applab, a java application wrapper for CORBA (which has
> been mentioned on the list several times) does the following to incorporate
> a program:
>   a. has an IDL interface for controlling and running outside apps (ie.
>   our dnacomp program)
>   b. requires the construction of a meta-data file describing the interface.
>   c. parses (using a perl script) the meta-data file into java code which fits
>   into the server side implementation and wraps the program.

For more sophisticated wrappings, we want to use the AppLab approach.  Since
nothing has really been finalized about just how we will use CORBA, we will
simply copy AppLab.

SEView, by Thomas Junier who is on this list, will also give us some ideas
about converting text output into graphical presentations:


> 2. The other way I could think of: This way would be to generate a wrapper
> for each individual program based on its language and the methods that are
> avaiable to do that. For instance:
>   a. we could wrap C and C++ programs using SWIG (http://www.swig.org)
>   b. we could deal with Java programs by using JPython to input their classes
>   and then do scripting between them.
>   c. we could deal with Perl/Tcl programs by using Minotaur
>   (http://mini.net/pub/ts2/minotaur.html) to imbed perl and tcl scripts into
>   python classes and then run them from there.

Again, the person who wraps the program must be able to choose what will work
best, and this will mean having many options.  For example, David Lapointe
will be working on a method to wrap EMBOSS apps.  It will be generic enough to
handle any EMBOSS application but will still be a wrapping solution for EMBOSS

> Either way has pluses and minuses. I think the first way is nice because it
> allows a consistent method to "port" a program to Loci. However, unless we
> decided to use the applab language and/or parser, we would have to describe
> our own input language and then design a parser to deal with it. The second
> way uses already exciting programs, but it a lot uglier because it is
> different for every app ported and thus makes the porting process very
> difficult for a non-programming-user of Loci.
>         Is any of these two ways I mentioned about something anyone else
> was thinking for wrapping programs so they can run in Loci? Or have I
> completely forgotten an obvious way. Thanks in advance for any help anyone
> can provide on this dillemna of mine!

Perhaps all of these should be pursued.  This is the sort of 'middleware' that
doesn't affect the 'front-endware' (Workspace) and is not specific to any one
'back-endware' application.  Like almost everthing else in Loci, wrapping
solutions are plug-ins/loci.

Bottom line: let's start with AppLab's approach and then look into the others
a little later.

                      |           J.W. Bizzaro           |
                      |                                  |
                      | http://bioinformatics.org/~jeff/ |
                      |                                  |
                      |           THE OPEN LAB           |
                      |    Open Source Bioinformatics    |
                      |                                  |
                      |    http://bioinformatics.org/    |

More information about the Pipet-Devel mailing list