DAY 1 · S4 · 下午 60 分钟
动手:把今天学的跑一遍
所有实验都在真实数据上跑,不是玩具样例。
今天学的三节全是概念。这一节把它们落到真实数据上—— 如果你能在一条真实记录里逐个指出 S1–S3 的每个概念,Day 1 就算过了。
LAB 1 · 打开一条真实记录
$ python labs/lab1_read_one_record.py
脚本会打印一条抗体记录的所有字段:VH/VL 序列、三套编号下的 CDR、 PDB 号与链标识、表位残基、溯源链接。
你要做的事:对照 S1–S3 的每个概念,逐个在输出里找到它。 找不到的概念就回去重看那一段。
重点看这三处:
① IMGT / Kabat / Chothia 三行 —— 同一条序列,三套编号切出的 CDR 完全不同(S3.2)
② VH_sequence vs VH_full_chain —— 切掉恒定区前后的差别(S1.3)
③ Epitope 那一列 —— 一串残基编号,Day 2 你会亲手把它算出来
LAB 2 · 给数据做体检
$ python labs/lab2_data_checkup.py
这就是 SELECT COUNT(*) ... GROUP BY,只不过字段名是生物术语。
它回答四个问题,每个都对应你已经会问的一个数据库问题:
| 体检项 | 你熟悉的版本 | 为什么要看 |
|---|---|---|
| 总行数 / 独立靶点数 | COUNT(*) / COUNT(DISTINCT fk) | 外键基数太低 = 数据集中在少数几个靶点上,泛化会很差 |
| 按证据等级分层 | GROUP BY confidence_tier | 最重要的一项。总数好看但全堆在最低等级,等于没有 |
| 各字段填充率 | COUNT(col) / COUNT(*) | 关键列(如表位)填充率通常远低于你的预期,先知道再规划 |
| QC 标记分布 | GROUP BY qc_flag | 真实数据一定有瑕疵。全是 OK 反而说明质检没做到位 |
这一步要养成的习惯
拿到任何一份陌生数据, 先做这四项再看内容。它们花不了五分钟, 但能立刻告诉你这份数据是「有 3 万行」还是「有 3 万行其中 2.4 万行没有可用标签」。
Day 1 收尾:花 2 分钟做这件事
打开 rcsb.org/3d-view/5B8C
(人 PD-1 与一个抗体的真实复合物),用鼠标转一转,
找到抗体尖端贴在 PD-1 上的那个地方。
那里就是表位和互补位。这 2 分钟比读十页文字管用——
概念从此就有了实物对应。
Day 1 检验
15 题,覆盖 S1–S3。12 题以上可以进 Day 2;不到 10 题建议回头重看。