miRNA seq差异表达分析练习(一)——GEO样本数据下载

写在前面

最近看到一篇博客《RNA-seq与miRNA-seq联合分析》,关于差异表达分析的,于是就想走一遍miRNA差异表达分析的过程。

数据下载地址也是该博客提供:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE77276,样本取自20个中国肝癌患者的肿瘤组织,门静脉组织和癌旁组织,共计60个,分别对其进行miRNA-seq,甲基化分析,拷贝数变异分析和RNA-seq分析。

进入下载地址,我想要的miRNA数据就在这里,miRNA的数据有60条,其他的还有180条。

先点击一个进去,再点击红线部分就可以下载了。

但是一想到要有60个样本数据要下载,这样一个个点进去下载得下到猴年马月吧!

我觉得肯定有人会遇到这种情况的,虽然不知道他们是怎么解决这个烦恼的,

但在这里,我想分享一句python名言:人生苦短,我用python!

python的世界里,可见即可爬,这种重复性的工作交给python最适合不过了。

进入正题

考虑到正在看这篇文章的你,可能没接触过爬虫,我就直接放代码吧!

import requests
import re
from urllib.request import urlretrieve

def getGSMid(GSEid):
    '''
    通过GSEid获得该GEO网页上的所有样本GSMid
    :param GSEid:
    :return: 包含所有样本GSMid的列表
    '''
    url = 'https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc={}'.format(GSEid)
    r = requests.get(url)
    reg = re.compile('acc=(GSM\d{7})"')
    GSMids = reg.findall(r.text)
    return GSMids

def getDownloadUrl(GSMid):
    '''
    通过GSMid获取该样本信息的下载链接
    :param GSMid:
    :return: 返回一个下载链接
    '''
    url = 'https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc={}'.format(GSMid)
    r = requests.get(url)
    r.encoding = 'utf-8'
    reg = re.compile('href="ftp://(.*?samples.*?)"')
    href = reg.findall(r.text)[0]
    href = str.replace(href, '%5F', '_')
    href = str.replace(href, '%2E', '.')
    href = 'https://'+ href
    return href

def download(url,path,GSMid):
    '''
    下载样本信息
    :param url: 下载链接
    :param path: 文件夹路径
    :param GSMid: 作为文件名
    :return:保存为txt.gz文件
    '''
    urlretrieve(url, '{}/{}.txt.gz'.format(path,GSMid))

# 程序运行
GSEid = "GSE77276"
path = r'miRNA_seq'
GSMids = getGSMid(GSEid)
for GSMid in GSMids:
    downloadUrl = getDownloadUrl(GSMid)
    print(GSMid)
    download(downloadUrl, path, GSMid)

print('运行结束')

现在教你怎么用!

首先,你要先安装python,很简单的,直接百度就知道了。

接着,你要安装三个模块,也很简单的,打开命令行窗口,输入:

pip install requests

pip install re

pip install urllib

每个模块安装完就可以运行程序啦,如果还是不会安装模块,直接百度就知道了。

再接着,打开你安装好的python IDLE,点击file—newfile,把代码复制粘贴进去。

最后,把GSEid换成你要下载的GSEid,把路径path换成你要保存的文件夹路径就可以啦!

第一次运行需要先保存Ctrl + S,然后run-run module,等待运行结束就大功告成了。

回到前面

前面说了,我只要60个miRNA seq的样本数据,但是运行上面程序将会把全部240个数据下载下来。

浪费时间,浪费内存,关键是没用啊!

那怎么办!稍微改下代码就好了,想下哪几个就下哪几个!

比如我想下载前60个数据,那么只需要

[:n]:表示前n个;

[n:]:表示后n个;

[m:n]:表示第m个(不包括m)到第n个(包括n)

最后的最后

事实上,有挺多软件或者工具用来下载GEO数据的,我知道的就有R语言的GEOquery包,具体下载的内容是不是我想要的这个不太清楚,毕竟我也没用过,而且也不知道能不能像我这样想下载哪几个就下载哪几个。

总之呢,人生苦短,我用python!

如果你运行程序出现错误,欢迎留言交流哈~

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值