Capstone Project: Secondary Structure Prediction

Note

Sources for this page: the project brief and grading rubric are adapted from slides/Secondary_structure_prediction_project_2025.pdf (Arne’s own assignment text, reused directly since it’s this course’s own material, not an external source); the dataset structure below was verified by downloading and inspecting the real training data linked below (1,200 real entries, three file formats, checked directly — not assumed from a folder name).

TipTertiary structure

Why are tertiary structures selfish? Because the amino acids are all wrapped up in themselves.

Framing

This project is not a new topic. It’s the same problem posed descriptively on Session 6, using the tools built up from Session 5 (profiles) through Session 12 (AlphaFold): design, train, and evaluate your own secondary-structure predictor. There is no single correct architecture — part of the assignment is deciding how to build the model yourself, informed by what the course covered (a linear/profile score → a perceptron → a hidden layer → a proper PyTorch model → convolutions → recurrence → attention) and by your own reading of the literature.

The task

You are given real protein data and asked to predict, for every residue, one of three secondary-structure classes: H (helix), E (strand), or C (coil) — exactly the three-class problem Session 7 and Session 9 introduced with Rost & Sander’s PHD method as the historical example. Your model should be able to use both of the input representations provided (raw sequence and PSSM profile) — comparing what each one buys you is itself a natural thing to report on.

Training data

A real, verified dataset of 1,200 protein domains, provided as three parallel folders sharing the same base filename per entry:

dataset/
├── fasta/   # 1,200 files — plain amino-acid sequence, FASTA format
├── dssp/    # 1,200 files — per-residue H/E/C label string (DSSP-derived)
└── pssm/    # 1,200 files — CSV, one row per residue, one column per
             # amino acid (order: A,R,N,D,C,Q,E,G,H,I,L,K,M,F,P,S,T,W,Y,V),
             # values are the position-specific scoring matrix's
             # weighted observed percentages

Example entry (d1g2ra_): a 96-residue domain, its FASTA sequence, a DSSP label string of matching length (CCCCCC...HHHHHHHHHH...), and a 96-row × 20-column PSSM CSV — all three files verified to correspond to the same protein.

Download the dataset (Google Drive — dataset.zip, ~3 MB, 1,200 entries × 3 formats).

Deliverables

  1. A public Colab notebook containing the code that produces your results — reproducibility (does it actually rerun and reproduce your numbers, with a fixed random seed) is graded explicitly.
  2. A short written report as a single PDF, structured as a research paper: introduction, materials/methods, results, conclusion/discussion, supplementary material if needed. Maximum 1000 words (including supplementary). The results section must include:
    • Your predictor’s performance (accuracy, MCC, and similar metrics — the same evaluation toolkit Session 8 introduced), with training and validation loss curves.
    • At least one ablation study — how performance changes when you vary something about the model (regularization, dropout, which input features you use, number of layers, …).
  3. An oral presentation of your code to a teaching assistant (~15 minutes: 10 minutes walking through your model architecture and training procedure in your own notebook, 5 minutes of questions), focused on the deep-learning part of your work, not slides about the biology. You must be able to explain every part of the code you hand in.

This is not an exam — look up papers, discuss with peers, revisit earlier labs and notes. Just don’t plagiarize; reports are checked with plagiarism software.

Grading

Report — 50%:

Criterion Weight What it means
Format and coherence 10% Clear intro/methods/results/discussion structure; stays within 1000 words
Answered all required elements 30% Every point above is addressed, with figures and accompanying written explanation
Critical thinking / discussion 30% Reasoning about your results, whatever they turned out to be — a honest, well-argued negative result can score well here
Figures 15% Legible, referenced in the main text (no stand-alone figures), captions written as complete, self-contained sentences
Overall impression 15% Understanding of the assignment and effort put in; answering beyond the minimum can help here

Code presentation — 50%:

Criterion Weight What it means
Reproducibility 30% We rerun your notebook and get your reported numbers back — fix your random seeds
Documentation 20% Comments throughout, functions/methods explained
Explanation of the code 50% You walk through your own code live and answer follow-up questions about it — tests understanding, not just working code

Timeline

The project has three scheduled sessions; the dates and rooms are in the schedule on Canvas.

  1. Introduction, in the week of Sessions 7-9, once you have seen secondary-structure prediction (Session 7) and how to evaluate a classifier (Session 8). We go through the task, the data and the grading, and you can start right away.
  2. Help with the project, in the last week of teaching. Bring your notebook and your questions: the teachers and teaching assistants are there to help you get unstuck.
  3. Oral presentations of the code, after the exam. Each of you presents to a teaching assistant, as described under Deliverables. The notebook and the report are due a few days later.

Resources

  • The dataset above, and the exam archive on the course schedule page — past exams are useful practice for the kind of reasoning this project also expects, even though this project itself isn’t exam-style.
  • Every day’s own page and notebook, Session 5 through Session 12 in particular — this project deliberately doesn’t introduce anything new.

What’s next

There isn’t a Session 14 — this project is the course’s closing synthesis, not a new topic to teach toward.