Top Banner
Biopython Project Update 2013 Peter Cock & the Biopython Developers, BOSC 2013, Berlin, Germany Twitter: @pjacock & @biopython
28

Biopython Project Update 2013

May 11, 2015

Download

Technology

pjacock

Annual Biopython Project Update presented at the Bioinformatics Open Source Conference (BOSC), July 2013, Berlin.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Biopython Project Update 2013

Biopython Project Update 2013

Peter Cock & the Biopython Developers,BOSC 2013, Berlin, Germany

Twitter: @pjacock & @biopython

Page 2: Biopython Project Update 2013

Introduction

2

Page 3: Biopython Project Update 2013

My EmployerAfter PhD joined Scottish Crop Research Institute

In 2011, SCRI (Dundee) & MLURI (Aberdeen) merged as The James Hutton Institute

Government funded research institute

I work mainly on the genomics of Plant Pathogens

I use Biopython in my day to day work

More about this in tomorrow’s panel discussion, “Strategies for Funding and Maintaining Open Source Software”

3

Page 4: Biopython Project Update 2013

BiopythonOpen source bioinformatics library for Python

Sister project to:

BioPerl BioRuby BioJava EMBOSS etc (see OBF Project BOF meeting tonight)

Long running!

4

Page 5: Biopython Project Update 2013

Brief History of Biopython1999 - Started by Andrew Dalke & Jeff Chang

2000 - First release, announcement publication

Chapman & Chang (2000). ACM SIGBIO Newsletter 20, 15-192001 - Biopython 1.00

2009 - Application note publication

Cock et al. (2009) DOI:10.1093/bioinformatics/btp1632011 - Biopython 1.57 and 1.58

2012 - Biopython 1.59 and 1.60

2013 - Biopython 1.61 and 1.62 beta

5

Page 6: Biopython Project Update 2013

Recap from last BOSC 2012 Eric Talevich presented in Boston

Biopython 1.58, 1.59 and 1.60

Visualization enhancements for chromosome and genome diagrams, and phylogenetic trees

More file format parsers

BGZF compression

Google Summer of Code students ...

Bio.Phylo paper submitted and in review ...

Biopython working nicely under PyPy 1.9 ...

6

Page 7: Biopython Project Update 2013

Publications

7

Page 8: Biopython Project Update 2013

Bio.Phylo paper publishedTalevich et al (2012) DOI:10.1186/1471-2105-13-209

8

Talevich et al. BMC Bioinformatics 2012, 13:209http://www.biomedcentral.com/1471-2105/13/209

SOFTWARE Open Access

Bio.Phylo: A unified toolkit for processing,analyzing and visualizing phylogenetictrees in BiopythonEric Talevich1*, Brandon M Invergo2, Peter JA Cock3 and Brad A Chapman4

AbstractBackground: Ongoing innovation in phylogenetics and evolutionary biology has been accompanied by aproliferation of software tools, data formats, analytical techniques and web servers. This brings with it the challenge ofintegrating phylogenetic and other related biological data found in a wide variety of formats, and underlines the needfor reusable software that can read, manipulate and transform this information into the various forms required tobuild computational pipelines.

Results: We built a Python software library for working with phylogenetic data that is tightly integrated withBiopython, a broad-ranging toolkit for computational biology. Our library, Bio.Phylo, is highly interoperable withexisting libraries, tools and standards, and is capable of parsing common file formats for phylogenetic trees,performing basic transformations and manipulations, attaching rich annotations, and visualizing trees. We unified themodules for working with the standard file formats Newick, NEXUS and phyloXML behind a consistent and simple API,providing a common set of functionality independent of the data source.

Conclusions: Bio.Phylo meets a growing need in bioinformatics for working with heterogeneous types ofphylogenetic data. By supporting interoperability with multiple file formats and leveraging existing Biopythonfeatures, this library simplifies the construction of phylogenetic workflows. We also provide examples of the benefitsof building a community around a shared open-source project. Bio.Phylo is included with Biopython, availablethrough the Biopython website, http://biopython.org.

BackgroundComparative methods in biology have been an activearea of scientific software development since the wideravailability of computing resources made such large-scalequantitative analyses feasible [1]. In recent years, the num-ber and range of tools for working with phylogeneticinformation alone has expanded dramatically, creatingnew opportunities as well as challenges in data integration[2]. At the same time, we have seen new e!orts to cre-ate standards for data exchange and storage [3-6]. There isthus a growing need for modular software toolkits that canintegrate cleanly into workflows for bioinformatics anal-yses that include phylogenetic data, as well as facilitate

