Final call for “Advanced Python for biologists” workshop

http://www.prstatistics.com/course/advanced-python-biologists-apyb01/

This course is being delivered by Dr Martin Jones, an expert in Python and 
author of two text books,

Python for Biologists [http://www.amazon.com/Python-Biologists-complete-
programming-beginners/dp/1492346136/

Advanced Python for Biologists http://www.amazon.com/Advanced-Python-
Biologists-Martin-Jones/dp/1495244377/].

This course will run from 6th – 10th February 2017 at Flatford Mill field 
centre, Suffolk, England

This workshop is aimed at researchers and technical workers with a 
background in biology and a basic knowledge of Python.

The workshop is delivered over ten half-day sessions. Each session consists 
of roughly a one hour lecture followed by two hours of practical exercises, 
with breaks at the organizer’s discretion. Each session uses examples and 
exercises that build on material from the previous one, so it’s important 
that students attend all sessions. A description of the sessions can be 
found under programme.

Students should have enough biological/bioinformatics background to 
appreciate the examples and exercise problems (i.e. they should know what a 
protein accession number, BLAST report, and FASTA sequence is).

Curriculum:

Day 1:
Session 1 – Data structures in Python
In this session we will briefly recap Python’s basic data structures, 
before looking at a couple of new data types — tuples and sets — and 
discussing where each should be used. We will then see how we can combine 
these basic types to make more complex data structures for solving specific 
problems. We’ll finish our discussion by looking at specialized data types 
that are found in the Python core library. This session will also be our 
first introduction to benchmarking as we talk about the relative 
performance of different data types. In the practical session we’ll learn 
how to parse an input file into a complex data structure which we can then 
use to rapidly query the data. Core concepts introduced: tuples, sets 
higher-order data structures, default dicts, Counters, big-O notation.

Session 2 – Recursion and trees
In this session we will cover two very closely related concepts: trees(i.e. 
the various ways that we can store hierarchical data) and recursive 
functions (the best way to operate on treelike data). As recursion is 
inherently confusing, we’ll start with a gentle introduction using 
biological examples before moving on to consider a number of core tree 
algorithms concerning parents, children, and common ancestors. In the 
practical session we’ll look in detail at one particular way of identifying 
the last common ancestor of a group of nodes, which will give us an 
opportunity to explore the role of recursion. Core concepts introduced: 
nested lists, storing hierarchical data, recursive functions, relationship 
between recursion and iteration.

Day 2:
Session 3 – Classes and objects
In this session we will introduce the core concepts of object-oriented 
programming, and see how the data types that we use all the time in Python 
are actually examples of classes. We’ll take a very simple example and use 
it to examine how we can construct our own classes, moving from an 
imperative style of programming to an object-oriented style. As we do so, 
we’ll discuss where and when object-orientation is a good idea. In the 
practical we will practise writing classes to solve simple biological 
problems and familiarize ourselves with the division of code into library 
and client that object-oriented programming demands. Core concepts 
introduced: classes, instances, methods vs. functions, self, constructors, 
magic methods.

Session 4 – Object-oriented programming
Following on from the previous session, we will go over some advanced ideas 
that are common to most object-oriented programming languages. For each 
idea we’ll discuss the basic concept, the scenarios in which it’s useful, 
and the details of how it works in Python. This overview will also allow us 
to consider the challenges involved in designing object-oriented code. In 
the practical we will work on a simulation which will involve multiple 
classes working together. Core concepts introduced: inheritance and class 
hierarchies, method overriding, superclasses and subclasses, polymorphism, 
composition, multiple inheritance.

Day 3:
Session 5 – Functional programming in Python
This session will start with a look at a few different concepts that are 
important in functional programming, culminating in a discussion of the 
idea of state and its role in program design. We will see how functional 
programming is, in many ways, the complement of object-oriented programming 
and how that realization informs our decision about when to use each 
approach. We’ll take a quick tour of Python’s built-in tools that take 
advantage of functional programming and see how we can build our own. We’ll 
finish with a brief look at how functional programming can vastly simplify 
the writing of parallel code. In the practical, we’ll practise using 
Python’s built-in functional tools, then implement one of our own. Core 
concepts introduced: state and mutability, side effects, first-class 
functions, declarative programming, lazy evaluation, parallelism, higher-
order functions.

