专栏名称: 生信菜鸟团
生信菜鸟团荣誉归来,让所有想分析生物信息学数据的小伙伴找到归属,你值得拥有!
目录
相关文章推荐
生物学霸  ·  顶尖科学家被曝上百篇论文造假,183 ... ·  2 天前  
生信人  ·  肿瘤分析新手学习贴 ·  3 天前  
生信人  ·  疾病最近研究的标杆产品,冲击二区神器 ·  3 天前  
生物学霸  ·  张向阳课题组诚聘科研助理 ·  4 天前  
BioArt  ·  ​ Science | ... ·  5 天前  
51好读  ›  专栏  ›  生信菜鸟团

读《数据科学中的并行计算》

生信菜鸟团  · 公众号  · 生物  · 2024-10-13 20:23

正文


跟着运来兄搭建自己的生物信息小书房。趁年轻,读几本硬书,到老了慢慢反刍。

这是生信书房专栏的第56本推荐。前一期我们读的是饶毅老师的《生物学概念与途径》,相当于是一门生物学历史课,史以名鉴,知得失、兴替、进退、攻守之势。关于历史,史学界有两句名言:

  • 我们从历史中学到的唯一教训就是:我们从来不会从历史中学到教训。这句来自德国哲学家黑格尔。
  • 一切历史都是当代史。这句来自意大利学者克罗齐。

这两句浓缩成一句话,就是:活在当下。

在做这一期生信书房的选题时,我又滑了滑之前的55本书,发现与编程有关的书的比例有点失调地低,大部分是生物学的。比如上上一期是:读《中国生物信息学2035发展战略》。在书架旁边,盘旋良久,看着吃灰良久的编程纸张,不知从何下手。

本来应景今年诺奖应该读一读凯德·梅茨的《深度学习革命》,虽然也是偏历史一些,这个好歹也某瓣评分8.4,但是我们今天还是谈一下与编程有关的吧。

关于编程的书籍,这里陈列的有:

  • R和Python这两类是最多的
  • Perl大小骆驼和羊驼系列
  • MySQL零星的几本
  • Shell 编程,Linux和Window Powershell
  • C/C++零星的几本
  • Java 零星的几本
  • Go语言实战
  • 类似《编程珠玑》的好几本。

很久没有翻开它们了,如今再看,甚至想不起来它们什么时候以及为什么在那里了,就像接下来将要介绍的这本:《数据科学中的并行计算:以R,C++和CUDA为例》。打开扉页,里面居然连当时拆封时的签名都没有,要不是里面还有我歪歪斜斜画的线条和零星的批注,这和新书没什么区别。尽管这本书第一版是2014年的,距今已有十年了(中文翻译本出版是2017年的)。

所以这里有必要友情提醒一下,以下内容可能会有些“过时”。

再次翻开这本尘封已久的书籍,在快速浏览和使劲回忆的过程中,让我想起自己生信学习之路。这条路基本上是以阅读和实际应用为主线的,读书和抄书作为主要的学习手段,抄过的如《R语言数据科学》、《ggplot2数据分析与图形艺术》、《数量生态学:R语言应用》、《网络数据的统计分析》等。

高尔基曾经曰过:书籍是人类进步的阶梯。

据此我归纳出一个:阶梯阅读法:就是隔段时间就要读几本自己读起来有点困难的书籍。找到这类书也是一门艺术,它刚好是你跳一跳看得到,能够望其项背而又不会望尘莫及的。就像入门R语言的《R语言编程艺术》、Python的《Python面向对象编程指南》、Perl语言的《Perl进阶》,就会给初学者以更上一层楼的快感。

这种快感随着学习的精进和年龄的增长,越来越稀有而难能可贵。

今天的这本《数据科学中的并行计算:以R,C++和CUDA为例》也是这一类书籍。还记得当时在写单细胞流程过程中,由于项目太多,计算量大,经常跑超内存,于是开始寻找并行的方法。最开始是自己阅读,查阅,编写岌岌可危、勉强运行的并行代码。后来Seurat给出了它的基于future并行参考文档:https://satijalab.org/seurat/archive/v4.3/future_vignette,再后来有了用于分析大规模单细胞数据的BPCell:https://satijalab.org/seurat/articles/seurat5_bpcells_interaction_vignette,当然还有基于pythonscanpy

虽然官方文档越来越详细,但是自己把for替换foreach时带来的效率提升和第一次在R中引入 .Call()时的得意忘形,还历历在目。要知道我虽然买过C++的书,但是没有上过一节相关的课程啊,甚至这书也没翻过。

这本书除了在我迷茫的时候,给予陪伴之外,还有一个非常吸引人,回过头来看甚有前瞻性的观点:R+X,X代表另一种语言。那时候草草读过,回首这几年的经历和R语言本身的发展,数据科学的发展确实是在朝着R+X的模式发展,这里的X可能是Python、C/C++、Go等。

为什么R需要加X,是R语言本身有什么限制,还是数据科学本身发展太快,抑或是二者兼而有之?这个问题值得我们思考。这本《数据科学中的并行计算:以R,C++和CUDA为例》,虽然没有告诉我们为什么,但是向我们描述了怎么做,特别是在并行计算这方面。在这个过程中,也让我们体会到了,在一个项目中发挥不同语言优势的新境界。

这次聊到这里,愿你能有从书中读出黄金屋和颜如玉的幸运。