生物信息分析入门全攻略

2023-05-10 14:56:27

生物信息学是生命科学研究的重大前沿领域,未来将占据生命科学研究的半壁江山。已经有越来越多的小伙伴投入到生物信息的学习中,但是入门难、深入慢、摸不到方向等都成为持续学习的拦路虎。本文根据生物信息技术大牛成长经历和华大人才培养经验总结入门攻略,带领小伙伴们全面破解生物信息学习难题。


谁可以来学

什么是生物信息学?现在已有的定义都非常宽泛,例如这个:“生物信息学利用应用数学、信息学和计算机科学的方法研究生物学的问题”。感觉好像是非生物学背景的人从事的实践。


实际上,当你真正从事生物信息工作或研究时,可能会发现你需完成的事情大致分为三类:一是开发、设计生物信息学方法和技术,构建数据库;二是用成熟的方法、技术和数据库,来研究自己的问题;三是两者结合。


由此可见,生物学背景、数学背景、计算机背景、统计学背景等,对生物信息感兴趣,有意向从事生物信息方向的工作或科研的人都可以参与生物信息学的学习。


你需要学什么

从上面关于生物信息学的定义和具体从事的实践工作,可以看出,要胜任生物信息学方面的研究或工作,需要具备以下几方面的知识:1、计算机基础知识;2、生物学基础知识;3、生物信息基础知识。


1、计算机方面,你需要掌握linux操作基础,学会Perl语言和R语言。C语言和java也是不错的编程语言。但在生物信息领域使用比较多的还是Perl和R。现在使用Python人也越来越多。


2、非生物背景的人,需要特别加强了解生物学方面的知识。系统地学习一两门生物学课程是非常必要的,同时还需要根据研究或工作需要及时补充学习相关知识。


3、生物信息方面,首先需要了解生物信息学的一些基本概念和研究内容等,这方面可以选择一两本生物信息学教材来学习;其次学习掌握测序、数据库、数据格式等基础知识,学习关于生物信息的研究领域,如全基因组、外显子、目标区域捕获等,以及生物信息的应用领域,如肿瘤筛查、产前诊断、个体化医疗等。这方面可以查看一些大牛的综述进行学习。

a) 生信基础软件(blast,blat,fastqc,blast,clustw,phylip等)
b) NGS variant calling相关软件(bwa,samtools,picard,GATK,VarScan,beagle等)
c) 基因组相关软件(velvet,SOAPdenovo2,repeatmasker, Glimmer, orthMCL等)
d) 转录组相关软件(bowtie,,trinity,tophat,cufflinks,cuffdiff,DEseq, SOAPfuse等)


初学者必读的经典书籍

导论
生物信息学陈铭主编,科学出版社
Fundamental Concepts of Bioinformatics (USA) Dan E. Krane & Michael L.Raymer (2003) Pearson Education
Post-genome Informatics Minoru Kanehisa (金久时)(2001) Oxford University Press
Introduction to Bioinformatics Teresa K. Attwood etc. (1999 ) Prentice Hall

专著
Bioinformatics: Sequence and Genome Analysis (USA) David W. Mount
Computational Molecular Biology: An Algorithmic Approach, Pavel A. Pevzner(2000) MIT Press
Statistical Analysis of Gene Expression Microarray Data Terry Speed (2003)Chapman & Hall/CRC


每天必上的Bioinformatics网站

数据库

NCBI
http://www.ncbi.nlm.nih.gov/
Ensembl
http://www.ensembl.org/
Gene Ontology
http://www.geneontology.org/

UCSC
http://genome.ucsc.edu/

Genecard

http://www.genecards.org/

UniprokUniprok

http://www.uniprot.org/


主要的生物信息学期刊网站

bioinfomatics
http://bioinformatics.oxfordjournals.org/archive/
BMC Bioinfomatics
http://www.biomedcentral.com/bmcbioinformatics/
PLoS Computational Biology
http://www.ploscompbiol.org/home.action
Nucleic Acids Research
http://nar.oxfordjournals.org/

Genome Research

http://genome.cshlp.org/

SCI-hub

http://sci-hub.org


植物

http://www.arabidopsis.org/
http://www.mirbase.org/


统计

http://stats.stackexchange.com/

http://www.biostatistic.net/portal.php


中文
http://www.plob.org/

http://www.yunbio.com/(云生物)


论坛

BioBB

