We evolved the bacterium Escherichia coli to resist a bacteriophage, and sequenced resistant strains. In this computational lab we will identify the mutations involved. The goal of this set of exercises is to walk you through a standard variant discovery analysis, and to illustrate algorithms you would use, with the goal of introducing the basic concepts of bioinformatic analysis. The major goal of this lab is to make you think like a bioinformatician. To do this, you'll need to understand the intricacies of the data you are dealing with -- format are they in? what information they contain? how did choices made in the lab affect and how to potential pitfalls inherent in bioinformatic analysis.
Jupyter notebooks allow you to run interactive code within a web page. Each notebook is running on a virtual machine instance (made possible by the Binder project). When you open the notebook, you will see text, code cells and resulting output. These are static, but can be re-run by double-clicking on the cells and hitting Ctl-Enter. So, you can run code in cells and see what sort of output it produces. You are strongly encouraged to tinker with the code to see how modifying the code cells alters their results.
At the end of every section there is a set of homework problems. Please do them before moving on to the next section. They are meant to build and practice your skills, making sure you have internalized the concepts necessary before tackling the next level. You will most likely need to do some research on the web to solve these problems.
Homeworks should be submitted as a Jupyter notebook, with all the cells executed with the Jupyter menu command Kernel: Restart & Run All. Then save the notebook and File: Download as IPython Notebook.
Image TODO
Bioinformatics requires a number of core skills, on which you build over time to perform ever more complicated sets of analyses. The most basic of these skills is understanding how Linux works, and some basic programming techniques, both in the Linux shell and a basic scripting languages, such as Python.
This section introduces the concept of Linux file systems, and a bit of basic Python programming. You can skip these, if you already know this stuff.
In [1]: