您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > Python-for-Bioinformatics(1)---介绍
PythonforBioinformatics(1)~~介绍第一部分编程第一章介绍1.1谁应该读这本书这本书是写给那些想学习编程的生命科学研究者的,他可能对计算机编程是弱项,可是这并不妨碍理解这本书(虽然编程经验当然有帮助)。这本书设计对大学生,研究生,博士后和职业科学家相关的读者都分别有益,因为他们的所有大都可以因为知道怎么编程而受益。使得学生在他们早期的职业生涯就开始编程,可以提高他们的创造力和逻辑思维,所有的这些在研究中都可以得到应用。为了使学生们更容易的学习,所有的主题都由最小的前提来介绍。每一章的后面还附有提问,它们可以用作自我评价读者学习的成果。问题的答案作为独立的章节可以提供给教师。研究生和职业科学家具有真正的编程的需要,应该可以发现若干真实世界的例子和丰富的参考文献,而这是非常有价值的。1.1.1你应该知道些什么因为这本书叫《为生物信息学设计的Python教程》(PythonforBioinformatics),所以在头脑中是基于下面的假设被写出来的:读者应该知道怎样使用计算机。不需要编程的知识,但是读者需要最低的计算机熟练程度,能够用文本编辑器,处理操作系统(OS)中的基本任务。由于Python是支持多平台的,这本书的大多数的指令都可以应用到常用的操作系统(Windows,MacOsX和Linux),当一个命令或过程只能应用到特定的操作系统中时,它将被特殊说明。读者应该正在用生物信息学工具或至少想用它们进行工作,甚至是小规模手动的工作,诸如用NCBI的Blast来识别一个序列,排序蛋白质,引物寻找,或估计系统进化树对重复这里的结果都是有帮助的。读者对生物信息了解得越多,他就能够应用这些概念来更好地学习本书。________________________________________________________________1.2用这本书1.2.1Python版本有两个Python的版本可以被下载:Python2.6(也就是2.x系列)和Python3(也就是所谓的Python3000)。Python3和Python2.x系列不完全兼容,由于这个原因,现在(2009年)大部分的第三方模块是不可用的。特别是Biopython软件包,这个对于你计划要做的生物信息工作是“必不可少”的。它的开发者预计在Python3中检验它的代码,想移植它们到Python3.1或3.2中。最新的Biopython版本(1.5,此时)可以在Python2.4,2.5和2.6上在所有支持的平台下运行。(译者注:到翻译这篇文章,Python有2.7版本,是2.x最后的一个版本,Biopython1.8仍然没有支持3.0)这本书教授的Python基础可以应用于Python的任何版本。如果一个功能是在特定的版本中不存在,会被适当的注明。所有的这本书的程序都被在Python2.5和2.6中检测过,它们都是“Python3aware”的,也就是说,虽然因为它们依赖的外部包在现在还没有被导入系统,所以它们不工作,但它们是在头脑中用Python3的句法写成的,预计可以当外部包变得可用之后只需要有很小的改动。如果你的代码不依赖于外部包,在考虑用哪个版本时,你可以马上就试Python3,可是这是一个不可能的局面。如果你需要的包还没有被移植,你就应该用Python2.6,Python2.x系列还将继续被支持,并随着年代的更新,Python2.6有一个“-3”的命令行号(py3K警告)来提醒Python3K的不兼容,还有个工具叫“2to3”,可以把Python2.6的代码转换成Python3兼容的Python代码。(译者注:Python2.7也有这些功能。____________________________________________________________________1.2.2排版风格在整本书中有一些我试图采用的统一的排版规定,它们可以增加可读性,来帮助读者区分名字(变量名)和语言关键字。这在学习一门新语言时是方便的。粗体(bold):Python和第三方模块提供的对象。有了这个符号,语言的部分轮廓就清晰了,区别于用户定义的名字。粗体也被用来实现突显文本的部分,粗体的应用没有机会与其它进行混淆。单行字体(mono-spacedfont):用户声明的变量或文件名。斜体(Italics):在命令中,它表示一个变量,可以采取不同的值。比如len(iterable)中,iterable可以采用不同的值。用在文章中,它表示一个新词。=:间断线(Breakline),一些行比印刷页面的可用空间要长,所以插入此符号,这意味着页面的下一行在计算机屏幕上是同一行。___________________________________________________________________1.2.3代码风格Python的源代码是用一些列表(listing)来表示的,每行有一个数字。这些数字是不需要打印出来的,它们是用来标记文本中的每一行。所有的代码都在伴随的虚拟机上应用(注:请参照DVD中的介绍来用这个虚拟机)。所有的代码实例都可以在网上得到,特别的技巧是用Pastebin来显示代码。你可以在一个URL(网址)以“py3.us/#”(其中#是一个数字)与每一个这样的列表想连。你在浏览器上输入这个URL,就能得到同本书相同的代码,这个代码可以用下载(download)链接的方法从它的Pastebin上下载。代码可以被用几种不同的格式写作,这在python中都有效。下面的代码在语法上是正确的:Dna=’accatcagt’defMyFunction(X,N):avG=sum(X)/NCalculatetheaveragereturnavG而这个代码也是正确的dna=’accatcagt’defmy_function(x,n):Calculatetheaverageavg=sum(x)/nreturnavg前面的代码实例是被Python2.x最广为接受的编码风格(注:见原书553页代码风格),在整本书中,你会发现大多数的代码象第二个例子的格式。一些本书的代码你将发现不遵守这个原则,有以下几个原因:在一些情况下,大多数是为讲解代码的冲突,采用了不同风格展示。在这些很少的情况下,我选择了有偏向性的代码风格是为了使问题更清晰。因为印刷体书的限制,一些名字被简写和其它的更偏向少的代码风格被选择采用。为了显示有多于一种的方式来写相同的代码,代码风格是一个参考,所以一些编码者不服从它们。你应该学会来阅读“坏”的代码,因为迟早你不得不阅读别人的代码。____________________________________________________________________1.2.4不阅读所有的部分学到书中大部分的内容如果你想学习怎样编程,阅读第一部分,从第一章到第八章,第九章正则表达式(REGEX),如果你不需要处理REGEX可以被跳过。如果你了解Python,只想知道Biopython,阅读第二部分的开头(从175到221页)它包含了大章节的Biopython模块和函数,然后可以重复在第四部分的程序(从371到391页)。如果你在学习Biopython之前需要一些生物学基础的介绍。你可以从“用Biopython深入基因挖掘”开始,431页到447页。如果把它用作参考资料,见第三部分:(带注释代码的Python菜单,从317页到391页),附件D(Python语言参考,从457页到527页)和附件F(Python代码风格介绍,从553到576页)。____________________________________________________________________1.3为什么学习编程研究者在他的计算机上的许多工作都是重复性的:从网页上收集数据,把文件格式从一个转到另一个,执行和解释几十个或上百个BLAST结果,初次设计,寻找限制性内切酶等等。在许多事例中,有证据表明这些任务能用计算机完成,这样既节省了我们的精力,又避免了由于疲劳和注意力分散导致错误的可能性。当你评估是否需要编程时,就要看在问题的定义和公式化、用代码实施、然后调试它(改正表面上不可避免的错误)上大致用的时间。认为问题定义和评估是浪费时间的看法是不正确的。在我们完全理解面临的问题的过程中,一般要面临一个精确的位置,而在试图公式化问题的时候,非常常见的情况是我们发现许多原初的假定是错误的。当有必要重新计划这个过程的时候,问题定义可以帮我们检查。这样的情况发生时,最好是在问题的计划阶段而不是我们的项目中间。在这样的情形下,编程的计划代表了时间的节省。另一个值得被提及的优点是被用作创造程序投入的时间,可以被每次运行任务时所带来的速度进行补偿。不仅编程可以把我们手动的过程自动化,它还能够做一些不可能的事情:个性化的图形,Web应用和数据库交互,这里只列出一点点。有时对一个特定的事务是否可以被编程完成不是很清楚。读象这样一本书(包括例子)可以帮助读者认识到哪些任务可以是脚本自动化可行的,而哪些最好手工完成。___________________________________________________________________1.4基本编程概念在安装Python前,让我们来评论一下一些编程的基础。如果读者有一些以前的编程经验,你可以跳过这一节,直接到19页(安装Python),这一节介绍一些基本概念,如指令(instructions),数据类型(datatypes),变量(variables)和其它一些整本书中用到的相关的术语。1.4.1什么是程序一个程序(program)是一系列有序的指令,设计用来命令计算机做一些事。这里有“有序的”这个词是因为光声明做什么是不够的,还要有方向的顺序也必须被指示出来(注:有说明性(declarative)的语言来描述程序应该完成的事,而不是描述来怎样完成它。因为大多数的计算机语言,也包括Python,是命令性(imperative)的而不是说明性的,这本书假定所有的程序是采用命令性的方式书写的。)一个程序通常被看作有象菜谱一样的性质。一个典型的菜谱包含一些配料,按照循序渐进的指令教怎样准备做一道菜。这个类比反映在许多编程的网站和教程用菜谱(recipe或cookbook)这个词来命名。另一个类比可以用实验室的流程(protocol)做例子,一个实验流程是这样定义的:“在实验的设计和实施中预定义在书面上程式化的方法。”这是一个典型的分子生物学实验室中每天被用到的流程的例子。列表1.1:LambdaDNA酶切的实验流程____________________________________________________________________RestrictionDigestionofLambdaDNAMaterials5.0mcLLambdaDNA(0.1g/L)2.5mcL10xbuffer16.5mcLH2O1.0mcLEcoRIProcedureIncubatethereactionsat37±Cfor1hr.Add2.5mcLloadingdyeandincubateforanother15minutes.Load20mcLofthedigestionmixtureontoaminigel.___________________________________________________________在这个实验流程中,至少有两部分内容:过程和材料。一个过程包括特别的顺序,如孵育(incubate),添加(add),混合(mix),存储(store),提取(load)和其它。这在计算机程序中也一样,编程者给计算机一些特定的指令顺序,如打印(print),读取(read),加(add),乘(multiply),赋值(assign),四舍五入(round)和其它。正如实验流程的过程和程
本文标题:Python-for-Bioinformatics(1)---介绍
链接地址:https://www.777doc.com/doc-7109125 .html