1. 用代码获取数据
当然下载数据的方式有多种多样,你可以用最原始的方法在数据库网站上点击下载,但是在不经意之间,电脑不仅帮你下载好了数据,还把原本压缩好的数据给自动解压缩了,原本小巧的压缩包瞬间变成了硬盘杀手。当然可以通过电脑上的设置来取消解压缩功能,但在服务器上下载数据的时候总不能通过网页点击了吧。你还准备在本地点击下载了再上传到服务器?!!
1.1 curl的用法
首先需要创建一个工作目录,然后cd到工作目录中。我是建立在桌面上的,大家随意。
mkdir Bioinfo
cd /Users/jason/Desktop/Bioinfo
做好前期准备以后,就开始下载某篇论文里出现的蛋白质氨基酸序列的faa数据。
下面是链接
指令如下
curl -O ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/002/195/GCF_000002195.4_Amel_4.5/GCF_000002195.4_Amel_4.5_protein.faa.gz
这里用到了-O
的选项。这个选项表示下载后的文件名字保持原文件名。
然而日常经常遇到的情况不只是单纯的下载一个文件,而是下载一堆,比方说文献里的Supplemental data。
下面举个例子,文献给出了一个Uniform Resource Locator(URL)的链接。
如果直接用curl的话恐怕没法下载。因为当你打开这个网页的时候就可以发现这个网页上有好多Supplemental_data。如果不指定是哪个文件的话,curl就不知道该下载哪一个。所以必须指定下载文件的具体链接
curl支持打包下载,
curl https://nfigshare.com/articles/Supplemental_data/6964550/versions/3 > 6964550.zip
1.2 wget的用法
上一节里介绍了curl,这里介绍一下wget。
Mac用户请注意,macOS里并没有预装wget,所以需要通过conda来安装。代码如下,
% conda isntall wget
接下来就可以用wget来下载之前同样的数据了。
% wget ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/002/195/GCF_000002195.4_Amel_4.5/GCF_000002195.4_Amel_4.5_protein.faa.gz
wget 有一个特异功能就是-r选项。这个选项的意思是下载文件夹下的所有文件。
% wget -r ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/002/195/GCF_000002195.4_Amel_4.5/
细心观察的同学就会发现,这个和之前的下载指定文件不一样,GCF_000002195.4_Amel_4.5/以后就没有再跟进具体文件。意思就是说,把GCF_000002195.4_Amel_4.5/整个文件夹都下载了下来。在使用这个命令的时候会一不小心下载很多不需要的尺寸庞大的文件,所以需要格外小心。
说了这么多,也不见的能看出用命令下载比点击鼠标下载方便多少,但是遇到需要下载几百个几千个文件的时候会怎么样呢?之后会慢慢道来。
1.3 从TOGOWS上下载碱基序列
TOGOWS是服务器坐落于日本东京大学的一个综合性的生命科学数据库。服务器上有包括DDBJ在内的同一个亚洲的服务器里的数据,下载速度理论上会快一点。
废话不多说,先下载一段序列。
% curl -O http://togows.org/entry/ddbj-ddbj/LC170036
然后查看一下这个文件
% less LC170036
![](https://img.haomeiwen.com/i18174126/49a858d0efb0d735.png)
我们可以查看到这段DDBJ形式的文件具体内容。需要退出阅览模式的话按一下q就可以。
当然如果是单纯要下载用于BLAST的FASTA格式文件的话也没有问题。只需要在后面加上fasta后缀就ok。
% curl -O http://togows.org/entry/ddbj-ddbj/LC170036.fasta
一样查看一下文件
% less LC170036.fasta
![](https://img.haomeiwen.com/i18174126/08bbe01d19ed5500.png)
也可以通过TOGOWS来下载UniProt的数据,比方说
% curl -O http://togows.org/entry/ebi-uniprot/HIF1_CAEEL.fasta
% less HIF1_CAEEL.fasta
![](https://img.haomeiwen.com/i18174126/ec7428ff1b88d14f.png)
到这里为止都是常规操作,接下来来介绍一下如何批量介绍数据。
1.3.1 批量下载数据(连续数据)
比方说我们需要下载58个物种的碱基序列。
Aeginetia indica
regions gained by horizontal gene transfer
LC437098-LC437155 (58 entries)
比起58次点击鼠标,可以直接写一个循环让机器打包下载。
# 序列号吗是从437098开始到437155
% for i in `seq 437098 437155`;
do
echo "getting LC$i"
curl http://togows.org/entry/ddbj-ddbj/LC$i.fasta >> seq.fasta
sleep 1
done
for..do;..done形成了一个循环。这里还需要解说一下的是, >>
和>
的区别,
>
会产生新文件覆盖旧文件,>>
的话是把所有的数据写成一个文件。
1.3.2 批量下载数据(list数据)
我们先把需要下载的数据写成一个txt文件entries.txt
% echo "NM_001043619.1
NM_001043834.1
NM_001043893.2
LC229590
LC229591
LC229592
LC229593" > entries.txt
% IFS=$'\n'
# 每一个序列独自保存为[entry名.fasta]文件
% for entry in `cat entries.txt`
do
curl -O https://togows.org/entry/ddbj-ddbj/$entry.fasta
done
网友评论