*Correspondence: [email protected] of Bioinformatics, University of Georgia, 120 Green Street, Athens,GA 30602, USAFull list of author information is available at the end of the article

tool development by providing a high-level applicationprogramming interface (API) independent of data storageformats.

Freely available, open-source software libraries now playa major role in integrating software components for bioin-formatics analyses. Generalized toolkits for working withphylogenetic information are already available and in wideuse, including the Ape package for the R statistical pro-gramming language [7], BioPerl [8] and Bio::Phylo [2] forPerl, and Mesquite [9] for Java. The Open BioinformaticsFoundation in particular supports an ecosystem of broadlyaimed bioinformatics libraries, collectively referred to asthe Bio* or “Bio-star” projects. These include BioPerl [8],Biopython [10], BioJava [11], BioRuby [12], BioLib [13]and BioSQL [14]. All of these libraries provide commonfunctionality to each of their target programming lan-guages or environments: read and write a variety of fileformats used in bioinformatics, communicate with public

© 2012 Talevich et al.; licensee BioMed Central Ltd. This is an Open Access article distributed under the terms of the CreativeCommons Attribution License (http://creativecommons.org/licenses/by/2.0), which permits unrestricted use, distribution, andreproduction in any medium, provided the original work is properly cited.

Page 9: Biopython Project Update 2013

Google Summer of Code (GSoC)

9

Page 10: Biopython Project Update 2013

Google Summer of Code 2012Two students under OBF

Lenna Peterson

Genomic Variant Toolkit for Biopython Mentors: Brad Chapman & James Casbon http://arklenna.tumblr.com/tagged/gsoc2012

Wibowo Arindrarto

Bio.SearchIO - pairwise sequence search files input/output, e.g. BLAST, HMMER

Mentor: Peter Cock http://bow.web.id/blog/tag/gsoc/

Both completed their projects & still contributing

10

Page 11: Biopython Project Update 2013

Google Summer of Code 2013Two students under NESCent

Zheng Ruan

Codon alignment and analysis Mentors: Eric Talevich & Peter Cock http://zr1991.blogspot.de/

Yanbo Ye

Bio.Phylo: filling in the gaps Mentor: Eric Talevich http://blog.yeyanbo.com/tag/gsoc.html

11

Page 12: Biopython Project Update 2013

Releases since BOSC 2012

12

Page 13: Biopython Project Update 2013

Biopython 1.61Major refresh of sequence motif handling code

Bio.SearchIO GSoC work as an experimental module

Contributors:

Brandon Invergo Bryan Lunt (*) Christian Brueffer (*) David Cain Eric Talevich Grace Yeo (*) Jeffrey Chang Jingping Li (*) Kai Blin (*) 13

Leighton Pritchard Lenna Peterson Lucas Sinclair (*) Michiel de Hoon Nick Semenkovich (*) Peter Cock Robert Ernst (*) Tiago Antao Wibowo 'Bow' Arindrarto

Page 14: Biopython Project Update 2013

Biopython 1.62 Beta released

Final release after BOSC/ISMB/ECCB

Warning on translating partial codons

Explicit is better than implicit!

Parsers for GAF, GPA and GPI from UniProt-GOA

Reworked feature location object model

Cleaner handling of multi-region locations Linked to GTF/GFF3 parsing and other plans

Official Python 3 support ...

14Please test this beta!

Page 15: Biopython Project Update 2013

Biopython 1.62Contributors (as of the beta release):

15

Alexander Campbell (*)Andrea Rizzi (*)Anthony Mathelier (*)Ben Morris (*)Brad ChapmanChristian BruefferDavid Arenillas (*)David Martin (*)Eric TalevichIddo FriedbergJian-Long Huang (*)

Joao RodriguesKai BlinMichiel de HoonNate Sutton (*)Peter CockPetra Kubincová (*)Phillip GarlandSaket Choudhary (*)Tiago AntaoWibowo 'Bow' ArindrartoXabier Bello (*)

Page 16: Biopython Project Update 2013

Python 3

16

Page 17: Biopython Project Update 2013

Python 2 and 3 Python 2.7 is the final release of Python 2

Python 3 is similar but different to Python 2

Most Python 2 code needs updating to run

Big difference is Python 3 uses unicode for strings

We need to be explicit about bytes vs unicode in many of our parsers

Text file IO defaults to unicode, which is slowerMost Python libraries are gradually being updated

17

Page 18: Biopython Project Update 2013

Python 3 strategyWe’ve been testing under Python 3 for over a year

Biopython 1.62 will officially support Python 3.3

Current strategy:

Develop under Python 2 Installation under Python 3 uses 2to3 converter Test under Python 3

18

Page 19: Biopython Project Update 2013

Cross Platform TestingNightly tests with BuildBot

Tests run on volunteer machines Covers multiple OS and Python combinations

More volunteer machines welcome,especially 64 bit Windows

Server runs on OBF funded Amazon server

Continuous integration with TravisCI

Covers a range of languages using VMs Free service for Open Source projects Runs tests when code on GitHub updated Runs tests for GitHub pull requests (Nice!)

19

Page 20: Biopython Project Update 2013

Cross Platform Testing

20

Python/OS Linux32 bit

Linux64 bit

Mac OS X64 bit

Windows32 bit

C Python 2.5

C Python 2.6

C Python 2.7

C Python 3.1

C Python 3.2

C Python 3.3

PyPy 1.9

PyPy 2.0

Jython 2.5

Jython 2.7b

BB + Travis BB BB BB

BB + Travis BB BB BB

BB + Travis BB BB

BB BB BB BB

BB BB BB BB

BB + Travis BB BB

Travis BB BB

BB

BB BB

BB BB

This test matrix is quite big!

Page 21: Biopython Project Update 2013

Cross Platform Testing

21

Python/OS Linux32 bit

Linux64 bit

Mac OS X64 bit

Windows32 bit

C Python 2.5

C Python 2.6

C Python 2.7

C Python 3.1

C Python 3.2

C Python 3.3

PyPy 1.9

PyPy 2.0

Jython 2.5

Jython 2.7b

BB + Travis BB BB BB

BB + Travis BB BB BB

BB + Travis BB BB

BB BB BB BB

BB BB BB BB

BB + Travis BB BB

Travis BB BB

BB

BB BB

BB BB

Dropping Python 2.5

support

Also means

Jython 2.5

Page 22: Biopython Project Update 2013

Cross Platform Testing

22

Python/OS Linux32 bit

Linux64 bit

Mac OS X64 bit

Windows32 bit

C Python 2.5

C Python 2.6

C Python 2.7

C Python 3.1

C Python 3.2

C Python 3.3

PyPy 1.9

PyPy 2.0

Jython 2.5

Jython 2.7b

BB + Travis BB BB BB

BB + Travis BB BB BB

BB + Travis BB BB

BB BB BB BB

BB BB BB BB

BB + Travis BB BB

Travis BB BB

BB

BB BB

BB BB

Have been useful inPython 3 testing,

but won’t support

Page 23: Biopython Project Update 2013

Cross Platform Testing Plan

Target Python 2.6, 2.7 and 3.3 (or later)

Volunteer machines needed, especially 64 bit Windows23

Python/OS Linux32 bit

Linux64 bit

Mac OS X64 bit

Windows32 bit

Windows64 bit

C Python 2.6

C Python 2.7

C Python 3.3

PyPy 1.9

PyPy 2.0

PyPy 2.1b

Jython 2.7b

BB + Travis BB BB BB

BB + Travis BB BB BB

BB + Travis BB BB

Travis BB BB

BB

BB BB

Python 2.7

variants

Page 24: Biopython Project Update 2013

Python 3 strategyCurrent strategy:

Develop under Python 2 Installation under Python 3 uses 2to3 converter Test under Python 3

Future strategy:

Target Python 2.6, 2.7 and 3.3 (or later) Start writing code which works on both at same time Continue to use 2to3 on a case-by-case basis

during transition period, or for problem cases

24

Page 25: Biopython Project Update 2013

Closing Remarks

25

Page 26: Biopython Project Update 2013

Stability versus FlexibilityWe aim for rigorous cross-platform testing

We value backwards compatibility in core code

Flexibility through modularity?

BioRuby’s Gems http://gems.bioruby.org BioPerl sub-packages on CPAN Can/should we move towards this with PyPI? Would this encourage more contributors?

We’re trying ‘beta level’ experimental modules within the monolithic Biopython distribution, e.g. SearchIO

26

Page 27: Biopython Project Update 2013

Biopython Support: ResourcesOBF hosted website, mailing lists, bug tracker, etc

GitHub hosted repository

TravisCI hosted continuous integration testing

Personal and institute BuildSlave machines for testing

27Thank you all!

Page 28: Biopython Project Update 2013

Biopython Support: PeopleGoogle supports summer students via GSoC

Some of the developers do contribute on work time

However, Biopython is mainly volunteer funded

Please help out, e.g.

Feedback Bug reports Documentation improvements Review code More unit tests Enhancements or new code ...

28Thank you all!