首页 教程 服务器/数据库 从 NCBI SRA 数据库下载文件——获取想要的数据

从 NCBI SRA 数据库下载文件——获取想要的数据

文章目录

    • 前言
    • 什么是SRA
      • 从SRA检索数据
      • 在线检索
      • 关键词
      • 数据的 ACCESSION IDs
        • 小练习
      • 高级检索
    • 获取 Run Accessions SRR# 标识符
      • A. SRA Search Results 【例子】
      • B. SRA Run Selector
      • C. 命令行工具
        • 直接安装 (E-utilities)
    • 下载 SRA 数据文件
      • **使用 SRA ToolKit** :
      • 使用 Linux 命令行
      • 使用 Aspera Connect
    • 一个现成的例子

前言

事情是这样的,最近啊,在研究拟南芥叶片的数据,需要下载一批数据,之前整理过Sra-ToolKit的安装使用,这次干脆整理一下我知道的NCBI数据搜索和下载的方式😑

从 NCBI SRA 数据库下载文件——获取想要的数据

什么是SRA

全称:Sequence Read Archive,是一个公开可访问的存储和共享高通量测序数据的中心资源库。它由美国国家生物技术信息中心(NCBI)维护,该中心是美国国家医学图书馆(NLM)的一部分。
从 NCBI SRA 数据库下载文件——获取想要的数据
SRA数据库:https://www.ncbi.nlm.nih.gov/sra 专注于存储来自各种平台(如Illumina、Ion Torrent、PacBio等)生成的测序数据。这些测序技术生成大量的原始序列数据,通常被称为 reads,可用于各种生物学和生物医学研究目的。SRA数据库提供了一个全面的基础设施来组织、存储和检索测序数据。它支持数据压缩技术以优化存储空间同时保持数据完整性。存储的数据带有重要的元数据注释,包括:实验详细信息,样本信息,测序平台,文库制备方法。确定了所需的数据集,用户可以下载原始测序数据,使用喜欢的生物信息学工具和 pipeline 进行分析。

从SRA检索数据

用户可以通过NCBI网站或通过应用程序接口(APIs)访问SRA数据库。这两种方法都提供了强大的搜索功能,用户可以根据关键词、访问号、研究详情、生物信息或实验属性等找到特定数据集。

在线检索

SRA数据库提供灵活的搜索功能,包括但不限于:关键词,数据访问标识、高级搜索构建器。确保用户可以高效地找到研究所需数据集。

关键词

用户可以在SRA数据库主页的搜索框中输入关键词⤴。可以包括基因、物种、疾病、实验条件或任何其他相关信息。数据库将返回与提供关键词匹配的结果。例如,搜索:bumble bee worker
从 NCBI SRA 数据库下载文件——获取想要的数据
如果要缩小搜索结果范围,可以利用搜索结果页面右侧和左侧的各种过滤器。
从 NCBI SRA 数据库下载文件——获取想要的数据

数据的 ACCESSION IDs

如果,已经知道要查找的数据集具体的 ACCESSION IDs 或研究名称,可以直接输入这些标识符到搜索框中。这样可以快速检索所需的数据集,无需进行大量的关键字搜索。

Note

  • STUDY,以SRP#、ERP#、DRP#开头
  • SAMPLE,以SRS#、ERS#、DRS#开头
  • EXPERIMENT,以SRX#、ERX#、DRX#开头
  • RUN,以SRR#、ERR#、DRR#开头
  • PROJECT,以PRJNA#、GSE#开头的标识符

ACCESSION IDs 的第一个字母表示数据库源 - 分别为SRA、EBI或DDBJ

例如,刚读了个文章,挺有意思的,想下载它的数据,文章里写着,可以在项目PRJNA730495下获得数据,那么:
从 NCBI SRA 数据库下载文件——获取想要的数据
这一次,搜索结果显示与该 Project 相关的所有项目。在页面顶部,还会显示相关的数据集等等
从 NCBI SRA 数据库下载文件——获取想要的数据

小练习
  • 搜索一个具体的研究:SRP006081 [solution]
  • 使用通配符搜索一系列研究:SRP00608* [solution] ⤴
  • 搜索两个特定的研究:SRP006081 OR SRP006083 [solution]

高级检索

SRA数据库提供高级搜索功能,允许用户构建更复杂和定制的搜索。可以点击搜索框下方的“advance”,即可访问高级搜索构建器。利用此工具,用户可以创建复杂的查询,以检索符合其特定要求的数据集。

Tip:搜索条件复杂或需要根据多个条件限制搜索时,高级检索很有用

