本書實例意在解決生物學(xué)問題,通過“編程技法”的形式,涵蓋盡可能多的組織、分析、表現(xiàn)結(jié)果的策略。在每章結(jié)尾都會有為生物研究者設(shè)計的編程題目,適合教學(xué)和自學(xué)。本書由六部分組成:Python語言基本介紹,語言所有成分介紹,高級編程,數(shù)據(jù)可視化,生物信息通用包Biopython,最后給出20個編程秘笈,范圍涵蓋了從二級結(jié)構(gòu)預(yù)測、多序列比對到蛋白質(zhì)三維結(jié)構(gòu)的廣泛話題。此外,本書附錄還包括了大量的生物信息常用資源的信息。
在幾年前, 編程只是計算科學(xué)工作者的特權(quán)。雖然如此, 編程正加速變成生物等其他領(lǐng)域?qū)<业囊环N需要。作為一個生物學(xué)研究者, 不需要對成為一個編程專家感興趣, 但是需要把編程作為多個工具中的一種來繼續(xù)科學(xué)工作?赡茏x者已經(jīng)意識到編程技巧可以大幅地加速管理和分析數(shù)據(jù)。可能讀者需要處理大規(guī)模的數(shù)據(jù), 多次重復(fù)某種相同的分析, 或者從一個非通用格式的文件中解析數(shù)據(jù)。可以確信的是, 在所有這些情形下, 編程可以幫助你。然而, 因為讀者從來沒有對“枯燥無味”和“概念艱深”的計算機科學(xué)學(xué)科有很大興趣, 就可能會感到不習(xí)慣。如果是這樣的情況, 這本書是適合你的。
本書是為那些需要更多地掌控數(shù)據(jù), 因此需要學(xué)習(xí)一些編程的生命科學(xué)工作者而寫的。目標(biāo)是使得那些以前沒有編程經(jīng)驗的生物科學(xué)工作者能夠自己用Python對生物數(shù)據(jù)進行分析。
在前言中, 包括全書內(nèi)容的概述及編程介紹, 最后是對Python編程語言的概覽。
我們希望這本編程書是為生物學(xué)工作者的讀者量身定制的, 能幫助分析讀者的數(shù)據(jù), 從而盡早有所收獲。
本書內(nèi)容概述
本書中, 讀者不僅能夠?qū)W到如何編程, 還有怎樣管理數(shù)據(jù), 包括了從文件中讀取數(shù)據(jù), 分析和處理它們, 把結(jié)果寫到文件中或計算機屏幕上。每個在本書中描述的單個代碼段都旨在解決生物學(xué)問題, 每個例子都處理生物疑問。本書的目標(biāo)是包含盡可能多的實例, 覆蓋更多的組織、 分析和表現(xiàn)數(shù)據(jù)的策略, 用“編程秘笈”的方式來解決生物問題。在每一章后面的自測題可以用來自測或在對面向生物學(xué)工作者的編程課程上使用。
本書分六部分組織, 共21章。第一部分介紹Python語言, 如何寫第一個程序。第二部分介紹這個語言的所有基本元件, 使讀者能夠獨立地寫小的程序。第三部分是關(guān)于運用技巧來創(chuàng)建組織優(yōu)良、 性能高效和代碼正確的較長的程序。第四部分致力于數(shù)據(jù)可視化, 可以學(xué)到如何繪制數(shù)據(jù), 或者為一篇文章或演示用的PPT文件配圖。還介紹了PyMOL, 一個對大分子結(jié)構(gòu)可視化的程序。第五部分介紹Biopython, 它可以幫助讀寫多種生物文件格式, 便捷查詢NCBI的在線數(shù)據(jù)庫, 從網(wǎng)絡(luò)上檢索生物記錄。第六部分是一個實用手冊, 包含了20個特定的“編程秘笈”, 從二級結(jié)構(gòu)預(yù)測和多序列聯(lián)配分析到蛋白三維結(jié)構(gòu)的疊加。
此外, 這本書還有四個附錄。附錄A提供了包括Python和UNIX命令的概覽; 附錄B列出了幾個在網(wǎng)上免費可用的Python資源的鏈接; 附錄C包含了遍布在本書中引用的樣本文件格式, 例如序列的FASTA格式, 序列的GenBank格式, PDB文件和MSA示例等。最后, 附錄D是一個簡短的UNIX教程。
什么是編程
這本書將講授如何寫程序。程序準(zhǔn)確地說是什么呢?一個程序在概念上類似一個菜譜。正如菜譜在開始時列出了成分和廚具一樣,
Allegra Via,意大利羅馬**大學(xué)物理系助理教授。研究方向為生物信息學(xué),在生物信息學(xué)數(shù)據(jù)處理和Python編程方面具有豐富的實踐經(jīng)驗。 Allegra Via,意大利羅馬**大學(xué)物理系助理教授。研究方向為生物信息學(xué),在生物信息學(xué)數(shù)據(jù)處理和Python編程方面具有豐富的實踐經(jīng)驗。
第一部分入門
第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導(dǎo)入模塊
1.3.4計算
1.4示例
1.5自測題
第2章第一個Python程序
2.1本章知識點
2.2案例: 如何計算胰島素序列中的氨基酸頻率
2.2.1問題描述
2.2.2Python會話示例
2.3命令的含義
2.3.1如何執(zhí)行程序
2.3.2程序如何工作
2.3.3注釋
2.3.4字符串變量
2.3.5用for進行循環(huán)
2.3.6縮進
2.3.7打印至屏幕
2.4示例
2.5自測題
第一部分小結(jié)
第二部分?jǐn)?shù) 據(jù) 管 理
第3章分析數(shù)據(jù)列
3.1本章知識點
3.2案例: 樹突長度
3.2.1問題描述
3.2.2Python會話示例
3.3命令的含義
3.3.1讀取文本文件
3.3.2寫入文本文件
3.3.3將數(shù)據(jù)收入列表
3.3.4將文本轉(zhuǎn)換為數(shù)字
3.3.5將數(shù)字轉(zhuǎn)換為文本
3.3.6將數(shù)據(jù)列寫入文本文件
3.3.7計算數(shù)值列表
3.4示例
3.5自測題
第4章解析數(shù)據(jù)記錄
4.1本章知識點
4.2案例: 整合質(zhì)譜數(shù)據(jù), 轉(zhuǎn)化到代謝通路中
4.2.1問題描述
4.2.2Python會話示例
4.3命令的含義
4.3.1if/elif/else語句
4.3.2列表數(shù)據(jù)結(jié)構(gòu)
4.3.3簡潔列表創(chuàng)建方式
4.4示例
4.5自測題
第5章搜索數(shù)據(jù)
5.1本章知識點
5.2案例: 將RNA序列翻譯為相應(yīng)的蛋白質(zhì)序列
5.2.1問題描述
5.2.2Python會話示例
5.3命令的含義
5.3.1字典
5.3.2while語句
5.3.3用while循環(huán)搜索
5.3.4字典搜索
5.3.5列表搜索
5.4示例
5.5自測題
第6章過濾數(shù)據(jù)
6.1本章知識點
6.2案例: 使用RNA�seq輸出數(shù)據(jù)
6.2.1問題描述
6.2.2Python會話示例
6.3命令的含義
6.3.1用簡單的for...if組合過濾
6.3.2合并兩個數(shù)據(jù)集
6.3.3兩組數(shù)據(jù)之間的差異
6.3.4從列表、 字典和文件中刪除元素
6.3.5保持或不保持順序地刪除重復(fù)
6.3.6集合
6.4示例
6.5自測題
第7章管理表數(shù)據(jù)
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章數(shù)據(jù)排序
8.1本章知識點
8.2案例: 數(shù)據(jù)表排序
8.2.1問題描述
8.2.2Python會話示例
8.3命令的含義
8.3.1Python列表有利于排序
8.3.2內(nèi)置函數(shù)sorted()
8.3.3用itemgetter排序
8.3.4按升序/降序排序
8.3.5數(shù)據(jù)結(jié)構(gòu)(元組、 字典)排序
8.3.6按長度對字符串排序
8.4示例
8.5自測題
第9章模式匹配和文本挖掘
9.1本章知識點
9.2案例: 在蛋白質(zhì)序列中搜索磷酸化模體
9.2.1問題描述
9.2.2Python會話示例
9.3命令的含義
9.3.1編譯正則表達式
9.3.2模式匹配
9.3.3分組
9.3.4修改字符串
9.4示例
9.5自測題
第二部分小結(jié)
第三部分模塊化編程
第10章將程序劃分為函數(shù)
10.1本章知識點
10.2案例: 處理三維坐標(biāo)文件
10.2.1問題描述
10.2.2Python會話示例
10.3命令的含義
10.3.1如何定義和調(diào)用函數(shù)
10.3.2函數(shù)參數(shù)
10.3.3struct模塊
10.4示例
10.5自測題
第11章用類化繁為簡
11.1本章知識點
11.2案例: 孟德爾遺傳
11.2.1問題描述
11.2.2Python會話示例
11.3命令的含義
11.3.1用類創(chuàng)建實例
11.3.2類以屬性的形式包含數(shù)據(jù)
11.3.3類包含的方法
11.3.4__repr__方法可打印類和實例
11.3.5使用類有助于把握復(fù)雜程序
11.4示例
11.5自測題
第12章調(diào)試
12.1本章知識點
12.2案例: 程序無法運行時應(yīng)該怎樣處理
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調(diào)用接口
13.1本章知識點
13.2案例: 從文件中讀取數(shù)據(jù), 并通過Python使用R計算其平均值
13.2.1問題描述
13.2.2Python會話示例
13.3命令的含義
13.3.1rpy2和r實例的robjects對象
13.3.2從Python中讀取R對象
13.3.3創(chuàng)建向量
13.3.4創(chuàng)建矩陣
13.3.5將Python對象轉(zhuǎn)換成R對象
13.3.6如何處理包含點的函數(shù)參數(shù)
13.4示例
13.5自測題
第14章構(gòu)建程序流程
14.1本章知識點
14.2案例: 構(gòu)建NGS流程
14.2.1問題描述
14.2.2Python會話示例
14.3命令的含義
14.3.1如何使用TopHat和Cufflinks
14.3.2什么是程序流程
14.3.3在程序中交換文件名和數(shù)據(jù)
14.3.4編寫程序包裝器
14.3.5關(guān)閉文件時的延遲
14.3.6使用命令行參數(shù)
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將編程項目分成小任務(wù)
15.3.2將程序分為函數(shù)和類
15.3.3編寫格式良好的代碼
15.3.4使用存儲庫控制程序版本
15.3.5如何將自己的程序分發(fā)給其他人
15.3.6軟件開發(fā)的周期
15.4示例
15.5自測題
第三部分小結(jié)
第四部分?jǐn)?shù)據(jù)可視化
第16章創(chuàng)建科學(xué)圖表
16.1本章知識點
16.2案例: 核糖體的核苷酸頻率
16.2.1問題描述
16.2.2Python會話示例
16.3命令的含義
16.3.1matplotlib庫
16.3.2繪制豎的柱狀圖
16.3.3為x軸和y軸添加標(biāo)注
16.3.4添加刻度
16.3.5添加一個圖例框
16.3.6添加圖的標(biāo)題
16.3.7設(shè)置圖表的邊界
16.3.8以低分辨率和高分辨率導(dǎo)出一個圖像文件
16.4示例
16.5自測題
第17章使用PyMOL創(chuàng)建分子圖像
17.1本章知識點
17.2示例: 鋅指
17.2.1什么是PyMOL
17.2.2PyMOL會話示例
17.3用七個步驟來創(chuàng)建高分辨率的圖像
17.3.1創(chuàng)建一個PyMOL腳本文件
17.3.2加載和保存分子
17.3.3選取分子的局部
17.3.4為每個選取選擇展現(xiàn)形式
17.3.5設(shè)置顏色
17.3.6設(shè)置攝影位置
17.3.7導(dǎo)出高分辨率圖像
17.4示例
17.5自測題
第18章處理圖像
18.1本章知識點
18.2案例: 畫一個質(zhì)粒
18.2.1問題描述
18.2.2Python會話示例
18.3命令的含義
18.3.1創(chuàng)建一個圖像
18.3.2讀和寫圖像
18.3.3坐標(biāo)
18.3.4繪制幾何形狀
18.3.5旋轉(zhuǎn)圖像
18.3.6添加文本標(biāo)記
18.3.7顏色
18.3.8輔助變量
18.4示例
18.5自測題
第四部分小結(jié)
第五部分Biopython
第19章使用序列數(shù)據(jù)
19.1本章知識點
19.2案例: 如何將一條DNA編碼序列翻譯成對應(yīng)的蛋白質(zhì)序列, 并把它寫入
FASTA文件
19.2.1問題描述
19.2.2Python會話示例
19.3命令的含義
19.3.1Seq對象
19.3.2把序列當(dāng)成字符串工作
19.3.3MutableSeq對象
19.3.4SeqRecord對象
19.3.5SeqIO模塊
19.4示例
19.5自測題
第20章從網(wǎng)絡(luò)資源中檢索數(shù)據(jù)
20.1本章知識點
20.2案例: 在PubMed中用關(guān)鍵詞搜索文獻, 下載并解析對應(yīng)的記錄
20.2.1問題描述
20.2.2Python會話示例
20.3命令的含義
20.3.1Entrez模塊
20.3.2Medline模塊
20.4示例
20.5自測題
第21章使用三維結(jié)構(gòu)數(shù)據(jù)
21.1本章知識點
21.2案例: 從PDB文件中提取原子名及其三維坐標(biāo)
21.2.1問題描述
21.2.2Python會話示例
21.3命令的含義
21.3.1Bio.PDB模塊
21.3.2SMCRA結(jié)構(gòu)層次
21.4示例
21.5自測題
第五部分小結(jié)
第六部分編 程 秘 笈
編程秘笈1: PyCogent庫
編程秘笈2: 反向互補和隨機化序列
編程秘笈3: 用概率創(chuàng)建隨機序列
編程秘笈4: 用Biopython解析多序列聯(lián)配
編程秘笈5: 從多序列聯(lián)配中計算共有序列
編程秘笈6: 計算系統(tǒng)發(fā)生樹的節(jié)點間的距離
編程秘笈7: 核苷酸序列的密碼子頻率
編程秘笈8: 解析Vienna格式的RNA二級結(jié)構(gòu)
編程秘笈9: 解析BLAST的XML輸出
編程秘笈10: 解析SBML文件
編程秘笈11: 運行BLAST
編程秘笈12: 訪問、 下載和讀取網(wǎng)頁
編程秘笈13: 解析HTML文件
編程秘笈14: 將PDB文件分割成PDB鏈文件
編程秘笈15: 在PDB結(jié)構(gòu)上找到兩個最靠近的Cα原子
編程秘笈16: 提取兩個PDB鏈間的界面
編程秘笈17: 用Modeller建立同源模型
編程秘笈18: 用ModeRNA分析RNA三維同源模型
編程秘笈19: 從三級結(jié)構(gòu)計算RNA堿基配對
編程秘笈20: 結(jié)構(gòu)重疊的真實實例: 絲氨酸蛋白酶催化三分子
附錄
附錄A命令概覽
附錄BPython資源
附錄C記錄樣板
附錄D處理目錄和用UNIX編程