...
 
Commits (31)
......@@ -3,4 +3,7 @@
url = https://github.com/hakimel/reveal.js.git
[submodule "programming-course-assignments"]
path = programming-course-assignments
url = git@git.lumc.nl:humgen/programming-course-assignments.git
url = git@git.lumc.nl:courses/programming-course-assignments.git
[submodule ".presentation"]
path = .presentation
url = https://git.lumc.nl/j.f.j.laros/presentation.git
Subproject commit f9fe363f5209cbfe93140a077310e3fb65d72b80
......@@ -26,10 +26,10 @@ Program and Materials
- Afternoons: assignments.
| Day | Time | Lesson | Teacher |
|-----------------|-------|------------------------------------ |----------|
| Tuesday, 27/11 | 9-10 | [Welcome][lesson_01], [Introduction to Python][lesson_02_01] | Mihai |
| | 10-11 | [Data types][lesson_02_02] | Mihai |
| | 11-12 | [Functions][lesson_02_03] | Mihai |
|------------------|-------|------------------------------------ |----------|
| Tuesday, 27/11 | 9-10 | [Introduction][lesson_01_01] | Mihai |
| | 10-11 | [Data types][lesson_01_02] | Mihai |
| | 11-12 | [Flow control][lesson_01_03] | Mihai |
| | 12-13 | Lunch break | |
| | 13-16 | Practical session | Mihai, Sander, and Guy|
| Wednesday, 28/11 | 9-10 | Assignments review | |
......@@ -41,14 +41,14 @@ Program and Materials
| | 10-11 | [Object-oriented programming][lesson_oop] | Jonathan |
| | 11-12 | [Jupyter Notebook][lesson_jpn] | Mark |
| | 12-13 | [Data mangling with pandas][lesson_pandas] | Mark |
| | 12-13 | Lunch break | |
| | 13-16 | Practical session | Mihai, and Mark|
| | 13-14 | Lunch break | |
| | 14-16 | Practical session | Mihai, and Mark|
| Friday, 30/11 | 9-10 | Assignments review | |
| | 10-11 | [Data visualisation with Matplotlib][lesson_dv_01] | Guy |
| | 11-12 | [Data visualisation with Bokeh][lesson_dv_02] | Guy |
| | 12-13 | [Biopython][lesson_bp] | Sander |
| | 12-13 | Lunch break | |
| | 13-16 | Practical session | Mihai, Sander, and Guy|
| | 13-14 | Lunch break | |
| | 14-16 | Practical session | Mihai, Sander, and Guy|
Some of the lessons are slideshows, whereas others are just
notebooks we scroll through during class. The links above are all one-page
......@@ -67,10 +67,9 @@ Assignments
- [Visualization 2](https://classroom.github.com/a/2GAOqqBu).
[lesson_01]: http://nbviewer.ipython.org/urls/git.lumc.nl/courses/programming-course/raw/master/introduction/01_welcome.ipynb
[lesson_02_01]: http://nbviewer.ipython.org/urls/git.lumc.nl/courses/programming-course/raw/master/introduction/02_introduction_to_python_1.ipynb
[lesson_02_02]: http://nbviewer.ipython.org/urls/git.lumc.nl/courses/programming-course/raw/master/introduction/02_introduction_to_python_2.ipynb
[lesson_02_03]: http://nbviewer.ipython.org/urls/git.lumc.nl/courses/programming-course/raw/master/introduction/02_introduction_to_python_3.ipynb
[lesson_01_01]: https://git.lumc.nl/courses/programming-course/raw/master/introduction/introduction/introduction.pdf?inline=false
[lesson_01_02]: https://git.lumc.nl/courses/programming-course/raw/master/introduction/data_types/data_types.pdf?inline=false
[lesson_01_03]: https://git.lumc.nl/courses/programming-course/blob/master/introduction/flow_control/flow_control.pdf?inline=false
[lesson_03_01]: http://nbviewer.ipython.org/urls/git.lumc.nl/courses/programming-course/raw/master/more_python/03_more_python_goodness_1.ipynb
[lesson_03_02]: http://nbviewer.ipython.org/urls/git.lumc.nl/courses/programming-course/raw/master/more_python/03_more_python_goodness_2.ipynb
[lesson_oop]: https://git.lumc.nl/courses/programming-course/raw/master/oop/oop.pdf
......
This diff is collapsed.
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="120.96939mm"
height="21.43125mm"
viewBox="0 0 120.96939 21.43125"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (unknown)"
sodipodi:docname="cwi.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="254.9867"
inkscape:cy="69.553588"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1136"
inkscape:window-x="1280"
inkscape:window-y="27"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(74.825928,-155.93929)">
<path
style="fill:#c41230;fill-opacity:1;stroke-width:1"
d="m -69.138942,168.57314 c -2.172435,-4.83856 -4.34073,-9.66059 -4.818434,-10.71562 l -0.868552,-1.91823 h 24.070403 24.070403 v 6.48229 c 0,3.56526 -0.03299,6.48229 -0.07331,6.48229 -0.04032,0 -8.639362,1.905 -19.108985,4.23334 -10.469624,2.32833 -19.100022,4.23333 -19.178663,4.23333 -0.07864,0 -1.92043,-3.95883 -4.092866,-8.7974 z m 10.628338,0.0775 c 1.179992,-0.53568 1.512539,-1.16414 1.352913,-2.55677 -0.135369,-1.18099 -0.888064,-1.11764 -1.523668,0.12825 -0.56971,1.11672 -1.259006,1.50329 -2.241039,1.25682 -1.045854,-0.26249 -1.697824,-2.56004 -1.361978,-4.79963 0.226645,-1.51137 0.910079,-2.24206 2.097066,-2.24206 0.995017,0 1.356437,0.3113 1.630867,1.40472 0.140798,0.56098 0.322193,0.72084 0.748875,0.65997 0.4628,-0.066 0.591007,-0.3159 0.719942,-1.40324 0.08628,-0.7276 0.175576,-1.17408 0.198437,-0.99218 0.02286,0.1819 0.220161,0.33073 0.438442,0.33073 0.218282,0 0.396875,0.0636 0.396875,0.14135 0,0.70827 1.139476,7.54112 1.336105,8.01194 0.192753,0.46154 0.429648,0.59207 0.960359,0.52917 0.605264,-0.0717 0.781962,-0.3138 1.254534,-1.71857 0.302524,-0.89928 0.61678,-1.70023 0.698347,-1.7799 0.08157,-0.0797 0.415855,0.68588 0.742862,1.70121 0.55366,1.71906 0.646885,1.84605 1.355222,1.84605 0.929492,0 0.899793,0.0967 1.476618,-4.80806 0.400695,-3.40711 0.519292,-3.89842 0.96947,-4.01614 0.322287,-0.0843 0.478769,-0.31319 0.421032,-0.6159 -0.07645,-0.40082 -0.398254,-0.49508 -1.915014,-0.56092 -1.002717,-0.0435 -1.942986,0.0407 -2.089489,0.18722 -0.365,0.365 0.257127,1.08255 0.938591,1.08255 0.49217,0 0.515894,0.11991 0.353345,1.78593 -0.09584,0.98227 -0.243353,2.13669 -0.327814,2.56538 -0.148615,0.75431 -0.172234,0.73299 -0.732779,-0.66146 -0.471212,-1.17222 -0.695253,-1.4409 -1.201526,-1.4409 -0.508337,0 -0.707538,0.24229 -1.087664,1.32292 -0.255944,0.72761 -0.482425,1.26339 -0.503291,1.19063 -0.02087,-0.0728 -0.184957,-1.16892 -0.364647,-2.43591 -0.318251,-2.24397 -0.312662,-2.30562 0.215869,-2.38125 0.33024,-0.0472 0.575667,-0.31061 0.627127,-0.67295 0.08129,-0.57237 0.0074,-0.59531 -1.91823,-0.59531 -1.304447,0 -2.002777,0.10355 -2.002777,0.29698 0,0.20753 -0.117461,0.1995 -0.389962,-0.0267 -0.115669,-0.096 -0.178498,0.15304 -0.648395,0.0891 -0.468426,-0.0637 -1.343045,-0.44056 -2.015383,-0.45224 -1.799665,-0.11137 -2.029815,-0.30504 -3.162578,0.9277 -1.864364,2.02892 -1.965779,5.82798 -0.211239,7.91314 1.184547,1.40775 2.80823,1.67637 4.764575,0.78826 z m 18.464024,-0.40819 c 0,-0.43339 -0.20351,-0.54389 -1.124479,-0.61052 l -1.12448,-0.0814 v -3.54069 -3.54069 l 0.992188,-0.0821 c 0.788426,-0.0652 0.992187,-0.19079 0.992187,-0.61128 0,-0.49223 -0.201567,-0.53444 -2.887794,-0.60471 -2.959725,-0.0774 -3.473149,0.0559 -3.177987,0.82505 0.117898,0.30724 0.48188,0.44112 1.199298,0.44112 h 1.030025 v 3.57187 3.57188 h -1.042717 c -1.126596,0 -1.43373,0.2378 -1.175674,0.91029 0.141052,0.36758 0.604412,0.41826 3.242003,0.3546 2.876283,-0.0694 3.07743,-0.10886 3.07743,-0.60344 z"
id="path826"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cscccsssscccccccsccccsssccccsscsccscsssccsccsscscccccccccccsccscccssccc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:mono;-inkscape-font-specification:mono;text-align:center;letter-spacing:0.26458332px;word-spacing:0px;text-anchor:middle;fill:#696969;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="10.772321"
y="159.41666"
id="text830"><tspan
sodipodi:role="line"
id="tspan828"
x="10.904614"
y="159.41666"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0.26458332px;fill:#696969;stroke-width:0.26458332px">Centrum Wiskunde &amp; Informatica</tspan></text>
</g>
</svg>
This diff is collapsed.
This diff is collapsed.
../../.presentation/Makefile
\ No newline at end of file
../../.presentation/beamerthemelumc.sty
\ No newline at end of file
This diff is collapsed.
../../.presentation/logos
\ No newline at end of file
../../.presentation/Makefile
\ No newline at end of file
../../.presentation/beamerthemelumc.sty
\ No newline at end of file
This diff is collapsed.
../../.presentation/logos
\ No newline at end of file
../../.presentation/Makefile
\ No newline at end of file
../../.presentation/beamerthemelumc.sty
\ No newline at end of file
This diff is collapsed.
../../.presentation/logos
\ No newline at end of file
../../.presentation/Makefile
\ No newline at end of file
../../.presentation/beamerthemelumc.sty
\ No newline at end of file
../../.presentation/logos
\ No newline at end of file
\documentclass[aspectratio=1610,slidestop]{beamer}
\author{Mihai Lefter}
\title{Python Programming}
\providecommand{\mySubTitle}{String methods, error and exceptions}
\providecommand{\myConference}{Programming Course}
\providecommand{\myDate}{27-11-2018}
\providecommand{\myGroup}{}
\providecommand{\myDepartment}{}
\providecommand{\myCenter}{}
\usetheme{lumc}
\usepackage{minted}
\usepackage{tikz}
\usepackage[many]{tcolorbox}
\definecolor{monokaibg}{HTML}{272822}
\definecolor{emailc}{HTML}{1e90FF}
\definecolor{scriptback}{HTML}{CDECF0}
\newenvironment{ipython}
{\begin{tcolorbox}[title=IPython,
title filled=false,
fonttitle=\scriptsize,
fontupper=\footnotesize,
enhanced,
colback=monokaibg,
drop small lifted shadow,
boxrule=0.1mm,
left=0.1cm,
arc=0mm,
colframe=black]}
{\end{tcolorbox}}
\newenvironment{terminal}
{\begin{tcolorbox}[title=terminal,
title filled=false,
fonttitle=\scriptsize,
fontupper=\footnotesize,
enhanced,
colback=monokaibg,
drop small lifted shadow,
boxrule=0.1mm,
left=0.1cm,
arc=0mm,
colframe=black]}
{\end{tcolorbox}}
\newcommand{\hrefcc}[2]{\textcolor{#1}{\href{#2}{#2}}}
\newcommand{\hrefc}[3]{\textcolor{#1}{\href{#2}{#3}}}
\newcounter{cntr}
\renewcommand{\thecntr}{\texttt{[\arabic{cntr}]}}
\newenvironment{pythonin}[1]
{\VerbatimEnvironment
\begin{minipage}[t]{0.11\linewidth}
\textcolor{green}{\texttt{{\refstepcounter{cntr}\label{#1}In \thecntr:}}}
\end{minipage}
\begin{minipage}[t]{0.89\linewidth}
\begin{minted}[
breaklines=true,style=monokai]{#1}}
{\end{minted}
\end{minipage}}
\newenvironment{pythonout}[1]
{\VerbatimEnvironment
\addtocounter{cntr}{-1}
\begin{minipage}[t]{0.11\linewidth}
\textcolor{red}{\texttt{{\refstepcounter{cntr}\label{#1}Out\thecntr:}}}
\end{minipage}
\begin{minipage}[t]{0.89\linewidth}
\begin{minted}[
breaklines=true,style=monokai]{#1}}
{\end{minted}
\end{minipage}}
\newenvironment{pythonerr}[1]
{\VerbatimEnvironment
\begin{minted}[
breaklines=true,style=monokai]{#1}}
{\end{minted}}
\newenvironment{pythonfile}[1]
{\begin{tcolorbox}[title=#1,
title filled=false,
coltitle=LUMCDonkerblauw,
fonttitle=\scriptsize,
fontupper=\footnotesize,
enhanced,
drop small lifted shadow,
boxrule=0.1mm,
leftrule=5mm,
rulecolor=white,
left=0.1cm,
colback=white!92!black,
colframe=scriptback]}
{\end{tcolorbox}}
\begin{document}
% This disables the \pause command, handy in the editing phase.
%\renewcommand{\pause}{}
% Make the title slide.
\makeTitleSlide{\includegraphics[height=3.5cm]{../../images/Python.pdf}}
% First page of the presentation.
\section{Introduction}
\makeTableOfContents
\subsection{Let's start with a simple GC calculator}
\begin{pframe}
\begin{pythonfile}{seq\_toolbox.py}
\begin{minted}[linenos]{python}
def calc_gc_percent(seq):
at_count, gc_count = 0, 0
for char in seq:
if char in ('A', 'T'):
at_count += 1
elif char in ('G', 'C'):
gc_count += 1
return gc_count * 100.0 / (gc_count + at_count)
print("The sequence 'CAGG' has a %GC of {:.2f}".format(
calc_gc_percent("CAGG")))
\end{minted}
\end{pythonfile}
\pause
Our script is nice and dandy, but we don't want to edit the source file everytime we calculate a sequence's GC.
\end{pframe}
\section{The standard library}
\begin{pframe}
\begin{itemize}
\item A collection of Python modules (or functions, for now) that comes packaged with a default Python installation.
\item They're not part of the language per se, more like a batteries included thing.
\end{itemize}
\end{pframe}
\subsection{Our first standard library module: sys}
\begin{pframe}
We'll start by using the simple sys module to make our script more flexible.
Standard library (and other modules, as we'll see later) can be used via the import statement, for example:
\end{pframe}
\subsection{Improving our script with sys.argv}
\begin{pframe}
\begin{pythonfile}{seq\_toolbox.py}
\begin{minted}[linenos]{python}
import sys
def calc_gc_percent(seq):
at_count, gc_count = 0, 0
for char in seq:
if char in ('A', 'T'):
at_count += 1
elif char in ('G', 'C'):
gc_count += 1
return gc_count * 100.0 / (gc_count + at_count)
input_seq = sys.argv[1]
print("The sequence '{}' has a %GC of {:.2f}".format(
input_seq, calc_gc_percent(input_seq)))
\end{minted}
\end{pythonfile}
\end{pframe}
\section{String methods}
\begin{pframe}
\end{pframe}
\subsection{Improving our script with upper()}
\begin{pframe}
\begin{pythonfile}{seq\_toolbox.py}
\begin{minted}[linenos]{python}
import sys
def calc_gc_percent(seq):
at_count, gc_count = 0, 0
for char in seq.upper():
if char in ('A', 'T'):
at_count += 1
elif char in ('G', 'C'):
gc_count += 1
return gc_count * 100.0 / (gc_count + at_count)
input_seq = sys.argv[1]
print("The sequence '{}' has a %GC of {:.2f}".format(
input_seq, calc_gc_percent(input_seq)))
\end{minted}
\end{pythonfile}
\end{pframe}
\section{Improving our script with comments and docstrings}
\begin{pframe}
\vspace{-1.2cm}
\begin{pythonfile}{seq\_toolbox.py}
\begin{tiny}
\begin{minted}[linenos]{python}
import sys
def calc_gc_percent(seq):
"""
Calculates the GC percentage of the given sequence.
Arguments:
- seq - the input sequence (string).
Returns:
- GC percentage (float).
The returned value is always <= 100.0
"""
at_count, gc_count = 0, 0
# Change input to all caps to allow for non-capital
# input sequence.
for char in seq.upper():
if char in ('A', 'T'):
at_count += 1
elif char in ('G', 'C'):
gc_count += 1
return gc_count * 100.0 / (gc_count + at_count)
input_seq = sys.argv[1]
print("The sequence '{}' has a %GC of {:.2f}".format(
input_seq, calc_gc_percent(input_seq)))
\end{minted}
\end{scriptsize}
\end{pythonfile}}
\end{pframe}
\section{Errors and exceptions}
\subsection{Improving our script by handling corner cases}
\begin{pframe}
\begin{pythonfile}{seq\_toolbox.py}
\begin{tiny}
\begin{minted}[linenos]{python}
def calc_gc_percent(seq):
"""
Calculates the GC percentage of the given sequence.
...
The returned value is always <= 100.0
"""
at_count, gc_count = 0, 0
# Change input to all caps to allow for non-capital
# input sequence.
for char in seq.upper():
if char in ('A', 'T'):
at_count += 1
elif char in ('G', 'C'):
gc_count += 1
else:
raise ValueError(
"Unexpeced character found: {}. Only "
"ACTGs are allowed.".format(char))
# Corner case handling: empty input sequence.
try:
return gc_count * 100.0 / (gc_count + at_count)
except ZeroDivisionError:
return 0.0
\end{minted}
\end{scriptsize}
\end{pythonfile}}
\end{pframe}
% Make the acknowledgements slide.
\makeAcknowledgementsSlide{
\begin{tabular}{ll}
Martijn Vermaat\\
Jeroen Laros\\
Jonathan Vis
\end{tabular}
}
\end{document}
def calc_gc_percent(seq):
at_count, gc_count = 0, 0
for char in seq:
if char in ('A', 'T'):
at_count += 1
elif char in ('G', 'C'):
gc_count += 1
return gc_count * 100.0 / (gc_count + at_count)
print("The sequence 'CAGG' has a %GC of {:.2f}".format(
calc_gc_percent("CAGG")))
import sys
def calc_gc_percent(seq):
at_count, gc_count = 0, 0
for char in seq:
if char in ('A', 'T'):
at_count += 1
elif char in ('G', 'C'):
gc_count += 1
return gc_count * 100.0 / (gc_count + at_count)
input_seq = sys.argv[1]
print("The sequence '{}' has a %GC of {:.2f}".format(
input_seq, calc_gc_percent(input_seq)))
import sys
def calc_gc_percent(seq):
at_count, gc_count = 0, 0
for char in seq.upper():
if char in ('A', 'T'):
at_count += 1
elif char in ('G', 'C'):
gc_count += 1
return gc_count * 100.0 / (gc_count + at_count)
input_seq = sys.argv[1]
print("The sequence '{}' has a %GC of {:.2f}".format(
input_seq, calc_gc_percent(input_seq)))
Subproject commit 44222ed4f2d9b932d6bde32b1587d2668b9dd7da
Subproject commit 2e2bb3fcc070c000e4ca1b21438246f384b71764
Subproject commit 43eada79901830702bd40dce857831aef8e76759
Subproject commit c35cce54a5d4800b90e71a43da140c0347308989
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
,Year,Belgium,Denmark,Netherlands,Sweden
0,1950,8.6393,4.28135,10.11365,7.0166
1,1951,8.6782,4.3037,10.2644,7.0704
2,1952,8.7304,4.3338,10.3821,7.12445
3,1953,8.77775,4.3693,10.493,7.17145
4,1954,8.8194,4.4057,10.61535,7.2136
5,1955,8.86835,4.4392,10.7509,7.26235
6,1956,8.92385,4.4664,10.8896,7.3157
7,1957,8.98935,4.48785,11.02635,7.36715
8,1958,9.05255,4.5151,11.1868,7.4153
9,1959,9.1036,4.5466,11.3477,7.45375
10,1960,9.1188,4.58105,11.4867,7.48035
11,1961,9.16585,4.6169,11.63875,7.52065
12,1962,9.2184,4.64695,11.80565,7.5616
13,1963,9.2831,4.6836,11.9658,7.60435
14,1964,9.36695,4.7202,12.12715,7.6614
15,1965,9.448,4.7581,12.29465,7.7339
16,1966,9.50785,4.7975,12.4564,7.80785
17,1967,9.55645,4.83875,12.59825,7.86775
18,1968,9.58985,4.86485,12.7297,7.9123
19,1969,9.6126,4.89075,12.87805,7.968
20,1970,9.6377,4.9288,13.0385,8.04285
21,1971,9.6733,4.9507,13.19455,8.09835
22,1972,9.7111,4.9756,13.32835,8.12245
23,1973,9.7418,5.0076,13.4392,8.1369
24,1974,9.75655,5.04525,13.54515,8.16035
25,1975,9.80085,5.0544,13.6664,8.1927
26,1976,9.81815,5.07255,13.774,8.2224
27,1977,9.8303,5.0883,13.85625,8.25145
28,1978,9.8373,5.10435,13.94185,8.27585
29,1979,9.8484,5.1168,14.03825,8.2937
30,1980,9.85515,5.123,14.1497,8.31045
31,1981,9.8488,5.1217,14.2471,8.3205
32,1982,9.8573,5.11775,14.31275,8.32515
33,1983,9.858,5.1143,14.36695,8.329
34,1984,9.853,5.1116,14.4242,8.3366
35,1985,9.85825,5.1137,14.49165,8.3504
36,1986,9.8648,5.1204,14.5721,8.3698
37,1987,9.8702,5.127,14.66525,8.39785
38,1988,9.9017,5.1293,14.7601,8.4365
39,1989,9.9377,5.1323,14.849,8.49295
40,1990,9.9674,5.1399,14.9515,8.55865
41,1991,10.0046,5.15405,15.06955,8.61365
42,1992,10.04515,5.1702,15.18405,8.6682
43,1993,10.0837,5.18925,15.29055,8.71865
44,1994,10.1154,5.20505,15.38285,8.78105
45,1995,10.13675,5.2279,15.45895,8.827
46,1996,10.156643,5.26165,15.5305,8.84105
47,1997,10.170226,5.2843,15.6108,8.84625
48,1998,10.203008,5.3013,15.7073,8.8512
49,1999,10.226422,5.31911,15.812,8.858051
50,2000,10.2512555,5.337344,15.9255195,8.872294
51,2001,10.2865745,5.355082,16.0461865,8.896127
52,2002,10.332792,5.374255,16.148933,8.924958
53,2003,10.3761325,5.387174,16.2253085,8.958229
54,2004,10.4211365,5.401177,16.281779,8.993531
55,2005,10.4786235,5.415978,16.32001,9.029572
56,2006,10.54796275,5.434567,16.346242,9.0805045
57,2007,10.6257055,5.457415,16.381703,9.148099
58,2008,10.709979,5.489022,16.4456015,9.2196435
59,2009,10.7964985,5.519441,16.5303925,9.2985205
60,2010,10.839905,5.543819,16.6153995,9.378126
61,2011,11.000638,5.566856,16.69308,9.4492195
62,2012,11.09485,5.587085,16.754968,9.519381
63,2013,11.178436,5.608784,16.8044385,9.6003785
64,2014,11.227283,5.639719,16.8044385,9.6961095
65,2015,,,16.9399275,9.6961095
Year,Belgium,Denmark,Netherlands,Sweden
1950,8.6393,4.28135,10.11365,7.0166
1951,8.6782,4.3037,10.2644,7.0704
1952,8.7304,4.3338,10.3821,7.12445
1953,8.77775,4.3693,10.493,7.17145
1954,8.8194,4.4057,10.61535,7.2136
1955,8.86835,4.4392,10.7509,7.26235
1956,8.92385,4.4664,10.8896,7.3157
1957,8.98935,4.48785,11.02635,7.36715
1958,9.05255,4.5151,11.1868,7.4153
1959,9.1036,4.5466,11.3477,7.45375
1960,9.1188,4.58105,11.4867,7.48035
1961,9.16585,4.6169,11.63875,7.52065
1962,9.2184,4.64695,11.80565,7.5616
1963,9.2831,4.6836,11.9658,7.60435
1964,9.36695,4.7202,12.12715,7.6614
1965,9.448,4.7581,12.29465,7.7339
1966,9.50785,4.7975,12.4564,7.80785
1967,9.55645,4.83875,12.59825,7.86775
1968,9.58985,4.86485,12.7297,7.9123
1969,9.6126,4.89075,12.87805,7.968
1970,9.6377,4.9288,13.0385,8.04285
1971,9.6733,4.9507,13.19455,8.09835
1972,9.7111,4.9756,13.32835,8.12245
1973,9.7418,5.0076,13.4392,8.1369
1974,9.75655,5.04525,13.54515,8.16035
1975,9.80085,5.0544,13.6664,8.1927
1976,9.81815,5.07255,13.774,8.2224
1977,9.8303,5.0883,13.85625,8.25145
1978,9.8373,5.10435,13.94185,8.27585
1979,9.8484,5.1168,14.03825,8.2937
1980,9.85515,5.123,14.1497,8.31045
1981,9.8488,5.1217,14.2471,8.3205
1982,9.8573,5.11775,14.31275,8.32515
1983,9.858,5.1143,14.36695,8.329
1984,9.853,5.1116,14.4242,8.3366
1985,9.85825,5.1137,14.49165,8.3504
1986,9.8648,5.1204,14.5721,8.3698
1987,9.8702,5.127,14.66525,8.39785
1988,9.9017,5.1293,14.7601,8.4365
1989,9.9377,5.1323,14.849,8.49295
1990,9.9674,5.1399,14.9515,8.55865
1991,10.0046,5.15405,15.06955,8.61365
1992,10.04515,5.1702,15.18405,8.6682
1993,10.0837,5.18925,15.29055,8.71865
1994,10.1154,5.20505,15.38285,8.78105
1995,10.13675,5.2279,15.45895,8.827
1996,10.156643,5.26165,15.5305,8.84105
1997,10.170226,5.2843,15.6108,8.84625
1998,10.203008,5.3013,15.7073,8.8512
1999,10.226422,5.31911,15.812,8.858051
2000,10.2512555,5.337344,15.9255195,8.872294
2001,10.2865745,5.355082,16.0461865,8.896127
2002,10.332792,5.374255,16.148933,8.924958
2003,10.3761325,5.387174,16.2253085,8.958229
2004,10.4211365,5.401177,16.281779,8.993531
2005,10.4786235,5.415978,16.32001,9.029572
2006,10.54796275,5.434567,16.346242,9.0805045
2007,10.6257055,5.457415,16.381703,9.148099
2008,10.709979,5.489022,16.4456015,9.2196435
2009,10.7964985,5.519441,16.5303925,9.2985205
2010,10.839905,5.543819,16.6153995,9.378126
2011,11.000638,5.566856,16.69308,9.4492195
2012,11.09485,5.587085,16.754968,9.519381
2013,11.178436,5.608784,16.8044385,9.6003785
2014,11.227283,5.639719,16.8044385,9.6961095
2015,,,16.9399275,9.6961095