Session 6 – Iterators, comprehensions and generators
We’ll start this session with a discussion of Python’s iteration mechanism, 
focussing particularly on the behaviour of the functional methods from the 
previous session. Next, we’ll introduce the idea of comprehensions as a way 
to concisely define lists and generators as a way to produce those lists 
efficiently. We’ll see how to extend the same idea to sets and dicts, 
leaving us with comprehensions as a powerful tool in our programming 
toolbox. We’ll finish with a look at how we can use iterators inside our 
own classes, tying together the ideas of object-oriented and functional 
programming. In the practical, we’ll re-examine some of the problems from 
previously in the course using the new tools. Core concepts introduced: 
iteration, interfaces, comprehensions, generators, eager vs. lazy 
sequences. #

Day 4:
Session 7 – Exception handling
This session will start with a reminder of the difference between syntax 
errors and exceptions, after which we will explore the syntax involved in 
catching and handling exceptions. We’ll then examine the way that 
exceptions can be handled in multiple places and the consequences for 
program design. We’ll finish this session by learning how we can take 
advantage of Python’s built-in exception types to signal problems in our 
own code, and how we can create custom exception types to deal with 
specific issues. In the practical we’ll modify existing code to make use of 
exceptions. Core concepts introduced: exception classes, 
try/except/else/finally blocks, context managers, exception bubbling, 
defining and raising exceptions.

Session 8 – Packaging and distribution
We’ll start this session by looking at our options for reusing code in 
Python and seeing how the methods differ depending on whether we want 
toshare code between files in a program, between many programs on the same 
system, or between many programmers on different systems. This leads into a 
discussion about packaging and distribution, in which we’ll discuss the 
roles of Python’s package management tools and package repositories. In the 
practical session we’ll turn existing code into modules and packages. Core 
concepts introduced: modules, namespaces, dependencies, executing modules, 
packages, metadata.

Day 5:
Session 9 – Performance and benchmarking
In this session we’ll learn about the various tools Python has for 
benchmarking code (i.e. measuring its memory and runtime performance) and 
for profiling code (identifying areas where improvements can be made). 
We’ll see that different tools are useful in different scenarios, and 
collect a set of recommendations for improving program performance. We’ll 
use these tools to illustrate and measure points about performance that 
have been made through the course. In the practical, we’ll take real-life 
code examples, measure their performance, and try to improve it. Core 
concepts introduced: function profiling, line profiling, profiler overhead, 
timing.

Session 10 – Unit testing
In this session we will begin with a gentle introduction to testing which 
will illustrate why it’s useful and what type of problems it can solve. 
We’ll run through a series of examples using Python’s built-in testing 
tools which will cover a number of different testing scenarios. We’ll then 
implement the same set of tests using the Nose testing framework and 
examine how using a framework makes the tests easier to write and 
interpret. After looking at a number of specialized tests for different 
types of code, we’ll discuss the impact of program design on testing. In 
the practical we’ll practise building and running test suites for existing 
code.

Please send inquiries to [email protected] or visit the 
website www.prstatistics.com

Please feel free to distribute this information anywhere you think suitable

Upcoming courses - email for details [email protected]

1.      MODEL BASED MULTIVARIATE ANALYSIS OF ECOLOGICAL DATA USING R 
(January 2017) #MBMV
http://www.prstatistics.com/course/model-base-multivariate-analysis-of-
abundance-data-using-r-mbmv01/

2.      ADVANCED PYTHON FOR BIOLOGISTS (February 2017) #APYB
http://www.prstatistics.com/course/advanced-python-biologists-apyb01/

3.      STABLE ISOTOPE MIXING MODELS USING SIAR, SIBER AND MIXSIAR USING R 
(February 2017) #SIMM
http://www.prstatistics.com/course/stable-isotope-mixing-models-using-r-
simm03/

