zd200572的个人博客分享 http://blog.sciencenet.cn/u/zd200572

博文

简易tcga下载脚本

已有 4849 次阅读 2018-1-9 15:24 |个人分类:biology|系统分类:科研笔记

如果你不懂代码,不懂网站规则,那么最简单的就是UCSC xena 浏览器啦!!!网站;https://xenabrowser.net/datapages/

看到微信公众号生信技能树的jimmy总结的如此有规律的下载地址链接,我尝试用python写几句脚本下载一下tcga数据。

1.尝试用爬虫获得所有疾病条目

尝试写爬虫发现网页需要javascript,暂时没有搞定,于是偷个懒把内容从https://xenabrowser.net/datapages/?host=https://tcga.xenahubs.net复制下来保存为TCGA_names.txt。一共是39 Cohorts, 903 Datasets。

TCGA Acute Myeloid Leukemia (LAML)TCGA Adrenocortical Cancer (ACC)......

2. 把这些文本解析一下,变成下载地址

https://gdc.xenahubs.net/download/TCGA-LAML/Xena_Matrices/TCGA-LAML.htseq_counts.tsv.gz https://gdc.xenahubs.net/download/TCGA-ACC/Xena_Matrices/TCGA-ACC.htseq_counts.tsv.gz

绝大部分文件的下载地址中,网址的规律是:https://gdc.xenahubs.net/download/TCGA-疾病名称/Xena_Matrices/TCGA-疾病名称-下载文件.tsv.gz

基本思路就是定义了两个函数完成这个事。第一个函数get_name()是用来从文本中获取疾病名的缩写,也就是这三十几种,因为下载地址就是用的缩写,利用split()函数获得。

importosdefget_name(file_in):name_list=[]forlineinfile_in:if'TCGA'inline:name_list.append(line.strip().split('(')\ [1].split(')')[0])returnname_list

第二个函数是把下载地址补充完整,实现下载过程。首先看你需要的数据是哪几类,把网址里的文件名放在一个列表里。这里数据文件名和含义的对应关系是:

  • gene expression RNAseq(HTSeq)–htseq_counts

  • survival–survival

  • phenotype–GDC_phenotype

  • miRNA Expression Quantification–mirna

  • copy number–masked_cnv

  • MuSE Variant Aggregation and Masking–muse_snv

  • MuTect2 Variant Aggregation and Masking–mutect2_snv

然后是利用格式化字符串,实现网址的自动补全。最后,利用os.system()函数,调用wget命令完成,-c参数以实现断点续传。

defdownload_files(name_list):fornameinname_list:file_list=['htseq_counts','survival','GDC_phenotype','mirna','masked_cnv','muse_snv','mutect2_snv']foriinrange(len(file_list)):cmd='wget -c https://gdc.xenahubs.net/download/TCGA-%s/Xena_Matrices/TCGA-%s.%s.tsv.gz'%(name,name,file_list[i])os.system(cmd)

最后,调用两个函数,完成下载过程。

file_in=open('TCGA_names.txt')name_list=get_name(file_in)download_files(name_list)

3.做个简陋的shiny控件

在循循善诱的群主启发下第一次学着用shiny,有点赶鸭子上架,哈哈。就参考着shiny的官方教程,做了个能有多简单就多简单的。

UI代码,就是按照官方示例框架,加上了内容:

# Define UI for miles per gallon application shinyUI(pageWithSidebar( # Application title headerPanel("TCGA download url tool"), sidebarPanel( selectInput("variable", "Select One Caner:", list("Acute Myeloid Leukemia" = "LAML", "Adrenocortical Cancer" = "ACC", ...... )), selectInput("var", "Select One Data:", list("gene expression RNAseq(HTSeq)" = "htseq_counts", "survival" = "survival", ......)), checkboxInput("outliers", "Show outliers", FALSE) ), mainPanel( textOutput("text1")#这个text1是和server代码相对应的变量名。 ) ))

Server端代码就是同样把地址拼接了一下,同样是简单修改自模板,开始空格问题没搞定,后来百度了个解决方案,但是提示语却也不能有空格了,只好用下划线代替:

library(shiny) # Define server logic required to plot various variables against mpg shinyServer( function(input, output) { output$text1 <- renderText( gsub("([N ])", "", paste("Download_url_is:\nhttps://gdc.xenahubs.net/download/TCGA\ -", input$variable,"/Xena_Matrices/TCGA\ -",input$variable,".",input$var,".tsv.gz")) ) } )

最后来看看简陋的效果:

完整代码见github:https://github.com/zd200572/tcga_downloader

把它布置在了自己的服务器上,欢迎使用:http://119.28.22.76:3838/tcga_downloader/




https://wap.sciencenet.cn/blog-623545-1093933.html

上一篇:(译)flexbar3.0--单指令多数据(SIMD)和多核并行
下一篇:omictools的HLA分型软件爬取
收藏 IP: 183.208.20.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-13 12:07

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部