BCH394P BCH364C 2024
BCH394P/BCH364C Systems Biology & Bioinformatics
Course unique #: 54430/54305
Lectures: Tues/Thurs 11 – 12:30 PM WEL 2.110
Instructor: Edward Marcotte, marcotte @ utexas.edu
- Office hours: Mon 4 – 5 PM on the class Zoom channel (available on Canvas)
TA: Vicki Deng, dengv @ utexas.edu
- TA Office hours: Tues 1 - 2 PM / Fri 12 - 1 PM in MBB 3.204 or by appointment on Zoom
Class Canvas site: https://utexas.instructure.com/courses/1379402
Lectures & Handouts
Mar 28, 2024 - Principal Component Analysis (& the curious case of European genotypes)
- Today's slides
- European men, their genomes, and their geography
- The tSNE interactive visualization tool also performs PCA
- Relevant to today's lecture for his eponymous distance measure: Mahalanobis
A smattering of links on PCA:
- NBT Primer on PCA
- A PCA overview (.docx format) & the original post
- Science Signaling (more specifically, Neil R. Clark and Avi Ma’ayan!) had a nice introduction to PCA that I've reposted here (with slides)
- Python code for performing PCA yourself. This example gives a great intro to several important numerical/statistical/data mining packages in Python, including pandas and numpy.
Mar 26, 2024 - Classifiers
- Science news of the day: Surgeons Transplant Pig Kidney Into a Patient A Medical Milestone (pdf version)
- Today's slides
- A nice review explaining Support Vector Machines and k-NN classifiers
- Classifying leukemias, and a 2018 review and 2021 review of how that field has led to commercial cancer diagnostics, such as the Prosigna breast cancer diagnostic. If you're curious, the authors of the AMLALL classification paper patented their approach
- For those of you interesting in trying out classifiers on your own, here's the best stand-alone open software for do-it-yourself classifiers and data mining: Weka. There is a great introduction to using Weka in this book chapter Introducing Machine Learning Concepts with WEKA, as well as the very accessible Weka-produced book Data Mining: Practical Machine Learning Tools and Techniques.
- & to do this directly in Python, there's a really excellent library of simple, easy-to-use, classification, regression, machine learning and data mining tools called scikit-learn. I highly recommend using scikit-learn in combination with the pandas library, which makes it easy to work with large, tabular datasets. Here's a helpful pandas tutorial to get you started.
Mar 21, 2024 - Clustering II
- We'll be continuing the slides from last time
Reading:
- t-SNE and UMAP, and an intuitive explanation of the methods. BUT: here's an X thread you should read with strong criticisms and very compelling reasons against relying exclusively on these methods for drawing conclusions about your data.
- Links to various applications of t-SNE: 1, 2, 3, 4. You can run t-SNE and UMAP on the following web site.
- Links to various applications of SOMs: 1, 2, 3. You can run SOM clustering with the Open Source Clustering package with the '-s' option, or GUI option (here's the manual). (FYI, it also supports PCA). If you are not happy with Cluster's SOM function, the statistical package R also provides a package for calculating SOMs (http://cran.r-project.org/web/packages/som/index.html).
- Review of phylogenetic profiles
- Fuzzy k-means
Mar 19, 2024 - Functional Genomics & Data Mining - Clustering I
- Today's slides
- & the final problem set of the semester: Problem Set 3, due before 10PM Mar. 27, 2024. You will need the following software and datasets:
- The clustering software is available here. There is an alternative package here that you can download and install on your local computer if you prefer.
- Amino acid sequences of 1832 human proteins (Note:a few of these proteins have "U" amino acids, which indicates selenocysteine. You can count it or ignore it, your choice.)
- Human protein phylogenetic profiles. These data come from this paper.
- Human protein co-fractionation/mass spectrometry profiles. These data come from this paper.
Reading:
- Clustering
- Primer on clustering
- K-means example (.ppt)
- Here's a nice explanation of some of the various distance measures used for clustering
- B cell lymphomas
- RNA-Seq
Mar 18, 2024
- For those of you struggling with the Rosalind New Motif Discovery problem because of Meme taking too long, you can paste the input sequences + meme output into a single file and submit that through Canvas, and we'll give you credit for it.
Mar 12,14, 2024 - SPRING BREAK
- Don't forget to turn in the proposal for your course project by March 18.
Mar 7, 2024 - Genome Assembly/Mapping II
- We're finishing up the slides from last time. Note that we give short shrift to read mapping/alignment algorithms, of which there are now a very long list. Here's an interesting discussion by Lior Pachter of the major developments in that field.
- Here is an excellent explanation (now archived) of how the BWT relates to a suffix tree and enables fast read mapping to a genome
- If you want a more detailed explanation, the BWA paper more formally describes how the Burrows–Wheeler transform can be used to construct an index.
- The importance of getting mapping correct: Prominent analyses of cancer microbiomes may suffer from "major, fatal errors in the data and methods"
Supporting reading:
- Two notable advances in genome assembly: String Graphs and more recently, multiplexed De Bruijn graphs. Both have been used to assemble a fully complete human genome sequence (check out the beautiful string graph visualizations of the final assemblies, which capture gapless telomere-to-telomere assemblies for all 22 human autosomes and Chromosome X)
- k-mer-based RNA quantification offers near-optimal probabilistic RNA-seq quantification. Here's how the program kallisto works
Mar 5, 2024 - Genome Assembly - I
- Homework #3 (worth 10% of your final course grade) has been assigned on Rosalind and is due by 10:00PM March 18. In past years, we've run into problems with Rosalind timing out before Meme completes although it usually runs eventually, so be warned you may have to try it a couple of times. Meme also runs faster using the "zero to one" or "one" occurrence per sequence option, rather than the "any number of repeats" option.
- Due March 18 by email to the TA+Instructor - One to two (full) paragraphs describing your plans for a final project, along with the names of your collaborators. Please limit to no more than 3 per group, please. It's also fine to do this independently, if you prefer. (Do you have a particular skill/interest/exciting dataset you need help analyzing? We'll spend a few minutes at the start of class asking around for partners.) This assignment (planning out your project) will account for 5 points out of your 25 total points for your course project. Here are a few examples of final projects from previous years: 1 2 3 4 5 6 7 8 9. Remember that the project itself will ultimately be due one month later on April 17 (& late days can't be used for the final project.)
- Today's slides
- Regarding the difficulties finding short genes: New evidence for very short human ORFs coding for real microproteins & peptides
- Science news of the day: A compilation of advances in the last 2 years on deep learning protein structure prediction. The latest issue of Nature Biotechnology focuses extensively on new AI-guided protein engineering methods. We'll go into these methods extensively in the last portion of the course.
- Relevant to the last lecture, some definitions of sensitivity/specificity & precision/recall. Note that the gene finding community settled early on to a different definition of specificity that corresponds to the precision or PPV in other fields. Other fields define specificity as the true negative rate.
- DeBruijn Primer and Supplement
Feb 29, 2024 - Intro to Proteomics
- Guest speaker: Vy Dang, who earned her B.S. and subsequently worked in genomics at the University of Washington, Seattle, where she was a major contributor to the sequencing of the Melanesian genome before joining us at UT. Here, she has performed >2,000 mass spectrometry proteomics experiments to map brain protein-protein interactions conserved across vertebrates.
Feb 27, 2024 - NGS analysis best practices
- Guest speaker: Anna Battenhouse from the Center for Biomedical Research Support, where she maintains the Biomedical Research Computing Facility.
Feb 26, 2024 - Apologies, no office hours today. Feel free to reach out by email or attend the TA office hours this week.
Feb 22, 2024 - Hot off the presses update!
- I was poking around in recent literature after class and ran across the following bioRxiv preprint (posted 3 days ago!) bench-marking the major motif-finding algorithms. They particularly recommended DEME, Opal, and SLiMFinder. DEME and Opal seem a bit harder to access, but SLiMFinder can be run through a web server (also accessible here).
Feb 22, 2024 - Motifs
- We'll talk about motif finding today.
- Today's slides
- We're introducing methods focused on discovering position weight matrices using Gibbs Sampling, but there are interesting developments using deep neural networks too. Here's a recent review
- Wordle as an excuse to learn about information theory & entropy and sequence logos and motifs!
- NBT Primer - What are motifs?
- NBT Primer - How does motif discovery work?
- The biochemical basis of a particular motif
- Gibbs Sampling
Feb 20, 2024 - Gene finding II
- Short classes at UT will be offered starting in March in programming, bioinformatics, genome sequencing, and cryoEM
- We're finishing up the slides from last time.
- 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.
Reading:
- Re-posting this so it doesn't fall through the cracks: The current state of gene annotation
Feb 15, 2024 - Gene finding
- Happy day-after-Valentine's Day!
- Today's slides on gene finding
Problem Set 2, due before 10 PM, Feb. 26, 2024:
- Problem Set 2.
- You'll need these 3 files: State sequences, Soluble sequences, Transmembrane sequences
- A nice commentary on gene finding: Next-generation genome annotation: we still struggle to get it right
- For a few more examples of HMMs in action, here's a paper on sequencing the human genome by nanopore, which used HMMs in 3-4 different ways for polishing, contig inspection, repeat analysis and 5-methylcytosine detection. Note the use of AUGUSTUS to annotate genes, relevant to the Feb 20 lecture.
- The UCSC genome browser
- A few useful links about programming: Recommendations for "good enough" programming habits and a great Python beginners Youtube tutorial
Reading (a couple of old classics + a review + better splice site detection):
Feb 13, 2024 - HMMs II
- Happy day-before-Valentine's Day! We'll be finishing up slides from last time.
- Science news of the day: 2000 years after they were buried in lava by Mt. Vesuvius, and 275 years after they were unearthed by archeologists, the first significant portion of the Herculaneum Papyri (from a neighboring town to Pompeii) have finally been read. There are about a thousand of these scrolls, possibly thousands more still to be unearthed, in the only known intact library from the ancient world. They've been unreadable until now because they're all in the form of charred, cemented remains. The breakthrough comes from X-ray imaging the scrolls with a particle accelerator, then computationally unwrapping the layers (somewhat analogous to segmenting images in cryotomography) and sophisticated image analysis + machine learning to read the characters from the subtle differences in X-ray densities due to the ink.
- 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 just 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 8, 2024 - Hidden Markov Models
- Don't forget: Rosalind Homework #2 (worth 10% of your final course grade) is due by 10 PM February 14.
- 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)
Just 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!
Feb 6, 2024 - Biological databases
Homework #2 (worth 10% of your final course grade) has been assigned on Rosalind and is due by 10 PM February 14:
- 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 (also downloadable as a pdf file)
- 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.
Feb 1, 2024 - BLAST
- 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
- The FoldSeek paper and a link to the FoldSeek server if you want to try it out
Jan 30, 2024 - Sequence Alignment II
- We'll be finishing up slides from last time.
- Problem Set 1 clarification: for problems asking for "nucleotide frequencies", please turn in the absolute count of each nucleotide (or dinucleotide) as well as the percentages of the total
- 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 25, 2024 - 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.
- Today's slides
Problem Set I, due 10PM Feb. 5, 2024:
- 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
- There is a good discussion of the alignment algorithms and different scoring schemes here
Jan 23, 2024 - 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
- Another strong recommendation (really) to the Python newbies to download Eric Matthes's GREAT, free Python command cheat sheets that he provides to accompany his Python Crash Course book.
Jan 18, 2024 - 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. Advanced programmers can skip class!
- Today's slides.
- E. coli genome (formatted as a text file with no extra lines; updated on Jan 23 to be the version matching the slides)
- 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 24. 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 16, 2024 - 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 2024) 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 24.
- 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, synthetic biology, analysis of large-scale gene expression data, data clustering, biological pattern recognition, and gene and protein networks.
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 a number of these to help illustrate points, 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 17, 2024. 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.
The final project website is due by 10 PM April 17, 2024
- 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