PHY494/PHY598/CHM598 — Simulation approaches to Bio- and Nanophysics
The course will teach you the theoretical background on how to simulate systems at the atomic scale (e.g. using molecular dynamics), you will learn how to program some of the fundamental algorithms, and you will be using state-of-the art software to run simulations of systems in areas of active research.
The focus is on bio/nanophysics but there’s room to accommodate individual interests. The course will be half lecture, half hands-on work in a computer lab.
Students will work on a midterm and a final project. For example, for the 2012 final project, each student selected a simulation research paper and reproduced or even extended the research from the paper. As an example see the molecular dynamics simulations of a carbon nanotube Gigahertz oscillator.
For further questions, just contact Prof. Beckstein.
Note that this course is currently not scheduled. It ran the last time in Spring 2013. If you are interested in this class, then please leave a comment at the bottom of this page to register your interest.
Outline of topics
- Introduction to UNIX and Python
- command line use and scripting with the bash shell
- Python programming with NumPy and matplotlib
- Visualization of macromolecular systems
- Foundations of classical molecular simulations
- parametrization of atomic interactions; energy, forces
- molecular dynamics (MD) simulations
- Monte Carlo simulations
- calculating observables from simulations (statistical mechanics)
- Advanced simulation techniques
- simulating different ensembles (NVT, NPT)
- long-range forces; constraints
- free energy calculations
- Recent research highlights from the literature
What you will learn
The course has a strong practical component: You will spend half of your time using Unix workstations to tackle real problems using state-of-the art simulation software (such as the open-source Gromacs package) and programming both algorithms and analysis tools in the Python programming language.
On the practical side you will
- learn to write programs and scripts in Python, one of the most popular languages in the scientific community, which is also used for financial analysis, engineering, web software (for instance, one of Google’s languages of choice is Python);
- learn some tricks on how to write efficient code in Python using existing optimized libraries such as NumPy and generate publication-quality figures with matplotlib
- learn to work in a Unix environment, which includes use of the command line and shell scripting (all supercomputers are running a Unix-like operating system and pretty much all computational physics is done under GNU/Linux or some other form of Unix);
- learn to use free simulation software (e.g. Gromacs) that is also used in serious research projects so that you can
- make informed choices for parameter settings
- run simulations of your own problems
- know how to analyze your results (and check their validity)
On the theoretical side you will
- understand the capabilities and limitations of algorithms used for simulating systems at the atomic scale;
- learn about different approaches to gain microscopic insight into the thermodynamics and kinetics of biomolecular and nano-scale systems;
- learn how statistical physics can be used to link simulations with experimental observations;
- learn how to read the scientific literature on computer simulations.
In addition to these specific learning outcomes you will also learn to
- use computational approaches to address problems;
- work as a team on a programming project (something that you would almost certainly do in an industrial setting);
- effectively communicate your work through writing papers and formal talks.
Pre-requisites
This is a course for Physics undergraduate-seniors or Physics/Chemistry graduates. You will need at least
- statistical mechanics (at least UG level)
- classical mechanics (Newtonian/Hamiltonian/Lagrangian)
You do not need any programming experience but knowing at least one programming language (such as Python, Java, C, C++, FORTRAN, …) will make it easier. We will start with a “bootcamp” on Unix shell scripting and Python programming, which will require a substantial investment of your time in the first few weeks to get you up to speed if you have no coding experience. However, this is a great opportunity to get to learn a programming language in an applied context, which will almost certainly help you later in your own research or work.
ASU class numbers (Spring 2013)
Resources
- Blackboard course page
- files for Practicals
Literature
The following books will be useful but the course does not strictly follow a single one. The first two are also available electronically (eBook) for ASU students. Branden and Tooze (5) is a useful primer on protein structure and will be a useful introduction or refresher for the second half of the course.
- Daan Frenkel and Berend Smit. Understanding molecular simulation: from algorithms to applications. 2002, 2nd ed., Computational science series. Academic Press. (eBook)
- Mark Tuckerman. Statistical Mechanics: Theory And Molecular Simulation. 2010, Oxford University Press. (eBook)
- MP Allen and DJ Tildesley. Computer Simulations of Liquids. 1987. Oxford University Press
- Andrew R. Leach. Molecular Modelling. Principles and Applications. 2001. Pearson/Prentice Hall, Harlow, UK.
- Carl Branden and John Tooze. Introduction to Protein Structure. 1999. Garland Publishing/Taylor & Francis
I was in this class last semester and since I graduated, I have found it immensely useful. I currently work at Applied Materials. I have used the programming skills I learned in this class to perform data analysis and track trends. I am even developing programs for others and helping them learn python. I hope you all find this course as enjoyable and useful as I have. Have a great semester!