当前位置: 首页 > news >正文

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

写在前边

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

数据信息检索

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

在这里插入图片描述

使用GEOquery包下载数据

using(tidyverse, GEOquery, magrittr, data.table, AnnoProbe, clusterProfiler, org.Hs.eg.db, org.Mm.eg.db)

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

geo_accession <- "GSE126848"
gset <- GEOquery::getGEO(geo_accession, destdir = "./", AnnotGPL = F, getGPL = F)
eSet <- gset[[1]]
gpl <- eSet@annotation

处理表型数据

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

pdata <- pData(eSet)
geo_accessiondescriptiondisease:ch1gender:ch1tissue:ch1
GSM36152932683NAFLDMaleLiver
GSM36152942685NAFLDMaleLiver
GSM36152952687NAFLDMaleLiver
GSM36152962689NAFLDFemaleLiver
GSM36152972691NAFLDFemaleLiver
GSM36152982693NAFLDMaleLiver
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;有需要可以联系我的公众号@恩喜玛生物,加入交流群

import pandas as pd
import genekit as gk
import bioquest as bq
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的字符串格式化方法

fdata = fdata.loc[:,["{0:0>4}".format(x) for x in pdata.Sample2]]
fdata.columns = pdata.index.to_list()

保存一份原始Count数据信息

fdata.to_csv("GSE126848_count.csv.gz")

Count 转 TPM

fdata = gk.countto(fdata, towhat='tpm', geneid='Ensembl', species='Human')

Ensembl ID转换为Symbol基因名

fdata=gk.geneIDconverter(frame=fdata,from_id='Ensembl',to_id='Symbol',keep_from=False,gene_type=False,)

去重复

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

fdata=bq.tl.unique_exprs(fdata)

保存TPM基因表达量数据

fdata.to_csv("GSE126848_tpm.csv.gz")

http://www.lryc.cn/news/278488.html

相关文章:

  • 1. Presto基础
  • ChatGPT可以帮你做什么?
  • 20240111在ubuntu20.04.6下解压缩RAR格式的压缩包
  • YOLOv5改进 | 检测头篇 | ASFFHead自适应空间特征融合检测头(全网首发)
  • 第十三章 接口测试(笔记)
  • Github搭建图床 github搭建静态资源库 免费CDN加速 github搭建图床使用 jsdelivr CDN免费加速访问
  • Airtest-Selenium实操小课②:刷B站视频
  • Linux chmod命令详解
  • 求幸存数之和 - 华为OD统一考试
  • 【QML COOK】- 008-自定义属性
  • 前端页面优化做的工作
  • Spark六:Spark 底层执行原理SparkContext、DAG、TaskScheduler
  • 关于鸿蒙的笔记整理
  • 【漏洞复现】先锋WEB燃气收费系统文件上传漏洞 1day
  • MYSQL篇--锁机制高频面试题
  • 创建一个郭德纲相声GPTs
  • 靶机实战(10):OSCP备考之VulnHub Tre 1
  • 在windows11系统上利用docker搭建linux记录
  • swift对接环信sdk
  • 单片机中的PWM(脉宽调制)的工作原理以及它在电机控制中的应用。
  • css 怎么绘制一个带圆角的渐变色的边框
  • Kotlin DSL C++项目引入OpenCV异常处理
  • 【微服务】 Spring cold、Kubernetes、Service mesh
  • 【scala】编译build报错 “xxx is not an enclosing class“
  • vue3+ts+vite项目从0 搭建,配置安装router/pinia/element-plus/scss等
  • 华为OD机试 - 矩阵匹配(Java JS Python C)
  • 使用ffmpeg实现音频静音修剪
  • Java项目调试实战:如何高效调试Spring Boot项目中的GET请求,并通过equalsIgnoreCase()解决大小写不一致问题
  • Google Pixel 与 iPhone手机:哪个更好?
  • ddos攻击会让服务器受到什么影响?-速盾网络(sudun)