Teaching

MPIBP-NoS2021-Koefinger.mp4

Night of Science Talk 2021

The goal of a Night of Science talk is to introduce once's research to an interested public and to get them exited (https://www.nightofscience.de).

In my talk (in German!), I introduce the nuts and bolts of molecular dynamics simulation, the work of the Department of Theoretical Biophysics at the MPIBP in Frankfurt, and some of my own work. I end with a tentative outlook on the future of biomolecular simulations.

As always, there are a few things that I would like to change. For example 1 fs are 10 to the power of -15 seconds. Thus, for 1 second simulation time, we have to execute 10 to the power of 15 steps or equally 1 000 000 000 000 000 steps. This number reads one million billion! This number is just mind blowing!

Beyond such little quirks, the presentation should contain some perspectives and thoughts on molecular dynamics simulations interesting not only to the wide audience. I hope you enjoy!

I thank Lukas Schwab and Dipl.-Chem. Brigitte Holfelder of the MPIBP for their help and support recording the talk and editing the video. It was quite an experience to present without audience and in front of a camera during Covid-19.

Modern Statistical Data Analysis for Practitioners

When analyzing any data we are usually confronted with the challenge to make statements in the presence of uncertainty. Uncertainties can be due to limited sampling or due to systematic errors in the trial protocol, experimental setup, or force field used in the simulations, for example. In general, we want to set up experiments or simulations to minimize the overall error. Importantly, we have to estimate how these uncertainties translate into uncertainties of the parameters we want to estimate or of the models we want to compare. To do so, we use the tools of statistics.

In the course, which I developed together with Dr. Roberto Covino and Dr. Lukas Stelzl in 2017, we introduce the basics of probability theory, classical statistics, and classical error analysis (p-values, confidence intervals), which serves as the starting point to explore modern methods of statistics (Maximum Likelihood, Bayes). We use these methods to extract information from noisy data through (non-)linear parameter estimation (fitting) and model comparison. We show how to analyze data containing dynamical information by time series analysis (correlation functions, error analysis) and Markov-Chain models and kinetic models described by rate equations.

In the practical course, we go through pen and pencil exercises to acquire the skills necessary to apply what we have learned in the lecture to real world examples. Moreover, we practice the statistical analysis of scientific data using the Python programming language and its powerful and widely used tools (numpy, scipy, matplotlib, pyMC3, PyStan).

In 2021, I held the lecture for the first time together with Dr. Jakob T. Bullerjahn. Once for the GU Frankfurt students and once a three-day lecture for the IMPRS students. Based on our experience, he made improved presentations for the "Nults and bolts of probability theory" and "Maximum Likelihood", which worked out really well.

Scientific Computing with Python

Python is a widely used programming language in the natural sciences for data analysis. With its ease of use characteristic for a prototyping language, it facilitates fast code development. Moreover, packages like Numpy, Scipy, and Scikit-learn give access to efficient implementations of numerical algorithms, from matrix computations to optimization algorithms and machine learning, to name a few.

To use these functionalities efficiently and correctly and to be able to modify or to extend them, it is important to know and understand how the implemented algorithms work. To understand “what is under the hood” of these packages is the central goal of the course.

In the course, we introduce methods of linear algebra, differential equations, optimization, Monte Carlo methods, and linear regression as basic example for machine learning. We illustrate these numerical methods with examples from physics, biophysics, and biochemistry. Moreover we introduce the Jupyter notebooks as a front end for data analysis and show how python programs can be sped up using Cython and Numba.