搜索
查看: 2450|回复: 9

[other] HOPTOP转录组入门(二)读文献下数据

[复制链接]

18

主题

55

帖子

343

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
343
发表于 2017-7-10 19:38:30 | 显示全部楼层 |阅读模式
请订阅如下公众号,支持我的写作

本系列课程学习的文章是:AKAP95 regulates splicing through scaffolding RNAs and RNA processing factors. Nat Commun 2016 Nov 8;7:13347. PMID: 27824034
很容易在文章里面找到数据地址GSE81916 这样就可以下载sra文件

数据下载部分
第一步:在PubMeb上查找文献

image.png

第二步: 根据文献的method部分找到RNA-Seq是如何存放的


第三步: 在GEO上查找GSE81916
GEO站点: https://www.ncbi.nlm.nih.gov/geo/


找到了NCBI的SRA工具下载所需要的SRR编号。




FTP网址ftp://ftp-trace.ncbi.nlm.nih.gov ... RP/SRP075/SRP075747 可以分为以下几个部分
  • 所有SRA数据的共同部分: ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant
  • reads表示存放reads数据,在FTP可以看到另一个选项是analysis,表示分析结果
  • ByStudy表示根据Study进行分类,其他还可以根据实验ByExp,根据Run,ByRun.
  • sra/SRP/SRP075/SRP075747: 后面部分都是为了便于检索。
第四步:通过循环,分别用prefetch下载数据
[AppleScript] 纯文本查看 复制代码
for i in `seq 48 62`;
do    
    prefetch SRR35899${i}
done

知识点:如何用循环批量下载数据
注1: 数据很大,需要下载很久,这段时间去看文章所用的分析方法。
注2:仔细读GEO可以判断哪些是RNA-Seq要用的数据,可以仅仅下载这部分数据

文章所用方法:
内容主要在Bioinformatic analyses部分
比对:
  • 比对软件:TopHat (v2.0.13)
  • 参考基因组:human reference genome (GRCh37/hg19)
  • GTF文件: GTF version GRCh37.70
  • 只保留MQ >30的map结果
  • Picard-tools (v1.126): 计算平均插入大小(mean insert sizes)和标准差

