生物信息Python-從入門到精通?

Python開發的方向太多了,有機器學習,數據挖掘,網絡開發,爬蟲等等。其實在生信領域,Python還顯現不出絕對的優點,生信的大部分軟件流程都是用shell或Perl寫的,並且已經足夠好用了。我選Python是由於我想順便學點數據挖掘和機器學習的東西,並且Python這些年愈來愈火,發展勢頭遠超其餘腳本語言,因此學它確定是沒錯的。html

1、入門標準

入門比較難定義,什麼程度纔算入門呢?python

1. 掌握基本的語法,熟練使用python的內置類型、內置函數和數據結構。
2. 瞭解一些基本的模塊的使用,可以實現一些簡單的需求。git

後面有一個實例,若是你能簡單的作完,那我敢確定你已經入門了。github

2、基本知識點

1.基本語法正則表達式

縮進:Python是經過代碼縮進來決定代碼層次邏輯的,通常約定使用4個空格算法

版本問題:主要包括2.x系列的和3.x系列的,二者語法不一樣且不兼容,有的模塊只能在指定版本下安裝。建議使用3.x Python,碰到特殊問題再去使用指定版本shell

文件編碼聲明:python會去環境變量裏尋找python解釋器。若是代碼裏有中文,則要以utf-8編碼編程

#!/usr/bin/env python
#-*- coding: utf-8 –*-

變量定義:使用前要先定義api

dir():列出一個數據類型或對象的全部方法,很是好用,同help()網絡

文件操做:f = open(),f.close();with open() as f: ,os.path.exists(),os.path.isfile(),os.path.abspath()
目錄操做:os.mkdir(),os.rmdir(),os.listdir(),os.chdir()

開發環境選擇:

  • Sublime Text 對Python支持挺好,輕量級生化武器(推薦)
  • Eclipse+Pydev比較厚重,大型開發比較適合
  • Vim/Atom
  • PyCharm
  • IPython
  • WingIDE

2.處理數據

2.1 基本數據類型:布爾;整型;浮點型;字符串

# 字符串的內置函數,都比較有用
'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'

2.2 基本數據結構:列表、元組、字典、集合。數據結構就是一種容器,用於在內存中存放咱們的數據。

列表:任意元素組成的順序序列,以位置爲索引。

# 列表的內置函數
'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'

元組:至關於不可變的列表,防止錯誤修改,節省內存開銷。元組解包

# 元組的內置函數
'count', 'index'

字典:鍵值對,沒有順序,鍵必須是常量。

# 字典內置函數
'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values'

集合:沒有順序,元素之間沒有重複,至關於捨棄了值的字典。集合操做(&,|,-,^,<,<=,>,>=)

# 集合內置函數
'add', 'clear', 'copy', 'discard', 'pop', 'remove', 'update'
'isdisjoint','issuperset','issubset','symmetric_difference','difference','union', 'intersection', 'symmetric_difference_update','intersection_update','difference_update',

2.3 控制語句
條件:if…else…

循環:for,while,break,continue

2.4 模塊使用

Python有着很是友好的模塊安裝方法,一個pip install命令幾乎能夠安裝絕大多數的模塊。建議使用模塊前多看相關API文檔。

最經常使用的模塊有:sys,os,re,csv,gzip,fileinput,random,collections,time;百度上有不少很好的模塊使用入門教程。

  • 正則表達式 re
  • 有序字典 collections.OrderedDict()
  • 調用系統命令 subprocess.call()

3、入門實例

題目:從大量FASTA文件中提取指定序列,並對提取到的序列作某些處理(如求反向互補序列)

描述:假設你有不少測序數據,分別存儲在不一樣文件夾的不一樣文件裏,如今給你一些序列名,要求你從衆多數據中提取出特定的序列。

image

image

思路:遍歷每個文件夾;遍歷每個文件;讀取文件,判斷序列,輸出序列(處理),關閉文件;處理數據,添加一個函數便可。

4、精通標準

固然這只是個噱頭,精通的道路是無止境的,下面只是羅列了一些常見的高級特性。

切片,推導式,生成器,異常處理

高級模塊:threading(多線程),ctypes(調用C程序優化性能),logging(日誌)

專業模塊:pysam - 處理基因組數據(fasta/fastq/bam/vcf)的Python模塊

Biopython:Python的計算分子生物學和生物信息學工具包

編寫本身的package:解決某個特定需求,上傳到 PyPI,而後你就成爲大神了

編程規範:寫出規範化的代碼 Google Python coding style

函數式編程:即便代碼量暴增也不會影響代碼的可讀性,調試和Debug也會變得很是簡單。

面向對象編程:最高級的編程方法,對函數進行分類和封裝,讓開發「更快更好更強...」

5、最後

Python只是一門編程語言,一種實現工具,咱們能夠用不少種語言來替換它,咱們之因此選擇Python,是由於咱們喜歡它給咱們帶來的便捷。若是你想深刻某個領域,其實真正重要的是技術背後的算法。

6、推薦資源

  1. Python教程 - 廖雪峯的官方網站
  2. python初級教程:入門詳解
  3. Python 面向對象(初級篇)
  4. Python | Codecademy
  5. Google Python編碼風格
  6. Python正則表達式指南
  7. 《Python學習手冊》
  8. 《Python編程金典》
  9. 《Bioinformatics Programming Using Python》
相關文章
相關標籤/搜索