TY - CHAP
T1 - Sharing programming resources between bio* projects
AU - Bonnal, Raoul J. P.
AU - Yates, Andrew
AU - Goto, Naohisa
AU - Gautier, Laurent
AU - Willis, Scooter
AU - Fields, Christopher
AU - Katayama, Toshiaki
AU - Prins, Pjotr
PY - 2019
Y1 - 2019
N2 - 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.
AB - 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.
KW - Bioinformatics
KW - EMBOSS
KW - Java
KW - PAML
KW - Perl
KW - Python
KW - R
KW - RPC
KW - Ruby
KW - Web services
U2 - 10.1007/978-1-4939-9074-0_25
DO - 10.1007/978-1-4939-9074-0_25
M3 - Book chapter
C2 - 31278684
AN - SCOPUS:85068833317
SN - 978-1-4939-9073-3
T3 - Methods in Molecular Biology
SP - 747
EP - 766
BT - Evolutionary Genomics: Statistical and Computational Methods
A2 - , Maria Anisimova
PB - Springer
ER -