九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
生信分析人員如何系統(tǒng)入門python(2019更新版)

生信分析人員如何系統(tǒng)入門R(2019更新版)生信分析人員如何系統(tǒng)入門Linux(2019更新版) 后又一重磅指南!

作為一個(gè)生信老人,我自己是沒有太多時(shí)間分配給python學(xué)習(xí)啦,所以本文特邀技能樹團(tuán)隊(duì)腦圖大神給大家設(shè)計(jì)了17套python入門思維導(dǎo)圖,文末有領(lǐng)取方式哈!

并系統(tǒng)性介紹了python學(xué)習(xí)指南。

引言

一般來說,使用 Python 做生信有兩種情況:一種是專門分析生物學(xué)數(shù)據(jù)(主要是各種組學(xué)),以調(diào)包為主,日常工作就是熟悉各種包的文檔,寫各種腳本串聯(lián)工具分析流程,大部分寫的都是以快速實(shí)現(xiàn)為目的的即用即棄小腳本,對(duì) Python 要求并不高,掌握最核心的語法就可以解決大部分問題,甚至面向?qū)ο筮@部分的編程都較少涉及。

另一種則是以開發(fā)工具算法,寫包為主,也就是提供工具給前一種工作者使用,這就需要良好的數(shù)理基礎(chǔ),對(duì)編程也有更高的要求,畢竟軟件運(yùn)行時(shí)的效率也是很重要的。

Python 相關(guān)的知識(shí)點(diǎn)非常多,本篇文章既然是“生信工程師如何入門”系列,自然是拋磚引玉為主,幫助不了解 Python 的同學(xué)建立一個(gè)領(lǐng)域的概念,并可以據(jù)此開始自己的 Python 之旅。

Python 是什么?

Python 是一種面向?qū)ο?、解釋型?jì)算機(jī)程序設(shè)計(jì)語言。Python 語言的哲學(xué)也頗具玩味,在這里和大家分享一下:

There should be one -- and preferably only one -- obvious way to do it.

這一點(diǎn)和 Perl 有著很大的差異,Perl 往往有多種實(shí)現(xiàn)目的的方式(而且即興寫出來的代碼很容易在幾個(gè)月后看不懂)。

Python 和 Perl 用哪個(gè)好?我自己是寫 Python 為主的,Perl 一直只有勉強(qiáng)讀懂的水平,因此無法做深入的評(píng)價(jià)。單從生信常用的編程任務(wù)而言,兩者實(shí)現(xiàn)的邏輯是非常相似的(或者說,編程本身的實(shí)現(xiàn)邏輯理念都是近似的)。

另外,當(dāng)你的程序有更高的復(fù)雜度需求時(shí),也可以充分利用 Python 面向?qū)ο蟮奶匦?,將生物信息的?shù)據(jù)對(duì)象化,這種可重用機(jī)制在較為復(fù)雜的大項(xiàng)目中是可以顯著提高效率的。

這里附上的是截止 2019 年 9 月的編程語言排行榜,可以看到 Python 已經(jīng)是最流行的腳本編程語言。

為什么要用 Python

Python 語法簡(jiǎn)單,容易學(xué)習(xí),工整的程序格式使其可讀性非常強(qiáng),并且易于維護(hù)。此外,它也可以很好的支持對(duì)象、模塊和其他可重用機(jī)制,并支持 C 語言模塊拓展。Python 有大量免費(fèi)、穩(wěn)定的第三方模塊,并有方便的包管理工具(pip)。

它最大的缺點(diǎn)可能就是程序運(yùn)行慢。

Python 可以實(shí)現(xiàn)的功能基本用 Perl 也能實(shí)現(xiàn),強(qiáng)制縮進(jìn)很容易讓習(xí)慣使用 Perl 的你感覺有約束感。但 Python 工整的語法讓你即使過很長(zhǎng)時(shí)間,還能輕松讀懂自己的代碼,也可以在學(xué)習(xí)其他人的代碼時(shí)有流暢的感受。

