生信python

所需积分/C币:1 2018-12-05 22:57:26 3.41MB PDF

因为这本书叫《为生物信息学设计的 Python 教程》( Python for Bioinformatics), 所以在头脑中是基于下面的假设被写出来的: 读者应该知道怎样使用计算机。不需要编程的知识,但是读者需要最低的计算机熟练 程度,能够用文本编辑器,处理操作系统(OS)中的基本任务。由于 Python 是支持多平台的, 这本书的大多数的指令都可以应用到常用的操作系统(Windows, Mac Os X 和 Linux),当一个命 令或过程只能应用到特定的操作系统中时,它将被特殊说明。 读者应该正在用生物信息学工具或至少想用它们进行工作,甚至是小规模手动的工作, 诸如用 NCBI 的 Bl
25附加资料 26 26自我评价 第三章基本编程:数据结构 27 31字符串 311不是所有的字符串同等地创建的 312字符串操作 89 313字符串相关方法 .29 32列表…… :::.·:·::··: 30 321列表是 Python中的主力数据类型 322列表初始化… 323列表推导式( list comprehension)… 31 324访问列表中元素 32 325复制一个列表…… 326修改列表…3 33元组… 35 331元组是不可变的列表 35 332序列的共有属性 36 35字典 ,39 35.1映射:通过一个名调用它的值 39 352字典操作 353在 Python3中的新的字典视图 42 36集合 43 361无序对象的收集物. ,43 362集合运算 44 363与其他数据类型共享的操作 45 364不可变的集合: Frozenset 着,D 45 38“名称绑定到一个对象”和“赋值给一个变量”… 46 39其他资源… 48 310自测 48 第四章编程:流程控制 49 4.1 f-Else 411pass语句 42For循环… 4.3 While循环 ·音看1 54 44 Break:中新循环 55 45总结在一起 56 4.5.1估计一种蛋白质的净电荷… 57 45.2低可变性区搜索 46其他资源 4.7自我评价 第五章处理文件 61 51读取文件 61 511文件处理的范例. 52写入文件 64 521文件读写的例子 65 53一种特殊种类的文件:CSV. 65 531CSV模块的更多功能.… 67 55文件处理:os模块….…. 551把多个DNA或蛋白质序列合并为个 FASTA文件 70 552估计几个蛋白质的净电荷 56:另一种方式打开文件 57其他资源 73 58自我评价 第六章代码模块化. .:·:::::::::··:· 73 61函数 74 611标准的方式来模块化 Python代码 74 612函数参数选项 ∴77 613发牛器. ::::::.:::::::::: 79 62模块 80 621使用模块. 62.2安装模块 81 623创建模块… 85 624检测我们的模块…… 85 63其他资源 64自我评价 第七章错误处理. .88 7.1错误处埋简介…… 711try和 except 90 7.12异常类型. 94 7.13引发异常 7.2创建自定义异常 7.3其他资源 74自我评价 第·部分编程 第一章介绍 11谁应该读这本书 这木书是写给那些想学习编程的生命科学研究者的,他可能对计算机编程是弱项,可是这并 不妨碍理解这本书(虽然编稈经验当然有帮助)。 这本书设计对大学生,研究生,博士后和职业科学家相关的读者都分别有益,因为他们的 所有大都可以因为知道怎么编程而受益。 使得学生在他们早期的职业生涯就开始编程,可以提高他们的创造力和逻缉思维,所有 的这些在研究中都可以得到应用。为了使学生们更容易的学习,所有的主题都由最小的前 提来介绍。每章的后面还附有提问,它们可以用作自我评价读者学习的成果。问题的答案 作为独立的章节可以提供给教师。 研究生和职业科学家具有真正的编程的需要,应该可以发现若干真实世界的例子和丰富 的参考文献,而这是非常有价值的 111你应该知道些什么 因为这本书叫《为生物信息学设计的 Python教程》( Python for Bioinformatics),所以在头脑 中是基于下面的假设被写出来的: 读者应该知道怎样使用计算机。不需要编稈的知识,但是读者需要最低的计算机熟练 程度,能够用文本编辑器,处理操作系统(OS)中的基本仼务。由于 Python是支持多平台的, 这本书的大多数的指令都可以应用到常用的操作系统( lindows, Mac os x和 Linux当一个命 令或过程只能应用到特定的操作系统中时,它将被特殊说明。 读者应该芷在用生物信息学工具或至少想用它们进行工作,甚至是小姚模手动的工作, 诸如用NCB|的Bast来识别一个序列,排序蛋白质,引物寻找,或估计系统进化树对重复这 里的结果都是有帮助的。读者对生物信息了解得越多,他就能够应用这些概念米更好地学习 本书 12用这本书 121 Python版本 有两个 Python的版本可以被下载: Python2.6(也就是2x系列)和 Python3(也就是所谓的 Python3000 Python3和 Python2.x系列不完全兼容,由于这个原因,现在(2009年)大部分 的第三方模块是不可用的。特别是 Biopython软件包,这个对于你计划要做的生物信息工 作是“必不可少”的。它的开发者预计在 Python3中检验它的代码,想移植它们到Pyth。n3.1 或32中。最新的 Biopython版本(15,此时)可以在 Python24,25和26上在所有支持的 平台下运行。(译者注:到翻译这篇文章, Python有2.7版本,是2x最后的一个版本, Biopython18仍然没有支持30) 这本书教授的 Python基础可以应用于 Python的任何版本。如果一个功能是在特定的版本 中不存在,会被适当的注明。所有的这本书的程序都被在 Python25和26中检测过,它们 都是“ Python3 aware”的,也就是说,虽然因为它们依赖的外部包在现在还没有被导入系 统,所以它们不工作,但它们是在头脑中用 Python3的句法写成的,预计可以当外部包变 得可用之后只需要有很小的改动 如果你的代码不依赖于外部包,在考虑用哪个版本时,你可以马上就试 Python3,可是 这是一个不可能的局面。如果你需要的包还没有被移植,你就应该用 Python2.6, Python2x 系列还将继续被支持,并随着年代的更新, Python2.6有一个“-3”的命令行号(py3K警 告)来提醒 Python3K的不兼容,还有个工具叫“2to3”,可以把 Python2.6的代码转换成 Python3兼容的 Python代码。(译者注: Python2.7也有这些功能。 22排版风格 在整本书中有一些我试图采用的统一的排版规定,它们可以增加可读性,来帮助读者 区分名字(变量名)和语言关键字。这在学习一门新语言时是方便的。 粗体(bold): Python和第三方模块提供的对象。有∫这ˆ符号,语言的部分轮廓就清晰 了,区别于用户定义的名字。粗体也被用来实现突显文本的部分,粗体的应用没有机会与其 它进行混淆。 单行字体(mono- spaced font):用户声明的变量或文件名。 斜体( Italics):在命令中,它表示一个变量,可以采取不同的值。比如len( iterable)中 erable可以采用不同的值。用在文章中,它表示一个新词 <=:间断线( Break line),一些行比印刷页面的可用空间要长,所以插入此符号,这意味着 页面的下一行在计算机屏幕上是同一行。 123代码风格 Python的源代码是用一些列表( listing)来表示的,每行有一个数字。这些数字是不需要 打印出来的,它们是用米标记文本中的每一行。所有的代码都在伴随的虚拟机上应用(注: 请参照DvD中的介绍来用这个虚拟机)。所有的代码实例都可以在网上得到,特别的技巧 是用 Pastebin来显示代码。你可以在一个URL(网址)以“py3.us/#”(其屮#是一个数字) 与每个这样的列衣想连。你在浏览器上输入这个URL,就能得到同本书相同的代码,这个 代码可以用下载{ download)链接的方法从它的 Pastebin上下载。 代码可以被用几种不同的格式写作,这在 python中都有效。下面的代码在语法上是正确 的: Dna=accatcagt def my Function(X, N) )/N Calculate the average 而这个代码也是正确的 dna =accatcagt ef my_function(x, n) Calculate the avera avg= sum(x)/n 前血的代码实例是被pγthon2.ⅹ最广为接受的编码风格(注:见原书553代码风格), 在整本书中,你会发现大多数的代码象第二个例子的格式。 些木书的代码你将发现不遵守这个原则,有以下几个原因: 在一些情况下,大多数是为讲解代码的冲突,采用了不同风格展示。在这些很少的情况 下,我选择了有偏向性的代码风格是为了使问题更淸晰。 因为印刷体书的限制,一些名字被简写和其它的更偏向少的代码风格被选择采用。 为了显示有多于一种的方式来写相同的代码,代码风格是一个参考,所以一些编码者不服 从它们。你应该学会来阅读“坏”的代码,因为迟早你不得不阅读别人的代码 124不阅读所有的部分学到书中大部分的内容 如果你想学习怎样编稈,阅读第一部分,从第一章到第八章,第九章正则表达式( REGEX), 如果你不需要处理 REGEX可以被珧过。 如果你了解 Python,只想知道 Biopython,阅读第二部分的开头(从175到221页)它 包含了大章节的 Biopython模块和函数,然后可以重复在第四部分的程序(从371到391页) 如果你在学习 Biopython之前需要一些生物学基础的介绍。你可以从“用 Biopython深入 基因挖掘”开始,431页到447页。 如果把它用作参考资料,见第三部分:(带注释代码的 Python菜单,从317页到391 贞),附件D( Python语言参考,从457贞到527贞)和附件F( Python代码风格介绍,从 553到576页)。 13为什么学习编程 研究者在他的计算机上的许多工作都是重复性的:从网贞上收集数据,把文件格式从 一 个转到另一个,执行和解释几十个或上百个 BLAST结果,初次设计,寻找限制性内切酶等 等。在许多事例中,有证据表明这些任务能用计算机完成,这样既节省了我们的精力,又避 免了由于疲劳和注意力分散导致错误的可能性 当你评估是否需要编程时,就要看在问题的定义和公式化、用代码实施、然后调试它(改 正表血上不可避免的错误)上大致用的时间。认为问题定义和评估是浪费时间的看法是不 正确的。在我们完全理解面临的问题的过稈中,一般要面临一个精确的位置,而在试图公式 化问题的时候,非常常见的情况是我们发现许多原初的假定是错误的。当有必要重新计划 这个过程的时候,问题定义可以帮我们检查。这样的情况发生时,最好是在问题的计划阶段 而不是我们的项目中间。在这样的情形下,编程的计划代表了时间的节省。另一个值得 提及的优点是被用作创造程序投入的时间,可以被每次运行任务时所带来的速度进行补偿 不仅编稈可以把我们手动的过稈自动化,它还能够做一些不可能的事情:个性化的图形 Web应用和数据库交互,这里只列出一点点。 有时对一个特定的事务是否可以被编程完成不是很清楚。读象这样一本书(包括例子) 可以帮助读者认识到哪些任务可以是本自动化可行的,而哪些最好手工亢成。 14基本编程概念 在安装 Python前,让我们来评沦一下一些编程的基础。如果读者有一些以前的编程经验, 你可以跳过这一节,直接到19页(安装 Python),这一节介绍一些基本概念,如指令 ( instructions),数据类型( data types),变量( variables)和其它一些整本书中用到的相关的 术 141什么是程序 个程序( program)是一系列有序的指令,设计用来命令计算机做一些事。这里有“有 序的”这个词是因为光声明做什么是不够的,还要有方向的顺序也必须被指示出来(注:有 说明性( declarative)的语言来描述程序应该完成的事,而不是描述来怎样完成它。因为大 多数的计算机语言,也包括 Python,是命令性( (imperative)的而不是说明性的,这本书假 定所有的程序是采用命令性的方式书写的。) 个程序通常被看作有象菜谱一样的性质。一个典型的菜谱包含一些配料,按照循序渐进 的指令教怎样准备做一道菜。这个类比反映在许多编程的网站和教程用菜谱( (recipe或 cookbook)这个词来命名。另一个类比可以用实验室的流程( protocol)做例子,一个实验流 程是这样定义的:“在实验的设计和实施中预定义在书面上程式化的方法。” 这是一个典型的分子生物学实验室中每天被用到的流程的例子。 列表11: Lambda dna酶切的实验流程 Restriction Digestion of Lambda dna Materials 5.0 mcL Lambda dNa (0.1 B/L) 25 mcL 1Ox buffer 16.5mcLH20 1.0 mcL ECoRI Procedure Incubate the reactions at 37+C for 1 hr Add 2. 5 mcL loading dye and incubate for another 15 minutes Load 20 mcl of the digestion mixture onto a minigel 在这个实验流程中,至少有两部分内容:过程和材料。一个过程包括特别的顺序,如 孵育( incubate),添加(add),混合(mⅸ),存储( store),提取(load)和其它。这在计 算机程序中也·样,编程者给计算机·些特定的指令顺序,如打印( print),读取(read), 加(add),乘( multiply),赋值( assign),四舍五入( round)和其它。 正如实验流程的过程和程序指令相类似,材料就是数据。在实验流程中,过程被应用于 材料:泥合2.5μ的缓冲液,5μ的 Lambda dna,和16.5μ的H2O,提取20μ到小试管中。 在稈序中,指令是被应用于数据:打印文本字符“He‖o”,让两个整数做加法,给一个浮点 数进行四舍五入。 就象一个实验流程可以被不冋的语言撰写一样(象英语、西斑牙语或法语),计算机程 序也有不同的语言。布科学实验流程中,英话是事实上( De facto)的语言,由于历史上、商 业上和应用上的原因,在计算机科学中也是相当的情况。有许多不同的语言,每一种有它自 己的强项和弱点。简而言之,由于一些讲得通的道理,这本书选择 Python就是这样一种计 算机语言 让我们来看一个简单的 Python程序 列表12:简单的 Python程序 seq_1 ='Hello, seg 2= you! total 1+seg 2 seq size =len(total) int(seg size) 这个简单程序可以被象下面·样阅读:“把“Hell,’起名为seq_1,给字串seq_2命 名为‘you!',把名为seq_1和seq_2的字串相加并把结果赋给 total,得到 total字串的长度 并把它的值传给seq_size,打印seq_size的值。”这个程序输出11 如上所示,这里有不同类型的数据(一般称之为数据类型, data types,或简称类型, types):数宁(整型, Integers,或浮点型, float),文本字串( text string)或其它的数据类型。 在 print(seq_size)中的指令是 print, seg size是数据的名宇。数据经常被表示为变量( Variable), 变量是一个名字,它可以代表一个值,这个值在栏序的运行过程中可以改变。运用变量,程 序员可以把“ round29”改为更通用的命令“ round n”,采用这种方式就可以考虑一个不同 定(因此是可变的 variable)的值。在这个程序运行的时候,“n”将采取一个特定的值,因 为没有办法四舍五入n。这就可以通过“给变量赋一个值”或“给值绑定一个名字”(注 Python采取的是后一种方式。)。“给变量赋一个值”和“给值绑定一个名字”的不同,将在 第三章(65贞)中详细解释。在两种情况下,它都采用以下形式: var value 注意,这里不象数学中的相等的意思,相等关系的对象可以具有交换性,而在编程中, 在右边的项( value)采取在左边项(var)的名字。比如 q_1='Hello, 在赋值之后,变量seq_1就可以被用了,如 它可以被解释为“返回个名为seq_1的值的长度”,因为字串‘Hel,’具有六个字 符,这个命令返回的是6。 15为什么选择 Python 让我们看下 Python值得提的特性: 151 Python的主要特性 可读性:当我们说到可读性的时候,我们指对原始的编程者而言,同样也指对于其他对理解 这个代码感兴趣的任何人。某个人在写了一些代码的一个月之后,再米看它时发现它非常得 难理解,这样的情况不是非常稀罕的事件。而Pythσn有时被称为“人就可以读的语言( human readable language)” 自带属性: Python与生俱来就“自带电氾”,它含有丰富的多用途的标准库,不需要用户来 下载分离的软件包。用 Python你能够用很少的代码来读XML文件,提取2ip包中的文件, 解释和产生emai信息,处理文件,读取和发送从Web浏览器到服务器的数据,打开一个 URL就象打开一个文件,还有许多的可能性 支持第三方模块:二维或三维画图,PDF产生器,生物信息分析,动画,游戏开发,与常见 的数据库接∏和应用软件,这些只是大量可以安装来扩展 Python模块的例了的部分。 高级的自带数据结构:字舆( dictionaries),集合(sets),列表( lists)和元组( tuples),这 些可以用来帮助对真实世界建模。 多范式编程: Python可以被用作“经典”的过程式语言,或是“现代”的面向对象编程(○○P) 语言。大多数的编程者开始编代码都是迸过过程方式,当他们准备好了,就升级到OOP方 式。在编程者只想写简单的脚本吋,pγthon不强迫编程者来写面冋对象代码。 可扩展性:如果自带的方法和第三方的方法都不能满足你的需要,你可以轻易地扩展 Python 甚至用其它的编程语言。在 Python中有许多的应用是以前用C或 Fortran语言开发的过程, Python也可以扩展来连接特姝化的高纵语言,如R和 MATLAB 开放源码: Python有一个自由的开发源代码的证书,这使得它能免费使用和分发,甚至商 业化的应用也可以。 跨平台:一个用 Python编的程序可以在任何具有 Python解释器的计算机下运行。米取这个 方式,一个在 Windows vista下开发的程序可以不加更改的在Lnux下运行。 Pyton解释器在 大多数的计算机和操作系统上都有,甚至象有些嵌入式的计算机的设备(诸如 Nokia6630 智能手机)中也有。 繁荣的社团: Python正在科学社团里得到很大的推动。这就是说对你的项目可以有更丰富 的厍和得到支持的人。 152 Python与其它语言的比较 你可能奇怪为什么你应该用 Python,而不是更加有名的语言,象C、Per或lava,这 是一个好问趣。编程语言可以被看作工只,在工作中选择最好的工只是非常有道理的。 可读性 非专业的编程者趋向于考虑学习曲线和代码的可读性(两个方面是息息相关的)。 来看一个简单的 hello world”程序在 Python中的例子 print( Hello world!") 与它等价的Java代码如下: public class Hello public static void main(String[] args i System. out. printf("Hello world! ) 来看个简单的C语言代码的例了。下面的程序是读个文件( input. txt)而后复制 它的内容到另一个文件( output. txt)的例子: #include <stdio h> int main(int argc, char **argyi FILE in, out. int c

...展开详情
img
c19901022

关注 私信 TA的资源

上传资源赚积分,得勋章
相关内容推荐