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