JiscMail Logo
Email discussion lists for the UK Education and Research communities

Help for ECOLOGICAL-GENETICS Archives


ECOLOGICAL-GENETICS Archives

ECOLOGICAL-GENETICS Archives


ECOLOGICAL-GENETICS@JISCMAIL.AC.UK


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

ECOLOGICAL-GENETICS Home

ECOLOGICAL-GENETICS Home

ECOLOGICAL-GENETICS  October 2016

ECOLOGICAL-GENETICS October 2016

Options

Subscribe or Unsubscribe

Subscribe or Unsubscribe

Log In

Log In

Get Password

Get Password

Subject:

'Advanced Python for Biologists' -TRAINING COURSE

From:

Oliver Hooker <[log in to unmask]>

Reply-To:

Oliver Hooker <[log in to unmask]>

Date:

Thu, 27 Oct 2016 16:02:38 +0100

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (212 lines)

"Advanced Python for biologists"

http://prstatistics.com/course/advanced-python-for-biologists-apyb/

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
to share 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 [log in to unmask] or visit the
website www.prstatistics.com

Please feel free to distribute this information anywhere you think 
suitable

Upcoming courses - email for details [log in to unmask]
1.	ADVANCING IN STATISTICAL MODELLING USING R (Dec 2016)
2.	SPATIAL ANALYSIS OF ECOLOGIC AL DATA USING R (Nov 2016)
3.	STABLE ISOTOPE MIXING MODELS USING SIAR, SIBER & MIXSIAR (Feb 2017)
4.	GENETIC DATA ANALYSIS USING R (Oct 2017)
5.	APPLIED BAYESIAN MODELLING FOR ECOLOGISTS AND EPIDEMIOLOGISTS (TBC 2017)
6.	BIOINFORMATICS FOR GENETICISTS AND BIOLOGISTS (TBC 2017)
7.	INTRODUCTION TO R AND STATISTICS FOR BIOLOGISTS (TBC 2017)
8.	INTRODUCTION TO PYTHON FOR BIOLOGISTS (TBC 2017)
9.	TIMESERIES MODELS FOR ECOLOGISTS AND CLIMATOLOGISTS (TBC 2017)
10.	SPATIAL ANALYSIS OF MULTIVARIATE ECOLOGICAL DATA USING R (TBC 2017)
11.	DNA TAXONOMY USING R (TBC 2017)
12.	INTRODUCTION TO BIOINFORMATICS USING LINUX (TBC 2017)
13.	INTRODUCTION TO BAYESIAN HIERARCHICAL MODELLING (TBC 2017)
14.	LANDSCAPE GENETIC DATA ANALYSIS USING R (TBC 2017)
15.	PHYLOGENETIC DATA ANALYSIS USING R (Oct/Nov 2016)
16.	MODEL BASED MULTIVARIATE ANALYSIS OF ECOLOGICAL DATA USING R (Jan 2017)
17.	ADVANCED PYTHON FOR BIOLOGISTS (Feb 2017)
18.	GEOMETRIC MORPHOMETRIC ANALYSIS USIG R (Jun 2017)
19.	NETWORK ANALYSIS FOR ECOLOGISTS USING R (Mar 2017)
20.	INTRODUCTION TO GEOMETRIC MORPHOMETRICS USING R (Jun 2017)
	

Oliver Hooker
PR statistics

3/1
128 Brunswick Street
Glasgow
G1 1TF

+44 (0) 7966500340

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

Oliver Hooker <[log in to unmask]>

Top of Message | Previous Page | Permalink

JiscMail Tools


RSS Feeds and Sharing


Advanced Options


Archives

February 2024
October 2023
August 2023
July 2023
May 2023
March 2023
August 2022
March 2022
August 2021
March 2021
October 2020
August 2020
July 2020
April 2020
January 2020
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
April 2019
March 2019
February 2019
December 2018
October 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
December 2017
November 2017
October 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
November 2015
October 2015
September 2015
August 2015
July 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
December 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
December 2012
November 2012
October 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
December 2011
November 2011
September 2011
August 2011
June 2011
May 2011
March 2011
January 2011
October 2010
September 2010
July 2010
June 2010
April 2010
March 2010
February 2010
January 2010
November 2009
October 2009
September 2009
July 2009
May 2009
April 2009
March 2009
February 2009
September 2008
August 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
December 2007
August 2007
July 2007
May 2007
March 2007
February 2007
January 2007
2006
2005
2004
2003
2002
2001
2000
1999
1998


JiscMail is a Jisc service.

View our service policies at https://www.jiscmail.ac.uk/policyandsecurity/ and Jisc's privacy policy at https://www.jisc.ac.uk/website/privacy-notice

For help and support help@jisc.ac.uk

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager