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

老本行是做实验的,做生信可能是为了辅助研究或者是为了发paper(有非常多的临床生选择趟生信这波水)

主要是做生信的,主要涵盖高通量测序数据分析,组学数据分析等等,专门从事生物学数据分析的这群人,其大部分也是本科生物狗作为强大的生力军,以调包写R,python为主。那么这群人就要熟悉看各种包的tutorial以及如何进行常规的数据的处理和分析等等。那么其实这群人,我个人认为对python的编程要求不是很高,在coursera先上两门课程,然后照着参考书在项目中练练就熟络了。

也是做生信的,但是主要以写包为主,什么意思?就是以开发算法供给第二类人用,做这部分工作的人需要具有良好的数理基础,所以一般大部分都是本科属于物理,数学等理工科的人在做这部分工作。当然对编程也提出较高要求。

我入门生物信息学是通过R语言入门的,但是接触到了python,这个也是目前用户数量数一数二的语言。python去做生信得优点是①过程更加直观,因为常见的R包功能一般已经封装好了,直接应用就可,虽然足够简单友好,但是不利于长期学习②基因组数据一般比较大,python速度一般比R快。

下面我就记录一个通过python做生信分析的流程。

使用的数据集是GSE5583,来自于2006年的基因芯片结果,该芯片目的是提取野生型和HDAC1小鼠胚胎干细胞用于Affymetrix微阵列上的差异RNA。

导入包

%clear

%reset -f

# In[*]

import seaborn as sns

import matplotlib.pyplot as plt

%matplotlib inline

import os

import numpy as np

import pandas as pd

os.chdir('D:\\train')

from scipy import stats

导入数据

# In[*]

data = pd.read_table("http://ahmedmoustafa.io/notebooks/GSE5583.txt",

header = 0,

index_col = 0)

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

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

查看数据维度

# In[*]

# Check the dimension of the loaded data (rows & columns)

data.shape

(12488, 6)

# In[*]

# Number of rows

number_of_genes = len(data.index)

print(number_of_genes)\

12488

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

标准化

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

# In[*]

data2 = np.log2(data+0.0001)

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

绘制盒须图

# In[*]

# Boxplot of each microarray

plt.show(data2.plot(kind = 'box', title = 'GSE5583 Boxplot', rot = 90))

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

# Density

plt.show(data2.plot(kind = 'density', title = 'GSE5583 Density'))

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

# In[*]

# The mean of expression of the wt samples for each gene (row)

wt = data2.loc[:, 'WT.GSM130365' : 'WT.GSM130367'].mean(axis = 1)

wt.head()

# In[*]

# The mean of expression of the ko samples for each gene (row)

ko = data2.loc[:,'KO.GSM130368':'KO.GSM130370'].mean(axis = 1)

ko.head()

查看基因差异的差异倍数fold分布

# In[*]

fold = ko - wt

# Histogram of the fold-change

plt.hist(fold)

plt.title("Histogram of fold-change")

plt.show()

查看基因差异的P值分布

from scipy import stats

pvalue = []

for i in range(0, number_of_genes):

ttest = stats.ttest_ind(data2.ix[i,0:3], data2.ix[i,3:6])

pvalue.append(ttest[1])

# Histogram of the p-values

plt.hist(-np.log(pvalue))

plt.title("Histogram of p-value")

plt.show()

