Mercurial > repos > galaxyp > ms_wiff_loader
diff ms_wiff_loader.py @ 0:5bc64a2d5f91 draft default tip
Uploaded
author | galaxyp |
---|---|
date | Tue, 10 Mar 2015 18:26:36 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ms_wiff_loader.py Tue Mar 10 18:26:36 2015 -0400 @@ -0,0 +1,87 @@ +#!/usr/bin/env python +import optparse +import os +import sys +import tempfile +import shutil +import subprocess +import re +import logging +import urllib2 +from urlparse import urlparse + + +assert sys.version_info[:2] >= (2, 6) + +log = logging.getLogger(__name__) + +CHUNK_SIZE = 2**20 #1mb + +def stop_err(msg): + sys.stderr.write("%s\n" % msg) + sys.exit() + +def download_from_url( url, output_dir, basename=None, ext=None ): + o = urlparse(url) + src_parts = os.path.basename(o.path).split('.',1) + file_name = "%s.%s" % ( basename if basename else src_parts[0], ext if ext else src_parts[1] ) + file_path = os.path.join(output_dir,file_name) + reader = urllib2.urlopen( url ) + writer = open(file_path,'wb') + while True: + data = reader.read( CHUNK_SIZE ) + if data: + writer.write( data ) + else: + break + writer.close() + reader.close() + return file_path + +def __main__(): + parser = optparse.OptionParser() + parser.add_option( '-a', '--archive', dest='archive', default=None, help='URL to archive containing: <name>.wiff file <name>.wiff.scan <name>.wiff.mtd files' ) + parser.add_option( '-w', '--wiff', dest='wiff', default=None, help='URL to <name>.wiff file' ) + parser.add_option( '-s', '--scan', dest='scan', default=None, help='URL to <name>.wiff.scan file' ) + parser.add_option( '-m', '--mtd', dest='mtd', default=None, help='URL to <name>.wiff.mtd file' ) + parser.add_option( '-n', '--name', dest='name', default=None, help='base name for files' ) + parser.add_option( '-o', '--output_dir', dest='output_dir', default=None, help='dir to copy files into' ) + parser.add_option( '-f', '--output_file', dest='output_file', default=None, help='Galaxy dataset file' ) + (options, args) = parser.parse_args() + + if not (options.archive or options.wiff): + stop_err("No wiff input file specified") + output_dir = os.getcwd() + if options.output_dir: + output_dir = options.output_dir + if not os.path.exists( output_dir ): + os.makedirs(output_dir) + basename = options.name + rval = ['<html><head><title>Wiff Composite Dataset %s</title></head><body><p/>' % (basename if basename else '')] + rval.append('This composite dataset is composed of the following files:<p/><ul>') + if options.wiff: + file_path = download_from_url (options.wiff, output_dir, basename=basename, ext='wiff') + rel_path = os.path.basename(file_path) + os.symlink( rel_path, os.path.join(output_dir,'wiff')) + rval.append( '<li><a href="%s" type="application/octet-stream">%s</a></li>' % ( rel_path, rel_path ) ) + print >> sys.stdout, "wiff: %s" % options.wiff + if options.scan: + file_path = download_from_url (options.scan, output_dir, basename=basename, ext='wiff.scan') + rel_path = os.path.basename(file_path) + os.symlink( rel_path, os.path.join(output_dir,'wiff_scan')) + rval.append( '<li><a href="%s" type="application/octet-stream">%s</a></li>' % ( rel_path, rel_path ) ) + print >> sys.stdout, "scan: %s" % options.scan + if options.mtd: + file_path = download_from_url (options.mtd, output_dir, basename=basename, ext='wiff.mtd') + rel_path = os.path.basename(file_path) + os.symlink( rel_path, os.path.join(output_dir,'wiff_mtd')) + rval.append( '<li><a href="%s" type="application/octet-stream">%s</a></li>' % ( rel_path, rel_path ) ) + print >> sys.stdout, "mtd: %s" % options.mtd + if options.output_file: + rval.append( '</ul></div></body></html>' ) + f = open(options.output_file,'a') + f.write("\n".join( rval )) + f.close() + +if __name__ == '__main__': + __main__()