http://www.bioinformatics.org/pipermail/bbb/

BioC

https://stat.ethz.ch/mailman/listinfo/bioconductor

BioPerl

http://www.bioperl.org/wiki/Mailing_lists

BioPython

http://lists.open-bio.org/pipermail/biopython/

BioRuby

http://lists.open-bio.org/pipermail/bioruby/

BioStar

http://biostar.stackexchange.com/

Blue Obelisk

http://blueobelisk.shapado.com/

CCP4 bulletin board

https://www.jiscmail.ac.uk/cgi-bin/webadmin?A0=CCP4BB

gmx-users

http://lists.gromacs.org/pipermail/gmx-users/

MetaOptimize

http://metaoptimize.com/qa/

Molecular Station

http://www.molecularstation.com/

Protocol Online

http://www.protocol-online.org/

R-help

https://stat.ethz.ch/mailman/listinfo/r-help

Stackoverflow

http://stackoverflow.com/

Stats

http://stats.stackexchange.com/

GATK Support Forum

http://gatkforums.broadinstitute.org/


其他

https://david.ncifcrf.gov/home.jsp

http://www.genome.jp/kegg/
http://www.uniprot.org/
http://www.ebi.ac.uk/
http://www.expasy.org/
SEQanswers
http://www.seqanswers.com/
BioStar
http://www.biostars.org/

(华大基因 · 2015-08-17)


如何从零开始掌握生物信息学分析



  

——自己动手为实验室研究添加灵感与动力

生物通报道:今天的世界大不同,表现在生命科学研究领域,就是一切都开始进入了大数据时代,无论是DNA序列,显微图片,还是质谱数据,研究人员都越来越需要对这些庞大的信息进行收集、整合、处理和诠释。

对于许多生物学家们来说,这并不容易完成,传统的科研培训方式主要集中于科学的基础原理和实验方法,而不是计算机编程和数据统计,因此当不少研究人员发现自己需要面对大量的数据量时,他们不知道如何处理这些问题。

目前其实也不乏现成的计算工具,而且不少都是免费的,但对于门外汉来说还是有些难。通常情况下研究人员还是需要深入了解这些界面并未友好的程序,才能运行,而这需要计算运行的深厚知识。

这就会导致研究人员在进行大数据研究的时候,不得不自己编写一些程序来进行可重复和得到证实的信息处理。然而这些过程也需要小心处理,一不留意犯错了,就有可能危及数据本身。

近期The Scientist杂志联系了几位科学程序员,了解他们所使用的工具是什么,如果是菜鸟需要进行哪些训练等。

选择一种语言

生物学家可以从各种各样的编程语言中选择一种,对于许多应用来说,随便选择一种都可以,不过目前最流行的可能就是Python 和 R。“就目前而言,这就像是科学研究的二重奏”,来自加州大学戴维斯分校的生物信息学家Vince Buffalo说,他刚完成了一本名为《生物信息学数据分析技巧》(O’Reilly Media Inc.)的新书。

Python 和 R相对来说都比较好用,但前者能完成多项任务,而后者主要针对的是统计方面的内容,两种语言都有其各自的使用用户群,因此具有特定功能预生成代码(prebuilt code)数据文库,比如以R语言为基础的Bioconductor Project (),能为显微,测序和芯片数据提供模块。另外Python 公共文库也有:Anaconda (continuum.io/downloads)。

来自华盛顿大学基因组科学系的助理教授Cole Trapnell利用R语言完成了单细胞基因组数据集的处理,“单一细胞基因组学问题牵涉到许多的统计学方面的内容,R语言很适合。”

此外,还有一种受到大家认可的语言,那就C/C++(Julia ()),这种语言特别合适用于那些相对较慢或内存密集型任务,Trapnell说。

如果能将Python的语法,R语言的图形灵敏性和C++的速度结合在一起,那就完美了,“这也就是说,这种代码很好编写,而且也很快,”来自加州大学戴维斯分校的遗传学副教授Titus Brown说,但这需要你花费大量经历掌握这些语言,他建议,可以选择你同事已经在应用的语言,这样他就能帮助你解惑。



来源:生物通 2015-8-13


经典生物信息学论文


今天的世界大不同,表现在生命科学研究领域,就是一切都开始进入了大数据时代,无论是DNA序列,显微图片,还是质谱数据,研究人员都越来越需要对这些庞大的信息进行收集、整合、处理和诠释。

