Python生物信息學(xué)③提取差異基因
通過(guò)Python生物信息學(xué)③提取差異基因得到了該數(shù)據(jù)集的差異分析的兩個(gè)關(guān)鍵參數(shù),1.差異倍數(shù)(foldchange)以及2.差異的P值。本篇目的是得到滿足差異倍數(shù)和差異P值的基因,同時(shí)進(jìn)行可視化(包括差異分析常見(jiàn)的火山圖和熱圖)。 繪制火山圖(1)第一步制作差異分析結(jié)果數(shù)據(jù)框 genearray = np.asarray(pvalue)
result = pd.DataFrame({'pvalue':genearray,'FoldChange':fold})
result['log(pvalue)'] = -np.log10(result['pvalue'])
(2)第二步制作火山圖的準(zhǔn)備工作 選定的差異基因標(biāo)準(zhǔn)是 I.差異倍數(shù)的絕對(duì)值大于1,II. 差異分析的P值小于0.05 result['sig'] = 'normal'
result['size'] =np.abs(result['FoldChange'])/10
result.loc[(result.FoldChange> 1 )&(result.pvalue < 0.05),'sig'] = 'up'
result.loc[(result.FoldChange< -1 )&(result.pvalue < 0.05),'sig'] = 'down'
ax = sns.scatterplot(x="FoldChange", y="log(pvalue)",
hue='sig',
hue_order = ('down','normal','up'),
palette=("#377EB8","grey","#E41A1C"),
data=result)
ax.set_ylabel('-log(pvalue)',fontweight='bold')
ax.set_xlabel('FoldChange',fontweight='bold')

篩選差異基因fold_cutoff = 1
pvalue_cutoff = 0.05
filtered_ids = []
for i in range(0, number_of_genes):
if (abs(fold[i]) >= fold_cutoff) and (pvalue[i] <= pvalue_cutoff):
filtered_ids.append(i)
filtered = data2.iloc[filtered_ids,:]
print("Number of DE genes: ")
print(len(filtered.index))

繪制熱圖 熱圖(heatmap)是生物學(xué)文章里(尤其是RNA-seq相關(guān)論文)經(jīng)常出現(xiàn)的圖片。熱圖的用途一般有兩個(gè)。以RNA-seq為例,熱圖可以:1)直觀呈現(xiàn)多樣本多個(gè)基因的全局表達(dá)量變化;2)呈現(xiàn)多樣本或多基因表達(dá)量的聚類關(guān)系。熱圖一般使用顏色(例如紅綠的深淺)來(lái)展示多個(gè)樣本多個(gè)基因的表達(dá)量高低,既直觀又美觀。同時(shí)可以對(duì)樣本聚類或者對(duì)基因聚類。 sns.clustermap(filtered, cmap='RdYlGn_r', standard_scale = 0)

(1)每一行為一個(gè)基因,每一列為一個(gè)sample。 (2)綠色代表相對(duì)低表達(dá),紅色代表相對(duì)高表達(dá)。 (3)相對(duì)接近的樣本或者基因會(huì)聚類在一起,比如探針名為101695_at的基因在GSM130370相對(duì)高表達(dá),而在GSM130366低表達(dá)。
|