生物信息是一個(gè)交叉學(xué)科,Python 為我們實(shí)現(xiàn)各種不同目的的需求提供了充分的支持,不管你是想進(jìn)行常規(guī)的文本處理,還是進(jìn)一步進(jìn)行深度的科學(xué)計(jì)算,亦或是將流行的各種算法應(yīng)用于項(xiàng)目中。

Step0:學(xué)習(xí)前的準(zhǔn)備

Python 可在官網(wǎng)下載:https://www.python.org/,當(dāng)然更建議的方式是直接安裝 Anaconda。Anaconda 是 Python 的一個(gè)發(fā)行版本,專注于數(shù)據(jù)分析,包括了常見的科學(xué)計(jì)算類庫和包管理器 conda。此外,Anaconda 也深度整合了 R。

0.0 版本問題

Python 包括 2.* 版本和 3.* 版本,兩者有部分語法不同且不兼容,推薦使用 3.* 版本。

0.1 代碼編輯器的選擇

代碼編輯器可選用 Visual Studio Code、SubLime Text、Atom、PyCharm 等等,反正各有優(yōu)勢(shì),網(wǎng)絡(luò)上有很多評(píng)測(cè)文件,可以去看看,選用一個(gè)合適的。我自己常用的是 Visual Studio Code,安裝了一系列插件,用起來很順手。如果是做數(shù)據(jù)分析,可以用 Jupyter Notebook,混寫思路說明文檔、代碼和結(jié)果展示,不管是交流還是保存中間結(jié)果都是非常便利的。

0.3 尋求幫助

任何一個(gè)關(guān)鍵詞,都可以用 help(kyeword)  獲得內(nèi)置幫助文檔。

在 IPython 環(huán)境下,支持直接使用 ?keyword 獲取幫助信息。

Step1:學(xué)習(xí)基本語法

對(duì)于有編程基礎(chǔ)的朋友,這一部分大致看一遍就可以上手了,在實(shí)踐中熟悉語言的特性即可。畢竟只要有編程思想的底子在,做起來還是很快的。

  • 縮進(jìn):定義作用域的方式,通常為 4 個(gè)空格。相同縮進(jìn)的行被認(rèn)為是在相同的作用域中。

  • 賦值:使用 "=",初次賦值時(shí)不需要給出具體的類型,由等號(hào)右邊的值決定變量的類型。

  • 運(yùn)行程序有兩種模式:「腳本式編程」就是你預(yù)先寫好代碼文件,然后一次性執(zhí)行;「交互式編程」則是逐行輸入,按下 Enter 鍵即執(zhí)行。