近期TheScientist杂志联系了几位科学程序员,了解他们所使用的工具是什么,如果是菜鸟需要进行哪些训练等。

自动化与归档

加州大学戴维斯分校的C. Titus Brown近期在PLoS Biology杂志上发表了一篇经典论文:“Best Practices for Scientific Computing”,被不少本领域同行称为最佳软件开发实践指导指南,这篇文章不仅提到了程序运用的一个关键问题,也指出了程序员的一些基本概念,如给人写程序,而不是给计算机;只在软件能正确的工作后才可优化;文档里描述的应该是设计思路和目的,而不是技术细节等等。

其中还有一个基本准则就是让重复性的工作自动化,让一切都自动化,他说。换句话说,就是每次运行程序的时候不用手动输入参数,可以将参数输入到命令行脚本,自动执行程序。这样就能无误的操作数据,将数据从一个文件移动到另外一个文件,同时也可实现可重复性。

假设你在运行一个本地建模算法,如果需要运行10遍,那么就可以写一个shell脚本,让它自动运行10遍。最好不要用手动输入,因为你有可能会忘了运行的内容,而且也有可能会漏掉部分内容,”Brown解释道,这些脚本也需要是版本控制程序,这样你可以将其与几周前的结果进行比对。

另外一个重要的方面就是不要忘记记录一切,Slaybaugh 说,在你的代码上加上批注,告诉同事也提醒你自己相关的内容。如果你计划与你的同事共享这些代码,那么可以用一种称为“doxygen” (www.stack.nl/~dimitri/doxygen)的工具进行记录。doxygen可以根据正确注释的各种语言源代码自动创建程序档案,或者研究人员也可以使用Jupyter Project (jupyter.org, 之前称为 the IPython Project),以在线注释的方式交换代码,数据和文件(PythonR 和其它语言)。

测试你的代码

Slaybaugh 为新手程序员提出了一个建议:开发一个测试包,其组成成分就是简单的一套能确保程序按你所想的那样进行操作的函数和数据。这样当你编写好自己的程序的时候,就能确保不会改变基底的运算法则,比如引入hard-to-track bug时,你就能检测系统,看看是否能通过,她解释道,这个过程就像是使用了基准线上的阴性和阳性对照。

Buffalo则说了一个简单的例子假设你有一个函数(“add”) ,也就是加合两个数字,那么就可以设置一个“test_add”的函数来确保在程序改变的时候,2+3依然等于5

附:Best Practices for Scientific Computing文章要点(来自中国政法大学)给人写程序,而不是给计算机。
1.
一个程序,对于阅读它的人来说,不应该要求读者一次性的在大脑里加载过多的背景/相关知识。
2.
命名需要一贯、明确、有意义
3.
代码风格和格式要统一一致
4.
软件开发中的各种工作都要分割成1小时左右的任务

重复性的工作自动化。
1.
让计算机去做重复性的工作
2.
把最近使用过的命令存到一个文件里,以备复用
3.
使用编译工具来自动化系统流程

用计算机做历史记录
1.
用软件工具来自动跟踪计算机的工作

逐步改进
1.
每次做一小步,及时获得反馈,及时纠正

使用版本控制
1.
使用一个版本控制系统
2.
所有由手工创建的东西都要放到版本控制系统里

不要重复自己(或他人)
1.
系统中的每一段数据都要有一个权威的单一的存在
2.
代码应该模块化复用,而不是考来粘去
3.
复用代码,而不是重写代码

准备好对付错误的方法
1.
在程序中增加断言,检查它们的各种操作
2.
使用现成的单元测试框架
3.
测试程序时借鉴所有的可用的经验
4.
bug做成测试用例
5.
使用一个有代码指令的调试工具

只在软件能正确的工作后才可优化
1.
使用监控工具找到瓶颈
2.
尽可能的用高级语言写程序

文档里描述的应该是设计思路和目的,而不是技术细节
1.
描述接口和原因,而不是实现
2.
重构代码,而不是注释解释运行原理
3.
引用其它程序时嵌入其它程序的文档
协作
1.
代码合并前进行代码审查
2.
当帮带新成员或解决特别诡异的问题时使用结对编程
维新旧代码

来源:测序中国/千年基因 2015-08-13

友情链接

Copyright © 2023 All Rights Reserved 版权所有 福建水产设备联盟