美文网首页Bioinformatics生物信息学与算法
【分享】如何自学入门生物信息学

【分享】如何自学入门生物信息学

作者: 王诗翔 | 来源:发表于2017-12-15 23:50 被阅读216次

如何自学入门生物信息学

虽然不想立flag,但这的确是我想要学习的方向。谢谢好文~

ps:那些投诉这篇文章的人,你们是狗屎吧


前几天在知乎上,我看到了这么一个问题“如何自学生物信息学?”,看了一圈回答后,发现很多答主自己也是初学者,可能还在摸索中,回答也并没有真正抓到重点。作为一个过来人,觉得这个问题其实还挺重要的,相信也困扰着不少人,因此在这里我想尝试回答一下这个问题。

什么是生物信息学

生物信息学与以往的传统生物学不同,它本身是一个混合体,而且从今天看来它应当还要包含现在的NGS和基因组学。而且我觉得,它重在数据,因此在这个领域中比较重要的是数学和计算机(计算机我指的是:编程能力和算法设计能力)。这是我的切身体会,许多生物知识其实可以往后慢慢学,不必一开始花费大量时间补充生物知识。

但生物信息毕竟还是和生物有关,毫无生物知识其实也说不过去。对于初学者来说,想要进入这个领域,我觉得一开始需要重点搞清楚一些基本概念。比如,什么是基因组,什么是染色体,什么是基因,什么是染色体重组,什么是演化,什么是转录组,什么是蛋白组,什么是表观遗传,什么是变异,变异类型有哪些,NGS技术是什么,测序仪的工作原理是什么,DNA是如何被测出来的等这些东西。因为,你只有真正了解数据是如何来的,才能更好地明白数据该如何处理和质控,以及如何挖掘出它背后隐含的生物知识。

至于分子生物学中诸多涉及细胞机制机理的知识我觉得在刚开始的时候反而可以不用太担心。我本来是学物理的,做生物信息可以说是半路出家,但其实没觉得有什么障碍。推荐大家买本《基因X》(以前是《基因8》)屯着——一本有厚度的基因必读书,作为参考书,没事的时候可以多翻翻。

此外,我觉得尽量避免去看生物信息学导论那类书,很多都太旧了,用处不大是一个方面,关键是还会浪费不少时间。

好奇心、兴趣和目标

这应该是促进我们学习的第一要素。所谓,“知之者不如好之者,好之者不如乐之者”。兴趣的力量是强大的,基本上是你乐于继续下去的动力来源。如果仅是以赚钱为目的的话,那么我觉得还是另择一行吧,有很多其它更适合赚钱的领域。那么话说回来,要培养兴趣的话,我们可以先了解现在整个基因科技行业的发展情况,了解学习这些知识都可以做些什么。然后再定一个目标,完成一个具体的项目,自学最怕没有目的性,在没有他人可以指导的情况下,很容易迷失方向。但如果没条件的话,可以尝试利用现有的数据(比如:千人基因组,GIAB等)复现它们的成果,甚至构建一个分析流程也行,这样子学起来才会比较高效。

使用Google

不要用百度,如果不会翻墙就花点钱买个VPN,与时间比起来,那点钱不算什么。在这个信息时代中信息已经足够多了,使用Google至少可以更快让你找到想要的东西,学习生物信息,我们经常需要找东西。关于VPN,顺带安利一下,枫叶主机的网络加速套餐就挺不错的(是的,它叫网络加速套餐,不直接叫翻墙VPN,大家意会就好!!!),一个季度几十块60G流量,足够使用,点击下面链接注册并选择即可:https://www.fyzhuji.com/aff.php?aff=3728

在有了上面这些基本的认识和目标之后,我们就可以开始了。

Linux

基因数据分析,极度不推荐在Windows下完成,有很多的工具不支持,而且不利于学习,也不利于我们对数据的理解。因此掌握Linux,特别是直接在Terminal中进行数据分析是必须的。

