This repository contains code and resources for the course "Modeling Biological Populations", taught at Johns Hopkins University during Intersession 2023 (AS.020.313
).
These notebooks were developed jointly by Andrew Bortvin and Sara Carioscia. They have been updated and generalized to offer a resource for anyone interested in learning about Python and population genetics. View the syllabus for the original course here.
This module is designed to
- Introduce biology students with little prior coding experience to the basics of computer programming
- Create a workspace for students to apply these fundamental Python skills
- Offer implementations of various models in population genetics, implemented in Python
If you're new to programming, or want a refresher, start with the workbooks in python_intro
. You can also check out two other notebooks we made for a similar purpose here.
From there, we recommend the following order:
- Exponential and Logistic Growth
- Multi-Population Dynamics
- Wright-Fisher
- Advanced Wright-Fisher
- SEIR Disease Modeling
To use the resources as Jupyter Notebooks, git clone
the repository on your local machine and then launch each notebook from the command line via jupyter notebook notebookname
. Your changes to the notebook will be automatically saved, so feel free to add additional code or markdown cells as are helpful for you.
To launch these resources in Google Colab (see notebook here for an overview), git clone
this repository on your local machine. Then, open a new Google Colab document (similar to how you would open a Google Doc or Google Sheet); File --> open notebook --> upload, and choose your notebook. These changes will not be saved, unless you download the notebook back out of Google Colab and place it in your local repository.
Feel free to use this if you have a group of students who might benefit - or if you're a curious biologist yourself! Reach out to Andrew (abortvi2@jhu.edu) or Sara (saracarioscia@jhu.edu) if you have any questions or suggestions. If there's a feature or other update you'd like added, please submit an issue directly on GitHub.