I worked with Darwin for two years, 1995-97, while doing a first postdoc
and will probably use it for teaching purposes with my new job.
In your message you asked about the contrasts between Darwin and
bioperl, biojava, biopython, bioxml.
* Darwin is a great tool for exploratory studies. If you're familiar
Mathematica, Maple, S (Splus or R) you could appreciate working with
Darwin. Darwin is an interpreter built on the top of Maple's
micro-kernel (Gaston Gonnet is co-founder of the company ;-).
Unlike perl, Darwin provides a read-eval-loop and a typical use
consists in starting a session (note that the names of the functions
are according to version 1.6 while 2.0 has a new more uniform naming
Darwin: Sequence Searching Facility
Version 1.6, Jan 1994
(c) E.T.H. Zurich
Loading a sequence database,
Fetching homologous sequences,
> seqs := PepSearch('DEPTTDLPICEQAFGD ... AGLCFGYMKL');
Doing sequence comparision using dynamic programming algorithm,
> DynProgr( seqs, seqs, DM);
Then doing pairwise and multiple sequence alignments, statitics,
building phylogenetic trees, etc.
So that you don't have to use a mixture of packages and more
importantly you don't have to worry about transforming the output of
one program into the input of another one, the variables resides in
the interpreter, I think that for teaching purposes this is a big
plus as one can focus on the more theoretical aspects of the
* Darwin has a good interface to foreign languages via RPC. For
example in one page of C code I glued the GNU regular expression to
Darwin and this allows me to apply regex to sequences within Darwin.
By the same token you can develop (prototype) your application in
Darwin's language and later rewrite in C the parts which need speed.
* Darwin has build mechanisms for parallel processing which makes
farm-like computations easy.
* You mentioned bioxml, since it's beginning, 1991 I think, Darwin has
been using SGML for its databases.
* Darwin has builtin a variant of suffix tree data structure called
* Darwin has an interface to DBM.
* As a language Darwin as some nice features, such functional
constructs (zip a generalise map) and a nice type system.
* As most interpreted languages, programs implemented in Darwin are
slow, but the primitives (sequence retrieval, dynamic programming,
etc.) are efficiently implemented in C.
* Amongst the negative aspects, to me, is the two level scoping
(global/local), I would prefer nested lexical scoping /a la/ Scheme.
* Previous versions had some bugs as you would expect from an
experimental product but some persons could not cope with that.
Hope this helps,
Marcel Turcotte Biomolecular Modelling Laboratory
M.Turcotte at icrf.icnet.uk Imperial Cancer Research Fund
Phone/Fax +-(020)-7269-3348/3258 PO Box 123, 44 Lincoln's Inn Fields
http://www.bmm.icnet.uk/people/turcotte London WC2A 3PX, England
New address effective July 1st 2000,
School of Information Technology and Engineering
University of Ottawa
150 Louis Pasteur
P.O. Box 450, Station A
K1N 6N5 Canada
Tel: (613) 562-5826
Fax: (613) 562-5187
Generic e-mail address: info at site.uottawa.ca
Web site: http://www.site.uottawa.ca