从 NCBI SRA 数据库下载文件——获取想要的数据
高级搜索包括多个字段和过滤器,用户可以结合使用这些内容构建查询。这些内容包括:

  • 关键词, Keywords:输入与其研究兴趣相关的具体关键词。
  • 过滤器,Filters:如物种、平台、研究类型、文库来源、仪器型号等,缩小搜索范围。
  • 运算符,Operators:使用逻辑运算符 AND、OR 和 NOT 结合搜索项,创建更精确的查询。
    具体参考 官方 SRA 文档

获取 Run Accessions SRR# 标识符

这个在平时用的比较多,经常看到文章项目下列举了一系列的SRR* Identifiers,可以用于从SRA数据库下载原始测序数据,获取方式:

  • A 在线SRA搜索结果(Search results)
  • B 在线SRA运行选择器(Run Selector)(推荐)
  • C 命令行工具
    从 NCBI SRA 数据库下载文件——获取想要的数据

A. SRA Search Results 【例子】

从 NCBI SRA 数据库下载文件——获取想要的数据
搜索框中搜索 ACCESSION ID,查看搜索结果并勾选要下载的项目。然后在页面顶部:点击 “Send to” ,选中**“File”,从下拉菜单中选择“Accession List”**,点击 “Create File” 下载文件,保存到要下载原始数据的位置(比如,运行 SRA Toolkit 的位置),默认情况下,下载的文件名为Sra_Acc_List.txt,包含一列:

SRR14567204 SRR14567205 SRR14567206 SRR14567207 SRR14567208 ...

B. SRA Run Selector

从 NCBI SRA 数据库下载文件——获取想要的数据
上图所示,在SRA数据库搜索了项目之后,最上方会有一行提示(红色框框),直接点击那个**“Send results to Run selector”**,后面操作也比较简单,可以下载 AccessionList 文件SRR_Acc_List.txt,然后用 Sra-Toolkit 下载(比较建议)。当然也可以如下图:
从 NCBI SRA 数据库下载文件——获取想要的数据
比如,选择一个,直接下载原始的FASTQ/A等,但是有数据大小限制……好像是5G,忘记了……

C. 命令行工具

使用 esearchefetch,嗯,就是在NCBI Entrez Direct utilities中的,也叫 E-utilities

Note :
esearch 用于查询各种 NCBI 数据库,包括 SRA 数据库,检索特定信息或搜索结果。
efetch 配合 -format runinfo 参数,将检索匹配数据集的信息,包括运行访问权限。

直接安装 (E-utilities)

安装和使用方法详见:https://www.ncbi.nlm.nih.gov/books/NBK179288/#chapter6_Getting_Started

用法:

esearch -db sra -query"your search terms"| efetch -format runinfo

例子: 检索项目 PRJNA730495

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

得到的结果大概:

Run,ReleaseDate,LoadDate,spots,bases,spots_with_mates,avgLength,size_MB,AssemblyName,download_path,Experiment,LibraryName,LibraryStrategy,LibrarySelection,LibrarySource,LibraryLayout,InsertSize,InsertDev,Platform,Model,SRAStudy,BioProject,Study_Pubmed_id,ProjectID,Sample,BioSample,SampleType,TaxID,ScientificName,SampleName,g1k_pop_code,source,g1k_analysis_group,Subject_ID,Sex,Disease,Tumor,Affection_Status,Analyte_Type,Histological_Type,Body_Site,CenterName,Submission,dbgap_study_accession,Consent,RunHash,ReadHash SRR14567204,2021-06-25 18:25:06,2021-05-17 12:50:50,22110877,4422175400,22110877,200,1750,,https://sra-downloadb.be-md.ncbi.nlm.nih.gov/sos3/sra-pub-zq-24/SRR014/14567/SRR14567204/SRR14567204.lite.1,SRX10910477,,RNA-Seq,cDNA,TRANSCRIPTOMIC,PAIRED,0,0,ILLUMINA,Illumina HiSeq 4000,SRP320091,PRJNA730495,3,730495,SRS9000934,SAMN19232003,simple,207648,Bombus terricola,GSM5319034,,,,,,,no,,,,,GEO,SRA1233078,,public,EEDE9E10B2038FD62970B54B892532EE,C9297792C29DD79798BDE466149A11C3 SRR14567205,2021-06-25 18:25:06,2021-05-17 12:54:45,25106715,5021343000,25106715,200,1975,,https://sra-downloadb.be-md.ncbi.nlm.nih.gov/sos3/sra-pub-zq-24/SRR014/14567/SRR14567205/SRR14567205.lite.1,SRX10910478,,RNA-Seq,cDNA,TRANSCRIPTOMIC,PAIRED,0,0,ILLUMINA,Illumina HiSeq 4000,SRP320091,PRJNA730495,3,730495,SRS9000933,SAMN19232002,simple,207648,Bombus terricola,GSM5319035,,,,,,,no,,,,,GEO,SRA1233078,,public,179BB8F87C8E7AEA09AFD31EA47B17CB,15F09D8C96B02C734C1FD0701A5BACF9 SRR14567206,2021-06-25 18:25:06,2021-05-17 12:54:14,21165129,4233025800,21165129,200,1624,,https://sra-downloadb.be-md.ncbi.nlm.nih.gov/sos3/sra-pub-zq-24/SRR014/14567/SRR14567206/SRR14567206.lite.1,SRX10910479,,RNA-Seq,cDNA,TRANSCRIPTOMIC,PAIRED,0,0,ILLUMINA,Illumina HiSeq 4000,SRP320091,PRJNA730495,3,730495,SRS9000935,SAMN19232001,simple,207648,Bombus terricola,GSM5319036,,,,,,,no,,,,,GEO,SRA1233078,,public,F59A9C00EED65826E0F40DF85CA0E512,F76970E0700A354530E7C0F28B0E0599 SRR14567207,2021-06-25 18:25:06,2021-05-17 12:53:18,22777492,4555498400,22777492,200,1775,,https://sra-downloadb.be-md.ncbi.nlm.nih.gov/sos3/sra-pub-zq-24/SRR014/14567/SRR14567207/SRR14567207.lite.1,SRX10910480,,RNA-Seq,cDNA,TRANSCRIPTOMIC,PAIRED,0,0,ILLUMINA,Illumina HiSeq 4000,SRP320091,PRJNA730495,3,730495,SRS9000936,SAMN19232000,simple,207648,Bombus terricola,GSM5319037,,,,,,,no,,,,,GEO,SRA1233078,,public,9A865DAAC8CB2F9336A553C44D371CCB,509CFAFFD98F8877B09D19E31305F0EE ...

