annotate data_manager/tagdust_architecture_data_manager.py @ 0:e3b3261e5498 draft default tip

Uploaded
author brenninc
date Sun, 08 May 2016 04:44:17 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
1 #!/usr/bin/env python
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
2
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
3 import json
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
4 import optparse
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
5 import os.path
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
6
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
7 def _add_data_table_entry( data_manager_dict, data_table_name, data_table_entry ):
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
8 data_manager_dict['data_tables'] = data_manager_dict.get( 'data_tables', {} )
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
9 data_manager_dict['data_tables'][ data_table_name ] = data_manager_dict['data_tables'].get( data_table_name, [] )
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
10 data_manager_dict['data_tables'][ data_table_name ].append( data_table_entry )
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
11 return data_manager_dict
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
12
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
13
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
14 def get_param(name, params, default=None, check_tab=True):
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
15 value = params.get(name)
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
16 print name, value
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
17 return check_param(name, value, default=default, check_tab=check_tab)
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
18
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
19
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
20 def check_param(name, value, default=None, check_tab=True):
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
21 if value in [ None, '', '?' ]:
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
22 if default:
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
23 print "Using {0} for {1} as no value provided".format( default, name )
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
24 value = default
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
25 else:
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
26 raise Exception( '{0} is not a valid {1}. You must specify a valid {1}.'.format( value, name ) )
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
27 if check_tab and "\t" in value:
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
28 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 ) )
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
29 return value
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
30
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
31
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
32 def createFileBasedOnHmm(hmms):
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
33 file_name = ""
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
34 bar_code = "no"
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
35 for hmm in hmms:
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
36 block = hmm["block"].strip()
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
37 if not (block[0] in ['R','O','G','B','F','S','P']):
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
38 raise Exception( "hmm block {0} is not a valid. It must start with one of ['R','O','G','B','F','S','P'].".format( block ) )
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
39 if block[0] == 'B':
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
40 bar_code = "yes"
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
41 if block[1] != ':':
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
42 raise Exception( "hmm block {0} is not a valid. The second character must be ':'".format( block ) )
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
43 if "\t" in hmm:
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
44 raise Exception( "hmm block {0} is not a valid. It may not contain a tab, due to galaxy using tabs as seperators".format( block ) )
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
45 file_name = file_name + block + "_"
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
46 file_name = file_name[:-1] + ".txt"
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
47 return bar_code, file_name
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
48
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
49
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
50 def get_path(galaxy_tool_dir, file_name):
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
51 file_path = os.path.join(galaxy_tool_dir, "tagdust_architecture")
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
52 if os.path.exists(file_path):
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
53 if os.path.isfile(file_path):
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
54 raise Exception( "Found a file at {0}, but expecting a directory there".format( file_path ) )
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
55 else:
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
56 os.mkdir(file_path)
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
57 return os.path.join(file_path, file_name)
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
58
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
59
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
60 def writeHmm(hmms, file_path):
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
61 with open( file_path, 'w' ) as output_file:
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
62 output_file.write("./tagdust")
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
63 for i, hmm in enumerate( hmms, 1 ):
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
64 output_file.write(" ")
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
65 output_file.write(str(-i))
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
66 output_file.write(" ")
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
67 output_file.write(hmm["block"])
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
68 output_file.write("\n")
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
69
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
70 def main():
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
71
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
72 #Parse Command Line
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
73 parser = optparse.OptionParser()
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
74 parser.add_option( '--data_table_name', action='store', type="string", default=None, help='path' )
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
75 parser.add_option( '--json_output_file', action='store', type="string", default=None, help='path' )
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
76 (options, args) = parser.parse_args()
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
77
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
78 data_table_name = check_param("data_table_name", options.data_table_name)
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
79 json_output_file = check_param("json_output_file", options.json_output_file, check_tab=False)
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
80
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
81 param_dict = json.loads( open( json_output_file ).read() )
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
82 params = param_dict.get("param_dict")
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
83 print "input params:"
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
84 print params
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
85
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
86 hmms = get_param("hmms", params)
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
87 galaxy_tool_dir = get_param("GALAXY_DATA_INDEX_DIR", params)
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
88
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
89 data_table_entry = {}
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
90
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
91 data_table_entry["barcode"], file_name = createFileBasedOnHmm(hmms)
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
92 data_table_entry["path"] = get_path(galaxy_tool_dir, file_name)
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
93 writeHmm(hmms, data_table_entry["path"])
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
94
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
95 basename = os.path.basename(data_table_entry["path"])
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
96 filename = os.path.splitext(basename)[0]
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
97 data_table_entry["name"] = get_param("name", params, default=filename)
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
98 data_table_entry["value"] = get_param("value", params, default=data_table_entry["name"])
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
99 data_table_entry["dbkey"] = get_param("dbkey", params, default=data_table_entry["value"])
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
100
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
101 data_manager_dict = {}
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
102 _add_data_table_entry( data_manager_dict, data_table_name, data_table_entry )
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
103
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
104 print "output:"
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
105 print data_manager_dict
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
106 # save info to json file
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
107 with open( json_output_file, 'wb' ) as output_file:
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
108 output_file.write( json.dumps( data_manager_dict ) )
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
109 output_file.write( "\n" )
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
110
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
111
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
112 if __name__ == "__main__":
e3b3261e5498 Uploaded
brenninc
parents:
diff changeset
113 main()