FREE · OPEN SOURCE · NO BIOLOGY REQUIRED
AI for Science, explained for programmers
Not a biology course. A data course that happens to be about molecules — an antibody is four strings, target normalisation is foreign-key resolution, and QC is just writing assertions.
The full course is currently written in Chinese. This page is the English
overview: what the course covers, why it is structured the way it is, and the
handful of ideas that transfer regardless of which language you read it in.
An English translation is planned. If you want it, say so in
an issue —
that is how it gets prioritised.
The premise
Biology is not hard because it is complicated. It is hard because every introduction assumes you already have the vocabulary. So this course never explains a biological concept on its own terms first — it maps it onto something you already know, and only then tells you what it means biologically.
| Biology | What you already know | Why the mapping holds |
|---|---|---|
| Protein sequence | string | Literally a string over a 20-letter alphabet |
| Antibody | object holding 4 strings | 2 heavy chains + 2 light chains |
| Variable / constant region | instance fields / shared class members | The variable part differs per antibody; the constant part carries no distinguishing information |
| CDR | the few substrings that decide behaviour | Six short loops that determine what the antibody binds |
| KD (affinity) | float on a log scale, lower is better | Read it like p99 latency: only the order of magnitude matters |
| UniProt accession | primary key / UUID | Globally unique and stable |
| Protein aliases, CD numbers | display names — they collide | PD-1 = PDCD1 = CD279, but CCR4 is also recorded as an alias of a different gene |
| IMGT / Kabat / Chothia | competing schema versions | Historical debt; each carves different field boundaries out of the same sequence |
| Cross-source validation | you cannot verify a source with itself | Checking a result with the source that produced it is circular reasoning |
| QC flags | a known-issues list | An all-clear QC report is the suspicious outcome, not the good one |
Every data problem in this field is one you have already met in software engineering. What you are missing is the vocabulary, not the ability.
What the course covers
| Session | Topic | |
|---|---|---|
| S1 | Molecules as data types: sequences, chains, variable regions, CDRs | → |
| S2 | Binding: antigen vs epitope vs paratope, KD, and how it is measured | → |
| S3 | Formats and identifiers: FASTA, PDB, UniProt, numbering schemes | → |
| S4 | Hands-on: open one real record, then health-check a whole dataset | → |
| S5 | What AI actually does here — and precisely where AlphaFold stops | → |
| S6 | Data engineering: four layers, and five failures that really happened | → |
| S7 | Quality and falsification — reproduce every bug yourself | → |
| S8 | Judgement: acceptance criteria, ten questions, red flags | → |
Three things that transfer, whatever language you read
1. You cannot validate a source with itself
Normalising gene names with UniProt and then checking the result with UniProt is circular reasoning. You need a second, independent authority — HGNC, in this case — and you only accept records where both agree.
This is exactly the rule you already follow when writing tests: an assertion must not be derived from the logic under test. In Lab 4 you run both APIs live and watch them disagree.
2. A field name means whatever the pipeline that produced it meant
PDB chain IDs carry no semantics — they are chosen by whoever deposited the
structure. In 5B8C, the heavy chains are B/E/H/K and the light
chains are A/D/G/J. Any code that assumes H means heavy chain
silently computes the wrong epitope.
The general form: a column called Hchain is somebody's
judgement call, not a fact read off the file. You are entitled to ask how
that judgement was made.
3. A dataset with no known defects is the suspicious one
Real curated data always has ambiguity codes, partial chains, missing provenance. A QC report that is entirely green usually means the QC was shallow, not that the data is perfect. Ask for the defect list; be wary of anyone who cannot produce one.
How this material is maintained
Every factual claim in this course was re-verified against primary sources before publication — database REST APIs, the original numbering-scheme papers, and the structures themselves. That pass found and corrected fourteen errors in the first version, including one in the very table that this site uses as its flagship example.
Two of them are worth naming here, because they are the kind of thing that gets copied around unexamined:
- Kabat and Chothia define CDR-H3 identically. The widely repeated claim that all three schemes carve different H3 boundaries is wrong; the differences are in H1 and L1.
- VHH nanobodies come from camelids only. Shark single-domain antibodies are VNAR, derived from IgNAR — a separate evolutionary origin, not a kind of VHH.
Because a course about verifying other people's data has no business hiding its own corrections. The whole method is on GitHub; if you find an error, open an issue and it gets fixed in public.