当然也可以把其中的 SRR# 标识符单独拎出来:

esearch -db sra -query PRJNA730495 | efetch -format runinfo |cut-d","-f1> SRR.numbers

结果大概这样:

SRR14567204 SRR14567205 SRR14567206 SRR14567207 ...

下载 SRA 数据文件

有了**SRR#**号之后,有三种使用命令行的下载方式:1. 使用 SRA ToolKit (推荐);2. 使用 Linux 命令行工具;3. 使用 Aspera Connect

使用 SRA ToolKit

比较关键的就是安装,详见:https://github.com/ncbi/sra-tools/wiki/01.-Downloading-SRA-Toolkit 或者 Sra-ToolKit的安装使用,当工具安装好了,或者用的服务器、超算上有,则直接用。
ToolKit 中包含的工具挺多的哈,包括:prefetchfastq-dumpsam-dumpvdb-validatevdb-configfasterq-dump
从 NCBI SRA 数据库下载文件——获取想要的数据
简单的讲,就是从下载(prefetch)到格式转换(fastq-dump、sam-dump)到检查数据完整性(vdb-validate)到升级版、对大数据下载优化(fasterq-dump)的集合。
操作简单,比如想下载SRR447882下的文件,可以使用两种方式,一是使用 prefetch 下载.sra文件然后使用 fastq-dump转成FASTQ格式的文件,二是直接使用 fastq-dump 从下载到格式转换一条龙:fastq-dump SRR447882

下载数据之前要搞清楚,作者上传的是什么格式,测序双端还是单端啊,等等

我大多数的时候,在获取 Sra_Acc_List.txt 后,直接:

cat Sra_Acc_List.txt|whileread sra;do(nohup fastq-dump --split-files $sra> sra.log 2>&1&);done

但是需要一定的计算资源

使用 Linux 命令行

我感觉前一种方式(SRA ToolKit)也算……
但是,接下来介绍的可能更存粹一些……

其实哈,在2019年10月11日的时候,NCBI团队就开始推荐大家使用 SRA ToolKit下载数据了,详见 Users of the SRA FTP site: Try the SRA Toolkit!,
所以哈…其实嗯……还是整理一下吧…

下载东西哈,Linux的内置工具,无非就是 wget 或者 curl,只要提供正确的下载地址就可以。数据下载链接的规则也不难,就是:https://trace.ncbi.nlm.nih.gov/Traces/sra-reads-be/fastq?acc=SRRNNNNNN
PS:据说很久以前是http://trace.ncbi.nlm.nih.gov/Traces/sra/sra.cgi?cmd=dload&run_list=SRRNNNNNN&format=fastq
只要把SRRNNNNNN的部分替换成自己需要的 SRR# ID 就行了。比如:

wget https://trace.ncbi.nlm.nih.gov/Traces/sra-reads-be/fastq?acc=SRR14567204 # 或者curl-O https://trace.ncbi.nlm.nih.gov/Traces/sra-reads-be/fastq?acc=SRR14567204 # 或者有了 ID Listwhileread line;dowget https://trace.ncbi.nlm.nih.gov/Traces/sra-reads-be/fastq?acc=${line};done< list_of_ids

咋说呢,这种方式下载比较慢,好像文件太大还不行,5G?所以还是用 SRA ToolKit 吧

使用 Aspera Connect

说实话哈,我也不知道咋翻译,所以,哈哈哈…Aspera 使用高速文件传输技术,能够在现有的广域网(WAN)基础设施上快速传输大文件和数据集。(这东西不知道国内有没有限制…没用过)
这个东西下载数据的时候,默认是酷酷都怼到家目录,如果家目录空间不够还得这样:

cd ~ mkdir-p /project/storage/your_dir/ncbi ln-s /project/storage/your_dir/ncbi

再这样:

prefetch --max-size 100G --transport ascp --ascp-path "/path/to/aspera/3.6.2/bin/ascp|/path/to/aspera/3.6.2/etc/asperaweb_id_dsa.openssh" SRRNNNNNN

下咋好的目录结构大致:

ncbi └── public └── sra ├── SRR006189.sra └── SRR006190.sra

还得类似这样转换格式:

for sra filein ~/ncbi/public/sra/*;do fastq-dump --split-files --origfmt--gzip${sra};done

所以哈,还是推荐 SRA ToolKit

一个现成的例子

全程使用命令行:

  1. 获取SRR:esearch -db sra -query PRJNA730495 | efetch -format runinfo |cut -d "," -f 1 > SRR.numbers
  2. 下载:parallel --jobs 4 "fastq-dump --split-files --origfmt --gzip {}" ::: SRR.numbers
    或者整理成一个Script:

#!/bin/bash#SBATCH --nodes=1#SBATCH --cpus-per-task=8#SBATCH --time=01:00:00 module load sratoolkit module load parallel project='PRJNA730495' esearch -db sra -query$project| efetch -format runinfo > runinfo.csv cat runinfo.csv |cut-d","-f1> SRR.numbers cat SRR.numbers | parallel fastq-dump --split-files --origfmt--gzip-X1000{}

运行:sbatch download_raw_samples.sh

评论(0)条

提示:请勿发布广告垃圾评论,否则封号处理!!

    猜你喜欢
    【MySQL】用户管理

    【MySQL】用户管理

     服务器/数据库  2个月前  2.15k

    我们推荐使用普通用户对数据的访问。而root作为管理员可以对普通用户对应的权限进行设置和管理。如给张三和李四这样的普通用户权限设定后。就只能操作给你权限的库了。

    Cursor Rules 让开发效率变成10倍速

    Cursor Rules 让开发效率变成10倍速

     服务器/数据库  2个月前  1.21k

    在AI与编程的交汇点上,awesome-cursorrules项目犹如一座灯塔,指引着开发者们驶向更高效、更智能的编程未来。无论你是经验丰富的老手,还是刚入行的新人,这个项目都能为你的编程之旅增添一抹亮色。这些规则文件就像是你私人定制的AI助手,能够根据你的项目需求和个人偏好,精确地调教AI的行为。突然间,你会发现AI不仅能理解Next.js的最佳实践,还能自动应用TypeScript的类型检查,甚至主动提供Tailwind CSS的类名建议。探索新的应用场景,推动AI辅助编程的边界。

    探索Django 5: 从零开始,打造你的第一个Web应用

    探索Django 5: 从零开始,打造你的第一个Web应用

     服务器/数据库  2个月前  1.13k

    Django 是一个开放源代码的 Web 应用程序框架,由 Python 写成。它遵循 MVT(Model-View-Template)的设计模式,旨在帮助开发者高效地构建复杂且功能丰富的 Web 应用程序。随着每个版本的升级,Django 不断演变,提供更多功能和改进,让开发变得更加便捷。《Django 5 Web应用开发实战》集Django架站基础、项目实践、开发经验于一体,是一本从零基础到精通Django Web企业级开发技术的实战指南《Django 5 Web应用开发实战》内容以。

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

     服务器/数据库  2个月前  1.08k

    mysql_secure_installation 是 MySQL 提供的一个安全脚本,用于提高数据库服务器的安全性

    【MySQL基础篇】概述及SQL指令:DDL及DML

    【MySQL基础篇】概述及SQL指令:DDL及DML

     服务器/数据库  2个月前  483

    数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库不仅仅是数据的简单堆积,而是遵循一定的规则和模式进行组织和管理的。数据库中的数据可以包括文本、数字、图像、音频等各种类型的信息。

    Redis中的哨兵(Sentinel)

    Redis中的哨兵(Sentinel)

     服务器/数据库  2个月前  309

    ​ 上篇文章我们讲述了Redis中的主从复制(Redis分布式系统中的主从复制-CSDN博客),本篇文章针对主从复制中的问题引出Redis中的哨兵,希望本篇文章会对你有所帮助。