生物資訊python-從入門到精通?
python開發的方向太多了,有機器學習,資料探勘,網路開發,爬蟲等等。其實在生信領域,python還顯現不出絕對的優勢,生信的大部分軟體流程都是用shell或perl寫的,而且已經足夠好用了。我選python是因為我想順便學點資料探勘和機器學習的東西,而且python這些年越來越火,發展勢頭遠超其他指令碼語言,所以學它肯定是沒錯的。
一、入門標準
入門比較難定義,什麼程度才算入門呢?
掌握基本的語法,熟練使用python的內建型別、內建函式和資料結構。
了解一些基本的模組的使用,能夠實現一些簡單的需求。
後面有乙個例項,如果你能簡單的做完,那我敢肯定你已經入門了。
二、基本知識點
1.基本語法
縮排:python是通過**縮進來決定**層次邏輯的,一般約定使用4個空格
版本問題:主要包括2.x系列的和3.x系列的,兩者語法不同且不相容,有的模組只能在指定版本下安裝。建議使用3.x python,碰到特殊問題再去使用指定版本
檔案編碼宣告:python會去環境變數裡尋找python直譯器。如果**裡有中文,則要以utf-8編碼
#!/usr/bin/env python
#-- coding: utf-8 –-
變數定義:使用前要先定義
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 基本資料結構:列表、元組、字典、集合。資料結構就是一種容器,用於在記憶體中存放我們的資料。
列表:任意元素組成的順序序列,以位置為索引。
『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文件。
正規表示式 re
有序字典 collections.ordereddict()
呼叫系統命令 subprocess.call()
三、入門例項
題目:從大量fasta檔案中提取指定序列,並對提取到的序列做某些處理(如求反向互補序列)
描述:假設你有很多測序資料,分別儲存在不同資料夾的不同檔案裡,現在給你一些序列名,要求你從眾多資料中提取出特定的序列。
image
image
思路:遍歷每乙個資料夾;遍歷每乙個檔案;讀取檔案,判斷序列,輸出序列(處理),關閉檔案;處理資料,新增乙個函式即可。
四、精通標準
當然這只是個噱頭,精通的道路是無止境的,下面只是羅列了一些常見的高階特性。
切片,推導式,生成器,異常處理
高階模組:threading(多執行緒),ctypes(呼叫c程式優化效能),logging(日誌)
專業模組:pysam - 處理基因組資料(fasta/fastq/bam/vcf)的python模組
biopython:python的計算分子生物學和生物資訊學工具包
編寫自己的package:解決某個特定需求,上傳到 pypi,然後你就成為大神了
程式設計規範:寫出規範化的** google python coding style
函式式程式設計:即使**量暴增也不會影響**的可讀性,除錯和debug也會變得非常簡單。
物件導向程式設計:最高端的程式設計方法,對函式進行分類和封裝,讓開發「更快更好更強…」
五、最後
python只是一門程式語言,一種實現工具,我們可以用很多種語言來替換它,我們之所以選擇python,是因為我們喜歡它給我們帶來的便捷。如果你想深入某個領域,其實真正重要的是技術背後的演算法。
六、推薦資源
python教程 - 廖雪峰的官方**
python初級教程:入門詳解
python 物件導向(初級篇)
python | codecademy
google python編碼風格
python正規表示式指南
《python學習手冊》
《python程式設計金典》
《bioinformatics programming using python》
python注釋 Python學習入門到精通 注釋
如果你多了解一些程式語言,你就能夠發現乙個特別神奇的現象,所有的程式語言都允許你寫注釋,而在很多初學者眼中,注釋並不是什麼重要的東西,學習過程中幾乎沒有太多的關注。但在實際工作中,注釋是非常重要的,甚至有觀點認為注釋是程式的一部分,為什麼在專業人士眼中,注釋如此重要呢?其實原因很簡單,你今天寫的 7...
Scrapy爬蟲從入門到例項精講(上)
最近幾天一直在學習scrapy這個框架,打算用幾篇文章來總結一下自己這段時間學習的知識。首先我們需要簡單介紹一下scrapy是個什麼東西。先來看一張圖,是從官網上弄下來的。scrapy是乙個框架,這個框架是用來爬取 資料的,並且該框架為我們提供了各種介面,包括爬蟲介面,管道介面,資料 儲存介面以及資...
C 面向服務WebService從入門到精通
一 c 遠端呼叫技術webservice修煉手冊 基礎篇 本次分享課您將學習到以下乾貨知識點 1 webservice技術呼叫原理圖。2 c webservice常用的幾種呼叫方式。3 c webservice除錯小技巧和開發必備工具分享。4 實戰演練之如何通過優雅的方式進行webservice呼叫...