W30 Nucleic Acids Research, 2009, Vol. 37, Web Server issue Figure 2. Example of a nested function. The function makes an alignment of the sequences of all orthologs of the protein Asr1156, starting as many as 100 amino acids before the nominal beginning of the protein but going backwards only up to the ﬁrst stop codon. The sequences are labeled with the name of the protein and aligned, using Clustal (5) and visualized using JalView (19). This is the code used to generate an alignment (discussed in Elhai, Taton, Massar, and Shrager, manuscript submitted for publication) that provides evidence against existing annotations of a family of conserved genes and for the use of nonstandard start codons in cyanobacteria. Figure 3. Example of progressive evaluation and iteration in BioBIKE. The pattern of four cysteine residues separated by 2, 2 and 3 amino acids is often found in proteins with 4Fe-4S clusters (20). (A) The ﬁrst function ﬁnds the pattern of cysteines amongst the sequences of all proteins in the cyanobacterium Synechocystis PCC 6803 and assigns the names of the proteins bearing the motif (Result 1) to a user-deﬁned variable called 4fe-4s-proteins. (B) The annotation for each of the proteins is displayed in a separate window (see inset), and the annotations are also returned as result #2. (C) The user is concerned that this motif might well arise by chance on some proteins of Synechocystis. To test this, a set of random protein sequences is generated, each element being a random shuﬄing of a real protein sequence. The set is assigned to the variable random- sequences, and the random sequences are returned as result #3. (D) This set of random sequences is searched for the characteristic motif, and none are found (no result), lending some conﬁdence to the belief that the presence of the motif in proteins of Synechocystis is of biological signiﬁcance. Extensibility: users can deﬁne new data and functions which immediately enter the language, becoming instantly accessible through the same sort of menus as built-in objects. In addition to serving as a memory aid, this aﬀords the modular addition of concepts into the language itself. Users not satisﬁed with the names of concepts built into the language can readily build a pri- vate vocabulary if desired. Although specialized for bioinformatics, BioBIKE is built on top of the standard computer language Lisp, and is therefore capable of all operations typical of a gen- eral purpose programming language. Behind the scenes, BioBIKE expressions are translated into Lisp and com- piled, yielding code that runs at a speed comparable to that of C code. Lisp is a uniquely powerful language, often used to create new specialized languages, as we have done here. R, for example, is written on top of Scheme, a dialect of Lisp (4). Lisp is also the language of choice for artiﬁcial intelligence, which continues to inform BioBIKE’s development. BioBIKE TOOLSET AND ADVANCED FACILITIES BioBIKE provides access to several programs that are commonly used: Blast (3), for sequence searches); Clustal (5), for multiple sequence alignments); Meme (6), for motif discovery; RNAz (7), for discovery of conserved RNA sequences; and Phylip (8), for construction of phylogenetic trees. All are accessed through the same interface, greatly reducing the need to ﬁgure out the idio- syncrasies of each resource. Useful tools not already in the language that have Application Programming Interfaces (APIs), or that are capable of running within a Linux