lib/rbbt/sources/ensembl_ftp.rb in rbbt-sources-2.0.2 vs lib/rbbt/sources/ensembl_ftp.rb in rbbt-sources-2.1.0
- old
+ new
@@ -1,26 +1,33 @@
require 'rbbt/util/open'
require 'rbbt/sources/organism'
require 'rbbt/tsv'
+require 'rbbt/sources/ensembl'
require 'net/ftp'
module Ensembl
-
- def self.releases
- @releases ||= Rbbt.share.Ensembl.release_dates.find.tsv :key_field => "build"
- end
-
module FTP
SERVER = "ftp.ensembl.org"
+ def self.mysql_path(release)
+ end
+
def self.ftp_name_for(organism)
code, build = organism.split "/"
build ||= "current"
if build.to_s == "current"
+ release = 'current'
+ name = Organism.scientific_name(organism)
+ ftp = Net::FTP.new(Ensembl::FTP::SERVER)
+ ftp.passive = true
+ ftp.login
+ ftp.chdir(File.join('pub', 'current_mysql'))
+ file = ftp.list(name.downcase.gsub(" ",'_') + "_core_*").collect{|l| l.split(" ").last}.last
+ ftp.close
else
release = Ensembl.releases[build]
name = Organism.scientific_name(organism)
ftp = Net::FTP.new(Ensembl::FTP::SERVER)
ftp.passive = true
@@ -32,10 +39,14 @@
[release, file]
end
def self.ftp_directory_for(organism)
release, ftp_name = ftp_name_for(organism)
- File.join('/pub/', release, 'mysql', ftp_name)
+ if release == 'current'
+ File.join('/pub/', 'current_mysql', ftp_name)
+ else
+ File.join('/pub/', release, 'mysql', ftp_name)
+ end
end
def self.base_url(organism)
File.join("ftp://" + SERVER, ftp_directory_for(organism) )
end