如何快速下载GEO数据并获取其表达矩阵与临床信息 | 附完整代码 + 注释

news2025/1/8 5:10:24

GEO数据库可以说是大家使用频率贼高的数据库啦!那它里面的数据怎么下载大家知道嘛!今天给大家展示一种快速获取它的表达矩阵和临床信息的方法!

话不多说!咱们直接开始!

GEO编号获取

在GEO数据库中,你找到了你需要的数据,接下来怎么办嘞!下载它!处理它!

比如,咱们今天需要的数据是这个:

GEO编号这不就有咯!咱们开始下载!噢对,提前吱一声,芯片数据和非芯片数据进行ID转换的时候方法不太一样,大家要注意噢!我今天会都给大家演示一下!

GEO数据库今天咱就不介绍了哈!我后面再专门出一期超级详细地介绍它!迫切的小伙伴可以在后台或群里催我哈哈哈哈哈哈哈哈!

另外注意:不是所有的GEO数据集都可以使用这种方法下载。不过通常来说,大部分的GEO数据集都可以通过getGEO函数进行下载,但也有一些例外情况,特别是单细胞数据[无奈脸]!多数情况下,应该是数据集可能不是以类似的格式存储,或者有的作者上传格式不对等等,所以就需要找其他办法或者手动下载啦!

建议就是先试试这种方法,要是里面是空的,就去手动或者其他!

数据下载

芯片数据

#################### GEO数据下载及表达矩阵与临床信息获取 #######################

# 加载包,没有安装的记得安装一下哟!
library(tidyverse)
library(GEOquery)
library(tinyarray)

# 芯片数据

# GEO编号,替换成你自己的就好啦!
geo_number = "GSE66360"

# 这一步啊,看运气!网络时好时坏,是个玄学!一次不行不要慌!咱多跑几次!总会成功的!
geo_data <- getGEO(geo_number, destdir = './', getGPL = F) # 自己设置想保存的路径
geo_data0 <- geo_data[[1]]

数据长这样!

# 提取表达矩阵
exp <- exprs(geo_data0)
dim(exp)
# [1] 54675    99

exp[1:4, 1:4]
#           GSM1620819 GSM1620820 GSM1620821 GSM1620822
# 1007_s_at   5.866378   4.948736   5.148384   5.064419
# 1053_at     8.225790   7.525865   7.764637   7.198461
# 117_at      6.179732   6.628137   5.859151   5.974135
# 121_at      6.179478   6.582889   6.602135   6.545905

# 可以看到这里还是探针ID,咱们后给它面转换为基因symbol!

# 可以自行判断是否需要log
exp <- log2(exp + 0.01)

# 接下来我们进行ID转换

# 探针注释获取
gpl_number <- geo_data0@annotation
ids <- AnnoProbe::idmap(gpl_number)
head(ids)
#         probe_id symbol
# 193731   1053_at   RFC2
# 193732    117_at  HSPA6
# 193733    121_at   PAX8
# 193734 1255_g_at GUCA1A
# 193735   1316_at   THRA
# 193736   1320_at PTPN21

# ID转换
exp <- as.data.frame(exp)
exp$probe_id <- rownames(exp)
exp <- inner_join(ids, exp, by = "probe_id")
exp <- exp[!duplicated(exp$symbol), ] # 关于重复基因去重的问题,咱们后面专门出一期介绍!这里先用最大道至简的方法!
rownames(exp) <- exp$symbol
exp <- exp[ , -c(1,2)]
head(exp)[1:4, 1:4]
#        GSM1620819 GSM1620820 GSM1620821 GSM1620822
# RFC2     3.041907   2.913773   2.958775   2.849691
# HSPA6    2.629877   2.730778   2.553152   2.581143
# PAX8     2.629818   2.720911   2.725116   2.712795
# GUCA1A   1.486482   1.436010   1.373053   1.444733

# 提取临床信息
cli <- pData(geo_data0)
head(cli)[1:4, 1:6]
#                               title geo_accession                status submission_date last_update_date type
# GSM1620819 Muse_1_DISCOVERY_Control    GSM1620819 Public on Feb 28 2015     Feb 27 2015      Feb 28 2015  RNA
# GSM1620820 Muse_2_DISCOVERY_Control    GSM1620820 Public on Feb 28 2015     Feb 27 2015      Feb 28 2015  RNA
# GSM1620821 Muse_3_DISCOVERY_Control    GSM1620821 Public on Feb 28 2015     Feb 27 2015      Feb 28 2015  RNA
# GSM1620822 Muse_4_DISCOVERY_Control    GSM1620822 Public on Feb 28 2015     Feb 27 2015      Feb 28 2015  RNA

# 为了后续分析,咱还可以给它进一步调整,使表达矩阵列名和临床信息的行名完全一致
p <- identical(rownames(cli), colnames(exp))
p
# [1] TRUE

# 噢啦!

# 噢不!还没结束!那万一不是芯片数据怎么办呢!咱们再演示一个!

非芯片数据

# 非芯片数据

# 比如这个GEO数据集
geo_number = "GSE16561"

# 这一步啊,看运气!网络时好时坏,是个玄学!一次不行不要慌!咱多跑几次!总会成功的!
geo_data <- getGEO(geo_number, destdir = './', getGPL = F)
geo_data0 <- geo_data[[1]]

# 提取表达矩阵
exp <- exprs(geo_data0)
dim(exp)
# [1] 54675    99

exp[1:4, 1:4]
#                GSM416528  GSM416529  GSM416530   GSM416531
# ILMN_1343291  0.22550488  0.7348099  0.7431908  0.63261986
# ILMN_1651209 -0.03326082  0.5184302  0.5990343  0.25144434
# ILMN_1651228 -0.20895290 -0.9036322 -0.3511963 -0.06179523
# ILMN_1651229  0.18835354  0.3693209  0.3938241  0.14767408

# # 可以自行判断是否需要log
# exp <- log2(exp + 1)

# 大家可以看到这玩意儿不是探针,那咱们怎么办呢!

接下来我们进行非芯片数据的ID转换!

在你的GEO数据集的主页,可以看见下面这个红框框的地方!这里代表测序平台(咱们后面会在超详细介绍GEO数据库的时候给大家进行介绍这部分内容),直接点进去就好!

长这样!别急!往下滑滑!

哎对!就是这里!点红框框的地方!下载下来!

来!咱们继续看看怎么搞!

# 文件下载地址:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GPL6883
ids <- data.table::fread("./GPL6883-11606.txt")

# ID转换
exp <- as.data.frame(exp)
exp$ID <- rownames(exp)
ids <- ids[ , c(1,12)] # 注意:这里选择的是与表达矩阵行名相匹配的列和基因symbol列
exp <- inner_join(ids, exp, by = "ID")
exp <- exp[!duplicated(exp$Symbol), ]
exp <- as.data.frame(exp)
rownames(exp) <- exp$Symbol
exp <- exp[ , -c(1,2)]
head(exp)[1:4 ,1:4]
#              GSM416528  GSM416529   GSM416530  GSM416531
# JMJD1A    -0.401840200 -0.2110777 -0.42790460 -0.4261866
# NCOA3      0.296299930 -0.3155098 -0.01228809  0.5331011
# LOC389834 -0.001213074  0.5300436  0.55930424  0.2009177
# SPIRE2     0.127047540  0.5759945  0.45181800  0.4050984

# 噢啦!

# 老步骤!

# 提取临床信息
cli <- pData(geo_data0)
head(cli)[1:4, 1:6]
#                    title geo_accession                status submission_date last_update_date type
# GSM416528 3100083_Stroke     GSM416528 Public on Jun 01 2010     Jun 11 2009      Jun 11 2009  RNA
# GSM416529 3100191_Stroke     GSM416529 Public on Jun 01 2010     Jun 11 2009      Jun 11 2009  RNA
# GSM416530 3100068_Stroke     GSM416530 Public on Jun 01 2010     Jun 11 2009      Jun 11 2009  RNA
# GSM416531 3100060_Stroke     GSM416531 Public on Jun 01 2010     Jun 11 2009      Jun 11 2009  RNA

# 为了后续分析,咱还可以给它进一步调整,使表达矩阵列名和临床信息的行名完全一致
p <- identical(rownames(cli), colnames(exp))
p
# [1] TRUE

这回是真的噢啦!

一般使用GEO数据库很可能是多个数据集合并使用,那这个时候,由于数据来源不一样,肯定会有批次效应存在,那大家一定要记得进行批次处理噢!有兴趣的小伙伴们可以查看:数据挖掘 | 批次效应的鉴定与处理 | 附完整代码 + 注释 | 看完不会来揍我

在获取表达矩阵和临床信息后,我们还可以进行生存分析:看完不会来揍我 | 生存分析详解 | 从基础概念到生存曲线绘制 | 代码注释 + 结果解读

还有差异分析:看完还不会来揍/找我 | 差异分析三巨头 —— DESeq2、edgeR 和 limma 包 | 附完整代码 + 注释

还有富集分析:看完还不会来揍我 | GSEA富集分析详解(一)—— 代码实操 | MSigDB数据库介绍 | 附完整代码 + 注释

哎呀,还有好多好多!大家需要什么,都可以随时搜索!像这样:

暂时还没有的,也可以催更我!!!

文末碎碎念

那今天的分享就到这里啦!我们下期再见哟!

最后顺便给自己推荐一下嘿嘿嘿!

如果我的分享对你有用的话,欢迎关注点赞在看转发分享阿巴阿巴阿巴阿巴巴巴!这可是我的第一原动力!

蟹蟹你们的喜欢和支持!!!

如果小伙伴们有需求的话,可以加入我们的交流群:一定要知道 | 永久免费的生信交流群终于来啦!!在这里,你可以稍有克制地畅所欲言!

超级建议大家在入群前或入群后可以看一下这个:干货满满 | 给生信小白的入门小建议 | 掏心掏肺版!绝对干货满满!让你不虚此看!

如果有需要个性化定制分析服务的小伙伴,可以看看这里:你要的个性化生信分析服务今天正式开启啦!定制你的专属解决方案!全程1v1答疑!!绝对包你满意!

入群链接后续可能会不定期更新,主要是因为群满换码或是其他原因,如果小伙伴点开它之后发现,咦,怎么失效啦!不要慌!咱们辛苦一下动动小手去主页的要咨询那里,点击进交流群即可入群!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1546982.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

水牛社:宝妈副业,不仅赚钱更成长:一段充实之旅

大家好&#xff01;作为一名90后的全职宝妈&#xff0c;今天非常荣幸能够与大家分享我的互联网赚钱经验。趁着宝宝午睡的宝贵时光&#xff0c;我抓紧写下了这篇文章&#xff0c;虽时间紧凑&#xff0c;但我会力求内容清晰明了。 大约从2022年4月开始&#xff0c;我踏上了互联网…

【Node.js】定时任务

Cron表达式 Cron表达式是用于表示定时任务的一种语法。它由6个字段组成&#xff0c;按顺序分别表示分、时、日、月、周几和年份。 * * * * * * ┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ │ │ │ │ │ └── 星期…

【智能算法】蛇优化算法(SO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2022年&#xff0c;FA Hashim等人受到蛇特殊交配行为启发&#xff0c;提出了蛇优化算法&#xff08;Snake Optimizer, SO&#xff09;。 2.算法原理 2.1算法思想 SO算法模拟蛇类的战斗与交配模式…

社会实践 | 暑期社会实践投稿攻略,凤凰网等(央媒/官媒)投稿入口,不同频道发稿详细报价

作为媒体行业的从业者&#xff0c;我们都清楚凤凰网等央媒/官媒的影响力和号召力。如果能在这些平台上发表文章&#xff0c;不仅可以增加个人影响力&#xff0c;还有利于传播自己的观点和思想。然而&#xff0c;很多人可能不知道如何才能在这些媒体上投稿。今天&#xff0c;我要…

错误记录

Packet for query is too large 错误原因 一般是没有修改Mysql允许传输的最大数据包大小&#xff0c;使用 SHOW VARIABLES LIKE %max_allowed_packet%;可以看到默认的大小&#xff0c;一般默认为1M。 处理方法 暂时修改&#xff1a;重启mysql后失效 --修改为10M set global…

鸿蒙开发实例:【demo-搜索历史记录】

图片演示效果&#xff1a; 鸿蒙OS开发更多内容↓点击HarmonyOS与OpenHarmony技术鸿蒙技术文档开发知识更新库gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md在这。或mau123789学习&#xff0c;是v喔 代码演示&#xff1a; // 注&#xff1a;当前代码基于宽度为…

开箱即用的中后台管理模版,建议收藏!

公众号&#xff1a;程序员白特&#xff0c;欢迎一起交流学习~ 原文作者&#xff1a;前端充电宝 大家好&#xff0c;我是白特。 今天来推荐几款开箱即用的中后台管理模版&#xff01; Vue Element Admin vue-element-admin 是一个后台前端解决方案&#xff0c;它基于 vue 和 …

C++ 迭代器与反向迭代器

目录 一&#xff0c;什么是迭代器 1&#xff0c;定义 2&#xff0c;迭代器的设计思维 3&#xff0c;迭代器种类 二&#xff0c;迭代器与容器 1&#xff0c;容器中的迭代器 2&#xff0c;迭代器失效问题 三&#xff0c;迭代器的类型萃取&#xff08;traits&#xff09; …

稀碎从零算法笔记Day28-LeetCode:零钱兑换

前言&#xff1a;鸽了好多天了哈哈哈&#xff0c;虽然C站没更但是LC还是坚持刷的&#xff0c;任重道远啊&#xff01;(可恶的寝室熄灯) 题型&#xff1a;动态规划 链接&#xff1a;322. 零钱兑换 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述…

城市内涝排水系统最新模型:慧天【HTWATER】与SWMM完美耦合

查看原文>>> 城市内涝水文水动力模型&#xff1a;慧天【HTWATER】 【城市内涝水文水动力模型介绍】 慧天排水数字化分析平台针对城市排水系统基础设施数据管理的需求&#xff0c;以及水文、水力及水质模拟对数据的需求&#xff0c;实现了以数据库方式对相应数据的存…

静态资源动态访问的细节补充import()与new URL

教学视频的补充 静态资源的动态访问【渡一教育】_哔哩哔哩_bilibili import里若用引号拼接,那么打包结果不会有图片 细节1:得用es6的反单引号才可以 细节2:不能以变量结尾 var p 12 //错误import(./assets/ p .jpg).then(res > {console.log(res, res);}) //正确var p…

201812 CSP认证 | CIDR合并

CIDR合并 难是真的不难但是也写了我几个小时服了 这道题在有计网的基础上就很好理解了&#xff0c;没有在格式上有任何刁难你的。这里不讲背景了 官网提交结果以及满分代码如下&#xff1a; #include<bits/stdc.h> using namespace std; typedef long long ll; typedef…

Qt Design Studio 软件怎么用(详细+通俗+有趣)

建议&#xff1a;本文长期更新&#xff0c;建议点赞/收藏&#xff01; 1. 啥是Qt Design Studio&#xff1f; Qt Design Studio 是一个用于设计和开发用户界面的工具&#xff0c;特别适合开发跨平台应用程序。它结合了UI设计和开发的工作流程&#xff0c;使得设计师和开发者可…

​奶茶店小程序有哪些功能

​奶茶店作为饮品行业的一种热门经营模式&#xff0c;拥有自己的小程序可以带来诸多便利和增长机会。在这篇文章中&#xff0c;我们将探讨奶茶店小程序应该具备的功能&#xff0c;以满足消费者的需求&#xff0c;提升店铺的运营效率和用户体验。 1. **在线订购功能**&#xff…

linux文本三剑客 --- grep、sed、awk

1、grep grep&#xff1a;使用正则表达式搜索文本&#xff0c;将匹配的行打印出来&#xff08;匹配到的标红&#xff09; 命令格式&#xff1a;grep [option] pattern file <1> 命令参数 -A<显示行数>&#xff1a;除了显示符合范本样式的那一列之外&#xff0c;并…

Windows/Mac 上的 7 个顶级数据恢复软件榜单

数据恢复软件可帮助您从众多存储设备中恢复损坏或删除的数据。该文件恢复软件可以恢复文件、文档、视频、照片等。这些应用程序支持许多标准文件格式&#xff0c;如 PNG、RTF、PDF、HTML、JPG、MP3 等。以下是具有流行功能的顶级数据恢复软件列表和网站链接。磁盘恢复软件列表包…

【Python系列】Python 中 YAML 文件与字典合并的实用技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

真假难辨:凯特王妃最新视频疑似AI合成,公众哗然!

会议之眼 快讯 北京时间3月23日凌晨&#xff0c;英国的凯特王妃发布了一段震撼人心的视频声明&#xff0c;坦诚自己正在面临一场艰难的挑战——患上了癌症。她坦言目前正在接受预防性化疗&#xff0c;并处于治疗的“早期阶段”&#xff0c;这一消息是在她暂时退出公众生活两个多…

智慧城市一屏统览,数字孪生综合治理

现代城市作为一个复杂系统&#xff0c;牵一发而动全身&#xff0c;城市化进程中产生新的矛盾和社会问题都会影响整个城市系统的正常运转。智慧城市是应对这些问题的策略之一。城市工作要树立系统思维&#xff0c;从构成城市诸多要素、结构、功能等方面入手&#xff0c;系统推进…

力扣Lc21--- 389. 找不同(java版)-2024年3月26日

1.题目描述 2.知识点 &#xff08;1&#xff09;在这段代码中&#xff1a; // 统计字符串s中每个字符的出现次数for (int i 0; i < s.length(); i) {count[s.charAt(i) - a];}对于字符串s “abcd”&#xff1a; 当 i 0&#xff0c;s.charAt(i) ‘a’&#xff0c;ASCII…