基于perl从ncbi的ftp站点下载文件

Posted 生信窗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于perl从ncbi的ftp站点下载文件相关的知识,希望对你有一定的参考价值。



  从ncbi的ftp站点下载文件,数量不多的话,一个个点击也是可以完成的,实在不行,linux的wget命令也是可以的,只是需要自己写程序需要设置一些log或者warning信息,毕竟文件太大了,如果中断没有任何提示,可能个人都不知道是哪里出问题了;

  无论你再怎么推崇python,perl在生物信息领域依然有着不可替代的作用,都说python的第三方库很强大,其实perl 的cpan一样很强大,我们本篇就利用perl来实现自动下载;


首先我们找到ncbi 的ftp站点,谷歌直接搜索ncbi ftp ;


但是你会发现如下图一样打不开,谷歌貌似对于ftp的支持逐渐取消了,没有关系;

基于perl从ncbi的ftp站点下载文件


把ftp替换为http就好了;下面这张图就是ncbi的ftp了,所有的文件随便下载,不得不佩服,这么多信息免费使用;

基于perl从ncbi的ftp站点下载文件


我们打开1000genomes,看到此文件夹下面含有以下信息;我们就测试一下,下载两个pdf文件,



  接着我们去perl 的cpan搜索一下ftp试试,毕竟你得遵从ftp协议才能下载,所以直接利用ftp关键字搜索;找到一个Net::FTP包,完美支持ftp协议,而且每一步都有错误捕获处理;接下来就是写代码了;直接给出代码;

#!/usr/bin/env perluse warnings; use strict;use Net::FTP;#------------------------------------------------------------------------my $host = "ftp.ncbi.nlm.nih.gov";#NCBI ftpmy $ftp = Net::FTP->new($host,Timeout=>240,Debug => 0or die "Cannot connect to : $@";#创建ftp对象$ftp->login("anonymous",'-anonymous@'or die "Cannot login ", $ftp->message;#登录ftp$ftp->cwd("/1000genomes/"or die "Cannot change working directory ", $ftp->message;#进入1000genomes目录my @tmp = $ftp->ls();#获取1000genomes目录列表do {$_ =~ /pdf$/ and  $ftp->get($_)} foreach @tmp;#下载两个pdf文件$ftp->quit;#退出exit#退出程序

每行都有注释,就不讲了;然后我们在自己的linux运行一下:

./getFileFromNcbiFtp.pl 

两个pdf文件就下载到我们的电脑上了,简单方便;



以上是关于基于perl从ncbi的ftp站点下载文件的主要内容,如果未能解决你的问题,请参考以下文章

怎么从从ncbi的ftp上下了windows的本地blast

NCBI下载SRA数据

如何从NCBI下载基因组数据

linux command line 利用Entrez Direct下载NCBI数据

BLAST+-2.6.0版本下载安装及pssm矩阵建立

sh 从NCBI FTP获取COG