本系列是我两年前问自己的一个问题的答案:"当我开始接触生物信息学时,我最想读哪本书?"当我开始从事这个领域的工作时,我已经具备了Python和R的编程经验,但其他方面的知识较少。我曾经寻找过一本优秀的生物信息学入门书籍,虽然我找到了一些不错的书籍,但大多数并未针对我作为生物信息学家的日常工作。找到的几本书从理论和算法的角度探讨了生物信息学,涉及了像Smith-Waterman比对、系统发育重建、基序寻找等话题。虽然这些内容很有趣(我也推荐大家深入探索这些材料),但我在日常工作中并不需要从头实现生物信息学算法,因为这些算法的许多优秀、经过优化且经过充分测试的实现已经存在。其他一些生物信息学书籍则采取了更实用的方法,指导读者如何一步步完成运行比对工具或从数据库下载序列等任务。虽然这些内容更符合我的工作需求,但其中很多材料已经过时。
正如你所猜到的,我找不到那本最适合"入门"的生物信息学书籍。《生物信息学数据技能》是我所寻求的书籍的版本。本书面向的读者是那些不确定如何弥合了解脚本语言与将生物信息学应用于科学问题的实践之间巨大差距的人。要弥合这个差距,必须学习数据技能------一种使用核心工具集来操作和探索在生物信息学项目中遇到的任何数据的方法。
为什么是数据技能?
数据技能是学习生物信息学的最佳方式,因为这些技能利用了经过时间验证的开源工具,这些工具依然是处理和探索不断变化的数据的最佳方式。这个方法经得起时间的考验:高通量测序的出现迅速改变了生物信息学领域,但熟练的生物信息学家依然使用这些相同的工具和技能适应新的数据。毕竟,下一代数据仍然只是数据(尽管不同,且量更多),而资深的生物信息学家具备应用这些工具解决问题的必要技能。《生物信息学数据技能》将为你提供这些核心工具的训练,帮助你培养这些至关重要的技能。
学习方法
许多刚接触生物信息学的生物学家往往将"学习生物信息学"与"学习如何运行生物信息学软件"相等同。这是一种不幸的误解,就像将"学习分子生物学"仅仅等同于"学习如何移液"一样。除了第11章中用来生成数据的几个简单例子外,本书并不涉及如何运行生物信息学软件,如比对工具、组装工具或变异调用工具。运行生物信息学软件并不复杂,不需要太多技能,也无法体现生物信息学的核心挑战。之所以没有在《生物信息学数据技能》中教授如何运行这些类型的软件,原因如下:
-
这些内容你可以自己轻松搞定。
-
这些内容会迅速过时,因为新版本的软件或全新的程序不断涌现。
-
这些软件的原始手册永远是最好的、最新的资源。
因此,本书的重点是培养生物信息学家用来探索和提取复杂、大型生物信息学数据集中的意义的技能。探索和提取数据中的信息是生物信息学研究的有趣部分。《生物信息学数据技能》的目标是教你使用计算工具和数据技能,帮助你自由探索这些大型数据集。这些数据技能会给你自由,你将能够查看任何格式、任何大小的生物信息学数据,并开始探索数据以提取生物学意义。
在整本书中,我强调以健壮和可重复的方式进行工作。我认为这两个特性------可重复性和健壮性------在现代计算工作中常常被忽视。所谓"健壮性",是指你的工作能够抵御潜在错误、干扰因素、软件漏洞以及杂乱或噪声数据的影响。相反,"脆弱"方法无法有效减少某些错误对结果的负面影响。所谓"可重复性",是指其他研究者可以重复你的工作,并得到相同的结果。要做到这一点,你的工作必须有良好的文档记录,并且你的方法、代码和数据都需要公开,以便其他研究者能够复现你的所有工作。可重复性也依赖于你的工作具有健壮性------如果在不同机器上运行的工作流程得出不同的结果,那么它既不健壮,也不具备完全的可重复性。第2章会详细介绍这些概念,之后这些主题会在全书中反复出现。
为什么本系列专注于测序数据
生物信息学是一个广泛的学科,涵盖了如蛋白质组学、代谢组学、结构生物信息学、比较基因组学、机器学习和图像处理等子领域。《生物信息学数据技能》主要聚焦于处理测序数据,原因有以下几点:
-
测序数据丰富:目前,没有任何其他"组学"数据能像高通量测序数据那样丰富。测序数据在生物学中的应用广泛:变异检测和基因分型、用于基因表达研究的转录组测序、蛋白质-DNA相互作用实验如ChIP-seq、甲基化研究中的亚硫酸盐测序等。随着测序数据的不断发展,其应用领域将持续扩大。
-
有利于培养数据技能:即使你未来的目标是分析其他类型的数据,测序数据也能作为很好的学习实例。学习如何处理测序数据会帮助你培养许多适用于其他数据类型的文本处理技能。
-
其他子领域更具专业性:与广泛应用的测序数据不同,蛋白质组学或高通量图像处理等生物信息学子领域则更具专业性,且应用相对较少。然而,如果你对这些领域感兴趣,《生物信息学数据技能》仍会教你一些有用的计算和数据技能,这些技能会在你的研究中有所帮助。
目标
根据我教授生物信息学的经验,想要学习生物信息学的大多数人要么是生物学家,要么是计算机科学家/程序员。生物学家希望发展必要的计算技能以分析自己的数据,而计算机科学家/程序员则希望将他们的计算技能应用于生物学问题。尽管这两组人在生物学知识和计算经验上有很大差异,但《生物信息学数据技能》涵盖的内容对两者都应有所帮助。
对于生物学家,本书将教你处理生物信息学数据所需的核心数据技能。然而,《生物信息学数据技能》并不是一本"如何做"的生物信息学书籍------这种书籍很容易过时,或者只适用于非常特定的领域。你需要将本书与对你研究和子领域的具体知识,以及现代统计和生物信息学方法相结合。例如,如果你的项目涉及将测序读取比对到参考基因组,本书不会告诉你最新的、最适合你系统的比对软件。但无论你使用哪种比对工具,你都需要理解比对格式并学会如何处理比对数据------这正是第11章所讲的内容。本书中所教授的通用计算和数据技能将为大多数生物学家提供一个坚实、广泛适用的基础。
对于计算机科学家或程序员,你可能已经熟悉本书中讨论的一些计算工具。然而,这本书会教你生物信息学家在工作中使用的具体工具、格式和方法。通过练习本书中的示例,你将获得将计算技能应用于基因组数据的良好实践。
《生物信息学数据技能》的难度
《生物信息学数据技能》旨在全面而深入地讲解生物信息学技能。在我开始写这本书时,我决定最严重的错误就是将生物信息学视为一个比实际更简单的学科。作为一名专业的生物信息学家,我经常看到如果没有发现一些微妙的问题,分析结果可能会受到严重影响。我不希望你的生物信息学工作因为我将某个主题人为简化而出现错误。本书中对各个主题的深入讲解旨在让你能够在自己的工作中发现类似问题,确保结果的健壮性。
因此,本书的某些章节可能较为高级,对于一些读者来说可能较为困难,但不要灰心!就像大多数科学材料一样,这些内容可能需要反复阅读才能完全理解。在本书中,我会指明哪些章节特别高级,你可以跳过这些章节,稍后再回过头来学习。
本系列的假设前提
《生物信息学数据技能》是一本面向中级读者的书。为了确保大家从同一起点开始,本书从几个简单的章节开始。在第2章,我将介绍如何设置一个生物信息学项目,在第3章,我将讲解一些基础的Unix知识,以确保你掌握Unix操作系统(因为Unix在后面的章节中会频繁使用)。然而,作为一本中级书籍,我对你做出了以下假设:
-
你懂得一门脚本语言(如Python、Perl或Ruby)。
-
你能使用文本编辑器(如Emacs、Vim、Sublime Text)。
-
你具备基本的Unix命令行技能。
-
你具备基本的生物学知识。
-
你理解正则表达式。
-
你知道如何获取帮助和阅读文档。
-
你能够管理你的计算机系统(或有系统管理员提供支持)。