-#summary One-sentence summary of this page.
+#summary Ruby examples
+
+
= Introduction =
-Add your content here.
+Various Ruby examples
+
+Author: [http://www.cmzmasek.net/ Christian M Zmasek], Sanford-Burnham Medical Research Institute
+
+
+Copyright (C) 2011 Christian M Zmasek. All rights reserved.
+
+
+= Multiple Sequence Alignment =
+{{{
+require 'net/ftp'
-= Details =
+EMAIL = 'czmasek@burnham.org'
+PUB_RELEASE_DIR = '/pub/release-64/fasta'
+PEP_DIR = '/pep'
-Add your content here. Format your content with:
- * Text in *bold* or _italic_
- * Headings, paragraphs, and lists
- * Automatic links to other wiki pages
\ No newline at end of file
+ftp = Net::FTP.new('ftp.ensembl.org', 'anonymous', EMAIL)
+ftp.passive = true # To avoid "No route to host" error.
+ftp.chdir( PUB_RELEASE_DIR )
+files = ftp.list('*_*') # To only look at files with an underscore.
+count = 0
+files.each do | file |
+ species = file.split().last
+ begin
+ ftp.chdir(species + PEP_DIR)
+ pepfiles = ftp.list()
+ pepfiles.each do | pepfile |
+ pepfile = pepfile.split().last
+ if pepfile =~ /all.fa./
+ ftp.getbinaryfile(pepfile)
+ puts 'downloaded "' + pepfile + '"'
+ count += 1
+ end
+ end
+ rescue Exception
+ puts 'ignoring "' + species + '"'
+ end
+ ftp.chdir(PUB_RELEASE_DIR) # To go back to the starting directory.
+end
+ftp.close
+puts 'done (downloaded ' + count.to_s + ' files)'
+}}}