从NCBI批量下载数据
在NCBI获取文献中的数据过程中,在研究者日常工作中都存在海量数据及长时间下载的挑战。我们开发了一个基于Linux脚本的工具程序,在研究者日常工作中能够实现对大量文献中所需数据的批量获取,并显著提升工作效率。
例如,在生物信息学研究中存在一个特定的项目编号系统:每一个转录组数据项目都对应着一个独特的Project ID(如PRJNA229998)以及一个全球生物信息学计划(GEO)ID(如GSE52778)。这两个编号共同标识着同一个科研项目的开展情况。具体而言,在一项研究中我们通过分析哮喘患者在服用两种药物后气道平滑肌细胞的基因表达变化(Analysis of gene expression changes in airway smooth muscle cells after administering two drugs to asthmatic patients),成功地建立了完整的转录组数据集。该研究项目的详细信息链接为Homo sapiens (ID 229998) - BioProject - NCBI (nih.gov)。为了满足我的研究需求,在完成初步的数据预处理后,请按照以下三个步骤操作:首先获取该研究项目的SRA accession号;其次根据研究需求筛选出目标SRA accession号;最后获取对应的转录组数据集。
1 得到SRA号
拿到SRA号,有两种办法,一是点鼠标,二是用esearch命令。
1.1 点鼠标

图1 项目主页
该项目的主页面展示在图1中。单击SRA编号可切换至图2的画面。方便我们直观地查看所需数据内容时,请再次单击红色标记移至图3的画面。

图2 该项目16种处理的搜索界面

图3 下载16种处理基本信息的网址
此页面允许用户单击"Metadata"按钮以获取下方的表格;而"Accession List"按钮的单击则用于获取相应的SRA编号;本次操作将获取那个表格;由于本次研究仅需8个SRA数据而非全部16个。
1.2 esearch命令
esearch -db sra -query PRJNA229998 | efetch -format runinfo > runinfo.csv
代码解释
通过分析得到的runinfo.csv缺少了treatment那一列,在后续分析中仍然依赖于SraRunTable.txt文件展开。
2 筛选出想要的SRA号
使用R把想要的SRA号提取出来。
f1 <- read.csv("SraRunTable.txt")
x1 <- data.frame(run=x$Run,tre=x$TREATMENT)
x2 <- x1[(y$tre=="Untreated"|y$tre=="Dexamethasone"),]
x3 <- as.factor(x3$run)
代码解释
按行保存到一个文本文件中,我命名为sra.txt,该文本内容如图4所示。

图4
3 批量化下载脚本
获取到了所需SRA号;具体的下载命令如下:保持前面的网址不变,在末尾更换对应的SRR号即可完成操作。
wget https://sra-pub-run-odp.s3.amazonaws.com/sra/SRR1039508/SRR1039508
代码解释
该脚本如下所示:
#!/bin/bash
date +"%Y-%m-%d %H:%M:%S"
cat $2 | while read i
do
wget $1/${i}/${i}
done
代码解释
该脚本用while循环把sra.txt的内容逐行读取,再依次运行。
运行时在控制台输入下方命令即可:
chmod +x download.sh
./download.sh https://sra-pub-run-odp.s3.amazonaws.com/sra sra.txt
代码解释
4 快速下载
使用wget命令进行下载的效率不高。可以选择迅雷进行快速下载。具体操作如下:点击新建后输入网址并选择立即下载。

图5

图6
