第一部分 入门 3
第1章 Python shell 3
1.1 本章知识点 3
1.2 案例:计算ATP水解的△G 3
1.2.1 问题描述 3
1.2.2 Python会话示例 4
1.3 命令的含义 4
1.3.1 如何在电脑上运行这个例子 5
1.3.2 变量 7
1.3.3 导入模块 9
1.3.4 计算 10
1.4 示例 12
1.5 自测题 13
第2章 第一个Python程序 14
2.1 本章知识点 14
2.2 案例:如何计算胰岛素序列中的氨基酸频率 14
2.2.1 问题描述 14
2.2.2 Python会话示例 16
2.3 命令的含义 16
2.3.1 如何执行程序 16
2.3.2 程序如何工作 17
2.3.3 注释 17
2.3.4 字符串变量 18
2.3.5 用for进行循环 20
2.3.6 缩进 21
2.3.7 打印至屏幕 21
2.4 示例 22
2.5 自测题 23
第一部分小结 24
第二部分 数据管理 26
第3章 分析数据列 26
3.1 本章知识点 26
3.2 案例:树突长度 26
3.2.1 问题描述 26
3.2.2 Python会话示例 27
3.3 命令的含义 27
3.3.1 读取文本文件 27
3.3.2 写入文本文件 28
3.3.3 将数据收入列表 29
3.3.4 将文本转换为数字 29
3.3.5 将数字转换为文本 30
3.3.6 将数据列写入文本文件 31
3.3.7 计算数值列表 31
3.4 示例 32
3.5 自测题 33
第4章 解析数据记录 34
4.1 本章知识点 34
4.2 案例:整合质谱数据,转化到代谢通路中 34
4.2.1 问题描述 34
4.2.2 Python会话示例 35
4.3 命令的含义 35
4.3.1 if/elif/else语句 36
4.3.2 列表数据结构 38
4.3.3 简洁列表创建方式 40
4.4 示例 41
4.5 自测题 44
第5章 搜索数据 46
5.1 本章知识点 46
5.2 案例:将RNA序列翻译为相应的蛋白质序列 46
5.2.1 问题描述 46
5.2.2 Python会话示例 47
5.3 命令的含义 48
5.3.1 字典 48
5.3.2 while语句 50
5.3.3 用while循环搜索 51
5.3.4 字典搜索 51
5.3.5 列表搜索 52
5.4 示例 52
5.5 自测题 54
第6章 过滤数据 56
6.1 本章知识点 56
6.2 案例:使用RNA-seq输出数据 56
6.2.1 问题描述 56
6.2.2 Python会话示例 58
6.3 命令的含义 59
6.3.1 用简单的for...if组合过滤 59
6.3.2 合并两个数据集 59
6.3.3 两组数据之间的差异 60
6.3.4 从列表、字典和文件中删除元素 60
6.3.5 保持或不保持顺序地删除重复 62
6.3.6 集合 64
6.4 示例 65
6.5 自测题 67
第7章 管理表数据 68
7.1 本章知识点 68
7.2 案例:确定蛋白浓度 68
7.2.1 问题描述 68
7.2.2 Python会话示例 69
7.3 命令的含义 70
7.3.1 二维表的表示方法 70
7.3.2 访问行和单元格 71
7.3.3 插入和删除行 71
7.3.4 访问列 72
7.3.5 插入和删除列 73
7.4 示例 74
7.5 自测题 78
第8章 数据排序 79
8.1 本章知识点 79
8.2 案例:数据表排序 79
8.2.1 问题描述 79
8.2.2 Python会话示例 79
8.3 命令的含义 80
8.3.1 Python列表有利于排序 80
8.3.2 内置函数sorted() 82
8.3.3 用itemgetter排序 82
8.3.4 按升序/降序排序 82
8.3.5 数据结构(元组、字典)排序 83
8.3.6 按长度对字符串排序 84
8.4 示例 84
8.5 自测题 87
第9章 模式匹配和文本挖掘 89
9.1 本章知识点 89
9.2 案例:在蛋白质序列中搜索磷酸化模体 89
9.2.1 问题描述 89
9.2.2 Python会话示例 90
9.3 命令的含义 90
9.3.1 编译正则表达式 90
9.3.2 模式匹配 91
9.3.3 分组 92
9.3.4 修改字符串 94
9.4 示例 96
9.5 自测题 99
第二部分小结 100
第三部分 模块化编程 103
第10章 将程序划分为函数 103
10.1 本章知识点 103
10.2 案例:处理三维坐标文件 103
10.2.1 问题描述 103
10.2.2 Python会话示例 104
10.3 命令的含义 105
10.3.1 如何定义和调用函数 106
10.3.2 函数参数 108
10.3.3 struct模块 111
10.4 示例 112
10.5 自测题 115
第11章 用类化繁为简 117
11.1 本章知识点 117
11.2 案例:孟德尔遗传 117
11.2.1 问题描述 117
11.2.2 Python会话示例 118
11.3 命令的含义 118
11.3.1 用类创建实例 119
11.3.2 类以属性的形式包含数据 120
11.3.3 类包含的方法 121
11.3.4 __repr__方法可打印类和实例 121
11.3.5 使用类有助于把握复杂程序 122
11.4 示例 123
11.5 自测题 125
第12章 调试 126
12.1 本章知识点 126
12.2 案例:程序无法运行时应该怎样处理 126
12.2.1 问题描述 126
12.2.2 Python会话示例 127
12.3 命令的含义 128
12.3.1 语法错误 128
12.3.2 运行时错误 129
12.3.3 处理异常情况 131
12.3.4 未报告出错信息 132
12.4 示例 135
12.5 自测题 137
第13章 使用外部模块:R语言的Python调用接口 138
13.1 本章知识点 138
13.2 案例:从文件中读取数据,并通过Python使用R计算其平均值 138
13.2.1 问题描述 138
13.2.2 Python会话示例 139
13.3 命令的含义 140
13.3.1 rpy2和r实例的robjects对象 140
13.3.2 从Python中读取R对象 140
13.3.3 创建向量 141
13.3.4 创建矩阵 142
13.3.5 将Python对象转换成R对象 144
13.3.6 如何处理包含点的函数参数 145
13.4 示例 146
13.5 自测题 150
第14章 构建程序流程 151
14.1 本章知识点 151
14.2 案例:构建NGS流程 151
14.2.1 问题描述 151
14.2.2 Python会话示例 152
14.3 命令的含义 153
14.3.1 如何使用TopHat和Cufflinks 154
14.3.2 什么是程序流程 154
14.3.3 在程序中交换文件名和数据 155
14.3.4 编写程序包装器 155
14.3.5 关闭文件时的延迟 156
14.3.6 使用命令行参数 157
14.3.7 测试模块:if__name__=='__main__' 157
14.3.8 处理文件和路径 158
14.4 示例 159
14.5 自测题 161
第15章 编写良好的程序 162
15.1 本章知识点 162
15.2 问题描述:不确定性 162
15.2.1 程序编写存在不确定性 162
15.2.2 程序项目实例 162
15.3 软件工程 163
15.3.1 将编程项目分成小任务 163
15.3.2 将程序分为函数和类 165
15.3.3 编写格式良好的代码 166
15.3.4 使用存储库控制程序版本 167
15.3.5 如何将自己的程序分发给其他人 168
15.3.6 软件开发的周期 169
15.4 示例 171
15.5 自测题 173
第三部分小结 174
第四部分 数据可视化 176
第16章 创建科学图表 176
16.1 本章知识点 176
16.2 案例:核糖体的核苷酸频率 176
16.2.1 问题描述 176
16.2.2 Python会话示例 177
16.3 命令的含义 177
16.3.1 matplotlib库 177
16.3.2 绘制竖的柱状图 178
16.3.3 为x轴和y轴添加标注 179
16.3.4 添加刻度 179
16.3.5 添加一个图例框 179
16.3.6 添加图的标题 179
16.3.7 设置图表的边界 179
16.3.8 以低分辨率和高分辨率导出一个图像文件 180
16.4 示例 180
16.5 自测题 184
第17章 使用PyMOL创建分子图像 185
17.1 本章知识点 185
17.2 示例:锌指 185
17.2.1 什么是PyMOL 185
17.2.2 PyMOL会话示例 187
17.3 用七个步骤来创建高分辨率的图像 188
17.3.1 创建一个PyMOL脚本文件 188
17.3.2 加载和保存分子 189
17.3.3 选取分子的局部 190
17.3.4 为每个选取选择展现形式 192
17.3.5 设置颜色 194
17.3.6 设置摄影位置 195
17.3.7 导出高分辨率图像 195
17.4 示例 197
17.5 自测题 198
第18章 处理图像 199
18.1 本章知识点 199
18.2 案例:画一个质粒 199
18.2.1 问题描述 199
18.2.2 Python会话示例 200
18.3 命令的含义 201
18.3.1 创建一个图像 201
18.3.2 读和写图像 201
18.3.3 坐标 202
18.3.4 绘制几何形状 202
18.3.5 旋转图像 204
18.3.6 添加文本标记 204
18.3.7 颜色 205
18.3.8 辅助变量 205
18.4 示例 206
18.5 自测题 207
第四部分小结 208
第五部分 Biopython 212
第19章 使用序列数据 212
19.1 本章知识点 212
19.2 案例:如何将一条DNA编码序列翻译成对应的蛋白质序列,并把它写入FASTA文件 212
19.2.1 问题描述 212
19.2.2 Python会话示例 212
19.3 命令的含义 213
19.3.1 Seq对象 213
19.3.2 把序列当成字符串工作 215
19.3.3 MutableSeq对象 216
19.3.4 SeqRecord对象 217
19.3.5 SeqIO模块 218
19.4 示例 219
19.5 自测题 221
第20章 从网络资源中检索数据 222
20.1 本章知识点 222
20.2 案例:在PubMed中用关键词搜索文献,下载并解析对应的记录 222
20.2.1 问题描述 222
20.2.2 Python会话示例 223
20.3 命令的含义 223
20.3.1 Entrez模块 223
20.3.2 Medline模块 225
20.4 示例 225
20.5 自测题 228
第21章 使用三维结构数据 230
21.1 本章知识点 230
21.2 案例:从PDB文件中提取原子名及其三维坐标 230
21.2.1 问题描述 230
21.2.2 Python会话示例 230
21.3 命令的含义 231
21.3.1 Bio.PDB模块 231
21.3.2 SMCRA结构层次 232
21.4 示例 236
21.5 自测题 238
第五部分小结 240
第六部分 编程秘笈 242
编程秘笈1:PyCogent库 242
编程秘笈2:反向互补和随机化序列 244
编程秘笈3:用概率创建随机序列 246
编程秘笈4:用Biopython解析多序列联配 247
编程秘笈5:从多序列联配中计算共有序列 249
编程秘笈6:计算系统发生树的节点间的距离 251
编程秘笈7:核苷酸序列的密码子频率 253
编程秘笈8:解析Vienna格式的RNA二级结构 256
编程秘笈9:解析BLAST的XML输出 258
编程秘笈10:解析SBML文件 259
编程秘笈11:运行BLAST 261
编程秘笈12:访问、下载和读取网页 265
编程秘笈13:解析HTML文件 267
编程秘笈14:将PDB文件分割成PDB链文件 269
编程秘笈15:在PDB结构上找到两个最靠近的Cα原子 270
编程秘笈16:提取两个PDB链间的界面 272
编程秘笈17:用Modeller建立同源模型 274
编程秘笈18:用ModeRNA分析RNA三维同源模型 276
编程秘笈19:从三级结构计算RNA碱基配对 278
编程秘笈20:结构重叠的真实实例:丝氨酸蛋白酶催化三分子 280
附录 282
附录A 命令概览 282
附录B Python资源 299
附录C 记录样板 302
附录D 处理目录和用UNIX编程 307