不过,不用太担心,我们不需要成为Linux专家。对于生物信息研究人员来说,了解Linux的文件系统结构,并能够在Terminal中灵活运用基本的Linux命令就足够了,不过vi需要掌握——我们编写程序时需要用到它。但不需要看大部头的Linux书籍。这个也是我想给所有想学习生物信息的小伙伴们提个醒,它可以节省很多不必要花的时间,不然等你看完一大本Linux书,恐怕兴趣也都被磨得差不多了,要直奔目标。我自己用了至少8年的Linux,但是所使用的命令,合起来频度超过99%的不超过20条!基本上就是在接触生信的第一天学会的,而对于聪明如你们的人来说,相信一定可以用更短的时间融汇贯通,对于这几个命令我简单列一下(注意都是在Terminal模式下):

pwd:列出当前目录的完整路径,明确你在哪;
cd :跳转到其他目录,两个好用的cd命令,"cd -" 跳回最近一次的目录,"cd .." 退回上一层目录;
ls:列出当前目录内容,最好加上 -l -rt 参数,会更加清晰,目的是明确目录下都有什么;
mkdir:创建目录;
rm:删除文件或者目录;
mv:重命名文件或者目录;
cat:打开文本文件,内容输出到屏幕;
less -SN:打开文本文件,这个是查看文本文件更合适的方式;
head -n:查看文件前n行;
tail -n:查看文件尾n行;
wc -l:计算文本文件的行数;
”|“: 管道操作;
grep命令;
awk命令;
sed命令;
sort命令;
du -sh ./: 检查当前目录所占空间大小;
bc -l:启动Terminal下的计算器,可以在这里进行简单的数学运算,输入"quit"就可以退出;
chmod:修改文件或者目录权限;

可以继续看一下”极客学院“中那一篇”一步一步学Linux“的文章:http://wiki.jikexueyuan.com/project/learn-linux-step-by-step/,我觉得那篇博文就足够了。值得你多花些时间研究的是Linux中 “|” 管道命令的妙处。另外,掌握基本的grep,sed,awk操作。这三个命令之所以推荐是因为,它们很适合进行简单的文本操作,可以让很多工作直接快速地在命令行上完成,而不需要编写程序。比如抽取一个文本文件特定的几列信息,用awk非常简单。上面这些掌握了之后,你再学习如何利用这些命令和相关执行程序组建简单的shell任务流程,到这个阶段,Linux部分基本就OK了。至于如何在Terminal中编译程序或者安装软件包,一般都有教程,按照教程来就可以了,真碰到问题可以多Google。

至少掌握一门高级编程语言

生物信息是一定离不开程序设计的,而且你不能够只会R。我建议先学Python(不推荐Perl),它很容易上手——被称为”可执行的伪代码“,社区强大而活跃,碰到问题很容易找到解决办法。而且,支持组学数据分析的工具包也很丰富。还被誉为数据科学第一语言!不但可以进行文本处理,还可以进行统计分析,机器学习,或者作出精美的数据图等等,比起曾经的Perl真的强大很多。

在掌握了Python之后,我推荐的另一门高级语言是C(或者C++),它是难的,我之所以依然觉得有必要,是因为它可以让你具有干大事的能力。

虽然在实际的工作中Python已经足够强大,基本上可以应对项目中的各类大小事宜。但在我看来,如果你希望技术上做得更强,C一定是绕不开的,学会C/C++至少有两个好处:

