Best practices for bioinformatics command-line software with Bionitio
Bernard Pope0, Peter Georgeson0, Anna Syme1, Jessica Chung0, Michael Milton2, Harriet Dashnow3, Andrew Lonsdale4, Clare Sloggett5, David Powell6
(0) The University of Melbourne
(1) Royal Botanic Gardens Melbourne
(2) Melbourne Genomics Health Alliance
(3) University of Utah
(4) Peter MacCallum Cancer Centre
(5) The University of Melbourne at The Peter Doherty Institute for Infection and Immunity
(6) Monash University
Find me on Tues Nov 24th, 1:40-3pm AEDT in Remo, table 29
Abstract
The results-driven focus of bioinformatics means that shortcuts are often taken during software development for the sake of making something “that works”. Furthermore, many bioinformaticians are not trained in software engineering, and research-oriented projects have limited budgets for quality assurance.
In response to this problem we have developed Bionitio, a tool that automates the process of starting new bioinformatics software projects following recommended best practices. With a single command, the user can create a new well-structured project in one of twelve programming languages. The resulting software is functional — carrying out a prototypical bioinformatics task — and thus serves as both a working example and a template for building new tools. Key features include command-line argument parsing, error handling, logging, defined exit status values, a test suite, a version number, standardised building and packaging, documentation, a standard open-source software license, revision control, and containerisation.
For example, the following command creates a new Python 3 project called skynet using the BSD 3 Clause license and creates a remote repository on GitHub for username cyberdyne:
bionitio-boot.sh -i python -n skynet -c BSD-3-Clause -g cyberdyne
Bionitio serves as a learning aid for beginner-to-intermediate bioinformatics programmers and provides an excellent starting point for new projects. This helps developers adopt good programming practices from the beginning of a project and encourages high-quality tools to be developed more rapidly. Bionitio has been used in several workshops, providing a common codebase for coordination of workshop materials and an extensible platform for the delivery of hands-on practical activities. Additionally, by providing complete working examples in many different languages, Bionitio acts as a kind of “Rosetta Stone” and is therefore an excellent vehicle for comparative programming skills transfer.
In this talk we will describe the design and implementation of Bionitio and demonstrate how it can be used to quickly start new open source bioinformatics projects.
Project website: https://github.com/bionitio-team/bionitio
Publication: Bionitio: demonstrating and facilitating best practices for bioinformatics command-line software, GigaScience, 2019, https://doi.org/10.1093/gigascience/giz109
Comments