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