BCH394P BCH364C 2025
BCH394P/BCH364C Systems Biology & Bioinformatics
Course unique #: 54960/54860
Lectures: Tues/Thurs 9:30 – 11:00 AM WEL 2.246
Instructor: Edward Marcotte, marcotte @ utexas.edu
- Office hours: Mon 4 – 5 PM on the class Zoom channel (available on Canvas)
TA: Zoya Ansari, zansari @ utexas.edu
- TA Office hours: Tues 1 - 2 PM / Fri 1 - 2 PM in MBB 3.304 or by appointment on Zoom
Class Canvas site: https://utexas.instructure.com/courses/1407802
Lectures & Handouts
Feb 13, 2025 - HMMs II
- We'll be finishing up slides from last time.
- There were some issues with Rosalind stopping early last night, so I've reopened it and extended the deadline for the homework until 10PM tonight.
Problem Set 2, due before 10 PM, Feb. 24, 2025:
- Problem Set 2.
- You'll need these 3 files: State sequences, Soluble sequences, Transmembrane sequences
- If you would like a few examples of proteins with their transmembrane and soluble regions annotated (according to UniProt) to help troubleshoot your homework, here are some example yeast protein sequences.
- Link to a great interactive visualization of Markov chains, by Victor Powell & Lewis Lehe. It's worth checking out to build some intuition. They correctly point out that Google's PageRank algorithm is based on Markov chains. There, the ranking of pages in a web search relates to how random walks across linked web pages spend more time on some pages than on others.
- A non-biological example of using log odds ratios & Bayesian stats to learn the authors of the Federalist Papers. In a related example, researchers decoded >50 coded letters from a French archive and discovered they were lost correspondence from Mary, Queen of Scots, before she was executed in 1587 for treason against Elizabeth I. The researchers used an approach closely related to computing log odds ratios of 5-mer frequencies between putative decoded texts and known free text to figure out the correct ciphers. If you're curious, you can read about it in Appendix A of their paper
Feb 11, 2025 - Hidden Markov Models
- Don't forget: Rosalind Homework #2 (worth 10% of your final course grade) is due by 10 PM February 12.
- More stats for comp biologists worth checking out: Modern Statistic for Modern Biology, by Susan Holmes and Wolfgang Huber. It's currently available online and available on dead tree. (FYI, all code is in R.)
- Today's slides
Reading:
- HMM primer and Bayesian statistics primer #1, Bayesian statistics primer #2, Wiki Bayes
- Care to practice your regular expressions? (In python? & a Python regexp cheat sheet)
Feb 6, 2025 - Biological databases
Homework #2 (worth 10% of your final course grade) has been assigned on Rosalind and is due by 10 PM February 12:
- A reminder for when you turn in code for Rosalind: please copy just the text with your code out of Jupyter and paste/upload that into Rosalind, rather than uploading the .ipynb files (which are not intended to be human readable)
- Besides giving a bit more programming experience, these questions will also give you some more practice with the BioPython Python library (see the "programming shortcuts" at the bottom of several questions). If you have yet to install BioPython on your computer, open an Anaconda prompt window (on a PC) or launch a console window from the Anaconda Navigator & type "pip install biopython". (You can use this approach to install most Python libraries.) There's a very useful tutorial here
- NOTE: The problem titled "Complementing a Strand of DNA" uses a now out-of-date call for IUPAC codes in the Programming Shortcut. Just delete the "from Bio.Alphabet import IUPAC" line & delete the ", IUPAC.unambiguous_dna" portion of the Seq() functions and it will work fine. e.g. all you need is something like this: my_seq = Seq("GATCGATGGGCCTATATAGGATCGAAAATCGC")
Extra reading/classes:
- Just a note that we'll be seeing ever more statistics as go on. Here's a good primer from Prof. Lauren Ancel Myers (who leads the UT Austin COVID-19 Modeling Consortium) to refresh/explain basic concepts.
- Finally, here's great opportunity to hone your Python skills a bit more: The UT CBRS cores will offer short courses in Python, Unix, and Python for Data Sciences starting in March.
- Why we compute multiple hypothesis corrections when searching sequence (and other) databases
Feb 4, 2025 - Speeding up your searches: BLAST, MMSeqs2, and Foldseek
- *** Problem Set #1 is due by 10 PM tomorrow, Feb 5. ***
- Our slides today are modified from a paper on Teaching BLAST by Cheryl Kerfeld & Kathleen Scott.
- The original BLAST paper
- The protein homology graph paper. Just for fun, here's a stylized version of this plot that we exhibited in the engaging Design and the Elastic Mind show at New York's Museum of Modern Art, now in their permanent collection.
- The NCBI Blast server. But Is BLAST a thing of the past? (answer: no)
- The MMSeqs2 paper
- The FoldSeek paper and a link to the FoldSeek server if you want to try it out
Jan 30, 2025 - Sequence Alignment II
- We'll be finishing up slides from last time.
- Fact and Fiction in Sequence Alignments
- Dynamic programming primer
- An example of dynamic programming using Excel, created by Michael Hoffman (a former U Texas undergraduate, now U Toronto professor, who took a prior incarnation of this class)
- A few examples of proteins with internally repetitive sequences: 1, 2, 3
Jan 28, 2025 - Sequence Alignment I
- Reminder relevant to our discussion of ChatGPT last class: CNET & other news sources used it to write articles; this Gizmodo story found that "the AI-program fabricates information and bungles facts like nobody’s business" and CNET was "forced to issue multiple, major corrections". So, if you do opt to try ChatGPT to help with Python, be sure to check (and then double-check) everything. And in related news, the Chinese company DeepSeek released an open source ChatGPT competitor. According to wikipedia, "On January 27, 2025, the DeepSeek AI chatbot became the most downloaded free app in the U.S. on Apple’s App Store, surpassing ChatGPT and causing Nvidia's share price to drop by 18%."
- Today's slides
Problem Set I, due 10PM Feb. 5, 2025:
- Problem Set 1
- H. influenzae genome. Haemophilus influenza was the first free living organism to have its genome sequenced. NOTE: there are some additional characters in this file from ambiguous sequence calls. For simplicity's sake, when calculating your nucleotide and dinucleotide frequencies, you can just ignore anything other than A, C, T, and G. Also, if you prefer a .fasta format file (e.g. for BioPython), just add a first line to the text file starting with a ">" character, e.g. "> Hinfluenzae genome file".
- T. aquaticus genome. Thermus aquaticus helped spawn the genomic revolution as the source of heat-stable Taq polymerase for PCR.
- 3 mystery genes (for Problem 5): MysteryGene1, MysteryGene2, MysteryGene3
- *** HEADS UP FOR THE PROBLEM SET *** If you try to use the Python string.count function to count dinucleotides, Python counts non-overlapping instances, not overlapping instances. So, AAAA is counted as 2, not 3, dinucleotides. You want overlapping dinucleotides instead, so will have to try something else, such as the python string[counter:counter+2] command, as explained in the Rosalind homework assignment on strings.
Extra reading, if you're curious:
- BLOSUM primer
- The original BLOSUM paper (hot off the presses from 1992!)
- BLOSUM miscalculations improve performance
Jan 23, 2025 - Intro to Python II
- Reminder that today will be part 2 of the "Python boot camp" for those of you with little to no previous Python coding experience. We'll be finishing the slides from last time, plus Rosalind help & programming Q/A.
- *** Rosalind assignments are due by 10 PM January 24. ***
- We'll talk a bit about ChatGPT today for co-programming. My strong recommendation for Python newbies is to not use it for writing programs when you're just getting started, but rather use it as a helper and teacher in interpreting code and suggesting commands. That way, you give yourself a chance to properly internalize the basic Python concepts, formatting, etc. Your use will increase naturally as you start to write more complex code, by which time you'll have a much better ability to gauge the correctness of its suggestions.
- Another recommendation to the Python newbies is to download Eric Matthes's great, free Python command cheat sheets that he provides to accompany his Python Crash Course book.
Jan 21, 2025 - UT Closed for Icy Weather
- If you haven't already seen the UT emergency news web page, UT Austin will be closed Tue, Jan 21, 2025, due to forecast frozen precipitation and dangerous travel conditions. All classes are cancelled for the day. The weather forecast looks fine (so far) for the rest of the week, so at the moment, we expect to resume on Thursday with the other half of the Python boot camp. Since we haven't talked about some of the material yet, I extended the Rosalind deadline to this Friday, Jan 24.
Jan 20, 2025 - Martin Luther King, Jr. Day; no classes (or office hours) held
Jan 16, 2025 - Intro to Python
- Remember that today and the next lecture are dedicated to the Python Boot Camp to start getting those of you with minimal coding skills up to speed on the basics. Experienced programmers can skip class!
- And a reminder about the mechanics of this class: Lectures will generally be about algorithms and concepts, while the coding help hours (or my office hours) are for you to get individual coding help and feedback. Please plan to go to coding help hours if you need that support!
- Science news of the day: The UK is launching a massive project to profile the plasma proteomes (>5K proteins) from each of >500M UK participants in the UK Biobank, accompanied by X-rays and longitudinal health data.
- A request for when you turn in code for Rosalind: please just cut the text code out of Jupyter and paste/upload that into Rosalind, rather than uploading the .ipynb files (which are not intended to be human readable)
- Today's slides.
- E. coli genome (formatted as a text file with no extra lines)
- E. coli genome (formatted as a fasta file, which only differs here in having a header)
- Don't forget that the Rosalind assignments are due by 10 PM January 22. Please do start if you haven't already, or you won't have time to get help if you have any issues installing Python.
- We'll use Python version 3 (any version after 3.0 should be fine; just get the latest version in Anaconda), but Rosalind and some older materials are only available in Python 2.7, so we'll generally try to be version agnostic for compatibility. For beginners, the differences are quite minimal and are summarized in a table here. There's also a great cheat sheet here for writing code compatible with both versions.
Jan 14, 2025 - Introduction
- Today's slides
- We'll be conducting homework using the online environment Rosalind. Go ahead and register on the site, and enroll specifically for BCH394P/364C (Spring 2025) Systems Biology/Bioinformatics using this link. Homework #1 (worth 10% of your final course grade) has already been assigned on Rosalind and is due by 10:00PM January 22.
- We'll be using the free Anaconda distribution of Python and Jupyter (download here). Note that there are many other options out there, such as Google colab. You're welcome to use those, but we'll restrict our teaching and TA help sessions to Jupyter/Anaconda for simplicity.
Here are some online Python resources that you might find useful:
- First and foremost, and very, very useful if you're a complete Python newbie: Eric Matthes's Python Crash Course book. He made some GREAT, free Python command cheat sheets to support the book.
- Practical Python, worth checking out!
- If you have any basic experience at all in other programming languages, Google offered an extremely good, 2-day intro course to Python (albeit version 2) that is now available on Youtube.
- Khan Academy has archived their older intro videos on Python here (again, version 2)
Syllabus & course outline
An introduction to systems biology and bioinformatics, emphasizing quantitative analysis of high-throughput biological data, and covering typical data, data analysis, and computer algorithms. Topics will include introductory probability and statistics, basics of Python programming, protein and nucleic acid sequence analysis, genome sequencing and assembly, proteomics, analysis of large-scale gene expression data, data clustering & classification, biological pattern recognition, gene and protein networks, AI/machine learning, and protein 3D structure prediction/design.
Open to graduate students and upper division undergrads (with permission) in natural sciences and engineering.
Prerequisites: Basic familiarity with molecular biology, statistics & computing, but realistically, it is expected that students will have extremely varied backgrounds. Undergraduates have additional prerequisites, as listed in the catalog.
Note that this is not a course on practical sequence analysis or using web-based tools. Although we will use these, the focus of the course will be on learning the underlying algorithms, exploratory data analyses, and their applications, esp. in high-throughput biology. By the end of the course, students will know the fundamentals of important algorithms in bioinformatics and systems biology, will be able to design and implement computational studies in biology, and will have performed an element of original computational biology research.
Most of the lectures will be from research articles and slides posted online, with some material from the...
Optional text (for sequence analysis): Biological sequence analysis, by R. Durbin, S. Eddy, A. Krogh, G. Mitchison (Cambridge University Press),
For biologists rusty on their stats, The Cartoon Guide to Statistics (Gonick/Smith) is very good. A reasonable online resource for beginners is Statistics Done Wrong. A truly excellent stats book with a free download is An Introduction to Statistical Learning, by James, Witten, Hastie, Tibshirani, and Taylor, and is accompanied by many supporting Python examples and applications.
Two other online probability & stats references: #1, #2 (which has some lovely visualizations)
No exams will be given. Grades will be based on online homework (counting 30% of the grade), 3 problem sets (given every 2-3 weeks and counting 15% each towards the final grade) and an independent course project (25% of the final grade), which can be collaborative (1-3 students/project). The course project will consist of a research project on a bioinformatics topic chosen by the student (with approval by the instructor) containing an element of independent computational biology research (e.g. calculation, programming, database analysis, etc.). This will be turned in as a link to a web page. The final project is due by 10 PM, April 16, 2025. The last 3 classes will be spent presenting your projects to each other. (The presentation will account for 5/25 points of the project grade.)
If at some point, we have to go into coronavirus lockdown, that portion of the class will be web-based. We will hold lectures by Zoom during the normally scheduled class time. Log in to the UT Canvas class page for the link, or, if you are auditing, email the TA and we will send the link by return email. Slides will be posted before class so you can follow along with the material. We'll record the lectures & post the recordings afterward on Canvas so any of you who might be in other time zones or otherwise be unable to make class will have the opportunity to watch them. Note that the recordings will only be available on Canvas and are reserved only for students in this class for educational purposes and are protected under FERPA. The recordings should not be shared outside the class in any form. Violation of this restriction could lead to Student Misconduct proceedings.
Online homework will be assigned and evaluated using the free bioinformatics web resource Rosalind.
All projects and homework will be turned in electronically and time-stamped. No makeup work will be given. Instead, all students have 5 days of free “late time” (for the entire semester, NOT per project, and counting weekends/holidays). For projects turned in late, days will be deducted from the 5-day total (or what remains of it) by the number of days late (in 1-day increments, rounding up, i.e. 10 minutes late = 1 day deducted). Once the full 5 days have been used up, assignments will be penalized 10 percent per day late (rounding up), i.e., a 50-point assignment turned in 1.5 days late would be penalized 20%, or 10 points.
Homework, problem sets, and the project total to a possible 100 points. There will be no curving of grades, nor will grades be rounded up. We’ll use the plus/minus grading system, so: A= 92 and above, A-=90 to 91.99, etc. Just for clarity's sake, here are the cutoffs for the grades: 92% = A, 90% = A- < 92%, 88% = B+ < 90%, 82% = B < 88%, 80% = B- < 82%, 78% = C+ < 80%, 72% = C < 78%, 70% = C- < 72%, 68% = D+ < 70%, 62% = D < 68%, 60% = D- < 62%, F < 60%.
Students are welcome to discuss ideas and problems with each other, but all programs, Rosalind homework, problem sets, and written solutions should be performed independently (except for the final collaborative project). Students are expected to follow the UT honor code. Cheating, plagiarism, copying, & reuse of prior homework, projects, or programs from CourseHero, Github, or any other sources are all strictly forbidden and constitute breaches of academic integrity and cause for dismissal with a failing grade, possibly expulsion (UT's academic integrity policy). In particular, no materials used in this class, including, but not limited to, lecture hand-outs, videos, assessments (papers, projects, homework assignments), in-class materials, review sheets, and additional problem sets, may be shared online or with anyone outside of the class unless you have the instructor’s explicit, written permission. Any materials found online (e.g. in CourseHero) that are associated with you, or any suspected unauthorized sharing of materials, will be reported to Student Conduct and Academic Integrity in the Office of the Dean of Students. These reports can result in sanctions, including failure in the course.
The use of artificial intelligence tools (such as ChatGPT or Github co-pilot) in this class shall be permitted on a limited basis for programming assignments. You are also welcome to seek my prior-approval to use AI writing tools on any assignment. In either instance, AI writing tools should be used with caution and proper citation, as the use of AI should be properly attributed. Using AI writing tools without my permission or authorization, or failing to properly cite AI even where permitted, shall constitute a violation of UT Austin’s Institutional Rules on academic integrity.
Students with disabilities may request appropriate academic accommodations from Disability and Access.
The final project website is due by 10 PM April 16, 2025
- How to make a website for the final project
- Google Site: https://sites.google.com/new
- You might also consider streamlit, which lets you generate websites on the fly direct from Python