前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >100个GEO基因表达芯片或转录组数据处理之GSE126848(003)

100个GEO基因表达芯片或转录组数据处理之GSE126848(003)

原创
作者头像
生信探索
修改2024-07-10 14:19:42
260
修改2024-07-10 14:19:42
举报
文章被收录于专栏:生信探索

写在前边

虽然现在是高通量测序的时代,但是GEO、ArrayExpress等数据库储存并公开大量的基因表达芯片数据,还是会有大量的需求去处理芯片数据,并且建模或验证自己所研究基因的表达情况,芯片数据的处理也可能是大部分刚学生信的道友入门R语言数据处理的第一次实战,因此准备更新100个基因表达芯片或转录组高通量数据的处理。

公众号:生信探索

小红书:生信探索

抖音:生信探索

B站:生信探索

知乎:生信探索

CSDN:生信探索

简书:生信探索

YouTube:生信探索

Twitter:生信探索

数据信息检索

可以看到GSE126848是转录组高通量测序数据,因此可以使用GEOquery包下载数据临床信息,并且手动下载表达矩阵并整理

使用GEOquery包下载数据

代码语言:R
复制
using(tidyverse, GEOquery, magrittr, data.table, AnnoProbe, clusterProfiler, org.Hs.eg.db, org.Mm.eg.db)

注:using是我写的函数,作用是一次性加载多个R包,不用写双引号,并且不在屏幕上打印包的加载信息,可以参考之前的推文using的定义;函数名字using是在模仿Julia语言中的包加载函数

代码语言:R
复制
geo_accession <- "GSE126848"
gset <- GEOquery::getGEO(geo_accession, destdir = "./", AnnotGPL = F, getGPL = F)
eSet <- gset[[1]]
gpl <- eSet@annotation

处理表型数据

这部分是很关键的,可以筛选一下分组表型信息,只保留自己需要的样本,在这里只保留disease:ch1中healthy和NASH的样本,作为后续分析的样本(根据自己的研究目的筛选符合要求的样本)

代码语言:R
复制
pdata <- pData(eSet)

geo_accession

description

disease:ch1

gender:ch1

tissue:ch1

GSM3615293

2683

NAFLD

Male

Liver

GSM3615294

2685

NAFLD

Male

Liver

GSM3615295

2687

NAFLD

Male

Liver

GSM3615296

2689

NAFLD

Female

Liver

GSM3615297

2691

NAFLD

Female

Liver

GSM3615298

2693

NAFLD

Male

Liver

代码语言:R
复制
pdata %<>%
    dplyr::mutate(
        Sample = geo_accession,
        Group = case_when(`diagnosis:ch1` == "HC" ~ "Control", `diagnosis:ch1` == "NASH" ~ "Case", TRUE ~ NA),
        Age = `age (y):ch1`,
        Sex = str_to_title(`gender:ch1`),
        Stage = `fibrosis (stage):ch1`
    ) %>%
    dplyr::filter(!is.na(Group)) %>%
    dplyr::select(Sample, Group, Age, Sex)
fwrite(pdata, file = str_glue("{geo_accession}_pdata.csv"))

处理表达谱数据

原始数据为Count值,需要标准化为TPM,并且基因名是Ensembl ID转换为Symbol基因名,可以使用到我自己写的几个函数genekit、bioquest;有需要可以联系我的公众号@恩喜玛生物,加入交流群

代码语言:Python
复制
import pandas as pd
import genekit as gk
import bioquest as bq
代码语言:Python
复制
fdata = pd.read_csv("GSE126848_Gene_counts_raw.txt.gz",sep='\t',index_col=0)
pdata = pd.read_csv("GSE126848_pdata.csv",index_col=0)
pdata.drop(columns=["Sample2"]).to_csv("GSE126848_pdata.csv")

fdata与pdata样本名统一,这里使用了Python的字符串格式化方法

代码语言:Python
复制
fdata = fdata.loc[:,["{0:0>4}".format(x) for x in pdata.Sample2]]
fdata.columns = pdata.index.to_list()

保存一份原始Count数据信息

代码语言:Python
复制
fdata.to_csv("GSE126848_count.csv.gz")

Count 转 TPM

代码语言:Python
复制
fdata = gk.countto(fdata, towhat='tpm', geneid='Ensembl', species='Human')

Ensembl ID转换为Symbol基因名

代码语言:Python
复制
fdata=gk.geneIDconverter(
    frame=fdata,
    from_id='Ensembl',
    to_id='Symbol',
    keep_from=False,
    gene_type=False,
    )

去重复

根据每个基因表达量的中位数去除重复的基因

代码语言:Python
复制
fdata=bq.tl.unique_exprs(fdata)

保存TPM基因表达量数据

代码语言:Python
复制
fdata.to_csv("GSE126848_tpm.csv.gz")

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前边
  • 数据信息检索
  • 使用GEOquery包下载数据
  • 处理表型数据
  • 处理表达谱数据
  • Count 转 TPM
  • Ensembl ID转换为Symbol基因名
  • 去重复
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档