Mercurial > repos > pjbriggs > ceas
comparison data_manager/data_manager_ceas_fetch_annotations.py @ 1:d9032bb158b9 draft
Add in data manager for CEAS annotation databases.
| author | pjbriggs |
|---|---|
| date | Wed, 28 Jan 2015 05:04:46 -0500 |
| parents | |
| children | 4e2883bb058d |
comparison
equal
deleted
inserted
replaced
| 0:8b25779ee261 | 1:d9032bb158b9 |
|---|---|
| 1 #!/usr/bin/env python | |
| 2 # | |
| 3 | |
| 4 import sys | |
| 5 import os | |
| 6 import optparse | |
| 7 import urllib2 | |
| 8 import gzip | |
| 9 | |
| 10 from galaxy.util.json import from_json_string, to_json_string | |
| 11 | |
| 12 # Download file from specified URL and put into local subdir | |
| 13 | |
| 14 if __name__ == '__main__': | |
| 15 #Parse Command Line | |
| 16 parser = optparse.OptionParser() | |
| 17 parser.add_option('--download',dest='url',action='store', | |
| 18 type="string",default=None,help='URL to download') | |
| 19 options,args = parser.parse_args() | |
| 20 print "options: %s" % options | |
| 21 print "args : %s" % args | |
| 22 if len(args) != 2: | |
| 23 p.error("Need to supply JSON file name and description text") | |
| 24 | |
| 25 # Read the JSON supplied from the data manager tool | |
| 26 # Results from this program will be returned via the | |
| 27 # same file | |
| 28 jsonfile = args[0] | |
| 29 params = from_json_string(open(jsonfile).read() ) | |
| 30 print "%s" % params | |
| 31 | |
| 32 # Extract the data from the input JSON | |
| 33 # See https://wiki.galaxyproject.org/Admin/Tools/DataManagers/HowTo/Define?highlight=%28\bAdmin%2FTools%2FDataManagers\b%29 | |
| 34 # for example of JSON | |
| 35 # | |
| 36 # We want the values set in the data manager XML | |
| 37 dbkey = params['param_dict']['dbkey'] | |
| 38 description = params['param_dict']['description'] | |
| 39 # Where to put the output file | |
| 40 # Nb we have to make this ourselves, it doesn't exist by default | |
| 41 target_dir = params['output_data'][0]['extra_files_path'] | |
| 42 os.mkdir(target_dir) | |
| 43 | |
| 44 # Dictionary for returning to data manager | |
| 45 data_manager_dict = {} | |
| 46 | |
| 47 # Download from URL | |
| 48 if options.url is not None: | |
| 49 print "Downloading: %s" % options.url | |
| 50 annotation_file_name = os.path.basename(options.url) | |
| 51 annotation_file_path = os.path.join(target_dir,annotation_file_name) | |
| 52 print "Annotation file name: %s" % annotation_file_name | |
| 53 print "Annotation file path: %s" % annotation_file_path | |
| 54 open(annotation_file_path,'wb').write(urllib2.urlopen(options.url).read()) | |
| 55 if annotation_file_name.endswith('.gz'): | |
| 56 # Uncompress | |
| 57 uncompressed_file = annotation_file_path[:-3] | |
| 58 open(uncompressed_file,'wb').write(gzip.open(annotation_file_path,'rb').read()) | |
| 59 # Remove gzipped file | |
| 60 os.remove(annotation_file_path) | |
| 61 annotation_file_name = os.path.basename(uncompressed_file) | |
| 62 annotation_file_path = uncompressed_file | |
| 63 # Update the output dictionary | |
| 64 data_manager_dict['data_tables'] = dict() | |
| 65 data_manager_dict['data_tables']['ceas_annotations'] = { | |
| 66 'dbkey': dbkey, | |
| 67 'name': description, | |
| 68 'value': annotation_file_name, | |
| 69 } | |
| 70 else: | |
| 71 raise NotImplementedError("Non-download options not implemented") | |
| 72 | |
| 73 #save info to json file | |
| 74 open(jsonfile,'wb').write(to_json_string(data_manager_dict)) | |
| 75 |
