BMC Genomics 2006, 7:300 http://www.biomedcentral.com/1471-2164/7/300 fer from several artefacts including contamination with genomic DNA; similarities to proteins in other species might suffer from evolutionary divergence or the ortho- logue-paralogue problem [3]; and the presence of alterna- tive splicing considerably complicates the interpretation of alignments between genomic DNA, cDNAs and ESTs. More seriously, however, similarity data is never com- plete. But it is the annotation that connects the sequence to the biology of the organism [4]. Manual annotation is still by far the most accurate and successful way to achieve correct predictions of genes. This process is best done using the possibilities of comparative genomics and multiple sequence alignments. Because a majority of the proteins are not characterized and their functions are largely unknown, the initial process involves categorizing these predicted proteins into subsets of pro- teins or protein families based on homology, presence of various functional domains and motifs, as well as similar- ity to well characterized proteins from other species. Thus, when working with collections of protein- sequences from different species and sources, one quickly accumulates large amounts of heterogeneous data: Pro- tein and DNA sequences, their identifiers in different databases, references to literature, information about spe- cies including taxonomy, and links to online resources like sequencing projects. Since data that can be retrieved from public databases is often incomplete or incorrect it is very desirable to be able to combine manually edited with automatically generated content. In addition, there is often misleading and contradicting data, especially con- cerning the nomenclature and classification of proteins, that needs to be tracked and commented. Cytoskeletal and motor proteins have extensively been studied in the past. They are involved in diverse processes like cell division [5], cellular transport [6], neuronal trans- port processes [7], or muscle contraction [8], to name a few. Especially motor proteins consist of large super- families. E.g. vertebrates contain up to 60 myosins and about the same number of kinesins that are spread over more that a dozen distinct classes. Since genome sequence data is rapidly accumulating it is very important to have a reference database for the nomenclature and phylogenetic relation of the proteins that allows the most accurate assignment of biological function possible. Pfarao is a database driven web application that was writ- ten to assist researchers investigating structure, function and phylogeny of proteins. It has been developed for the analysis of cytoskeletal and motor proteins (CyMoBase), but can be adapted to any type of protein. It stores, organ- izes, interrelates, presents, and analyzes data of various sources. Additionally, it triggers external prediction pro- grams, so that manually entered and automatically gener- ated data is always synchronized. Construction Technologies The system is running on UNIX (OS X and Linux) systems. The database management system is PostgreSQL [9]. As web application framework we chose Ruby on Rails [10] since it has the advantage of rapid and agile development while keeping the code well organized. Part of this frame- work is an implementation of Active Record [11] which is an O/RM (Object-relational Mapping) system that makes database integration into an object oriented program con- siderably easier. This also allows to use the interactive ruby shell (irb) with database rows wrapped in objects for interaction with the database. This way of accessing the data often proves superior to the SQL shell. Additionally, Ruby on Rails offers XML-RPC so data can be accessed by other programs. We implemented a service-oriented mechanism that starts specific scripts, when records in the database are added or updated. In this case, a PostgreSQL trigger starts a PL/Ruby script [12], which opens a network connection to a dele- gation server program written in Distributed Ruby [13] on the same machine and calls one of its functions, giving a database ID as an argument if appropriate. The server can in turn start scripts to act upon the entered or updated data and returns after completion so that the database transaction is completed. The server's state can be set from within the database or from external programs to disable certain functions during batch processing in order to avoid flooding. The automation scripts for parsing BLAST [14] and HMMER [15] output are written in Ruby [16] making use of the BioRuby library [17]. Sequences are scanned for domains using the Pfam_fs release 19.0 database [18] containing 8183 hidden markov models. The web pages are generated as XML (XHTML with SVG [19] data islands). We used SVG [19] for charts because of the high display quality and the possibility of reuse in print. The site makes extensive use of Ajax (Asynchronous JavaScript and XML) in order to present the user with a feature rich interface while minimizing the amount of transferred data. All technologies used are freely available and open source. Database The unique requirements of the system demand a custom database schema. The schema is sequence-centric with an additional emphasis on species since these two aspects are the most important in mutual annotation and, therefore, need to be represented in high detail (see additional file 1: Page 2 of 8 (page number not for citation purposes)