本書實例意在解決生物學問題,通過“編程技法”的形式,涵蓋盡可能多的組織、分析、表現(xiàn)結果的策略。在每章結尾都會有為生物研究者設計的編程題目,適合教學和自學。本書由六部分組成:Python語言基本介紹,語言所有成分介紹,高級編程,數(shù)據(jù)可視化,生物信息通用包Biopython,最后給出20個編程秘笈,范圍涵蓋了從二級結構預測、多序列比對到蛋白質三維結構的廣泛話題。此外,本書附錄還包括了大量的生物信息常用資源的信息。
在幾年前, 編程只是計算科學工作者的特權。雖然如此, 編程正加速變成生物等其他領域專家的一種需要。作為一個生物學研究者, 不需要對成為一個編程專家感興趣, 但是需要把編程作為多個工具中的一種來繼續(xù)科學工作?赡茏x者已經(jīng)意識到編程技巧可以大幅地加速管理和分析數(shù)據(jù)?赡茏x者需要處理大規(guī)模的數(shù)據(jù), 多次重復某種相同的分析, 或者從一個非通用格式的文件中解析數(shù)據(jù)?梢源_信的是, 在所有這些情形下, 編程可以幫助你。然而, 因為讀者從來沒有對“枯燥無味”和“概念艱深”的計算機科學學科有很大興趣, 就可能會感到不習慣。如果是這樣的情況, 這本書是適合你的。
本書是為那些需要更多地掌控數(shù)據(jù), 因此需要學習一些編程的生命科學工作者而寫的。目標是使得那些以前沒有編程經(jīng)驗的生物科學工作者能夠自己用Python對生物數(shù)據(jù)進行分析。
在前言中, 包括全書內(nèi)容的概述及編程介紹, 最后是對Python編程語言的概覽。
我們希望這本編程書是為生物學工作者的讀者量身定制的, 能幫助分析讀者的數(shù)據(jù), 從而盡早有所收獲。
本書內(nèi)容概述
本書中, 讀者不僅能夠學到如何編程, 還有怎樣管理數(shù)據(jù), 包括了從文件中讀取數(shù)據(jù), 分析和處理它們, 把結果寫到文件中或計算機屏幕上。每個在本書中描述的單個代碼段都旨在解決生物學問題, 每個例子都處理生物疑問。本書的目標是包含盡可能多的實例, 覆蓋更多的組織、 分析和表現(xiàn)數(shù)據(jù)的策略, 用“編程秘笈”的方式來解決生物問題。在每一章后面的自測題可以用來自測或在對面向生物學工作者的編程課程上使用。
本書分六部分組織, 共21章。第一部分介紹Python語言, 如何寫第一個程序。第二部分介紹這個語言的所有基本元件, 使讀者能夠獨立地寫小的程序。第三部分是關于運用技巧來創(chuàng)建組織優(yōu)良、 性能高效和代碼正確的較長的程序。第四部分致力于數(shù)據(jù)可視化, 可以學到如何繪制數(shù)據(jù), 或者為一篇文章或演示用的PPT文件配圖。還介紹了PyMOL, 一個對大分子結構可視化的程序。第五部分介紹Biopython, 它可以幫助讀寫多種生物文件格式, 便捷查詢NCBI的在線數(shù)據(jù)庫, 從網(wǎng)絡上檢索生物記錄。第六部分是一個實用手冊, 包含了20個特定的“編程秘笈”, 從二級結構預測和多序列聯(lián)配分析到蛋白三維結構的疊加。
此外, 這本書還有四個附錄。附錄A提供了包括Python和UNIX命令的概覽; 附錄B列出了幾個在網(wǎng)上免費可用的Python資源的鏈接; 附錄C包含了遍布在本書中引用的樣本文件格式, 例如序列的FASTA格式, 序列的GenBank格式, PDB文件和MSA示例等。最后, 附錄D是一個簡短的UNIX教程。
什么是編程
這本書將講授如何寫程序。程序準確地說是什么呢?一個程序在概念上類似一個菜譜。正如菜譜在開始時列出了成分和廚具一樣,
Allegra Via,意大利羅馬**大學物理系助理教授。研究方向為生物信息學,在生物信息學數(shù)據(jù)處理和Python編程方面具有豐富的實踐經(jīng)驗。 Allegra Via,意大利羅馬**大學物理系助理教授。研究方向為生物信息學,在生物信息學數(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導入模塊
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自測題
第一部分小結
第二部分數(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將文本轉換為數(shù)字
3.3.5將數(shù)字轉換為文本
3.3.6將數(shù)據(jù)列寫入文本文件
3.3.7計算數(shù)值列表
3.4示例
3.5自測題
第4章解析數(shù)據(jù)記錄
4.1本章知識點
4.2案例: 整合質譜數(shù)據(jù), 轉化到代謝通路中
4.2.1問題描述
4.2.2Python會話示例
4.3命令的含義
4.3.1if/elif/else語句
4.3.2列表數(shù)據(jù)結構
4.3.3簡潔列表創(chuàng)建方式
4.4示例
4.5自測題
第5章搜索數(shù)據(jù)
5.1本章知識點
5.2案例: 將RNA序列翻譯為相應的蛋白質序列
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保持或不保持順序地刪除重復
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ù)結構(元組、 字典)排序
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章將程序劃分為函數(shù)
10.1本章知識點
10.2案例: 處理三維坐標文件
10.2.1問題描述
10.2.2Python會話示例
10.3命令的含義
10.3.1如何定義和調用函數(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使用類有助于把握復雜程序
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案例: 從文件中讀取數(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對象轉換成R對象
13.3.6如何處理包含點的函數(shù)參數(shù)
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在程序中交換文件名和數(shù)據(jù)
14.3.4編寫程序包裝器
14.3.5關閉文件時的延遲
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將編程項目分成小任務
15.3.2將程序分為函數(shù)和類
15.3.3編寫格式良好的代碼
15.3.4使用存儲庫控制程序版本
15.3.5如何將自己的程序分發(fā)給其他人
15.3.6軟件開發(fā)的周期
15.4示例
15.5自測題
第三部分小結
第四部分數(shù)據(jù)可視化
第16章創(chuàng)建科學圖表
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創(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設置顏色
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創(chuàng)建一個圖像
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章使用序列數(shù)據(jù)
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章從網(wǎng)絡資源中檢索數(shù)據(jù)
20.1本章知識點
20.2案例: 在PubMed中用關鍵詞搜索文獻, 下載并解析對應的記錄
20.2.1問題描述
20.2.2Python會話示例
20.3命令的含義
20.3.1Entrez模塊
20.3.2Medline模塊
20.4示例
20.5自測題
第21章使用三維結構數(shù)據(jù)
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: 用概率創(chuàng)建隨機序列
編程秘笈4: 用Biopython解析多序列聯(lián)配
編程秘笈5: 從多序列聯(lián)配中計算共有序列
編程秘笈6: 計算系統(tǒng)發(fā)生樹的節(jié)點間的距離
編程秘笈7: 核苷酸序列的密碼子頻率
編程秘笈8: 解析Vienna格式的RNA二級結構
編程秘笈9: 解析BLAST的XML輸出
編程秘笈10: 解析SBML文件
編程秘笈11: 運行BLAST
編程秘笈12: 訪問、 下載和讀取網(wǎng)頁
編程秘笈13: 解析HTML文件
編程秘笈14: 將PDB文件分割成PDB鏈文件
編程秘笈15: 在PDB結構上找到兩個最靠近的Cα原子
編程秘笈16: 提取兩個PDB鏈間的界面
編程秘笈17: 用Modeller建立同源模型
編程秘笈18: 用ModeRNA分析RNA三維同源模型
編程秘笈19: 從三級結構計算RNA堿基配對
編程秘笈20: 結構重疊的真實實例: 絲氨酸蛋白酶催化三分子
附錄
附錄A命令概覽
附錄BPython資源
附錄C記錄樣板
附錄D處理目錄和用UNIX編程