All,
On the call Monday night I was asked to provide a few
paragraphs on provisioning versus instance instantiation and “currying”.
To me this is pretty straight-forward. I provision an application on
my computer by installing it. CDL is the tool for that. Every time I want to
run the program, I create a separate application instance – JSDL/BES is
the right tool for that.
With respect to whether a particular input is bound to the application
(as came up in the call). More formally:
Assume that a program is a function L(a,b,c,d, …) that maps the
inputs to some set of outputs. (We’ll assume that the programs are
deterministic.) If we bind the formal parameter “a” with a
particular value (say a particular input file), then we have effectively
created a new function L’(b,c,d, ….). L and L’ are two
different functions. In lambda calculus this is called “currying”
– I’ve also seen it called “reification” in other
contexts.
In terms of programs like BLAST. BLAST basically takes an input
sequence database and an input sequence and generates a set of scores –
usually the top k scores. . (There are many other parameters, but lets focus on
the two major ones.) The scores are generated by comparing the input sequence
against each of the target sequences in the database. If we “bind”
BLAST to a particular target database – then we have effectively created
a new BLAST, BLASTBound_to_the_particular_database. It is not the
same function any more.
In terms of the discussion we’ve been having on the differences
of the roles of CDL and JSDL/BES I think if it this way.
If I want to be able to run BLAST on a machine – I may use (via
perhaps the program manager) CDL to “provision” BLAST in the BES
container. To run BLAST with a particular set of input files, then I use
JSDL/BES. If I am going to be running a large number of “BLAST
jobs” against a particular DB, I may want to “provision”
BLASTBound_to_the_particular_database , using CDL, and then run a
set of comparisons against particular sequences using JSDL/BES.
Andrew Grimshaw
Professor of Computer Science
434-982-2204
grimshaw@cs.virginia.edu