Cargando…

Sharing Programming Resources Between Bio* Projects

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 multipl...

Descripción completa

Detalles Bibliográficos
Autores principales: Bonnal, Raoul J. P., Yates, Andrew, Goto, Naohisa, Gautier, Laurent, Willis, Scooter, Fields, Christopher, Katayama, Toshiaki, Prins, Pjotr
Formato: Online Artículo Texto
Lenguaje:English
Publicado: 2019
Materias:
Acceso en línea:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7212028/
https://www.ncbi.nlm.nih.gov/pubmed/31278684
http://dx.doi.org/10.1007/978-1-4939-9074-0_25
_version_ 1783531551020023808
author Bonnal, Raoul J. P.
Yates, Andrew
Goto, Naohisa
Gautier, Laurent
Willis, Scooter
Fields, Christopher
Katayama, Toshiaki
Prins, Pjotr
author_facet Bonnal, Raoul J. P.
Yates, Andrew
Goto, Naohisa
Gautier, Laurent
Willis, Scooter
Fields, Christopher
Katayama, Toshiaki
Prins, Pjotr
author_sort Bonnal, Raoul J. P.
collection PubMed
description 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.
format Online
Article
Text
id pubmed-7212028
institution National Center for Biotechnology Information
language English
publishDate 2019
record_format MEDLINE/PubMed
spelling pubmed-72120282020-05-11 Sharing Programming Resources Between Bio* Projects Bonnal, Raoul J. P. Yates, Andrew Goto, Naohisa Gautier, Laurent Willis, Scooter Fields, Christopher Katayama, Toshiaki Prins, Pjotr Methods Mol Biol Article 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. 2019-01-01 /pmc/articles/PMC7212028/ /pubmed/31278684 http://dx.doi.org/10.1007/978-1-4939-9074-0_25 Text en http://creativecommons.org/licenses/by/4.0/ This chapter is licensed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence and indicate if changes were made. The images or other third party material in this chapter are included in the chapter’s Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the chapter’s Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder.
spellingShingle Article
Bonnal, Raoul J. P.
Yates, Andrew
Goto, Naohisa
Gautier, Laurent
Willis, Scooter
Fields, Christopher
Katayama, Toshiaki
Prins, Pjotr
Sharing Programming Resources Between Bio* Projects
title Sharing Programming Resources Between Bio* Projects
title_full Sharing Programming Resources Between Bio* Projects
title_fullStr Sharing Programming Resources Between Bio* Projects
title_full_unstemmed Sharing Programming Resources Between Bio* Projects
title_short Sharing Programming Resources Between Bio* Projects
title_sort sharing programming resources between bio* projects
topic Article
url https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7212028/
https://www.ncbi.nlm.nih.gov/pubmed/31278684
http://dx.doi.org/10.1007/978-1-4939-9074-0_25
work_keys_str_mv AT bonnalraouljp sharingprogrammingresourcesbetweenbioprojects
AT yatesandrew sharingprogrammingresourcesbetweenbioprojects
AT gotonaohisa sharingprogrammingresourcesbetweenbioprojects
AT gautierlaurent sharingprogrammingresourcesbetweenbioprojects
AT willisscooter sharingprogrammingresourcesbetweenbioprojects
AT fieldschristopher sharingprogrammingresourcesbetweenbioprojects
AT katayamatoshiaki sharingprogrammingresourcesbetweenbioprojects
AT prinspjotr sharingprogrammingresourcesbetweenbioprojects