免费 · 开源 · 无需生物背景
程序员两天学会看懂
AI for Science 的数据
不讲生物学,讲数据。抗体是 4 条字符串组成的对象,靶点归一化是外键解析,数据质检是写断言——这个领域的每个问题,你都在软件工程里见过。
先看这段:5 分钟讲清这门课在讲什么
如果你只有五分钟,看完这段就知道这门课值不值得学下去。
这门课的全部主张,就是下面这张表
生物概念难,不是因为它复杂,是因为讲的人默认你有背景。 把它翻译成你已经懂的东西,难度就塌了。
| 生物侧 | 你已经懂的东西 | 对应关系为什么成立 |
|---|---|---|
| 蛋白质序列 | string | 真的就是个字符串,字符集只有 20 个字母 |
| 抗体 | 4 条 string 组成的复合对象 | 2 重链 + 2 轻链 |
| 可变区 / 恒定区 | 实例字段 / 类的公共部分 | 可变区每个都不同,恒定区同类共享 |
| CDR | 决定行为的那几个关键子串 | 6 段,占比很小但决定「抓谁」 |
| KD 亲和力 | float,对数刻度,越小越好 | 像读 p99 延迟:只看数量级 |
| UniProt 登录号 | 主键 / UUID | 全球唯一且稳定 |
| 蛋白别名 / CD 号 | alias,会撞 | PD-1=PDCD1=CD279;而 CCR4 同时是另一个基因的别名 |
| IMGT / Kabat / Chothia | 三套并存的 schema 版本 | 历史债,切出的字段边界不同 |
| 序列级去重 | 按内容 hash 去重 | 名字会变,内容不会 |
| 证据分级 | 数据血缘 + 置信度分层 | 每条记录标明「凭什么」 |
| 交叉源验证 | 不能自证,要用独立源 | 用产出结果的源检查结果 = 循环论证 |
| QC_flags | 已知缺陷清单 | 全 OK 反而可疑 |
这个领域的所有数据问题,你都在软件工程里见过。 缺的不是能力,是词汇表。完整版对照表在术语表。
两天,八节课
Day 1 建立概念骨架,Day 2 建立判断力。每节都配可运行实验和当堂自测。
和别的入门材料有什么不同
① 讲的是踩过的坑,不是教科书结论
课程里的每个例子都来自一次真实的数据工程踩坑,而不是从综述里抄的。 比如这一条——同一批原始数据,用朴素方法能「做」出六万多条配对, 其中八成经不起推敲:
| 坑 | 发生了什么 | 你熟悉的版本 |
|---|---|---|
| 关键词共现噪声 | 数据库自带的「靶点」字段其实是关键词共现,一条记录能列 100+ 个基因别名 | 把 full-text search 的 结果当成结构化字段用 |
| 别名子串假阳性 | HER2 的别名 neu 命中了 neuraminidase;PD-1 的基因全名是 PD-L1 基因全名的前缀 |
正则没加 \b 词边界 + 没做最长匹配消歧 |
| 主流靶点被归错 | CCR4 被另一个基因的同名别名劫持,而它本身是一个真实药物靶点 | 外键解析用了 会冲突的 alias |
这三个坑的共同点:数据表面完全正常——字段齐、格式对、条数够。 只有主动去证伪才能发现。S7 会让你把每一个都亲手跑出来。
② 每个概念都配一个能跑的实验
不是伪代码,是六个可以直接 python labs/xxx.py 的脚本。
比如 Lab 4 会同时问 HGNC 和 UniProt 同一个问题,把冲突现场打出来:
输入 HGNC UniProt-A 朴素 UniProt-B 严谨 CCR4 CCR4 CCR4 P51679 [Homo sapiens] NOCT Q9UK39 ← 别名劫持 HER2 ERBB2 GTF1 P53260 [Saccharomyces] ERBB2 P04626 ← 跨物种泄漏 PD-1 PDCD1 PD-1 Q9UMF3 [Homo sapiens] (查不到) OX40 TNFRSF4 - O02764 [Oryctolagus] (查不到) ← 兔子同源
两种查法都「合理」,却以不同方式翻车——一种把 HER2 认成酵母基因, 另一种把 CCR4 认成另一个蛋白。跑完这个实验, 「不能自证」就不再是一句方法论口号,而是你亲眼见过的一次翻车。 → 全部 6 个实验
③ 目标是判断力,不是让你去建模
这门课不教你训模型。它要解决的是另一个更常见的问题: 当有人拿着一份科学数据集或一个 AI4S 项目来找你,你怎么判断真假好坏。
学完你应该能在 5 分钟内做出初步判断,并问出三个让对方答不上来的问题。 S8 直接给你那份清单。
常见问题
什么是 AI for Science(AI4S)?
用机器学习方法解决自然科学问题:从蛋白质序列预测三维结构、预测分子间结合强度、 从头设计蛋白质,等等。它和通用 AI 最大的区别是——数据来自真实实验, 获取成本极高、总量极小。所以在这个领域,数据质量往往比模型选择更决定成败。
没有生物学基础的程序员能学吗?
可以,这门课的设计前提就是零生物背景。所有生物概念都先映射到一个你已经熟悉的编程概念, 再讲它在生物上的含义。只要会写 Python 就能跟完。
学完能做什么?
能读懂一份抗原-抗体数据集的每一列、能判断一份数据是否可信、 能对这类项目做出初步判断并问出关键问题。它的目标是判断力,不是让你自己去建模。
课程要花多少钱?
免费。全部内容和 6 个实验的源码都在 GitHub 上开放, 内容 CC BY-SA 4.0,代码 MIT。发现错误欢迎提 issue。