1 AI时代,如何开始学习生物信息学
1.1 这本书希望给你什么
我希望大家通过阅读和实践,逐渐建立起自己的知识框架,理解数据从哪里来、怎样产生,每一步为什么这样处理,以及结果究竟能够支持什么结论。本书会从分析环境、必要的编程和测序技术开始,进入不同类型的数据分析,再讨论工作流、统计学和大语言模型的使用。书中的具体方法、数据与代码,可以帮助大家把这些环节联系起来,并在后续实践中继续补充自己的认识。
一本书,无论如何也不可能把生物信息学讲得面面俱到。完成一项研究涉及的实验、数据分析、绘图、写作和排版,每一项都可以继续展开。
第一次阅读时,可以先了解整本书安排了哪些内容,再选择与自己项目有关的章节认真动手。分析中遇到统计问题,回到统计学章节;需要整理多个样本的处理过程,去看工作流;想更有条理地与 AI 协作,再读第 12 章。书中没有讲到的部分,可以带着已经明确的问题,继续查资料、读文献,向别人请教,也请 AI 帮助理解和尝试。
我更希望你在换一批数据、换一种技术,甚至进入一个新的研究方向以后,还能用上在这里学到的思考方法。你知道应该先弄清楚什么,知道哪些条件需要重新检查,也知道自己下一步该补哪些知识。
1.2 AI时代,我们需要怎样学习
如果你现在准备开始学习生物信息学,可能已经列出了一长串要学的东西:Linux、Python、R、统计学、分子生物学,还有各种分析软件。每一项都很重要,每一项也都有厚厚的参考书。问题是,我们是不是必须先把这些全部学完,才能开始做一个项目?等到课程都听过一遍,又该怎样把学到的东西用起来?
在大语言模型(Large Language Model,LLM)已经能够参与日常工作的今天,我们可以重新考虑这个学习顺序。遇到一段看不懂的代码,可以请 AI 结合输入解释;需要整理一批文件,可以先把要求讲清楚,让它协助编写脚本;学习一个概念时,还可以围绕自己不理解的地方反复追问。配合能够运行程序、读写文件的工具,AI 也可以参与实际操作,并根据运行结果继续修改。1 许多过去会让初学者卡上很久的具体问题,现在多了一种解决办法。
这给学习带来的变化是,你有机会更早地进入一个实际项目。在完成任务的过程中,发现自己缺哪部分知识,就去补上,再回到任务中尝试。比如,你想比较两组样本的基因表达,AI 可以帮助写出分析代码,但你仍然需要弄清楚这两组是什么样本、表达量怎样测得、为什么能够比较,以及差异意味着什么。否则,程序即便顺利运行,你也很难知道自己究竟回答了什么问题。
因此,我希望大家在入门时就重视一件事:建立自己的知识框架,知道解决什么样的问题,需要什么样的知识。 这里说的框架,要能帮助你把问题、数据、方法和结论联系起来。看到一个新的研究问题,能够大致判断需要取得什么证据;拿到一份数据,知道它可能回答什么、还缺少什么;遇到不理解的环节,知道应该回到哪一类知识中寻找答案。具体的命令可以查,暂时不会的操作可以请 AI 协助,但这些知识之间的关系,需要在学习和实践中逐渐理清。
生物信息学的本质,是使用信息学的手段解决生物学问题。测序技术让我们可以从基因表达、遗传变异、DNA 甲基化、染色质相互作用等不同角度研究生物,也可以为没有参考基因组的物种开展基因组组装。不同实验产生的数据不同,处理方法也随之变化。R、Python 和各种分析软件,都是我们理解这些数据、回答问题时使用的工具。
我以前把生物信息学的方法比作手里的锤子,把生物学问题比作需要处理的钉子。这个比喻放到今天仍然有用。AI 可以帮助我们使用工具,也可以参与讨论应该研究什么、有哪些可能的解释。你对研究背景和数据了解得越清楚,就越容易提出有用的要求,也越容易发现它的建议与实际情况不符的地方。知识框架让我们知道该考虑什么,对具体环节的理解让我们有依据作判断。
图 1.1 把这个学习过程放在一起。遇到不理解的地方,可以回到相关知识中查找,再用当前任务检查自己的理解。
图注:箭头表示学习步骤与回查方向。AI 可以协助各个环节,检查时仍需结合原始材料、实际数据和分析目的。
1.3 从完成并发表一篇论文说起
我们可以把目标放得具体一些:完成一项研究,并把它写成一篇论文发表出来。你会发现,这件事涉及的能力远比“会做一次数据分析”多。读文献、提出问题、设计和完成实验、整理数据、写代码、分析结果、绘图、编辑图片、写文章、排版、润色,以及根据审稿意见继续修改,都可能出现在同一个项目里。
这些工作通常由不同的人协作完成,初学者也不必独自承担每一项。但如果想推动项目,就需要知道各个环节在做什么、彼此怎样衔接。我们以一个假设的研究为例:某种处理是否改变了细胞的增殖,哪些分子变化可能与这个现象有关?先不急着选软件,看看解决这个问题需要用到哪些知识。
提出问题、设计实验,决定我们能获得什么数据
首先要读懂相关文献。别人已经观察到了什么?哪些解释有证据,哪些还只是推测?我们准备研究的细胞、处理条件,与已有研究有什么关系?这一过程需要生物学背景,也需要理解一个领域的研究脉络。阅读时,可以请 AI 解释术语、整理你提供的文献,或提出值得继续查找的线索。遇到关键判断,要回到原文核对:作者实际做了什么实验,数据支持到了哪一步?
接下来要考虑怎样取得证据。比较处理前后细胞的增殖,需要选择相应的测量方法、安排对照,并考虑观察的时间。如果还希望了解基因表达变化,就要进一步考虑在哪个时间点取样、需要哪些样本,以及怎样安排重复。对照和重复的设计,会影响后面能够进行的比较,不能等数据拿到手后才开始考虑。2
做实验时,样本怎么处理、试剂和仪器是否合适、操作有没有异常,都需要结合实验知识判断,并做好记录。查资料、讨论方案和整理记录,可以请 AI 协助;分析数据时,也要结合记录,考虑实验中发生的实际情况。即使你主要负责数据分析,也应该了解数据是怎样产生的,发现结果异常时,才知道该与实验同学核对什么。
我们阅读文献、学习生物学和实验设计,是为了弄清楚这个问题为什么值得研究,以及怎样获得能够回答它的数据。
整理数据、写代码和分析结果,需要一起考虑
实验完成后,可能会得到细胞增殖的测量结果、样本信息表和测序文件。这时,文件放在哪里、样本名能否对应、处理组和对照组有没有标反,都会影响后面的工作。我们需要用命令行管理文件,用程序完成整理和批量处理;数据量较大时,还要使用服务器。原来看起来彼此独立的 Linux、编程和计算环境知识,在这里都有了用途。
有了 AI,你可以先把任务说明白:有哪些输入文件,每列代表什么,希望得到怎样的结果,再请它帮助写出代码。得到代码后,用少量数据检查一下,看看样本是否一一对应,缺失值和重复记录怎样处理,输出是否符合预期。这个过程也在训练编程能力:你开始理解一个任务怎样被拆成步骤,程序中的变量、条件判断和循环分别在处理什么。
如果进一步分析 RNA-seq 数据,就要理解怎样由测序读段得到表达定量结果,以及怎样比较两组样本。质量检查、定量和差异分析各有自己的目的,也有相应的前提。选择方法时,要把实验设计、数据特点和想回答的问题一起考虑;解释方法、组织代码和排查报错的过程中,都可以请 AI 协助。后面的 RNA-seq 章节会逐步展开这些内容。
再回到最初的问题:我们测到了细胞增殖的变化,也找到了表达发生变化的基因,这些结果之间是什么关系?仅凭两者同时出现,还不能确定某个基因导致了增殖变化。是否需要进一步实验,要看准备作出多强的结论,以及现有证据还缺什么。这时,分析已经把我们带回了生物学问题。
绘图、编辑图片和排版,都要服务于结果表达
画图以前,先想清楚希望读者看到什么:是样本之间的差异,变化的幅度,还是两个指标的关系?想清楚以后,再决定用什么图,横纵轴表示什么,需要哪些标注。绘图代码、颜色、字体和标注都可以请 AI 协助处理。图画出来后,还要检查:这张图是否忠实地表达了数据,坐标和图例会不会让读者产生误解?
如果论文中还有显微图像等实验图片,就涉及图片编辑。整理图片、添加比例尺和标注、组合多个面板,与从数值数据绘制统计图,是不同的工作。我们需要知道原始图片包含什么信息,哪些调整会影响判断,并保存原始文件。为了让图片好看而增删实验信号,会改变证据本身。3
把图放进论文时,还要考虑正文在哪里引用这张图、几个面板按什么顺序摆放、图注是否解释了必要条件,以及缩小后文字是否还能看清。把图、图注和正文放在一起,检查它们讲的是不是同一件事,读者能不能顺着读懂。AI 和相应的软件可以协助处理尺寸、格式、对齐和编号。
一个字体参数忘了,可以查;不知道这张图准备说明什么,就需要回头梳理分析目的。两种问题需要补的知识不同。
写文章、润色和回应审稿,让研究接受进一步检查
开始写文章时,我们还要把这些工作组织成别人能读懂的论述。为什么研究这个问题?已有工作留下了什么疑问?我们用了什么方法,得到什么结果,这些结果能支持怎样的解释?写方法部分,需要准确说明别人怎样重复分析;写结果部分,需要分清测到了什么与我们怎样解释;写讨论部分,则要把本次结果放回已有研究中,说明它增加了什么认识,还有什么没有解决。
起草段落、检查前后衔接、调整语言和润色英文,都可以请 AI 帮忙。核对改稿时,把数据、图表和原始文献放在手边。比如,“与细胞增殖变化相关”和“促进了细胞增殖”表达的判断就不同,润色后的句子仍然要准确对应我们的实验和分析。写不清楚的时候,也可以借机检查:究竟是表达有困难,还是研究中的某一步还没有想清楚?
投稿前,需要核对文章格式、图表编号、参考文献,以及准备提交的数据和代码。收到审稿意见后,还可能需要重新分析、补做实验、重画图片和修改论述。有的问题通过解释原有方法就能回答,有的问题需要增加证据,也有的问题会促使我们收窄原来的结论。论文就是在这些工作之间来回推进的,学习也发生在这个过程中。
一项研究从提出问题走到投稿、修改和发表,会让我们反复用到前面这些知识,也把多方面的能力放在同一个项目中训练。是否能够发表,还受到研究本身、期刊评审等因素影响;这里用它作例子,是希望大家看到,一个完整项目怎样把知识联系起来。
从 图 1.2 可以看到,一篇论文中的具体工作,需要不同知识共同参与。遇到疑问时,我们还会回到前面的环节,重新检查方法、补充证据或调整解释。
图注:实线箭头表示概括的推进顺序,虚线示意根据问题回查实验或分析;实际研究还可能在其他环节之间往返。图中的小图仅表示工作类型,不是实测结果。这些工作通常需要多人协作。
1.4 在完整项目中建立知识框架
每学一部分,都知道它在项目中的位置
如果把上面的工作拆开看,我们似乎又得到了一张很长的学习清单。但做项目时,这些知识会以具体问题的形式出现:为什么两组样本不能直接比较?这份表为什么少了几个样本?图上的差异为什么与正文的描述不一致?要解决这些问题,就需要找到它们与前后步骤的关系。
比如,同一批数据绘出的两张图,看起来却有很大的差别。可能是两次使用了不同的坐标范围,也可能是其中一次绘图前转换了单位,或对数据做了不同处理。你需要沿着图、结果表、代码和输入数据往回检查。这样追查过一遍,你会更清楚数据处理、程序实现和图形表达之间的关系,也知道下次该从哪里查起。
刚开始,知识框架可以很粗,只知道一个研究大致会经过哪些环节。随着项目推进,再逐渐填入具体概念、方法及其适用条件。你不需要等框架完整了才开始实践;恰恰是在实践中,原来不理解的概念有了用途,原来没有意识到的缺口开始显现。
所以,我建议大家每完成一部分工作,都停下来想一想:这一步解决了什么问题?用了哪些知识?下一步会用到哪些结果?可以用自己的话写一小段,也可以画出这些知识之间的联系。不要只留下“这里运行了某个软件”,还要留下为什么需要它。AI 可以帮助整理这些记录,但你应该能够结合自己的数据,把其中的关系解释清楚。
先做完一个范围明确的项目
刚入门时,可以先选择一篇文章中的一个明确问题,找到对应的数据,完成分析并复现一张主要图。把这个范围内的数据来源、处理过程和结果含义讲清楚,再逐步扩展到更多图和整项研究。完整的关键在于能够从问题走到结果,并把中间的过程说明白;项目规模可以随着能力增长。
如果 AI 帮你节省了具体操作的时间,我建议把这些时间用来检查结果、理解分析过程。代码写出来以后,多换一个输入检查;图画出来以后,多问一句这个变化还有没有其他解释;文章写完一段以后,核对一下每个判断有没有对应的数据。
这一过程中,有些知识需要先理解,再继续工作,例如处理组与对照组的含义、独立样本与重复测量的区别。另一些细节可以边做边查,例如读取文件的函数、图片导出的参数。安排学习时,要看不理解它会影响什么。会改变分析含义的地方,需要停下来弄懂;暂时记不住的操作细节,可以留下可查的记录。
换一个问题,继续使用已经学到的思考方法
完成一次项目以后,我们当然希望下一次能够用上这些经验。可以继续使用的,包括怎样明确问题、整理样本信息、选择分析方法、检查结果,以及保存代码和记录。具体采用哪一种方法,还要重新看数据和问题的条件。
例如,第一次比较的是两组不同个体,下一次比较的是同一批个体处理前后的结果。两次都叫“比较两组”,但样本之间的关系发生了变化,分析时就需要考虑这种对应关系。又如,从 RNA-seq 转向另一种测序技术,文件管理、质量检查和结果复核的经验仍然有用,但实验测到了什么、信号代表什么,要重新学习。知道哪些经验可以沿用,哪些地方必须补课,才算开始学会迁移。
你也可以请 AI 比较两个项目,把实验对象、数据来源和分析目标分别列清楚,再讨论原有方法在哪些地方仍然适用。提出这样的要求,需要你已经注意到“条件可能变了”。一次项目留下的知识框架,会帮助你在下一次更早地发现这些问题。
图 1.3 用两种样本关系说明这种迁移。明确问题、整理信息和检查结果的做法可以继续使用;样本之间的关系变了,分析方法就需要重新考虑。
图注:项目 A 的两组来自不同个体,项目 B 比较同一个体处理前后的结果,横线连接同一个体的两次观察。字母仅用于示意个体身份,不表示样本量建议或实测数据;中间的箭头表示思考环节之间的联系。
1.5 给初学者的入门建议
我曾在个人网站上分享过一些生物信息学入门建议。4 其中不少内容,今天仍然值得认真练习。结合前面讨论的学习方式,我们再来看这些基础分别有什么用,以及刚开始应该学到什么程度。
先明确目标,再安排自己的学习
你希望学习生物信息学到什么程度?能够完成一次常规分析,与能够独立推动一个项目,需要的积累有所不同。我倾向于把能力的成长分成四个层次,帮助大家判断自己眼下最需要练习什么。
- 能够完成常规分析。 熟悉成熟流程的输入、输出和基本用途,能够处理常见报错,编写或修改小脚本,完成文件整理与批量操作,并检查运行结果。
- 能够独立推动一个项目。 围绕具体问题选择数据和分析方法,安排步骤、解释结果,遇到困难时能够找到继续推进的办法,也能与合作者说明需要什么信息。
- 能够在一个方向上做出贡献。 深入理解领域中的重要问题和已有方法的局限,通过持续研究,提出有价值的问题、改进方法或获得新的认识。
- 能够开辟新的研究方向。 在长期积累的基础上,识别重要而尚未解决的问题,推动新的方法或研究领域形成。
这些层次描述的是能力,并没有适合所有人的固定年限。AI 可以帮助完成其中的很多具体工作,但我们仍然需要在项目中积累对问题、方法和证据的认识。刚开始,不妨先给自己定一个能够检查的目标:解释清楚一份测序文件,完成一次质量检查,或者复现一张有明确生物学含义的图。完成后再问,离独立推动这项研究,还缺哪些能力?
学习 Linux,从文件和命令行操作开始
在一项实际分析中,我们需要查看目录,复制、移动和重命名文件,查看文本,压缩与解压缩;随后还会查找和筛选内容,把几个处理步骤连接起来,对一批文件重复操作。学习 Linux 时,可以先围绕这些任务动手。每学一个命令,就拿小文件试一遍,观察输入和输出发生了什么变化。
我在以前的建议中提到过罗静初老师整理的《Linux 十大常用命令》《Unix 十大实用命令》《Unix 十大高级命令》。这类资料适合用来安排初期练习。《鸟哥的 Linux 私房菜》这样的系统性资料,可以放在手边作为参考,遇到权限、进程或系统配置问题,再去读相关章节。本书第 2 章也会从实际操作出发,帮助大家建立基本认识。
AI 可以解释命令,也可以帮你把几个操作写成脚本。你需要逐渐弄清楚命令处理的是哪些文件,结果写到哪里,原文件会不会改变。换成自己的数据之前,先用能够看懂的小例子试一遍。
学习使用服务器,理解任务在哪里运行
当分析需要较多数据和计算资源时,还要学习远程服务器的使用。除了连接服务器、传输文件,还包括提交任务、查看日志、判断任务是否正常运行,以及遵守共享环境的资源使用约定。开始时先提交一个小任务,弄清楚它在哪里运行、结果存在哪里、出错后到哪里查原因,再逐步处理更多样本。
我在以前的建议中特别强调过真实服务器的实践,是希望大家接触远程连接、共享资源和任务管理。本地 Linux、WSL 或虚拟机可以帮助练习命令与小规模分析;有条件以后,再到有使用权限的服务器上完成实际任务。第 2 章会介绍相应操作,多样本分析的组织可以继续参考第 10 章。
使用 AI 协助时,也要把当前环境告诉它。文件在本地还是远端,软件装在哪里,可以使用多少资源,这些信息会影响代码能否运行。报错以后把完整的报错和必要的上下文交代清楚,比只说一句“运行不了”更容易找到原因。
学习编程,用小问题检查自己是否理解
Python 是我以前推荐的入门语言,本书也会介绍 R。刚开始,可以围绕一个具体任务练习文件读写、条件判断、循环和基本数据结构。阅读代码时,试着说明每一步处理的对象;运行以后检查结果;接着更换输入或修改一个条件,看看程序的行为是否符合预期。
我曾用一个练习检验编程基础:只使用语言的基础功能,求两个 BED 文件中基因组区间的交集和并集。这个问题要求我们读入染色体与区间坐标,明确什么叫重叠,再把结果正确写出。这里要处理的是区间之间的关系,不能用两份文件中哪些整行文字相同来代替。可以先画出几个简单区间,手算结果,再用程序处理同样的例子。
今天,你很容易请 AI 帮忙写出一份代码。这个练习仍然值得做,因为你可以继续检查:不同染色体上的区间有没有被错误合并?输入为空时会发生什么?重复区间怎样处理?先把预期结果想清楚,再看代码怎样实现。读得懂以后,再自己改一处条件、补一个检查。我建议大家在借助 AI 完成任务的同时,保留这些动手练习,逐步把程序的处理过程弄明白。
R 的学习同样可以从读写表格、筛选、分组汇总和绘图开始。会调用一个函数以后,再去理解它对数据作了什么处理。语言之间有许多可以互相借鉴的概念,先围绕眼前任务把一种用起来,再根据需要扩展。
生物学和统计学,要结合正在研究的问题学习
如果你不知道一个实验测量的是什么,就很难解释分析结果。进入一个研究方向时,要补相关的生物学基础,也要读这个方向的重要文献。除了关注作者用了什么软件,还可以追问:他们为什么提出这个问题?实验能够观察到什么?采用这种比较有什么理由?对主要结果,还有没有其他解释?把这些内容逐渐理清,才能了解一个领域已经走到哪里。
统计学也有类似的问题。听过概率论与数理统计,并不意味着面对自己的数据就知道该怎样分析。实际项目会让我们遇到更具体的疑问:样本之间有多大的差异?这次比较要估计什么变化?不确定性怎样表达?方法所要求的条件是否满足?可以带着这些问题学习第 11 章,需要时再查系统性资料。
AI 可以帮助把抽象概念放进小例子里解释。听明白一个例子以后,试着换一个条件,看看自己还能不能判断。遇到与实验设计、统计推断有关的困难,也要把自己不理解的地方说清楚,与有经验的老师或合作者讨论。
选择一篇文章,把主要分析过程走一遍
对于希望进一步入门的同学,我仍然建议:在自己关心的方向,选择一篇数据和分析方法比较清楚、与今后研究有一定相似性的文章,把文章读懂,再取得相应数据,尝试重复主要分析,并把关键图真正画出来。
读懂文章,需要理解它的行文逻辑、实验设计和可能存在的不足。复现时,要弄清楚每张图使用了哪些样本,数据经过了哪些处理,作者为什么这样展示。遇到原文没有交代清楚的地方,先查补充材料、代码或数据说明,并把仍然不确定的部分记下来。
自己的结果与论文不完全一致时,需要比较数据版本、样本范围、参数及其他可能影响结果的条件。差异有多大、是否影响主要判断,都要结合具体问题解释。不能仅凭两张图看起来相似,就认为分析一定正确。走过这个过程,你会体会到从数据的产生、收集,到处理、分析,再到图表表达,中间究竟有哪些工作。
从整理一份样本表、检查一个 FASTQ 文件,或处理几个基因组区间开始。完成后,为自己留下四项记录:
- 问题与输入: 想解决什么问题,数据从哪里来,包含哪些内容?
- 步骤与依据: 做了哪些处理,为什么需要这些步骤?
- 检查与结果: 如何知道程序正常运行,结果是否符合预期?
- 解释与下一步: 结果说明了什么,还不能说明什么,接下来需要做什么?
如果使用了 AI,补充记录它帮助完成了哪些部分,以及你如何核对这些建议。把数据位置、代码、参数和说明保存在同一个项目中,让未来的自己能够重新运行并理解这次分析。项目扩大以后,也继续保留这些记录。
学习有许多条路径,这本书提供其中一条参考。尽信书不如无书,领会数据处理的方法,理解知识之间的联系,再通过项目不断修正自己的认识,比记住几段现成代码更有长远的用处。
种一棵树,最好的时间是十年前,其次,便是现在。希望在前进的路上,我们能够共勉!
Anthropic,Building effective agents。文中介绍大语言模型与检索、工具及环境反馈结合的工作方式;本章关注这些能力对学习过程的帮助,具体使用方法见第 12 章。↩︎
Conesa A, et al. A survey of best practices for RNA-seq data analysis. Genome Biology, 2016, 17:13. 原文。关于实验设计、重复与分析环节的讨论,可结合本书第 5 章继续阅读。↩︎
PLOS ONE,Figures,其中“Preparing Figures from Image Files”说明图片整理与不恰当图像修改的区别。投稿时还需查看目标期刊的具体要求。↩︎