4.      NETWORK ANAYLSIS FOR ECOLOGISTS USING R (March 2017) #NTWA
http://www.prstatistics.com/course/network-analysis-ecologists-ntwa01/

5.      ADVANCES IN MULTIVARIATE ANALYSIS OF SPATIAL ECOLOGICAL DATA (April 
2017) #MVSP
http://www.prstatistics.com/course/advances-in-spatial-analysis-of-
multivariate-ecological-data-theory-and-practice-mvsp02/

6.      INTRODUCTION TO STATISTICS AND R FOR BIOLOGISTS (April 2017) #IRFB
http://www.prstatistics.com/course/introduction-to-statistics-and-r-for-
biologists-irfb02/

7.      ADVANCING IN STATISTICAL MODELLING USING R (April 2017) #ADVR
http://www.prstatistics.com/course/advancing-statistical-modelling-using-r-
advr05/

8.      ECOLOGICAL AND EVOLUTIONARY BIOGEOGRAPHY USING R (May 2017) #EEBR

9.      GEOMETRIC MORPHOMETRICS USING R (June 2017) #GMMR
http://www.prstatistics.com/course/geometric-morphometrics-using-r-gmmr01/

10.     MULTIVARIATE ANALYSIS OF SPATIAL ECOLOGICAL DATA (June 2017) #MASE
http://www.prstatistics.com/course/multivariate-analysis-of-spatial-
ecological-data-using-r-mase01/

11.     TIME SERIES MODELS FOR ECOLOGISTS USING R (JUNE 2017 (#TSME)

12.     BIOINFORMATICS FOR GENETICISTS AND BIOLOGISTS (July 2017) #BIGB
http://www.prstatistics.com/course/bioinformatics-for-geneticists-and-
biologists-bigb02/

13.     SPATIAL ANALYSIS OF ECOLOGICAL DATA USING R (August 2017) #SPAE
http://www.prstatistics.com/course/spatial-analysis-ecological-data-using-r-
spae05/

14.     STRUCTURAL EQUATION MODELLING FOR ECOLOGISTS AND EVOLUTIONARY 
BIOLOGISTS (July 2017 TBC) #SEMR

15.     ECOLOGICAL NICHE MODELLING (October 2017) #ENMR
http://www.prstatistics.com/course/ecological-niche-modelling-using-r-
enmr01/

16.     INTRODUCTION TO BIOINFORMATICS USING LINUX (October 2017) #IBUL

17.     GENETIC DATA ANALYSIS USING R (October 2017 TBC) #GDAR

18.     LANDSCAPE (POPULATION) GENETIC DATA ANALYSIS USING R (November 2017 
TBC) #LNDG

19.     APPLIED BAYESIAN MODELLING FOR ECOLOGISTS AND EPIDEMIOLOGISTS 
(November 2017) #ABME
http://www.prstatistics.com/course/applied-bayesian-modelling-ecologists-
epidemiologists-abme03/

20.     INTRODUCTION TO METHODS FOR REMOTE SENSING (November 2017) #IRMS

21.     INTRODUCTION TO PYTHON FOR BIOLOGISTS (November 2017) #IPYB

22.     DATA VISUALISATION AND MANIPULATION USING PYTHON (December 2017) 
#DVMP
http://www.prstatistics.com/course/data-visualisation-and-manipulation-
using-python-dvmp01/

23.     ADVANCING IN STATISTICAL MODELLING USING R (December 2017) #ADVR

24.     INTRODUCTION TO BAYESIAN HIERARCHICAL MODELLING (January 2018) #IBHM
http://www.prstatistics.com/course/introduction-to-bayesian-hierarchical-
modelling-using-r-ibhm02/

25.     PHYLOGENETIC DATA ANALYSIS USING R (TBC) #PHYL


Oliver Hooker PhD.
PR statistics

3/1
128 Brunswick Street
Glasgow
G1 1TF

+44 (0) 7966500340

www.prstatistics.com
www.prstatistics.com/organiser/oliver-hooker/

Reply via email to