专栏首页生信小驿站Python从零开始第五章生物信息学⑥GEO数据库实战分析(1)目录正文

Python从零开始第五章生物信息学⑥GEO数据库实战分析(1)目录正文

正文

GEO数据库全称GENE EXPRESSION OMNIBUS,是由美国国立生物技术信息中心NCBI创建并维护的基因表达数据库。它创建于2000年,收录了世界各国研究机构提交的高通量基因表达数据,也就是说只要是目前已经发表的论文,论文中涉及到的基因表达检测的数据都可以通过这个数据库中找到。 这个数据库应该是生物信息入门学习挖掘的数据库,发文量每年估计有数千篇吧,GEO上面的测序文件非常丰富,肿瘤,非肿瘤的等等几乎都有,并且可以免费挖掘。关于这个数据库的介绍网上非常多,我就不赘述了。有兴趣的可以取生信技能树上面看看。

生信技能树 http://www.biotrainee.com/

这一篇以及接下来的几篇主要是写一个GEO数据库常见的分析流程。

  • 导入必须的python包以及修改默认文件位置。
# -*- coding: utf-8 -*-
"""
Created on Fri Dec 14 00:47:52 2018

@author: czh
"""
%clear
%reset -f
# In[*]
# 加载Python库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import os
os.chdir('D:\\train')
  • 修整数据
# In[*]

data = pd.read_csv('GSE18388_series_matrix.txt.gz', 
                   delimiter='\t',skiprows=31)

# In[*]
data= data.drop(data.index[0:34])
data.rename(columns={'!Sample_title':'gene_id'}, inplace=True)

前33行为不需要的介绍信息,需要删除。另外修改第一列的列名。

  • 删除含有缺失值的基因
# In[*]
data.isna().sum()
data = data.dropna(axis=0)
data.dtypes
  • 由于后面的差异分析或者绘图,要求所有的基因数据需要为数值型。

而目前该数据框中读取时含有很多字符,所以列属性为object,我们需要将这些列属性修改为数值型。

# In[*]

data.dtypes.eq(object)
# In[*]
cols = data.columns[data.dtypes.eq(object)]
# In[*]
data[cols] = data[cols].apply(pd.to_numeric,
          errors='coerce', axis=0)
data.dtypes.eq(object)
  • 查看样本之间是否有整体差异
# In[*]

data.dtypes.eq(object)
# In[*]
cols = data.columns[data.dtypes.eq(object)]
# In[*]
data[cols] = data[cols].apply(pd.to_numeric,
          errors='coerce', axis=0)
data.dtypes.eq(object)

通过上面我们可以看出样本整体没有差异,可以做差异分析。

GEO数据自带的有差异分析-geo2R,虽然比较简单且教程很多,不需要编程,但是不是特别精确,如果只是简单的做一下生信验证,可以使用这个,我们这里直接读取geo2R分析的结果

GEO2R = pd.read_table("geo_result.txt", sep="\t")

这个数据框就包含了已经分析好的差异分析结果,包括基因名字和探针ID,还有比较关注的差异倍数和P值

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • R语言绘制三线表

    在进行文章的撰写时,总是少不了一些表格的绘制,当然最标准的表格就是三线表了。我一般用word绘制三线表,但是R语言也可以且比较省时间。

    用户1359560
  • 单基因生信分析流程(3)一文解决生存分析和临床参数相关分析

    用户1359560
  • Python常见数据框操作①

    用户1359560
  • 爬虫入门一把搜

    # -*- coding:UTF-8 -*-import urllib.requestimport urllib.parseurl = 'http://fany...

    天钧
  • datatables,表格

    windseek
  • ABAP和Java里关于DEFAULT(默认)机制的一些语言特性

    由此可见新语法比较简洁,能少写3行代码。但是这样有一个缺陷,在新语法下如果it_data内表内不存在object_ext的值为cl_crm_prodil_bo_...

    Jerry Wang
  • 关于css选择器的问题 + * ~这三个有什么区别

    杭州前端工程师
  • BootstrapTable的列排序怎么搞

    先搞一个table,使用ajax将数据查询出来,然后可以在所有列都加上排序。满足自己的需求。

    别先生
  • 采用HTML5之"data-"机制自由提供数据

    周末总是过得很快,又到了跟代码亲密接触的日子,我在北京向各位问好,今天我分享一点关于前端的东西,HTML5之标签"data-*"自定义属性的值传递。     ...

    赵小忠
  • 小顶堆Java实现

    参考文章: 漫谈经典排序算法:一、从简单选择排序到堆排序的深度解析 http://blog.csdn.net/touch_2011/article/detai...

    囚兔

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动