python做生物信息学分析_Python从零开始第五章生物信息学①提取差异基因相关推荐

  1. python 做表格分析_Python 处理分析 128 张 Excel 表格竟不到3秒?| 附数据集

    原标题:Python 处理分析 128 张 Excel 表格竟不到3秒?| 附数据集 有不少旁友想要了解怎么用Python提升处理数据的效率,或者说怎么用Python自动处理多张Excel表格,于是乎 ...

  2. python做meta分析_python的MetaClass的代码分析。基于廖雪峰博客代码

    1 #一张表一个类,表内每一行就是一个实例 2 ''' 3 一个单独的元类使用的程序分析.4 ''' 5 6 classField(object):7 def __init__(self, name, ...

  3. 用python做频数分析_Python统计如何进行DNA序列整理

    Python统计在我们的使用中有很多的障碍,其中在DNA序列上的相关问题就需要我们不断的去学习.下面我们就向大家介绍有关的问题,希望在以后Python统计的使用过程中有所收获. 给定一堆DNA序列,即 ...

  4. 用python做频数分析_python实现读取类别频数数据画水平条形图

    1.数据分组-->频数分布表 环境配置: 1 importpandas as pd2 importnumpy as np3 import matplotlib.pyplot as plt 按照你 ...

  5. python做生存分析

    这里跟大家分享一下生存分析,并且介绍一个用python做生存分析的包. 生存分析 应用场景 生存分析最早在生物医学中使用的最多,用来预估某个群体的存活时间,后来被推广到了更广泛的领域.一个做生物的专家 ...

  6. 用python做舆情分析系统_如何用Python做舆情时间序列可视化?

    如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧. 痛点 你是一家连锁火锅店的区域经理,很注重顾客对餐厅的评价.从前,你苦恼的是顾客不爱写评价.最 ...

  7. Python编程从入门到实践第五章部分习题

    Python编程从入门到实践第五章部分习题 5-8 5-9` names = ['admin','zhang','li','zhao','song'] for name in names:if nam ...

  8. python中成绩分析函数_自学Python笔记:用Python做成绩分析(1)

    有朋友会问,刚学了一周,什么是面向对象都还不清楚就可以写程序?还有Python不是写"爬虫"吗? Python是面向对象的语言,函数.模块.数字.字符串都是对象,并且完全支持继承. ...

  9. python程序内存分析_python 如何测量运行中的程序内存 -- Valgrind

    介绍 通常我们可以用python profiler去分析应用程序中哪个模块被多次调用和那个程序部分运行的速度较为缓慢,但是并不能够准确给出我们应用程序在运行中在内存中占用的大小. 比如说在金融数据中会 ...

  10. 如何用python进行相关性分析_Python 数据相关性分析

    概述 在我们的工作中,会有一个这样的场景,有若干数据罗列在我们的面前,这组数据相互之间可能会存在一些联系,可能是此增彼涨,或者是负相关,也可能是没有关联,那么我们就需要一种能把这种关联性定量的工具来对 ...

最新文章

  1. html元素的分类有哪些?
  2. openCv java Mat和MatOfByte的之间的相互转换 (4)
  3. 皮一皮:这是仙女用的嘛?
  4. ASP.NET中验证控件的使用
  5. Python学习笔录
  6. 使用nohup在后台运行scp
  7. css —— 图片环绕+首行缩进
  8. python pip有什么用_pip的介绍和使用
  9. 另一个.NET上的文档数据库Raven[转载]
  10. 《交互式程序设计 第2版》一2.2 代码的本质
  11. 创建SSIS包—建立端到端的package
  12. usb扩展坞同时接键盘鼠标_iPadOS 13.1连接鼠标键盘扩展坞用法说明
  13. XP母盘制作详细教程(完全版)(转)
  14. Dorado 7 Ajax 交互处理
  15. 公文流转 java_javaweb 公文流转系统制作
  16. java 定义二维数组_java定义二维数组的几种写法(小结)
  17. 云真机兼容性测试方案
  18. 张馨予一幅画拍出几十万,然而范冰冰却一直在向粉丝要画!
  19. 实现radio取消选中的功能
  20. IDEA 导入外来jar包并生效(同 Eclipse 中 buid path 效果)

热门文章

  1. MSM8926处理器
  2. 记一次edusrc实战cookie伪造
  3. java xml解析 jdom_Java语言中XML的JDom解析方式
  4. 傅里叶变换matlab学习笔记
  5. Scrapy实例__链家租房爬虫
  6. DTCMS网站开发遇到的一些问题
  7. java流水号_Java生成流水号
  8. 计算机配件对比,基本参数 尺寸对比 接口对比
  9. 【ISO9126】软件质量模型的介绍(软件质量管理的六大特征和二十七个子特征)
  10. 非常新能源铝电池项目的产业化展开的分析报告v1.1