纳速健身

标题: [python生物信息学]Python从零开始第五章生物信息学一、提取差异基因 [打印本页]

作者: awagink    时间: 2021-1-10 11:26
标题: [python生物信息学]Python从零开始第五章生物信息学一、提取差异基因
[python生物信息学]Python从零开始第五章生物信息学一、提取差异基因

目前来说,做生物信息学的人越来越多,但是我觉得目前而言做生信的主要有三类人:



下面我就记录一个通过python做生信分析的流程。
使用的数据集是GSE5583,来自于2006年的基因芯片结果,该芯片目的是提取野生型和HDAC1小鼠胚胎干细胞用于Affymetrix微阵列上的差异RNA。

导入包

  1. %clear
  2. %reset -f
  3. # In[*]
  4. import seaborn as sns
  5. import matplotlib.pyplot as plt
  6. %matplotlib inline
  7. import os
  8. import numpy as np
  9. import pandas as pd
  10. os.chdir('D:\\train')
  11. from scipy import stats
复制代码

导入数据
  1. # In[*]
  2. data = pd.read_table("http://ahmedmoustafa.io/notebooks/GSE5583.txt",
  3.                      header = 0,
  4.                      index_col = 0)
  5. data.head()
复制代码
Out[27]:
           WT.GSM130365  WT.GSM130366      ...       KO.GSM130369  KO.GSM130370
100001_at          11.5           5.6      ...               36.0          42.0
100002_at          20.5          32.4      ...               14.4          22.9
100003_at          72.4          89.0      ...              130.1          86.7
100004_at         261.0         226.2      ...              447.3         288.1
100005_at        1086.2        1555.6      ...             1365.9        1436.2

每一行是一个基因,每一列是一个样本,这也是比较经典的芯片数据集

查看数据维度
  1. # In[*]
  2. # Check the dimension of the loaded data (rows & columns)
  3. data.shape
  4. (12488, 6)
  5. # In[*]
  6. # Number of rows
  7. number_of_genes = len(data.index)
  8. print(number_of_genes)\
复制代码
12488

总共12488个基因,6个样本。

标准化
这一步是标准化,使用的是常见的log2()标准化

  1. # In[*]
  2. data2 = np.log2(data+0.0001)
  3. data2.head()
复制代码
Out[30]:
           WT.GSM130365  WT.GSM130366      ...       KO.GSM130369  KO.GSM130370
100001_at      3.523575      2.485453      ...           5.169929      5.392321
100002_at      4.357559      5.017926      ...           3.848007      4.517282
100003_at      6.177920      6.475735      ...           7.023478      6.437962
100004_at      8.027907      7.821456      ...           8.805099      8.170426
100005_at     10.085074     10.603256      ...          10.415636     10.488041

绘制盒须图
  1. # In[*]
  2. # Boxplot of each microarray
  3. plt.show(data2.plot(kind = 'box', title = 'GSE5583 Boxplot', rot = 90))
复制代码


(, 下载次数: 0)


这一步目的是查看不同样本之间是否有总体差异。

  1. # Density
  2. plt.show(data2.plot(kind = 'density', title = 'GSE5583 Density'))
复制代码



(, 下载次数: 0)


可以看出样本之间没有总体差异,可以做差异分析。

  1. # In[*]
  2. # The mean of expression of the wt samples for each gene (row)
  3. wt = data2.loc[:, 'WT.GSM130365' : 'WT.GSM130367'].mean(axis = 1)
  4. wt.head()

  5. # In[*]
  6. # The mean of expression of the ko samples for each gene (row)
  7. ko = data2.loc[:,'KO.GSM130368':'KO.GSM130370'].mean(axis = 1)
  8. ko.head()
复制代码


查看基因差异的差异倍数fold分布
  1. # In[*]
  2. fold = ko - wt


  3. # Histogram of the fold-change
  4. plt.hist(fold)
  5. plt.title("Histogram of fold-change")
  6. plt.show()
复制代码



(, 下载次数: 0)


查看基因差异的P值分布
  1. from scipy import stats

  2. pvalue = []
  3. for i in range(0, number_of_genes):
  4.     ttest = stats.ttest_ind(data2.ix[i,0:3], data2.ix[i,3:6])
  5.     pvalue.append(ttest[1])

  6. # Histogram of the p-values
  7. plt.hist(-np.log(pvalue))
  8. plt.title("Histogram of p-value")
  9. plt.show()
复制代码


(, 下载次数: 0)





欢迎光临 纳速健身 (https://www.nasue.com/) Powered by Discuz! X3.4