integrated into the knowledge-base (in simple cases through built-in resources, otherwise with the help of BioBIKE engineers). All of this knowledge and data are represented in an integrated manner within the BioBIKE frame system. The availability of integrated data and knowledge on the same server makes possible certain operations that are not practical with data that is distributed across the web. For example, in CyanoBIKE it is a simple matter to ﬁnd all proteins common to one set of organisms (perhaps user-deﬁned) but not in another, for example those in N2- ﬁxing cyanobacteria that are not found in non-N2-ﬁxing cyanobacteria. Protein similarities and orthologs amongst proteins of organisms outside the database are also avail- able using the same interface, albeit more slowly, through services such as NCBI’s Blast (3). THE BioBIKE GRAPHICAL PROGRAMMING INTERFACE Checking the VPL (visual programming language) box at the login screen of a BioBIKE instance brings the user to the graphical programming interface. (Users may also access BioBIKE with scripts through a web-based com- mand line interface described in ref. 1.) An example of the function palette and workspace is shown in Figure 1. BioBIKE functions and other constructs are represented by boxes obtained from pull down menus. These may be moved around by familiar actions such as drag-and-drop Table 1. Current BioBIKEsa CyanoBIKE: Cyanobacteria (42 genomes) ParaBIKE: Eukaryotic parasites (5 genomes) StaphyloBIKE: Staphylococcus (45 genomes) StreptoBIKE: Streptococcus (25 genomes) ViroBIKE: Viruses (1797 genomes, 20 metagenomes) BIKE: Used for education (0 genomes) aAll instances are available through biobike.csbc.vcu.edu Nucleic Acids Research, 2009, Vol. 37, Web Server issue W29 and copy-paste to form complex expressions. When com- pleted, expressions may be executed by double-clicking them. Results are returned (and sometimes displayed in a human-readable format) so that the user can assess the eﬀect of each step. Data, and whole sessions, may be saved to the BioBIKE server so that incomplete work can be continued later. The design of the BioBIKE language adheres to these principles: Intelligibility: an expression should be intelligible to some- one with requisite biological knowledge but no prior experience with BioBIKE. Many concepts of molecular biology, such as codon and ortholog, are incorporated into the language. Computability of results and nesting: BioBIKE functions often display results formatted for human comprehen- sion. In addition to this, functions generally return their results in a form that can serve as input for further analysis. This allows users to compose expressions by taking the result of one function and feeding it into another, producing new results at each turn. This process can be abbreviated by nesting expressions together, as shown in Figure 2. Small working vocabulary: expressions that are related to each other have been brought together within a single function, to reduce the burden on the memory of a new user. For example, the function SEQUENCE- SIMILAR-TO performs all ﬂavors of Blast, or ﬁnds sequences diﬀering from a reference by a given number of mismatches, depending on options speciﬁed by the user. Implied iteration: the size of biological databases often makes it necessary to perform iterative operations (i.e. loops). Such operations in conventional languages are the bane of those new to programming. Most BioBIKE functions iterate automatically. In Figure 1, for example, a speciﬁc gene could be given to the ORTHOLOG-OF function or a list of genes could be given instead. In the latter case, the function returns a list of results, one for each gene. Figure 1. BioBIKE function palette and workspace. The green workspace shows the work of a user looking for a regulatory sequence upstream from a gene, by focusing on sequences common amongst upstream sequences of orthologous genes in related organisms. The ﬁrst function deﬁnes the variable gln-orthologs as the set of orthologs in marine cyanobacteria of a gene the user knows to encode glutamine synthetase. The second function is in the midst of being completed. The user is choosing the newly deﬁned variable from the VARIABLES menu to be inserted into a function that will extract the sequences upstream from all the orthologs and then ﬁnd statistically overrepresented sequences within the set of sequences, using MEME (6).