...
 
Commits (31)
...@@ -3,4 +3,7 @@ ...@@ -3,4 +3,7 @@
url = https://github.com/hakimel/reveal.js.git url = https://github.com/hakimel/reveal.js.git
[submodule "programming-course-assignments"] [submodule "programming-course-assignments"]
path = 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
...@@ -25,30 +25,30 @@ Program and Materials ...@@ -25,30 +25,30 @@ Program and Materials
- Mornings: presentations. - Mornings: presentations.
- Afternoons: assignments. - Afternoons: assignments.
| Day | Time | Lesson | Teacher | | Day | Time | Lesson | Teacher |
|-----------------|-------|------------------------------------ |----------| |------------------|-------|------------------------------------ |----------|
| Tuesday, 27/11 | 9-10 | [Welcome][lesson_01], [Introduction to Python][lesson_02_01] | Mihai | | Tuesday, 27/11 | 9-10 | [Introduction][lesson_01_01] | Mihai |
| | 10-11 | [Data types][lesson_02_02] | Mihai | | | 10-11 | [Data types][lesson_01_02] | Mihai |
| | 11-12 | [Functions][lesson_02_03] | Mihai | | | 11-12 | [Flow control][lesson_01_03] | Mihai |
| | 12-13 | Lunch break | | | | 12-13 | Lunch break | |
| | 13-16 | Practical session | Mihai, Sander, and Guy| | | 13-16 | Practical session | Mihai, Sander, and Guy|
| Wednesday, 28/11 | 9-10 | Assignments review | | | Wednesday, 28/11 | 9-10 | Assignments review | |
| | 10-11 | [String methods, errors and exceptions][lesson_03_01] | Mihai | | | 10-11 | [String methods, errors and exceptions][lesson_03_01] | Mihai |
| | 11-12 | [Standard library, reading and writing files][lesson_03_02] | Mihai | | | 11-12 | [Standard library, reading and writing files][lesson_03_02] | Mihai |
| | 12-13 | Lunch break | | | | 12-13 | Lunch break | |
| | 13-16 | Practical session | Mihai, Sander, and Mark| | | 13-16 | Practical session | Mihai, Sander, and Mark|
| Thursday, 29/11 | 9-10 | Assignments review | | | Thursday, 29/11 | 9-10 | Assignments review | |
| | 10-11 | [Object-oriented programming][lesson_oop] | Jonathan | | | 10-11 | [Object-oriented programming][lesson_oop] | Jonathan |
| | 11-12 | [Jupyter Notebook][lesson_jpn] | Mark | | | 11-12 | [Jupyter Notebook][lesson_jpn] | Mark |
| | 12-13 | [Data mangling with pandas][lesson_pandas] | Mark | | | 12-13 | [Data mangling with pandas][lesson_pandas] | Mark |
| | 12-13 | Lunch break | | | | 13-14 | Lunch break | |
| | 13-16 | Practical session | Mihai, and Mark| | | 14-16 | Practical session | Mihai, and Mark|
| Friday, 30/11 | 9-10 | Assignments review | | | Friday, 30/11 | 9-10 | Assignments review | |
| | 10-11 | [Data visualisation with Matplotlib][lesson_dv_01] | Guy | | | 10-11 | [Data visualisation with Matplotlib][lesson_dv_01] | Guy |
| | 11-12 | [Data visualisation with Bokeh][lesson_dv_02] | Guy | | | 11-12 | [Data visualisation with Bokeh][lesson_dv_02] | Guy |
| | 12-13 | [Biopython][lesson_bp] | Sander | | | 12-13 | [Biopython][lesson_bp] | Sander |
| | 12-13 | Lunch break | | | | 13-14 | Lunch break | |
| | 13-16 | Practical session | Mihai, Sander, and Guy| | | 14-16 | Practical session | Mihai, Sander, and Guy|
Some of the lessons are slideshows, whereas others are just Some of the lessons are slideshows, whereas others are just
notebooks we scroll through during class. The links above are all one-page notebooks we scroll through during class. The links above are all one-page
...@@ -67,10 +67,9 @@ Assignments ...@@ -67,10 +67,9 @@ Assignments
- [Visualization 2](https://classroom.github.com/a/2GAOqqBu). - [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_01_01]: https://git.lumc.nl/courses/programming-course/raw/master/introduction/introduction/introduction.pdf?inline=false
[lesson_02_01]: http://nbviewer.ipython.org/urls/git.lumc.nl/courses/programming-course/raw/master/introduction/02_introduction_to_python_1.ipynb [lesson_01_02]: https://git.lumc.nl/courses/programming-course/raw/master/introduction/data_types/data_types.pdf?inline=false
[lesson_02_02]: http://nbviewer.ipython.org/urls/git.lumc.nl/courses/programming-course/raw/master/introduction/02_introduction_to_python_2.ipynb [lesson_01_03]: https://git.lumc.nl/courses/programming-course/blob/master/introduction/flow_control/flow_control.pdf?inline=false
[lesson_02_03]: http://nbviewer.ipython.org/urls/git.lumc.nl/courses/programming-course/raw/master/introduction/02_introduction_to_python_3.ipynb
[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_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_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 [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 Year,Belgium,Denmark,Netherlands,Sweden
0,1950,8.6393,4.28135,10.11365,7.0166 1950,8.6393,4.28135,10.11365,7.0166
1,1951,8.6782,4.3037,10.2644,7.0704 1951,8.6782,4.3037,10.2644,7.0704
2,1952,8.7304,4.3338,10.3821,7.12445 1952,8.7304,4.3338,10.3821,7.12445
3,1953,8.77775,4.3693,10.493,7.17145 1953,8.77775,4.3693,10.493,7.17145
4,1954,8.8194,4.4057,10.61535,7.2136 1954,8.8194,4.4057,10.61535,7.2136
5,1955,8.86835,4.4392,10.7509,7.26235 1955,8.86835,4.4392,10.7509,7.26235
6,1956,8.92385,4.4664,10.8896,7.3157 1956,8.92385,4.4664,10.8896,7.3157
7,1957,8.98935,4.48785,11.02635,7.36715 1957,8.98935,4.48785,11.02635,7.36715
8,1958,9.05255,4.5151,11.1868,7.4153 1958,9.05255,4.5151,11.1868,7.4153
9,1959,9.1036,4.5466,11.3477,7.45375 1959,9.1036,4.5466,11.3477,7.45375
10,1960,9.1188,4.58105,11.4867,7.48035 1960,9.1188,4.58105,11.4867,7.48035
11,1961,9.16585,4.6169,11.63875,7.52065 1961,9.16585,4.6169,11.63875,7.52065
12,1962,9.2184,4.64695,11.80565,7.5616 1962,9.2184,4.64695,11.80565,7.5616
13,1963,9.2831,4.6836,11.9658,7.60435 1963,9.2831,4.6836,11.9658,7.60435
14,1964,9.36695,4.7202,12.12715,7.6614 1964,9.36695,4.7202,12.12715,7.6614
15,1965,9.448,4.7581,12.29465,7.7339 1965,9.448,4.7581,12.29465,7.7339
16,1966,9.50785,4.7975,12.4564,7.80785 1966,9.50785,4.7975,12.4564,7.80785
17,1967,9.55645,4.83875,12.59825,7.86775 1967,9.55645,4.83875,12.59825,7.86775
18,1968,9.58985,4.86485,12.7297,7.9123 1968,9.58985,4.86485,12.7297,7.9123
19,1969,9.6126,4.89075,12.87805,7.968 1969,9.6126,4.89075,12.87805,7.968
20,1970,9.6377,4.9288,13.0385,8.04285 1970,9.6377,4.9288,13.0385,8.04285
21,1971,9.6733,4.9507,13.19455,8.09835 1971,9.6733,4.9507,13.19455,8.09835
22,1972,9.7111,4.9756,13.32835,8.12245 1972,9.7111,4.9756,13.32835,8.12245
23,1973,9.7418,5.0076,13.4392,8.1369 1973,9.7418,5.0076,13.4392,8.1369
24,1974,9.75655,5.04525,13.54515,8.16035 1974,9.75655,5.04525,13.54515,8.16035
25,1975,9.80085,5.0544,13.6664,8.1927 1975,9.80085,5.0544,13.6664,8.1927
26,1976,9.81815,5.07255,13.774,8.2224 1976,9.81815,5.07255,13.774,8.2224
27,1977,9.8303,5.0883,13.85625,8.25145 1977,9.8303,5.0883,13.85625,8.25145
28,1978,9.8373,5.10435,13.94185,8.27585 1978,9.8373,5.10435,13.94185,8.27585
29,1979,9.8484,5.1168,14.03825,8.2937 1979,9.8484,5.1168,14.03825,8.2937
30,1980,9.85515,5.123,14.1497,8.31045 1980,9.85515,5.123,14.1497,8.31045
31,1981,9.8488,5.1217,14.2471,8.3205 1981,9.8488,5.1217,14.2471,8.3205
32,1982,9.8573,5.11775,14.31275,8.32515 1982,9.8573,5.11775,14.31275,8.32515
33,1983,9.858,5.1143,14.36695,8.329 1983,9.858,5.1143,14.36695,8.329
34,1984,9.853,5.1116,14.4242,8.3366 1984,9.853,5.1116,14.4242,8.3366
35,1985,9.85825,5.1137,14.49165,8.3504 1985,9.85825,5.1137,14.49165,8.3504
36,1986,9.8648,5.1204,14.5721,8.3698 1986,9.8648,5.1204,14.5721,8.3698
37,1987,9.8702,5.127,14.66525,8.39785 1987,9.8702,5.127,14.66525,8.39785
38,1988,9.9017,5.1293,14.7601,8.4365 1988,9.9017,5.1293,14.7601,8.4365
39,1989,9.9377,5.1323,14.849,8.49295 1989,9.9377,5.1323,14.849,8.49295
40,1990,9.9674,5.1399,14.9515,8.55865 1990,9.9674,5.1399,14.9515,8.55865
41,1991,10.0046,5.15405,15.06955,8.61365 1991,10.0046,5.15405,15.06955,8.61365
42,1992,10.04515,5.1702,15.18405,8.6682 1992,10.04515,5.1702,15.18405,8.6682
43,1993,10.0837,5.18925,15.29055,8.71865 1993,10.0837,5.18925,15.29055,8.71865
44,1994,10.1154,5.20505,15.38285,8.78105 1994,10.1154,5.20505,15.38285,8.78105
45,1995,10.13675,5.2279,15.45895,8.827 1995,10.13675,5.2279,15.45895,8.827
46,1996,10.156643,5.26165,15.5305,8.84105 1996,10.156643,5.26165,15.5305,8.84105
47,1997,10.170226,5.2843,15.6108,8.84625 1997,10.170226,5.2843,15.6108,8.84625
48,1998,10.203008,5.3013,15.7073,8.8512 1998,10.203008,5.3013,15.7073,8.8512
49,1999,10.226422,5.31911,15.812,8.858051 1999,10.226422,5.31911,15.812,8.858051
50,2000,10.2512555,5.337344,15.9255195,8.872294 2000,10.2512555,5.337344,15.9255195,8.872294
51,2001,10.2865745,5.355082,16.0461865,8.896127 2001,10.2865745,5.355082,16.0461865,8.896127
52,2002,10.332792,5.374255,16.148933,8.924958 2002,10.332792,5.374255,16.148933,8.924958
53,2003,10.3761325,5.387174,16.2253085,8.958229 2003,10.3761325,5.387174,16.2253085,8.958229
54,2004,10.4211365,5.401177,16.281779,8.993531 2004,10.4211365,5.401177,16.281779,8.993531
55,2005,10.4786235,5.415978,16.32001,9.029572 2005,10.4786235,5.415978,16.32001,9.029572
56,2006,10.54796275,5.434567,16.346242,9.0805045 2006,10.54796275,5.434567,16.346242,9.0805045
57,2007,10.6257055,5.457415,16.381703,9.148099 2007,10.6257055,5.457415,16.381703,9.148099
58,2008,10.709979,5.489022,16.4456015,9.2196435 2008,10.709979,5.489022,16.4456015,9.2196435
59,2009,10.7964985,5.519441,16.5303925,9.2985205 2009,10.7964985,5.519441,16.5303925,9.2985205
60,2010,10.839905,5.543819,16.6153995,9.378126 2010,10.839905,5.543819,16.6153995,9.378126
61,2011,11.000638,5.566856,16.69308,9.4492195 2011,11.000638,5.566856,16.69308,9.4492195
62,2012,11.09485,5.587085,16.754968,9.519381 2012,11.09485,5.587085,16.754968,9.519381
63,2013,11.178436,5.608784,16.8044385,9.6003785 2013,11.178436,5.608784,16.8044385,9.6003785
64,2014,11.227283,5.639719,16.8044385,9.6961095 2014,11.227283,5.639719,16.8044385,9.6961095
65,2015,,,16.9399275,9.6961095 2015,,,16.9399275,9.6961095