Mercurial > repos > brenninc > data_manager_for_directory_data
comparison data_manager/directory_data_manager.py @ 0:43083927dfc5 draft default tip
Uploaded
author | brenninc |
---|---|
date | Sat, 07 May 2016 16:59:47 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:43083927dfc5 |
---|---|
1 #!/usr/bin/env python | |
2 | |
3 import gzip | |
4 import json | |
5 import optparse # using optparse as hydra still python 2.6 | |
6 import os.path | |
7 import shutil | |
8 | |
9 def _add_data_table_entry( data_manager_dict, data_table_name, data_table_entry ): | |
10 data_manager_dict['data_tables'] = data_manager_dict.get( 'data_tables', {} ) | |
11 data_manager_dict['data_tables'][ data_table_name ] = data_manager_dict['data_tables'].get( data_table_name, [] ) | |
12 data_manager_dict['data_tables'][ data_table_name ].append( data_table_entry ) | |
13 return data_manager_dict | |
14 | |
15 | |
16 def get_param(name, params, default=None, check_tab=True): | |
17 value = params.get(name) | |
18 print name, value | |
19 return check_param(name, value, default=default, check_tab=check_tab) | |
20 | |
21 | |
22 def check_param(name, value, default=None, check_tab=True): | |
23 if value in [ None, '', '?' ]: | |
24 if default: | |
25 print "Using {0} for {1} as no value provided".format( default, name ) | |
26 value = default | |
27 else: | |
28 raise Exception( '{0} is not a valid {1}. You must specify a valid {1}.'.format( value, name ) ) | |
29 if check_tab and "\t" in value: | |
30 raise Exception( '{0} is not a valid {1}. It may not contain a tab because these are used as seperators by galaxy .'.format( value, name ) ) | |
31 return value | |
32 | |
33 def check_extension(extension): | |
34 extension = extension.strip() | |
35 if extension[0] == ".": | |
36 extension = extension[1:] | |
37 return extension | |
38 | |
39 | |
40 def check_path(path, original_extension): | |
41 files = os.listdir(path) | |
42 check = "." + original_extension | |
43 for a_file in files: | |
44 if a_file.endswith(check): | |
45 return True | |
46 raise Exception( 'path {0} does not contain any files ending with {1}'.format( path, check ) ) | |
47 | |
48 | |
49 def main(): | |
50 | |
51 #Parse Command Line | |
52 parser = optparse.OptionParser() | |
53 parser.add_option( '--data_table_name', action='store', type="string", default=None, help='path' ) | |
54 parser.add_option( '--json_output_file', action='store', type="string", default=None, help='path' ) | |
55 (options, args) = parser.parse_args() | |
56 | |
57 data_table_name = check_param("data_table_name", options.data_table_name) | |
58 json_output_file = check_param("json_output_file", options.json_output_file, check_tab=False) | |
59 | |
60 param_dict = json.loads( open( json_output_file ).read() ) | |
61 params = param_dict.get("param_dict") | |
62 print "input params:" | |
63 print params | |
64 | |
65 data_table_entry = {} | |
66 data_table_entry["original_extension"] = check_extension(get_param("original_extension", params)) | |
67 data_table_entry["galaxy_extension"] = check_extension(get_param("galaxy_extension", params)) | |
68 data_table_entry["decompress"] = get_param("decompress", params) | |
69 if not (data_table_entry["decompress"] in ["No","Yes"]): | |
70 raise Exception( "Only legal values for dcompress are No and Yes." ) | |
71 data_table_entry["path"] = get_param("path", params) | |
72 check_path(data_table_entry["path"], data_table_entry["original_extension"]) | |
73 | |
74 basename = os.path.basename(data_table_entry["path"]) | |
75 filename = os.path.splitext(basename)[0] | |
76 data_table_entry["name"] = get_param("name", params, default=filename) | |
77 data_table_entry["value"] = get_param("value", params, default=data_table_entry["name"]) | |
78 data_table_entry["dbkey"] = get_param("dbkey", params, default=data_table_entry["value"]) | |
79 | |
80 data_manager_dict = {} | |
81 _add_data_table_entry( data_manager_dict, data_table_name, data_table_entry ) | |
82 | |
83 print "output:" | |
84 print data_manager_dict | |
85 # save info to json file | |
86 with open( json_output_file, 'wb' ) as output_file: | |
87 output_file.write( json.dumps( data_manager_dict ) ) | |
88 output_file.write( "\n" ) | |
89 | |
90 | |
91 if __name__ == "__main__": | |
92 main() |