*Result*: Sharing Programming Resources Between Bio* Projects.
Original Publication: Clifton, N.J. : Humana Press
Nucleic Acids Res. 2010 Jan;38(Database issue):D211-22. (PMID: 19920124)
Trends Genet. 2000 Jun;16(6):276-7. (PMID: 10827456)
Bioinformatics. 2010 Oct 15;26(20):2617-9. (PMID: 20739307)
Genome Res. 2002 Oct;12(10):1611-8. (PMID: 12368254)
Nucleic Acids Res. 2010 Jan;38(Database issue):D463-7. (PMID: 19910365)
Nucleic Acids Res. 2005 Jan 1;33(Database issue):D154-9. (PMID: 15608167)
Acta Crystallogr D Biol Crystallogr. 2002 Jun;58(Pt 6 No 1):899-907. (PMID: 12037327)
Genome Biol. 2004;5(10):R80. (PMID: 15461798)
Bioinformatics. 2008 Sep 15;24(18):2096-7. (PMID: 18689808)
Comput Appl Biosci. 1997 Oct;13(5):555-6. (PMID: 9367129)
Bioinformatics. 2003 Aug 12;19(12):1572-4. (PMID: 12912839)
Nucleic Acids Res. 1997 Sep 1;25(17):3389-402. (PMID: 9254694)
Bioinformatics. 2004 Jan 22;20(2):289-90. (PMID: 14734327)
Nucleic Acids Res. 2005 Jan 20;33(2):511-8. (PMID: 15661851)
Bioinformatics. 2007 Mar 1;23(5):641-3. (PMID: 17237038)
Bioinformatics. 2007 Nov 1;23(21):2947-8. (PMID: 17846036)
PLoS Comput Biol. 2008 May 30;4(5):e1000069. (PMID: 18516236)
Bioinformatics. 2010 Dec 1;26(23):2990-2. (PMID: 20966004)
BMC Bioinformatics. 2010 Dec 21;11 Suppl 12:S11. (PMID: 21210978)
BMC Bioinformatics. 2004 Aug 19;5:113. (PMID: 15318951)
BMC Bioinformatics. 2006 Apr 04;7:188. (PMID: 16594991)
Nucleic Acids Res. 2000 Jan 1;28(1):27-30. (PMID: 10592173)
Bioinformatics. 2005 Feb 15;21(4):545-7. (PMID: 15374859)
*Further Information*
*Open-source software encourages computer programmers to reuse software components written by others. In evolutionary bioinformatics, open-source software comes in a broad range of programming languages, including C/C++, Perl, Python, Ruby, Java, and R. To avoid writing the same functionality multiple times for different languages, it is possible to share components by bridging computer languages and Bio* projects, such as BioPerl, Biopython, BioRuby, BioJava, and R/Bioconductor.In this chapter, we compare the three principal approaches for sharing software between different programming languages: by remote procedure call (RPC), by sharing a local "call stack," and by calling program to programs. RPC provides a language-independent protocol over a network interface; examples are SOAP and Rserve. The local call stack provides a between-language mapping, not over the network interface but directly in computer memory; examples are R bindings, RPy, and languages sharing the Java virtual machine stack. This functionality provides strategies for sharing of software between Bio* projects, which can be exploited more often.Here, we present cross-language examples for sequence translation and measure throughput of the different options. We compare calling into R through native R, RSOAP, Rserve, and RPy interfaces, with the performance of native BioPerl, Biopython, BioJava, and BioRuby implementations and with call stack bindings to BioJava and the European Molecular Biology Open Software Suite (EMBOSS).In general, call stack approaches outperform native Bio* implementations, and these, in turn, outperform "RPC"-based approaches. To test and compare strategies, we provide a downloadable Docker container with all examples, tools, and libraries included.*