5. “Immunity and infection”
● Research
● Teaching
● Public health and reference labs
● Diagnostic services
● Clinical care in ID and immunity
6. Microbiological Diagnostic Unit
● Oldest public health lab in Australia
○ established 1897 in Melbourne
○ historical ~500,000 isolate collection back to 1950s
● National reference laboratory
○ Salmonella, Listeria, EHEC
● W.H.O regional reference lab
○ vaccine preventable invasive bacterial pathogens
11. How to get a bioinformatics headache
1. See tweet about new published tool
2. Read abstract - sounds awesome!
3. Fail to find link to source code - eventually Google it
4. Attempt to compile and install it
5. Google for 30 min for fixes
6. Finally get it built
7. Run it on tiny data set
8. Get a vague error
9. Delete and never revisit it again
18. Should you write a new tool?
● NO
○ It already exists
○ You are unable to maintain it
○ You won’t really use it
● YES
○ YOU need the tool
○ YOU will use the tool
○ YOU want others to use the tool
○ Desire to give back to the community
20. Lessons from the Prokka experience
● Nearly all feedback is positive
● People all over the world are grateful
● Warm fuzzy feeling inside
● Increase your public profile
● But maintenance burden and guilt
23. Choosing a name
● Try to be unique
○ Google to check for conflicts
○ Consider how internationals will pronounce it
○ Be creative!
● Avoid dodgy acronyms
○ Try not to win a JABBA Award
○ “Just Another Bogus Bioinformatics Acronym”
25. First impressions count
● “Keep It Simple Stupid”
● First page of documentation
○ What does it do?
○ How do I install it?
○ How do I run it?
● Try to keep in one place
○ Otherwise becomes inconsistent or missed
29. Always have a --help flag
% biotool -h
% biotool --help
Usage: biotool [options] seq.fa
--help Show this help
--version Print version and exit
--top N Keep top N sequences
30. Always have a --version flag
% biotool -v
% biotool -V
% biotool --version
biotool 1.3
31. Always raise an error when things go wrong
% biotool seq.fa
ERROR: can not open file ‘seq.fa’
32. Check that dependencies are installed
% biotool seq.fa
Checking BLAST... ok
Checking SAMtools... NOT FOUND!
Please install ‘samtools’ and add
it to your PATH.
33. Always let users control output filenames
% biotool seq.fa
Processing ‘seq.fa’
Wrote result to ‘filt.seq.fa.out’
# ARGH!
% biotool --out seq.filt.fa
34. KISS - run with minimum parameters
% biotool seq.fa
ERROR: missing -x parameter
% biotool -x 3 seq.fa
ERROR: missing -y parameter
% biotool -x 3 -y 7 seq.fa
ERROR: need -n name
# ARGH!
36. Use the standard getopt interface
Short options ( -h ) and long options ( --help )
● C #include <getopt.h>
● C++ boost:program_options
● Python import argparse
● Perl use Getopt::Long
● R library(argparse)
● BASH getopt
Command line interface
37. Unix exit codes
● A positive integer
● Loose standards
○ 0 = success
○ 1 = general failure
○ 2 = error with command line
○ 3..127 = user defined specific failures
● Result in shell $? Variable
38. Accessing exit codes in the shell
% ls /tmp/fake
ls: cannot access /tmp/fake
% echo $?
1
% ls /proc/cpuinfo
/proc/cpuinfo
% echo $?
0
43. Keeping your audience
“Each equation in a book
will halve your audience”
“Each difficulty encountered during installation
will halve your number of users”
— @d_r_powell
44. Traditional systems level packaging
● Debian / DEB
apt-get install blast
dpkg -i blast-2.2.5-amd64.deb
● Redhat / RPM
yum install blast
rpm -i blast-2.2.5-x86_64.rpm
● Various others
48. Publish it
● Preprint archive
○ PeerJ, bioRxiv
● Method focussed journal
○ Bioinformatics, BMC Bioinformatics
● Software focussed journal
○ Journal of Open Source Software
49. Plug it
● Twitter
○ Ask someone popular you know to retweet it
● Blog
○ Start a general blog and post about your tool
● Conferences
○ Tell people about it
50. Support your users
● Reply to emails
● Monitor your “Issues” web site
● Monitor Biostars and SeqAnswers
● Have a mailing list
● Update your documentation
● Fix bugs
52. Take home messages
● Make it as painless as possible to install
● Keep documentation clear and simple
● Get people to use it before you publish
● People are not judging your coding skills
● But they will curse you if waste their time
● Most users are grateful - leads to free beer
● A good tool is worth much more than a paper
56. Acknowledgments
● Jennifer Gardy
● Duncan MacCannell
● Adam Phillippy
● The ASM NGS organising committee
● Anders Goncalves da Silva - The University of Melbourne
● David Powell - Monash University
● And everyone that has supported and encouraged me