NCBI数据下载随记

因为小编对于这一块一直比较迷惑,所以就简单记一下自己的下载经历,一方面方便自己日后查看,当然如果也能帮到你是最好的啦!

首先先说一下,小编在Windows笔记本上下载了Ubuntu的Linux运行环境,所以这里涉及的所有命令行都是在Ubuntu进行的哦~

再多说一嘴,最开始初学生信的时候小编就只建立了一个conda环境,但是在使用prefetch的时候怎么CA也没有办法通过,所以想着干脆新建立一个conda环境专门用来下载sra文件,然后再在bioinfo环境分析处理文件(问了AI,似乎是可行的)

然后这里先记录一下新的环境的配置(命名有点长,sradownload)

conda create -n sradownload python=3.0 -y
conda activate sradownload
conda install -c bioconda sra-tools -y

本来想要继续配置aspera的,结果真的让人崩溃,排查了很多问题还是没有解决,所以没哭何必硬吃?干脆放弃选择使用aspera了(虽然知道可以加速,但是奈何我用不了)

那我们从最简单的开始

首先呢,比如我们在science上看到一篇文章,然后呢发现它的bioproject的编号是PRJNA257197

那么我们就可以去使用esearch来搜索这个项目的信息和数据

 sudo apt install ncbi-entrez-direct
#使用esearch的包
esearch -db sra -query PRJNA257197
#表示在SRA的database里面查找项目PRJNA257197

SRA数据库的数据组织层级

基本层级关系如下

Bioproject>Study>Experiment>Sample>Run

Bioproject

首先是bioproject是整个研究的顶层结构,比方说我们在某篇文章中看到的PRJNA******等等就是该项目标号

一般以PRJNA开头的指的是NCBI项目,PRJEB开头的是欧洲ENA协作项目,PRJDB开头的是日本DDBJ协作项目

比如用下面一段代码查找PRJNA信息,我们会得到一段XML格式信息(纯文本格式)

esearch -db sra -query PRJNA257197
#表示在SRA的database里面查找项目PRJNA257197

我们来逐层解释以下信息:

<ENTREZ_DIRECT>这说明我们是在NCBI的ENTREZ的检索系统当中查找相关信息(ENTREZ可以认为是一个综合资源检索平台,整合了各种数据(基因序列,SRA,protein等等))

<Db>sra</Db> 说明我们是在SRA数据库当中进行查找的(这也与我们的命令相对应)

<WebEnv>MCID_688c172fe523eef22709ee84</WebEnv>其实提供给我们一个ID:MCID_688c172fe523eef22709ee84,我们可以理解为这是对本次查询会话的关联码,以后我们想要获得这891条数据,我们不需要再esearch查询,直接使用ID查询即可

<QueryKey>1</Querykey>是查询键,和WebEnv联合使用