變量 & 運(yùn)算

  • 包括數(shù)字(Number)、字符串(String)、元組(Tuple)、列表(List)、字典(Dictionary)、集合(Sets),另外還包括了一個(gè)特殊空值(None)。

    a = 100 ## 整型
    b = 1.0 ## 浮點(diǎn)型
    a = 'abc' ## 字符串
    a = True ## 布爾值
    a = None ## 空值

    eg_tuple = (123## 元組
    eg_list = [123## 列表
    eg_dict = {'ele1':1'ele2':2'ele3':3#詞典

    • 字符串、列表、元組為「序列對(duì)象」,可以通過「下標(biāo)偏移量」訪問。

    • 元組(Tuple)、列表(List)、字典(Dictionary)、集合(Sets)為「容器」,可收納多個(gè)數(shù)據(jù)。

  • 每種數(shù)據(jù)類型都內(nèi)置了豐富的函數(shù),你可以在實(shí)踐的過程中慢慢熟悉。這里要善用 tab 鍵。比如你已經(jīng)定義了一個(gè)變量 a = 100,想查看可以使用哪些方法,就可以輸入 a. + tab,Python 會(huì)有提示。IPython 和代碼編輯器會(huì)自動(dòng)給出提示。

  • 這里還需要了解一下可變數(shù)據(jù)類型 & 不可變數(shù)據(jù)類型這兩種概念。可變數(shù)據(jù)類型允許在創(chuàng)建后被重新修改(列表、集合、字典)。不可變數(shù)據(jù)類型在賦值后無法被修改,只能被重新創(chuàng)建(除外上述類型)。

標(biāo)準(zhǔn)類型操作符

利用 Python 可以進(jìn)行數(shù)值運(yùn)算、邏輯運(yùn)算、判斷表達(dá)式。



控制結(jié)構(gòu)

這一部分也和各種編程語言大同小異,主要需要學(xué)習(xí)條件表達(dá)式,if 語句,for 循環(huán),while 循環(huán),以及循環(huán)控制關(guān)鍵詞(break,continue,pass)。

## 簡(jiǎn)單 if 語句
if condition_test:
    statement
## for 循環(huán)
for i in 序列:
    statement
## while 循環(huán)
while condition:
    statement
## 三元操作符
if C else Y

Step2:函數(shù)、模塊

函數(shù)和模塊實(shí)質(zhì)上是將成塊的指令封裝成可以重復(fù)調(diào)用的代碼塊,并借著函數(shù)名和模塊名,給了一套未來調(diào)用的接口。

函數(shù)

## 定義函數(shù)
def eg_function(a, b):
    c = a + b
    return c
## 調(diào)用函數(shù)
x = eg_function(34)

傳遞給函數(shù)的參數(shù)形式,基本方法有基于順序的位置傳參和關(guān)鍵詞傳參,另外還有更靈活的包裹傳參,可以進(jìn)一步了解。

這里還可以學(xué)習(xí)一下「遞歸」的概念。遞歸是函數(shù)調(diào)用其自身的操作(在函數(shù)定義中,調(diào)用函數(shù)自身)。

模塊

在 Python 中,一個(gè) .py 文件就構(gòu)成一個(gè)模塊。通過引入模塊,你就可以復(fù)用之前的 Python 程序,調(diào)用模塊中的函數(shù)。模塊實(shí)質(zhì)上是比函數(shù)更高一層的封裝模式。常見的功能編入模塊就成為了所謂的庫(library)。標(biāo)準(zhǔn)庫就是 Python 官方提供的庫。

## 引入模塊
import module_name
## 引入某模塊的函數(shù)
from module_name import function_name

那么 Python 如何能找到模塊呢?主要是三個(gè)路徑:

  1. 標(biāo)準(zhǔn)庫的安裝路徑

  2. 環(huán)境變量 PYTHONPATH  所包含的路徑

  3. 當(dāng)前文件夾

由于 Python 在很多領(lǐng)域上的使用都是通過拓展包來實(shí)現(xiàn)的,是后續(xù)學(xué)習(xí)的基礎(chǔ)。

這一部分需要掌握 pip 或 conda。以 pip 為例:

## 安裝模塊
pip install module
## 查看已安裝模塊
pip list
## 搜索某個(gè)模塊
pip search module

接下去,你就可以按照需求學(xué)習(xí)各個(gè)感興趣的領(lǐng)域相關(guān)包了。

Step3:Python 中的類和對(duì)象

Python 有一條哲學(xué)理念是:一切皆對(duì)象。由此可見對(duì)象在 Python 中的重要性。

之前描述的都是面向過程的編程范式,但 Python 可以用「對(duì)象」來構(gòu)建更大的框架。用 Python 中的類(Class)具體說明一下:類就是對(duì)事物的抽象表達(dá)(比如我們把自然界的生物分類,植物、動(dòng)物、細(xì)菌),子類也很好理解,就是類下更小一級(jí)的分類(動(dòng)物類別下的爬行動(dòng)物、哺乳動(dòng)物、鳥類)。對(duì)每個(gè)類都可以定義屬性和方法(鳥類屬性:顏色;鳥類方法:吃、飛)。

## 定義類
class Bird(object):
    feather = True
    reproduction = "egg"
    def chirp(self, sound):
        print(sound)

上述例子中,用關(guān)鍵詞 class 定義了一個(gè)類,名字是 Bird,括號(hào)里有一個(gè)關(guān)鍵詞 object,然后分別定義了兩個(gè)屬性 feather 和 reproduction 及一個(gè)函數(shù)  chirp。

## 創(chuàng)建對(duì)象
mypet = Bird()
## 調(diào)用對(duì)象的方法
mypet.chirp('gaga'## 打印輸出 'gaga'

另外,列表、元組、字符串、詞典都是對(duì)象,甚至函數(shù)、模塊也都是,均可以查詢到相應(yīng)的屬性和方法。

Step4:更多的應(yīng)用場(chǎng)景

Python 可以應(yīng)用的場(chǎng)景很多,大多是通過拓展包的方式實(shí)現(xiàn)的。下面列舉了一些生信可能會(huì)用到的場(chǎng)景,有需求的朋友可以進(jìn)一步學(xué)習(xí),由于篇幅限制,只做簡(jiǎn)單的介紹。

文本處理

這應(yīng)該是生信應(yīng)用場(chǎng)景中最頻繁出現(xiàn)的了。需要學(xué)習(xí)一下文本對(duì)象的創(chuàng)建(open),文件操作常常和上下文管理器一起使用。

## 常規(guī)文件操作
infile = open(text_file, 'r')
execution_code
infile.close()

## 使用上下文管理器
with open(text_file, 'r'as infile:
    execution_code

這里是為了自動(dòng)關(guān)閉文件(一個(gè)很容易被遺忘的操作)。接著你需要學(xué)習(xí)一下包 re 來處理正則表達(dá)式。

生物信息

Biopython 有很多功能,比如將生物信息學(xué)文件解析成 Python 可用的數(shù)據(jù)結(jié)構(gòu),繼而可以被循環(huán) or 索引。還提供了常見在線生物信息學(xué)程序的接口(如 NCBI、ExPASy 等)。這里不做更詳細(xì)的介紹了,可以自行去查閱一下官方幫助文檔(http://biopython.org/DIST/docs/tutorial/Tutorial.html)。

Biopython 最大的價(jià)值在于幫助你集中注意力在解決需要回答的問題,而不是把過多精力分散到特定文件格式的解析中,大家可以類比其為R語言的bioconductor。

數(shù)據(jù)分析與可視化

NumPy 提供了高效的數(shù)據(jù)結(jié)構(gòu)和方法,SciPy 提供了科學(xué)計(jì)算相關(guān)函數(shù),Pandas 是一個(gè)綜合數(shù)據(jù)分析包。還有做機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的 scikit-learn 和 TensorFlow。數(shù)據(jù)可視化主要涉及 matplotlib、seaborn、pyecharts 等。

數(shù)據(jù)庫與 Web 開發(fā)

主流數(shù)據(jù)庫都有相應(yīng)的 Python 模塊支持,均可以完成大部分的數(shù)據(jù)庫操作 ,比如數(shù)據(jù)行的選擇、插入、替換、刪除,數(shù)據(jù)表的創(chuàng)建等等。

Web 開發(fā)有流行的框架 Django 和 Flask,還有非常輕量級(jí)的 WebPy。

推薦書籍參考

最后,給大家附上了之前自己在學(xué)習(xí)過程中整理的思維導(dǎo)圖筆記。里面內(nèi)容涉及了很多本篇文章沒有提及的細(xì)節(jié),可以在初學(xué)的階段有一個(gè)宏觀的把控。

當(dāng)然,代碼還是需要在練習(xí)中精進(jìn)的~


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
初學(xué)python:Ubuntu安裝一個(gè)可視編程IDE
編程語言排行榜第一Python,為何頻繁遭受開發(fā)者的嫌棄!
Python庫的使用
針對(duì)數(shù)學(xué)計(jì)算,Python都提供了哪些實(shí)用的模塊?
Python的知識(shí)要點(diǎn)及編寫工具的使用
一篇文章入門Python生態(tài)系統(tǒng)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服