本书实例意在解决生物学问题,通过“编程技法”的形式,涵盖尽可能多的组织、分析、表现结果的策略。在每章结尾都会有为生物研究者设计的编程题目,适合教学和自学。本书由六部分组成:Python语言基本介绍,语言所有成分介绍,高级编程,数据可视化,生物信息通用包Biopython,最后给出20个编程秘笈,范围涵盖了从二级结构预测、多序列比对到蛋白质三维结构的广泛话题。此外,本书附录还包括了大量的生物信息常用资源的信息。
生命科学学院的Python课程教材,适合本科教学或行业人士的Python短期培训。
在几年前, 编程只是计算科学工作者的特权。虽然如此, 编程正加速变成生物等其他领域专家的一种需要。作为一个生物学研究者, 不需要对成为一个编程专家感兴趣, 但是需要把编程作为多个工具中的一种来继续科学工作。可能读者已经意识到编程技巧可以大幅地加速管理和分析数据。可能读者需要处理大规模的数据, 多次重复某种相同的分析, 或者从一个非通用格式的文件中解析数据。可以确信的是, 在所有这些情形下, 编程可以帮助你。然而, 因为读者从来没有对“枯燥无味”和“概念艰深”的计算机科学学科有很大兴趣, 就可能会感到不习惯。如果是这样的情况, 这本书是适合你的。
本书是为那些需要更多地掌控数据, 因此需要学习一些编程的生命科学工作者而写的。目标是使得那些以前没有编程经验的生物科学工作者能够自己用Python对生物数据进行分析。
在前言中, 包括全书内容的概述及编程介绍, 最后是对Python编程语言的概览。
我们希望这本编程书是为生物学工作者的读者量身定制的, 能帮助分析读者的数据, 从而尽早有所收获。
本书内容概述
本书中, 读者不仅能够学到如何编程, 还有怎样管理数据, 包括了从文件中读取数据, 分析和处理它们, 把结果写到文件中或计算机屏幕上。每个在本书中描述的单个代码段都旨在解决生物学问题, 每个例子都处理生物疑问。本书的目标是包含尽可能多的实例, 覆盖更多的组织、 分析和表现数据的策略, 用“编程秘笈”的方式来解决生物问题。在每一章后面的自测题可以用来自测或在对面向生物学工作者的编程课程上使用。
本书分六部分组织, 共21章。第一部分介绍Python语言, 如何写第一个程序。第二部分介绍这个语言的所有基本元件, 使读者能够独立地写小的程序。第三部分是关于运用技巧来创建组织优良、 性能高效和代码正确的较长的程序。第四部分致力于数据可视化, 可以学到如何绘制数据, 或者为一篇文章或演示用的PPT文件配图。还介绍了PyMOL, 一个对大分子结构可视化的程序。第五部分介绍Biopython, 它可以帮助读写多种生物文件格式, 便捷查询NCBI的在线数据库, 从网络上检索生物记录。第六部分是一个实用手册, 包含了20个特定的“编程秘笈”, 从二级结构预测和多序列联配分析到蛋白三维结构的叠加。
此外, 这本书还有四个附录。附录A提供了包括Python和UNIX命令的概览; 附录B列出了几个在网上免费可用的Python资源的链接; 附录C包含了遍布在本书中引用的样本文件格式, 例如序列的FASTA格式, 序列的GenBank格式, PDB文件和MSA示例等。最后, 附录D是一个简短的UNIX教程。
什么是编程
这本书将讲授如何写程序。程序准确地说是什么呢?一个程序在概念上类似一个菜谱。正如菜谱在开始时列出了成分和厨具一样,
Allegra Via,意大利罗马**大学物理系助理教授。研究方向为生物信息学,在生物信息学数据处理和Python编程方面具有丰富的实践经验。 Allegra Via,意大利罗马**大学物理系助理教授。研究方向为生物信息学,在生物信息学数据处理和Python编程方面具有丰富的实践经验。
第一部分入门
第1章Python shell
1.1本章知识点
1.2案例: 计算ATP水解的ΔG
1.2.1问题描述
1.2.2Python会话示例
1.3命令的含义
1.3.1如何在电脑上运行这个例子
1.3.2变量
1.3.3导入模块
1.3.4计算
1.4示例
1.5自测题
第2章第一个Python程序
2.1本章知识点
2.2案例: 如何计算胰岛素序列中的氨基酸频率
2.2.1问题描述
2.2.2Python会话示例
2.3命令的含义
2.3.1如何执行程序
2.3.2程序如何工作
2.3.3注释
2.3.4字符串变量
2.3.5用for进行循环
2.3.6缩进
2.3.7打印至屏幕
2.4示例
2.5自测题
第一部分小结
第二部分数 据 管 理
第3章分析数据列
3.1本章知识点
3.2案例: 树突长度
3.2.1问题描述
3.2.2Python会话示例
3.3命令的含义
3.3.1读取文本文件
3.3.2写入文本文件
3.3.3将数据收入列表
3.3.4将文本转换为数字
3.3.5将数字转换为文本
3.3.6将数据列写入文本文件
3.3.7计算数值列表
3.4示例
3.5自测题
第4章解析数据记录
4.1本章知识点
4.2案例: 整合质谱数据, 转化到代谢通路中
4.2.1问题描述
4.2.2Python会话示例
4.3命令的含义
4.3.1if/elif/else语句
4.3.2列表数据结构
4.3.3简洁列表创建方式
4.4示例
4.5自测题
第5章搜索数据
5.1本章知识点
5.2案例: 将RNA序列翻译为相应的蛋白质序列
5.2.1问题描述
5.2.2Python会话示例
5.3命令的含义
5.3.1字典
5.3.2while语句
5.3.3用while循环搜索
5.3.4字典搜索
5.3.5列表搜索
5.4示例
5.5自测题
第6章过滤数据
6.1本章知识点
6.2案例: 使用RNA�seq输出数据
6.2.1问题描述
6.2.2Python会话示例
6.3命令的含义
6.3.1用简单的for...if组合过滤
6.3.2合并两个数据集
6.3.3两组数据之间的差异
6.3.4从列表、 字典和文件中删除元素
6.3.5保持或不保持顺序地删除重复
6.3.6集合
6.4示例
6.5自测题
第7章管理表数据
7.1本章知识点
7.2案例: 确定蛋白浓度
7.2.1问题描述
7.2.2Python会话示例
7.3命令的含义
7.3.1二维表的表示方法
7.3.2访问行和单元格
7.3.3插入和删除行
7.3.4访问列
7.3.5插入和删除列
7.4示例
7.5自测题
第8章数据排序
8.1本章知识点
8.2案例: 数据表排序
8.2.1问题描述
8.2.2Python会话示例
8.3命令的含义
8.3.1Python列表有利于排序
8.3.2内置函数sorted()
8.3.3用itemgetter排序
8.3.4按升序/降序排序
8.3.5数据结构(元组、 字典)排序
8.3.6按长度对字符串排序
8.4示例
8.5自测题
第9章模式匹配和文本挖掘
9.1本章知识点
9.2案例: 在蛋白质序列中搜索磷酸化模体
9.2.1问题描述
9.2.2Python会话示例
9.3命令的含义
9.3.1编译正则表达式
9.3.2模式匹配
9.3.3分组
9.3.4修改字符串
9.4示例
9.5自测题
第二部分小结
第三部分模块化编程
第10章将程序划分为函数
10.1本章知识点
10.2案例: 处理三维坐标文件
10.2.1问题描述
10.2.2Python会话示例
10.3命令的含义
10.3.1如何定义和调用函数
10.3.2函数参数
10.3.3struct模块
10.4示例
10.5自测题
第11章用类化繁为简
11.1本章知识点
11.2案例: 孟德尔遗传
11.2.1问题描述
11.2.2Python会话示例
11.3命令的含义
11.3.1用类创建实例
11.3.2类以属性的形式包含数据
11.3.3类包含的方法
11.3.4__repr__方法可打印类和实例
11.3.5使用类有助于把握复杂程序
11.4示例
11.5自测题
第12章调试
12.1本章知识点
12.2案例: 程序无法运行时应该怎样处理
12.2.1问题描述
12.2.2Python会话示例
12.3命令的含义
12.3.1语法错误
12.3.2运行时错误
12.3.3处理异常情况
12.3.4未报告出错信息
12.4示例
12.5自测题
第13章使用外部模块: R语言的Python调用接口
13.1本章知识点
13.2案例: 从文件中读取数据, 并通过Python使用R计算其平均值
13.2.1问题描述
13.2.2Python会话示例
13.3命令的含义
13.3.1rpy2和r实例的robjects对象
13.3.2从Python中读取R对象
13.3.3创建向量
13.3.4创建矩阵
13.3.5将Python对象转换成R对象
13.3.6如何处理包含点的函数参数
13.4示例
13.5自测题
第14章构建程序流程
14.1本章知识点
14.2案例: 构建NGS流程
14.2.1问题描述
14.2.2Python会话示例
14.3命令的含义
14.3.1如何使用TopHat和Cufflinks
14.3.2什么是程序流程
14.3.3在程序中交换文件名和数据
14.3.4编写程序包装器
14.3.5关闭文件时的延迟
14.3.6使用命令行参数
14.3.7测试模块: if__name__=='__main__'
14.3.8处理文件和路径
14.4示例
14.5自测题
第15章编写良好的程序
15.1本章知识点
15.2问题描述: 不确定性
15.2.1程序编写存在不确定性
15.2.2程序项目实例
15.3软件工程
15.3.1将编程项目分成小任务
15.3.2将程序分为函数和类
15.3.3编写格式良好的代码
15.3.4使用存储库控制程序版本
15.3.5如何将自己的程序分发给其他人
15.3.6软件开发的周期
15.4示例
15.5自测题
第三部分小结
第四部分数据可视化
第16章创建科学图表
16.1本章知识点
16.2案例: 核糖体的核苷酸频率
16.2.1问题描述
16.2.2Python会话示例
16.3命令的含义
16.3.1matplotlib库
16.3.2绘制竖的柱状图
16.3.3为x轴和y轴添加标注
16.3.4添加刻度
16.3.5添加一个图例框
16.3.6添加图的标题
16.3.7设置图表的边界
16.3.8以低分辨率和高分辨率导出一个图像文件
16.4示例
16.5自测题
第17章使用PyMOL创建分子图像
17.1本章知识点
17.2示例: 锌指
17.2.1什么是PyMOL
17.2.2PyMOL会话示例
17.3用七个步骤来创建高分辨率的图像
17.3.1创建一个PyMOL脚本文件
17.3.2加载和保存分子
17.3.3选取分子的局部
17.3.4为每个选取选择展现形式
17.3.5设置颜色
17.3.6设置摄影位置
17.3.7导出高分辨率图像
17.4示例
17.5自测题
第18章处理图像
18.1本章知识点
18.2案例: 画一个质粒
18.2.1问题描述
18.2.2Python会话示例
18.3命令的含义
18.3.1创建一个图像
18.3.2读和写图像
18.3.3坐标
18.3.4绘制几何形状
18.3.5旋转图像
18.3.6添加文本标记
18.3.7颜色
18.3.8辅助变量
18.4示例
18.5自测题
第四部分小结
第五部分Biopython
第19章使用序列数据
19.1本章知识点
19.2案例: 如何将一条DNA编码序列翻译成对应的蛋白质序列, 并把它写入
FASTA文件
19.2.1问题描述
19.2.2Python会话示例
19.3命令的含义
19.3.1Seq对象
19.3.2把序列当成字符串工作
19.3.3MutableSeq对象
19.3.4SeqRecord对象
19.3.5SeqIO模块
19.4示例
19.5自测题
第20章从网络资源中检索数据
20.1本章知识点
20.2案例: 在PubMed中用关键词搜索文献, 下载并解析对应的记录
20.2.1问题描述
20.2.2Python会话示例
20.3命令的含义
20.3.1Entrez模块
20.3.2Medline模块
20.4示例
20.5自测题
第21章使用三维结构数据
21.1本章知识点
21.2案例: 从PDB文件中提取原子名及其三维坐标
21.2.1问题描述
21.2.2Python会话示例
21.3命令的含义
21.3.1Bio.PDB模块
21.3.2SMCRA结构层次
21.4示例
21.5自测题
第五部分小结
第六部分编 程 秘 笈
编程秘笈1: PyCogent库
编程秘笈2: 反向互补和随机化序列
编程秘笈3: 用概率创建随机序列
编程秘笈4: 用Biopython解析多序列联配
编程秘笈5: 从多序列联配中计算共有序列
编程秘笈6: 计算系统发生树的节点间的距离
编程秘笈7: 核苷酸序列的密码子频率
编程秘笈8: 解析Vienna格式的RNA二级结构
编程秘笈9: 解析BLAST的XML输出
编程秘笈10: 解析SBML文件
编程秘笈11: 运行BLAST
编程秘笈12: 访问、 下载和读取网页
编程秘笈13: 解析HTML文件
编程秘笈14: 将PDB文件分割成PDB链文件
编程秘笈15: 在PDB结构上找到两个最靠近的Cα原子
编程秘笈16: 提取两个PDB链间的界面
编程秘笈17: 用Modeller建立同源模型
编程秘笈18: 用ModeRNA分析RNA三维同源模型
编程秘笈19: 从三级结构计算RNA碱基配对
编程秘笈20: 结构重叠的真实实例: 丝氨酸蛋白酶催化三分子
附录
附录A命令概览
附录BPython资源
附录C记录样板
附录D处理目录和用UNIX编程