read count: 软件:HTSeq v0.6.0
差异表达分析: DESeq (v3.0)
差异外显子使用分析: DEXSeq (v3.1)
GO富集分析:DAVID (http://david.ncifcrf.gov/).

实验设计:
样本9-15为mRNA-Seq测序结果,用于分析人类293个细胞(9-11)和小鼠ES细胞(12-15)d的AKAP95敲除影响。

拓展提高: 写一个Python脚本下载GEO数据
下载数据的过程无非是根据GEO找到FTP的地址,然后用wget或者prefetch下载而已。在我们今后的生涯里必然会遇到很多次类似的情况,所以写个脚本吧。
脚本逻辑很简单:
  • 根据GEO accession找到FTP地址
  • 用wget循环下载FTP地址下的数据
[AppleScript] 纯文本查看 复制代码
#!/bin/python3
import refrom urllib.request 
import urlopen
import os
def main(geo):    
# find the FTP address from [url=https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GEO]https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GEO[/url]
   response = urlopen("https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc={}".format(geo))
    pattern = re.compile("<a href=\"(.*?)\">\(ftp\)</a>")
    # use wget from shell to download SRA data 
   ftp_address = re.search(pattern,response.read().decode('utf-8')).group(1)
    os.system(' wget -nd -r 1 -A *.sra ' + ftp_address)

if __name__ == '__main__':
    from sys import argv
    main(argv[1])



保存命名为SRR_downloader.py,在命令行里运行
python3 SRR_downloader.py GSE81916
简单说明:
  • 用sys.argv从命令行中读取参数
  • 用urllib.request向网页发起请求,获取response
  • 用正则表达式(re)提取FTP地址
  • 用os.system运行shell的命令






上一篇:NGS的硕士毕业论文
下一篇:Count Based RNAseq 就是差异表达的两个包的简介
回复

使用道具 举报

13

主题

33

帖子

235

积分

版主

Rank: 7Rank: 7Rank: 7

积分
235
发表于 2017-7-15 16:03:19 | 显示全部楼层
十个赞! 不过脚本没有完全看懂!!!
回复 支持 反对

使用道具 举报

64

主题

138

帖子

675

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
675
发表于 2017-7-27 21:50:59 | 显示全部楼层
http://www.bio-info-trainee.com/1835.html#more-1835
大神的博客有专门讲GEO的
回复 支持 反对

使用道具 举报

18

主题

55

帖子

343

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
343
 楼主| 发表于 2017-7-28 09:45:18 | 显示全部楼层
学习最快乐 发表于 2017-7-27 21:50
http://www.bio-info-trainee.com/1835.html#more-1835
大神的博客有专门讲GEO的

实不相瞒, 我没事就去看他的博客
回复 支持 反对

使用道具 举报

64

主题

138

帖子

675

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
675
发表于 2017-7-28 14:11:38 | 显示全部楼层
hoptop 发表于 2017-7-28 09:45
实不相瞒, 我没事就去看他的博客

me too
回复 支持 反对

使用道具 举报

0

主题

2

帖子

61

积分

注册会员

Rank: 2

积分
61
发表于 2017-8-12 21:33:02 | 显示全部楼层
python SRR_downloader.py GSE81916
  File "SRR_downloader.py", line 2
    import refrom urllib.request
                       ^
SyntaxError: invalid syntax
我运行博主的Python下载程序时提示如上错误。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2017-8-30 19:52:48 | 显示全部楼层
zzlzef 发表于 2017-8-12 21:33
python SRR_downloader.py GSE81916
  File "SRR_downloader.py", line 2
    import refrom urllib.reques ...

可能是发帖子导致分行出现了问题;应该是:
import re
from urllib.request import urlopen
这样就没问题了;
但是这样改过之后,脚本下载的东西还是不对
回复 支持 反对

使用道具 举报

0

主题

2

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2017-8-30 19:55:10 | 显示全部楼层
zzlzef 发表于 2017-8-12 21:33
python SRR_downloader.py GSE81916
  File "SRR_downloader.py", line 2
    import refrom urllib.reques ...

还需要加一点点东西:
import re
from urllib.request import urlopen
import os
def main(geo):
# find the FTP address from https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GEO
    response = urlopen("https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc={}".format(geo))
    pattern = re.compile("<a href=\"ftp://ftp-trace(.*?)\">\(ftp\)</a>")
    # use wget from shell to download SRA data
    ftp_address = re.search(pattern, response.read().decode('utf-8')).group(1)
    os.system(' wget -nd -r 1 -A *.sra ' + 'ftp://ftp-trace' + ftp_address)

if __name__ == '__main__':
    from sys import argv
    main(argv[1])
回复 支持 反对

使用道具 举报

8

主题

19

帖子

139

积分

注册会员

Rank: 2

积分
139
发表于 2017-10-11 22:25:27 | 显示全部楼层
我想问:下载原始数据跟官网整理好比较成熟的数据有啥不一样呢,如果单纯只是用他人数据是不是可以用比较成熟的数据。
回复 支持 反对

使用道具 举报

18

主题

55

帖子

343

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
343
 楼主| 发表于 2017-10-11 23:09:16 | 显示全部楼层
yohahah 发表于 2017-10-11 22:25
我想问:下载原始数据跟官网整理好比较成熟的数据有啥不一样呢,如果单纯只是用他人数据是不是可以用比较成 ...

如果你觉得他的分析不靠谱,你可以用自己的流程去分析。如果仅仅用别人数据,就无所谓了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树    

GMT+8, 2017-12-19 06:18 , Processed in 0.126924 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.