<Count>891</Count>表示当前查询在SRA数据库中匹配到的记录总数,因为SRA的底层数据就是run(比如 SRR123456

Study:表示的是在这个大的bioproject的层级下包含的其他各个分的实验板块,可以认为是子项目,一般使用前缀SRP(SRA研究)、ERP(欧洲协作研究)、DRP(日本协作研究)来标识

Experiment:代表的是技术参数的细节,记录了测序平台策略,文库制备方法和实验条件等,一般使用前缀SRX(SRA实验),ERX(欧洲协作研究),DRX(日本协作研究)标识

Sample:是被测序的生物材料实体,是实验的原材料,此层级记录了样本的来源、属性和处理信息等等,一般使用前缀SRS(SRA样本)、ERS(欧洲协作样本)、DRS(日本协作样本)标识

Run:是测试数据的最终载体,表示一次测试的原始数据,一般使用前缀SRR(SRA 运行)、ERR(欧洲协作运行)、DRR(日本协作运行)标识

这里需要注意的一点是,并不是代表每一个上层级包含了下层级的数据,这些层级关系是帮助我们可以溯源这个原始数据是用什么样本,经历什么实验条件,为了验证什么假设,隶属于什么项目,每一个层级都有其自己的数据,但是最基本的数据单位还是Run

esearch -db sra -query PRJNA257197
#表示在SRA的database里面查找项目PRJNA257197

Bioproject内容初探

我们通过上面的程序获得到了基本有多少个Run项目以及我们再次查找的方式,其实上面的程序同时输出了一个文件runinfo我们可以用efetch获取,里面记录了相关的run的信息

esearch -db sra -query PRJNA257197 | efetch -format runinfo > runinfo.csv

(runinfo是以','分隔的文件,整合了每个run的信息)

得到了runinfo.csv之后我们可以用cat来显示,但是为了更加直观地看到各个信息,我们可以把这个csv文件转变为xlxs文件,这里我没有下载什么包,就是利用pandas的转换方式,具体实现如下

pip3 install pandas 
pip install openpyxl #因为这里pandas实现需要openpyxl的依赖

(需要的配置如上)

然后我们需要在文本编辑器当中编辑Python文件

#csv_to_xlsx.py

import pandas as pd

data=pd.read_csv('runinfo.csv')
data.to_excel('runinfo.xlsx',index=False)

然后在终端运行,注意要把runinfo.csv移到这个Python程序目录之下,然后再运行

mkdir ~/Python_code
#这里我通过Windows系统把csv_to_xlsx.py已经移到了unix系统这个目录之下
cp ~/runinfo.csv Python_code
python csv_to_xlsx.py

然后我们在Python_code文件夹里面可以得到转换的runinfo.xlsx,但是在unix系统当中不好直接查看xlsx文件,所以选择在Windows系统中查看,这是我截的一部分

可以看到每个Run对应的信息,读者可以自己操作然后再Excel当中查看,如果嫌麻烦的话可以直接利用unix文本操作简单看一看

(这里提一嘴,因为我设立Python_code的初衷是存储Python的脚本,所以在执行完之后可以把runinfo.csv删除(因为有备份),然后把runinfo.xlsx存在Windows界面上之后删除)

这里提供另外一种做法,直接用cut切割简单查看一下信息

cat runinfo.csv | cut -f 1 -d ',' | tail +2 | head -100

上面一个命令行是首先切割第一列(注意这是csv文件所以用','分隔),然后tail +2表示从第二行开始显示(因为第一行是column名),head -100 表示仅仅显示前100条数据

cat runinfo.csv | head -1

上面可以显示第一行的所有项目,比如run等等

我们还可以初步看一下,到底有多少条run数据(结果是891行,说明有891个run)

cat runinfo.csv | cut -f 1 -d ',' | tail +2 | wc -l

下载Run数据

因为这里的run数据太多了,所以我们就下载run数据的前50条(由于前面所说,小编的下载速度太慢了)

cat runinfo.csv | cut -f 1 -d ',' | grep SRR | head -50 > SRR.txt
# grep SRR 操作和 tail +2 的结果是一样的,推荐前面一种做法,如果没有先查看Bioproject的内容

我们我们先下载第一个run试试水

fastq-dump -X 10000 --split-files SRR1972917

fastq-dump是sratoolkit的下载fastq类型文件的指令,-X 10000表示仅仅下载前10000reads,--split-files表示对于pair-end测序的会分开两个文件下载(这里面涉及的是Illumina测序技术,可以先了解一下)

那么如果我们想要同时下载SRR.txt的50条数据,我们需要使用parallel来加快下载速度

parallel可以认为是高效分配计算机的GPU资源,使得多个任务同时进行以降低耗时

cat SRR.txt | parallel fastq-dump -X 10000 --split-files {}

({}是占位符,对应的是SRR.txt的内容)

注意一点,我们在下载的时候提前创建一个目录,在此目录进行下载,防止家目录文件堆积

直接在NCBI网站上下载

这是简单流程

其实这是更简单的过程,可以直接在NCBI当中搜索PRJNA257197,然后我们就可以得到

进入之后,滑到后面

如果我们想要得到SRA的数据,点击891,即可进入

点击此处链接,然后就可以得到类似于我们用pandas生成的SRR相关信息了

我们可以选择哪些Run下载哪些Run不下载

然后在select栏目里面选择download选项

(其实我觉得直接下载甚至更简单美观一些,只是如果想要在终端分析可能需要链接下载)

上面是对于SRA数据库下载方法,后面会更新对于NCBI其他数据库下载的方法滴~

小编水平有限,如果不足请多指教友善交流哦~

NCBI(National Center for Biotechnology Information)提供了大量的生物信息数据,包括基因组序列、蛋白质序列、文献等。用户可以通过多种方式将这些数据下载到本地硬盘。以下是几种常见的方法: ### 1. 使用NCBI FTP服务器 NCBI提供了FTP服务器,用户可以通过FTP客户端(如FileZilla)下载数据。 **步骤:** 1. 打开FTP客户端(如FileZilla)。 2. 输入NCBI FTP服务器的地址:`ftp.ncbi.nlm.nih.gov`。 3. 登录(匿名登录即可,无需用户名和密码)。 4. 导航到所需的数据目录。 5. 选择并下载所需的文件。 ### 2. 使用命令行工具 用户可以使用命令行工具(如`wget`或`curl`)下载数据。 **使用`wget`:** ```bash wget -r --no-parent ftp://ftp.ncbi.nlm.nih.gov/path/to/data/ ``` **使用`curl`:** ```bash curl -O ftp://ftp.ncbi.nlm.nih.gov/path/to/data/file ``` ### 3. 使用NCBI的EDirect工具 NCBI提供了EDirect工具,可以方便地从NCBI数据库下载数据。 **步骤:** 1. 访问NCBI的EDirect页面:[EDirect](https://www.ncbi.nlm.nih.gov/EDirect/) 2. 选择所需的数据类型和数据库。 3. 配置下载选项(如文件格式、压缩方式等)。 4. 点击“Create”生成下载链接。 5. 使用下载工具(如`wget`或浏览器)下载数据。 ### 4. 使用API 对于需要自动化下载的用户,可以使用NCBI提供的API(如E-utilities)。 **示例代码(Python):** ```python import requests def fetch_ncbi_data(db, id_list, api_key=None): base_url = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi' params = { 'db': db, 'id': ','.join(id_list), 'rettype': 'fasta', 'retmode': 'text' } if api_key: params['api_key'] = api_key response = requests.get(base_url, params=params) return response.text # 示例使用 db = 'nuccore' id_list = ['NC_045512', 'NC_002179'] data = fetch_ncbi_data(db, id_list) with open('ncbi_data.fasta', 'w') as f: f.write(data) ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值