让你理解机器的工作原理,理解你的程序是如何运作的。这非常有助于你以后写出更加优秀的代码;
设计高效率的算法模块,往往需要借助C/C++,而且设计出来的模块还可以很方便地包装起来用在Python中。同时,也有很多优秀的组学数据处理包是C/C++写的,特别是Bamtools和SeqAn(https://github.com/seqan/seqan)——这个包很强大——我们可以用它编写比对算法,变异检测算法等。

(Python如何调用C++)

另外,我认为R是很容易学的,这里也无意起语言之争,虽然Python比R好,但你如果有兴趣,在有了上面的基础之后,可以在很短的时间内学会。

Python教程很多!我这里推荐一下gitbook上的这个《简明Python教程》: https://www.gitbook.com/book/lenkimo/byte-of-python-chinese-edition/details 。另外,廖雪峰的也不错。

掌握常用的组学数据分析软件

生物信息的工具众多,不过数据分析过程中常用的工具和软件还是可以列出来的,主要是:bwa,samtools,picard,GATK,bedtools,bcftools,vcftools,FastQC,MultiQC,VEP这些。基本都是在构造如WGS、WES这类分析流程的时候需要被用到的。另外,还有关于GWAS的一系列分析工具等,这些其实可以根据后续的具体项目逐步深入。处理工具之外,基本数据文件格式也必须认识,我在下文中推荐的一本——《Bioinformatics Data Skills》,里面系统讲了诸多在基因数据文件和分析过程用到的工具,值得一读。

实践

”书上得来终觉浅,绝知此事要躬行“。实践是必须的,如果没条件的话可以到Rosalind:http://rosalind.info/problems/locations/ 这个网站上训练,这上面有着很多有意义的生物信息题目,从难到易的都有,涵盖的面也比较广(包括RNA,DNA,蛋白),值得一战。另外要积极寻找到大型基因科技公司(比如华大基因)或者基因研究所实习的机会。

构建一个流程

在掌握了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,还要多泡在它的一些列文档中。通过学习它们的源码,不但可以精进你的编程能力、算法设计能力,更重要的是还能让你深刻理解诸多组学数据分析的奥秘!这会在不知不觉中提升你对基因数据的理解,就如同维纳斯的面纱在你面前一步步被揭开了一样,有种豁然开朗的感觉,你不再觉得那堆东西很神秘了。

不要固步自封

最后,一定要紧跟前沿。生物信息学或者说现在的基因组学领域,知识的更新迭代可谓一日千里,半年不留神就会落后,所以平时一定要多看前沿的文章成果。同时可以多看看生物探索、奇点网这些公众号,上面每天都会报道很多关于这个领域的前沿信息,当然也别忘了请一定要多!关!注!关!注!我(认真脸)!加入一些优质的生物信息交流圈,千万不要关起门来闷头学,一定要看着外面的世界。

书和课程推荐

推荐两本基础的基因数据处理书籍,都是基于Python语言的:

  1. 来自OReilly《Bioinformatics Data Skills- Reproducible.and.Robust.Research.with.Open.Source.Tools》主要偏重工具的使用和数据文件的处理,虽然讲的不是很深入,但是作为生物信息初学者的入门书来说还是十分有价值的。
  1. 第二本是《Bioinformatics with Python Cookbook》这一本相比于第一本来说会难一些,它会侧重于一些主题性质的内容,比如群体遗传学,基因大数据等。

这两本书都有pdf电子版。感兴趣的小伙伴可以在公众号后台回复“入门书籍”这四个字就可以获得了。

最后,再推荐几个在线课程。第一个是Coursera上的一个课程:https://www.coursera.org/specializations/genomic-data-science

这是约翰霍普金斯大学组织的一个系列课程,紧扣现在主流的组学数据分析,非常适合于入门学习,是一个精品系列,需要收费的,只有7天的免费体验时间。

另外,EMBO上也搞了一个,不过我认为没有Coursera的那个系统全面,不过是免费的。https://www.ebi.ac.uk/training/online/course/embo-practical-course-analysis-high-throughput-seq

好了,最后,祝你学习快乐。

相关文章

网友评论

  • bb98180bbcf7:你的微信公众号是多少,没有找到?
    王诗翔:@青青的弯刀 解螺旋的矿工
    bb98180bbcf7:@王诗翔 我是看到那个python课程,关注公众号以后获得的,我想知道是关注哪一个的公众号
    王诗翔:@青青的弯刀 我没有公众号,之前创建过但没发东西,没空整那玩意
  • xuzhougeng:这是原文里面有npv。。和有关法律冲突
  • lxmic:很不幸,违规处理。啥情况
    王诗翔:@lxmic 可以
    lxmic:@王诗翔 直接复制了吗?我就看了一边:sweat:能分享一下给我吗?
    王诗翔:@lxmic 不知道哪个坑爹的举报了,还好我保存了内容。

本文标题:【分享】如何自学入门生物信息学

本文链接:https://www.haomeiwen.com/subject/fiujwxtx.html