生信的作用越来越大,想学的人越来越多,不管是为了以后发展,还是为了解决眼下的问题。但生信学习不是一朝一夕就可以完成的事情,也许你可以很短时间学会一个交互式软件的操作,却不能看完程序教学视频后就直接写程序。也许你可以跟着一个测序分析流程完成操作,但不懂得背后的原理,不知道什么参数需要修改,结果可以出来,却把握不住对还是错。
学习生信从来就不是一个简单的事,需要做好持久战的心理准备。
在学习时,我们都希望由浅入深的逐步深入,不断地练习和实践,这就是为什么我们需要一本书,因为书很系统。但生信发展的历史短于计算机编程的历史,如果想要一门程序设计的入门数据,每种语言都可以找到几本。但想要一个囊括生信的书,就有些难了。本身生信跨领域,需要多学科的知识,而其内部又有不少分子,都囊括了太大,包括的少又有些隔靴搔痒的感觉。
生物信息毕竟还是和生物有关,毫无生物知识其实也说不过去。那么对于初学者来说,想要进入这个领域,我觉得一开始需要重点搞清楚几个基本概念。比如,什么是基因组,什么是转录组,什么是蛋白组,什么是染色体,什么是基因,什么是基因重组,什么是进化/演化,什么是表观遗传,什么是变异,变异类型有哪些,NGS技术是什么,测序仪的工作原理是什么,DNA是如何被测出来的等这些东西。因为,你只有真正了解数据是如何来的,才能更好地明白数据该如何处理和分析,以及如何才能有效地挖掘出它背后隐含的生物知识。
细胞生物学,翟中和
当年考试时候用的书,对涉及的细胞的知识做了全方位的解释。
分子生物学,朱玉贤
当年考试时候用的书,对这本书的理解,关系都后面对生信分析的理解。比如在数据分析中的基因组比对,转录本定量,单位点突变分析,测序里的接头,UMI,Barcode等等一些概念的理解。
基因X,Lewin
包含大量的文字和精美的配图来极致详尽的解释生物学过程,唯一的缺点就是太厚。
统计学
StatQuest
生物统计学视频,包含统计学基础和生信所涉及的统计学概念,作者力图用可视化并结合有意思的例子来让统计学菜鸟尽快熟悉内部原理。
作者是国外的大神,所以他的教程是全英文,在YouTube上首发。后来国内的B站UP取得作者授权,将视频传到国内并配上了中文字幕,后边代码也是这个UP主上传的。
YouTube:
https://www.youtube.com/playlist?list=PLblh5JKOoLUJo2Q6xK4tZElbIvAACEykp
B站网址:
https://space.bilibili.com/257347536?from=search&seid=13661736885600696159
一部分R代码:https://pan.baidu.com/s/1GQXa0P0_vX_bHgrWVEmAYA 提取码:c2wk
深入浅出统计学
用大量例子来讲解统计学的一些概念,如果不习惯英语视频,可以先用这本书来熟悉。
使用Google
条件允许的话,请使用Google。在这个信息时代中信息已经足够多了,使用Google至少可以更快让你找到想要的东西,而学习生物信息,我们经常需要找东西。
那么,在有了上面这些基本的认识和目标之后,我们就可以开始了。
Linux
基因数据分析,极度不推荐在Windows下完成,有很多的工具不支持,而且不利于学习,也不利于我们对数据的理解。因此掌握Linux,特别是直接在Terminal中进行数据分析是必须的。
不过,不用太担心,我们不需要成为Linux专家。对于生物信息研究人员来说,只要了解Linux的文件系统结构,能够在Terminal中灵活运用基本的Linux命令就足够了,但vi需要掌握——我们编写程序时需要用到它。不过要达成这些目标不需要看大部头的Linux书籍——这个也是我想给所有要学习生物信息的小伙伴们提个醒,这样可以节省很多不必要花的时间,不然等你看完一大本Linux书,恐怕兴趣也都被磨得差不多了,要直奔目标。
接下来,可以继续看一下“极客学院”中那一篇“一步一步学Linux”的文章:http://wiki.jikexueyuan.com/project/learn-linux-step-by-step/
生物信息是一定离不开程序设计的
R语言实战
R语言是目前生信数据处理的主要编程语言,涵盖大量的包来处理不同的生信需求,因此对于R语言的学习必不可少。
ggplot2:数据分析与图形艺术
某种意义上讲,R吸引人们使用它的重要原因就是这个包的存在。它提供了大量的可设置的可视化操作方式,几乎可以绘制出任何用户想绘制的图形。
下面是利用ggplot2绘制的图形
廖雪峰 Python 教程
网站简洁大方,教程附带大量例子,可以使新手快速进入python的学习中。
网址:https://www.liaoxuefeng.com/wiki/1016959663602400
Python基础教程
Python 同样逐步进入生信领域,包括Pandas,Matlibplot,Biopython等库都可以方便的执行生信分析任务。同样,也包含一些机器学习包,可以用于生物信息学的工作中。
Biopython 包
一般生信分析脚本的工具集。包括核酸序列处理,NCBI,UniProt数据库操作等其他常用的生信工具。
中文教程:https://biopython-cn.readthedocs.io/zh_CN/latest
英文教程:http://biopython.org/DIST/docs/tutorial/Tutorial.html
GitHub:https://github.com/biopython/biopython
pandas 包
用于分析结构化数据的python包,包括对数据去空值,统计值计算,添加,删除,插入,修改,提取等等操作。由于底层基于C,所以可以处理大型文件而且具有很快的分析速度。
英文教程:
https://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html
Matlibplot 包
其实就是在python环境中的MATLAB (科学制图里大神级的软件),而且和它语法结构和用法大致相同。
相当于上边提到的ggplot2,只是一个运行与R环境一个是Python环境里的可视化工具包,这两款看个人喜好来学习一个,另一个了解就好。
英文教程:https://matplotlib.org/
生物信息的工具众多,不过数据分析过程中常用的工具和软件还是可以列出来的,主要是:bwa,samtools,picard,GATK,bedtools,bcftools,vcftools,FastQC,MultiQC,VEP这些。基本都是在构造如WGS、WES这类分析流程的时候需要被用到的。另外,还有关于GWAS的一系列分析工具等,这些其实可以根据后续的具体项目逐步深入。除了工具之外,基本的数据文件格式也必须认识,比如:Fasta,Fastq,BAM,gff,vcf等,我在下文中推荐的《Bioinformatics Data Skills》那本书里面就系统讲了诸多在基因数据分析过程用到的工具和文件格式解析,值得一读。
实践
实践是必须的,如果没条件的话可以到Rosalind:http://rosalind.info/problems/locations/ 这个网站上做些训练题,这上面有着很多有意义的生物信息题目,从易到难的都有,涵盖的面也比较广(包括RNA,DNA,蛋白),值得一战。另外要积极寻找到大型基因科技公司(比如华大基因)或者基因研究所实习的机会,如果是在校学生有可能的话应该争取到海外顶级机构留学。
一些有趣的实操项目
Python + 生物信息 01 :从零认识基因序列
https://zhuanlan.zhihu.com/p/54599121
Python + 生物信息 02 :Biopython 分析序列
https://zhuanlan.zhihu.com/p/49606799
Python + 生物信息 03 :用Python操作NCBI
https://zhuanlan.zhihu.com/p/54609662
Python + 生物信息 04 :批量下载基因与文献
https://zhuanlan.zhihu.com/p/54611852
生物信息之多序列比对,进化树分析,保守位点分析
https://zhuanlan.zhihu.com/p/36598434
R 生信数据可视化 01 | 聚类热图
R 数据可视化 02 | 火山图
构建一个流程,要敢于造轮子
在掌握了Linux和编程知识之后,建议利用公开的数据构造一个完整的数据分析流程,比如全基因组数据分析流程或者复现一个项目的全过程。现在最好的一个公开数据来自Genome in a bottle(GIAB):http://jimb.stanford.edu/giab/ 。你可以用这个数据参考GATK的最佳实践或者不久前我写的一个“从零开始完整学习全基因组数据分析系列”的文章,构造一个WGS数据分析流程。需要注意的是,你在构建、复现甚至重造的时候,要尝试去理解各个环节的意义,不要只是机械地将一个分析过程串接起来,因为你的目的是学习,碰到问题时也尽量自己解决,这样才能真正掌握它。
数理知识
生物信息离不开数学,准确地说是离不开统计学。有太多的数据分析都需要统计学知识的参与,包括常用的假设检验,贝叶斯推断、随机森林,SVM,回归分析,PCA等。因此,在你获得初步的基因数据处理能力之后,更进一步应该做的就是加强这方面的知识。
多看优秀的组学算法
站在巨人的肩膀上才能看得更远。生物信息领域有一个比较突出的特点,就是绝大多数的东西都是开源的,因此很多优秀的算法和程序你都能够在github上直接找到,比如,比对软件bwa和后缀树算法,Smith-waterman局部比对算法;基因组组装软件SOAPdenovo2的de Bruijn graph;变异检测GATK、freebayse、Platypus应用到的贝叶斯、最大似然、EM、Pair-HMM和高斯混合模型等;变异注释工具VEP,GWAS的一系列方法等。特别是GATK,它的文档写的很优秀,因此值得多泡在它的一系列文档中。通过学习它们的源码,不但可以精进你的编程能力、算法设计能力,更重要的是还能让你深刻理解诸多组学数据分析的奥秘!这会在不知不觉中提升你对基因数据的理解,就如同维纳斯的面纱在你面前一点点被揭开了一样,有种豁然开朗的感觉,你不再觉得那堆东西很神秘了。
不要固步自封
最后,一定要紧跟前沿。生物信息学以及现在的基因组学,知识的更新迭代可谓一日千里,可能半年不留神就会落后,所以平时一定要多看前沿的文章成果。但那么多杂志应该看哪些呢?我的建议是直接看最顶级的CNNS(Cell,Nature,NEJM,Science)杂志,如果时间不够用那么更加不必看其它的,原因有三个: