GEO转录组数据下载GSE150392

前面的这个GEO转录组数据的下载和整理流程是我在生信技能树学习的笔记,今天打开公众号发现有50个浏览量,说明有和我一样需要友好的转录组数据下载和整理示范。前面的那个笔记很粗糙,可能对于一些新手来说还是有解释不到位的地方,所以今天我把这个笔记重新整理了一下。

1.数据下载 具体流程见:https://mp.weixin.qq.com/s/-cC23K4WZIJhJMY5Usc-bw

##1.1 进入GEO官网https://www.ncbi.nlm.nih.gov/geo/输入要搜索的GSE编号GSE150392,点击搜索。 

##1.2先看看是芯片数据还是转录组数据,转录组数据才能用这个流程。阅读摘要,了解实验设计和分组情况。 

##1.3下载原始counts数据 

##1.4将下载的数据放入到工作目录下,方便R读取。 

proj ="GSE150392"#给项目去个名字,方便识别和区分,不然时间长了不记得是做的什么项目和数据了。

2.读取和整理数据

##2.1给项目命名

proj ="GSE150392"#给项目去个名字,方便识别和区分,不然时间长了不记得是做的什么项目和数据了。

2.2 读取并查看表达矩阵是否正常

#用read.table()读取后会发现数据框很乱,需要调整参数,所以换一个函数读取。dat = read.csv("GSE150392_Cov_Mock_Raw_COUNTS.csv")#读取表达矩阵并检查数据是否正常。读取后发现数据是3万多行,是不是数据读取的不对?直接打开csv文件查看是否正确。可见看见有一些ERCC开头的基因表达量都是0,后面过滤的的步骤可以把这些过滤掉,但是万一这些基因中有表达量不为0的基因,可能就没有过滤掉,影响结果,因为这些基因是外源基因,所以要直接去除这些基因。x列的数据是ENSG00000000003.15_TSPAN6,既包括ensmbol和symbol,需要提取symbol.

library(stringr)#> Warning: package 'stringr' was built under R version 4.1.2k1 = !str_detect(dat$X,"ERCC");table(k1)#ERCC开头的基因是外源基因,看看有多少个外源基因。#> k1#> FALSE  TRUE #>  104 36837dat = dat[k1,]#去除ERCC开头的基因是外源基因#发现dat的X列的entrezid和gene symbol以"_"连接在一起,要将它们分开。a = str_split(dat$X,"_",simplify =T)#理论上应该分成2列,但却分成了4列。#鼠标左键单击新分成的矩阵a的列名右侧的▶可按顺序查看里面的内容。dat$X[24]#发现X列的数据有多个_(基因的名字中也包含_),所以拆分成4列了。解决办法是找一个拆分第1个_的函数就可以了。#> [1] "ENSG00000002586.20_PAR_Y_CD99"b = str_replace(dat$X,"_","///")#只替换第一个“_”,并将其替换成基因名称中不包含的字符就可以,如“/”或“?”。怕基因中包含“/”或“?”,那就多写几个“/”或“?”,即“///”或“???”。str_replace_all是替换所有的字符。试了用5个?替代,但是报错,应该是?被占用了。如果下载的表达矩阵没有entrezid和gene symbol以"_"连接在一起的情况,就不需要这个分割步骤。注意:GEO的数据有些地方没有统一的规范,所以处理数据的流程也不是完全一样的。b = str_replace(dat$X,"_","///") %>%  str_split("///",simplify =T)dat$X[24]#检查并确认基因里的“_”并没有被///替代,别将基因里的“_”都替代了。#> [1] "ENSG00000002586.20_PAR_Y_CD99"exp = dat[,2:7]#提取dat里的第2-7列。exp[1:4,1:4]#>  Cov1 Cov2 Cov3 Mock1#> 1 1270 1013  848  4571#> 2  121  125  49  3220#> 3 1023 1045  674  2404#> 4 1049  713  692  854#rownames(dat) = b[,2]#将b的基因名称作为dat的行名,因为数据框和矩阵不允许行名有重复,而b的genen symbol是有重复的,所以运行这个代码会报错,运行这个代码之前要先去重。k2 = !duplicated(b[,2]);table(k2)#查看b第2列的基因名称有多少不重复和重复的。#> k2#> FALSE  TRUE #>    23 36814exp = dat[,2:7]nrow(b)#都是36849行。#> [1] 36837nrow(exp)#都是36849行。#> [1] 36837b = b[k2,]exp = exp[k2,]rownames(exp) = b[,2]exp[1:4,1:4]#检查表达矩阵的行名和数据是否达正常#>        Cov1 Cov2 Cov3 Mock1#> TSPAN6 1270 1013  848  4571#> TNMD    121  125  49  3220#> DPM1  1023 1045  674  2404#> SCYL3  1049  713  692  854class(exp)#表达矩阵的类型是数据框。#> [1] "data.frame"exp = as.matrix(exp)#将表达矩阵由数据框转换为矩阵。class(exp)#检查表达矩阵的类型已经按预期转换成了矩阵的数据类型。#> [1] "matrix" "array"

4.基因过滤

需要过滤一下那些在很多样本里表达量都为0或者表达量很低的基因。过滤标准不唯一。

过滤之前基因数量:

nrow(exp)#> [1] 36814

常用过滤标准1:

仅去除在所有样本里表达量都为零的基因

exp1 = exp[rowSums(exp)>0,]nrow(exp1)#> [1] 35210

常用过滤标准2(推荐):

仅保留在一半以上样本里表达的基因

exp = exp[apply(exp,1,function(x) sum(x >0) >0.5*ncol(exp)), ]nrow(exp)#> [1] 28197

5.分组信息获取

colnames(exp)#> [1] "Cov1"  "Cov2"  "Cov3"  "Mock1" "Mock2" "Mock3"Group = str_remove(colnames(exp),"\\d")# 提取分组信息,将样本名称的数字去除,\\指数字的意思。 注意:这里提取分组信息也是因数据而异的,不同的数据提取分组信息的代码不同。Group#检查分组信息的数字已按预期去除。#> [1] "Cov"  "Cov"  "Cov"  "Mock" "Mock" "Mock"Group = factor(Group,levels = c("Mock","Cov"))#对照组在前,处理组在后,注意别写反了。table(Group)#再次检查是否达到预期。#> Group#> Mock  Cov #>    3    3

6.保存数据

save(exp,Group,proj,file = paste0(proj,".Rdata"))

6.导出数据

write.csv(exp,file = paste0(proj,".csv"))

其他数据下载方法

gdc-client

是从官方网站下载,代码在gdc文件夹,难度较大,结果与xena整理的一致,作为补充学习浏览一下即可。

GDCRNAtools

http://bioconductor.org/packages/devel/bioc/vignettes/GDCRNATools/inst/doc/GDCRNATools.html

注意事项:

1.不同的GEO数据其数据的整理代码不同,要根据数据的实际情况将代码进行调整,没有通用的代码; 2.要有这个代码里的一步一检查的思想,有时候代码不报错,但运行的结果如果没有达到预期,后续的分析会错的离谱; 3.数据的整理很重要,前期数据整理好了后面的分析就都顺畅了。

#致谢生信技能树和小洁老师!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,776评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,527评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,361评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,430评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,511评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,544评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,561评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,315评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,763评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,070评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,235评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,911评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,554评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,173评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,424评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,106评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,103评论 2 352

推荐阅读更多精彩内容