annotate galaxy-tools/biobank/library/import_to_library.py @ 0:ba6cf6ede027 draft default tip

Uploaded
author ric
date Wed, 28 Sep 2016 06:03:30 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
1 #!/usr/bin/env python
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
2 import sys, os,argparse,logging, yaml, datetime, subprocess, stat
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
3
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
4 LOG_FORMAT = '%(asctime)s|%(levelname)-8s|%(message)s'
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
5 LOG_DATEFMT = '%Y-%m-%d %H:%M:%S'
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
6 LOG_LEVELS = ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
7
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
8 def make_parser():
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
9 parser = argparse.ArgumentParser(description='')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
10
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
11 parser.add_argument('--ini_file', type=str, default="{0}/init_file.yaml".format(os.path.dirname(os.path.realpath(sys.argv[0]))),help='Configuration file (yaml)')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
12
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
13 parser.add_argument('--host', type=str, required=True, help='omero host')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
14 parser.add_argument('--user', type=str, required=True, help='omero user')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
15 parser.add_argument('--passwd', type=str, required=True, help='omero passwd')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
16
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
17 parser.add_argument('--galaxy_host', type=str, help='Galaxy Host (with port)')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
18 parser.add_argument('--galaxy_api_key', type=str, help='Galaxy API key')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
19
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
20 parser.add_argument('--operator', type=str, help='Galaxy user email')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
21
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
22 parser.add_argument('--library', type=str, required=False, help='library name')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
23 parser.add_argument('--folder', type=str, required=False, help='library folder')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
24
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
25 parser.add_argument('--data_objects', type=str, required=True, help='databojects id')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
26
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
27 parser.add_argument('--loglevel', type=str, choices=LOG_LEVELS, help='logging level (default: INFO)', default='INFO')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
28 parser.add_argument('--logfile', type=str, help='log file (default=stderr)')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
29
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
30 return parser
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
31
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
32 def main(argv):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
33 global logger
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
34 global ini_file
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
35 global kb
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
36 global apiGalaxy
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
37
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
38 parser = make_parser()
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
39 args = parser.parse_args(argv)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
40
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
41 # Initializing logger
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
42 logger = init_logger(args,logging)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
43
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
44 # Reading YAML configuration file
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
45 ini_file = init_config(args)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
46
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
47 # Initializing python libraries
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
48 init_pythonpath(args,ini_file)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
49
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
50 # Initializing connection to omero biobank
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
51 kb = init_omero_biobank(args)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
52
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
53 logger = init_logger(args,logging)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
54
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
55 # Initializing connection to apiGalaxy
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
56 apiGalaxy = init_api_galaxy(args)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
57
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
58 # Getting library and folder id
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
59 library_id,folder_id = get_library_and_folder_ids(args)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
60
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
61 # Getting data_objects
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
62 data_objects = get_data_objects(args)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
63
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
64 import_data_objects(args,data_objects,library_id,folder_id)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
65
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
66 def import_data_objects(args,data_objects,library_id,folder_id):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
67 user_import_dir = get_user_import_dir(args)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
68
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
69 logger.info("copying datasets in user import dir")
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
70 files = copy_in_user_import_dir(data_objects,user_import_dir)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
71
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
72 logger.info("wait while copiyng")
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
73 polling(files)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
74
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
75 logger.info("ready to import in library {0} under folder {1}".format(args.library,args.folder))
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
76
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
77 logger.info('importing in library')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
78 successfull = 0
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
79 for file_type,folder in user_import_dir.iteritems():
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
80 if len(os.listdir(folder)) == 0: continue
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
81 if 'fastq' in file_type: file_type = 'fastqsanger'
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
82 status = apiGalaxy.libraries.upload_file_from_server(library_id, folder, folder_id, file_type=file_type,link_data_only='link_to_files')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
83 successfull+=len(status)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
84 if successfull == len(files):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
85 logger.info("SUCCESS")
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
86 else:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
87 logger.critical("ERROR WHILE IMPORTING")
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
88
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
89 raise SystemExit
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
90
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
91 def copy_in_user_import_dir(data_objects,user_import_dir):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
92 files = list()
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
93
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
94 for dobj in data_objects:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
95 if dobj.path.startswith('irods://'):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
96 irods_path = dobj.path.replace('irods://','')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
97 phys_path = irods.get_object_info(irods_path)['phys_path'].strip()
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
98
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
99 elif dobj.path.startswith('file://'):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
100 irods_path = None
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
101 phys_path = dobj.path.replace('file://','')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
102 else:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
103 #continue
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
104 irods_path = dobj.path.replace('irods://','')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
105 phys_path = irods.get_object_info(irods_path)['phys_path'].strip()
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
106
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
107 data_type = dobj.mimetype.split('/')[-1].replace('+64','')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
108 dest_path = get_destination_path(irods_path,phys_path,dobj.sample,user_import_dir,data_type).strip()
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
109 #rsync_command = "qsub -b y /usr/bin/rsync -rcLPhv {0} {1}".format(phys_path,dest_path)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
110 rsync_command = "rsync -rcLPhv {0} {1}".format(phys_path,dest_path)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
111 logger.info('launching copy for {0} dataset'.format(os.path.basename(dest_path)))
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
112 subprocess.Popen(rsync_command.split(' '))
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
113
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
114 files.append(dest_path)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
115
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
116 return files
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
117
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
118 def polling(files):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
119 all_done = False
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
120 founds = list()
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
121 while not all_done:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
122 done = True
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
123 for dest_path in files:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
124 if dest_path.endswith('.gz'):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
125 unzip_path = dest_path.replace('.gz','')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
126 if not os.path.exists(dest_path) and not os.path.exists(unzip_path):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
127 done = False
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
128 elif os.path.exists(dest_path):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
129
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
130 done = False
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
131 logger.info("found {0}".format(os.path.basename(dest_path)))
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
132 logger.info("gunzipping {0}".format(os.path.basename(dest_path)))
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
133 cmd = "gunzip {0}".format(dest_path)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
134 g_unzip = subprocess.check_output(cmd, stderr=subprocess.STDOUT,shell=True).strip()
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
135 logger.info(g_unzip)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
136 else:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
137 if not os.path.exists(dest_path):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
138 done = False
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
139 elif os.path.exists(dest_path) and dest_path not in founds:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
140 founds.append(dest_path)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
141 logger.info("found {0}".format(os.path.basename(dest_path)))
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
142 all_done = done
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
143 return True
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
144
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
145 def get_user_import_dir(args):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
146 user_import_dir = dict()
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
147 subfolder = str(datetime.datetime.now()).split('.')[0].replace(' ','_').replace(':','-')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
148 user_import_dir={'fastq' : "{0}/{1}/{2}_{3}".format(ini_file['LIBRARY_IMPORT_DIR_{0}'.format(args.host.split('.')[0].upper())],args.operator,subfolder,'fastq'),
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
149 'vcf' : "{0}/{1}/{2}_{3}".format(ini_file['LIBRARY_IMPORT_DIR_{0}'.format(args.host.split('.')[0].upper())],args.operator,subfolder,'vcf'),
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
150 'bam' : "{0}/{1}/{2}_{3}".format(ini_file['LIBRARY_IMPORT_DIR_{0}'.format(args.host.split('.')[0].upper())],args.operator,subfolder,'bam')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
151 }
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
152 os.umask(0)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
153 for k, folder in user_import_dir.iteritems():
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
154 if not os.path.exists(folder):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
155 os.makedirs(folder,0775)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
156 return user_import_dir
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
157
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
158 def get_destination_path(irods_path,phys_path,data_sample,user_import_dir,data_type):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
159
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
160 if isinstance(data_sample, kb.SeqDataSample) or isinstance(data_sample, kb.AlignedSeqDataSample):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
161 if data_sample.sample.label == 'TRAINING_tube_1' : label = 'FATHER'
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
162 elif data_sample.sample.label == 'TRAINING_tube_2' : label = 'PROBAND'
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
163 elif data_sample.sample.label == 'TRAINING_tube_3' : label = 'MOTHER'
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
164 else : continue
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
165 #label = data_sample.sample.label
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
166 if isinstance(data_sample, kb.GenomeVariationsDataSample):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
167 label = data_sample.label
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
168
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
169 filename = "{0}/{1}".format(user_import_dir[data_type],label)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
170
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
171 if irods_path:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
172 attr = get_attributes(irods_path)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
173
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
174 if attr.has_key('read'): filename = "{0}_R{1}".format(filename,attr['read'])
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
175 #if attr.has_key('lanes'): filename = "{0}_L{1}".format(filename,attr['lanes'])
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
176 if attr.has_key('compression') and attr['compression'] == 'gzip':
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
177 filename = "{0}.gz".format(filename)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
178 else:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
179 filename = "{0}_{1}".format(filename,os.path.basename(phys_path))
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
180 filename = filename.replace('.fq','')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
181 return filename
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
182
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
183 def get_data_objects(args):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
184 logger.info("getting data objects")
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
185 data_objects = list()
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
186 data_object_ids = args.data_objects.split(',')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
187 for dataobj in kb.get_objects(kb.DataObject):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
188 if str(dataobj.omero_id) in data_object_ids:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
189 data_objects.append(dataobj)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
190 logging.info("found {0}".format(len(data_objects)))
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
191 return data_objects
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
192
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
193 def get_library_and_folder_ids(args):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
194 if args.library is None:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
195 logger.critical("Library is a mandatory parameter")
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
196 sys.exit()
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
197 library_name = args.library.split('?')[0].replace('.',' ')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
198 logger.info("searching for library")
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
199 orione_library = apiGalaxy.libraries.get_libraries(name="{0}".format(library_name))
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
200 if len(orione_library) == 0:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
201 logger.critical("sorry, library {0} doesn't exist".format(library_name))
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
202 sys.exit()
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
203 library_id = orione_library[0].get('id',None)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
204
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
205 if '?' in args.library and args.library == args.folder:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
206 folder_name = args.library.split('?')[1].replace('.',' ')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
207 else:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
208 return library_id,None
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
209 logger.info("searching for folder {0}".format(folder_name))
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
210
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
211 folder = apiGalaxy.libraries.get_folders(library_id=library_id,name=u"/{0}".format(folder_name))
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
212 if len(folder) == 0:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
213 logger.info("not found. creating it..")
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
214 try:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
215 folder = apiGalaxy.libraries.create_folder(library_id,folder_name)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
216 except:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
217 logger.critical("impossible to create folder {0}".format(folder_name))
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
218 sys.exit()
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
219
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
220
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
221 folder_id = folder[0].get('id',None)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
222
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
223 return library_id,folder_id
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
224
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
225 def get_attributes(irods_path):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
226 cmd = ['imeta', 'ls', '-ld', irods_path]
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
227 imeta = [i.splitlines() for i in irods.__irods_check_output(cmd).split('----')]
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
228 attributes = {}
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
229 for i in imeta:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
230 del i[0]
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
231 for a in i:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
232 if 'attribute' in a:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
233 key = a.split(':')[1].strip()
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
234 if 'value' in a:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
235 value = a.split(':')[1].strip()
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
236 attributes[key] = value
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
237 return attributes
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
238
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
239 def init_logger(args,logging):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
240 log_level = getattr(logging, args.loglevel)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
241 kwargs = {
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
242 'format' : LOG_FORMAT,
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
243 'datefmt' : LOG_DATEFMT,
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
244 'level' : log_level}
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
245
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
246 if args.logfile:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
247 kwargs['filename'] = args.logfile
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
248 logging.basicConfig(**kwargs)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
249
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
250 logger = logging.getLogger( __name__ )
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
251 return logger
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
252
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
253 def init_config(args):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
254 # Load YAML configuration file
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
255 logger.info('loading YAML configuration file: %s' % args.ini_file)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
256 try:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
257 ini_file = yaml.load(open(args.ini_file))
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
258 except:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
259 logger.critical('%s is not a valid YAML configuration file' %args.ini_file)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
260 sys.exit()
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
261
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
262 return ini_file
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
263
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
264 def init_pythonpath(args,ini_file):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
265 logger.info('exporting pythonpath')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
266 sys.path.reverse()
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
267 sys.path.append('/SHARE/USERFS/els7/users/galaxy/develop/usr-cluster/lib/python2.7/site-packages/')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
268 sys.path.append('/u/galaxy/.local/lib/python2.7/site-packages/poster-0.8.1-py2.7.egg')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
269 sys.path.append('/SHARE/USERFS/els7/users/sequencing/usr-cluster/lib/python2.7/site-packages/automator-0.1-py2.7.egg')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
270 sys.path.append("{0}/{1}".format(ini_file['PYTHPATH'],args.host.split('.')[0]))
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
271 sys.path.reverse()
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
272
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
273 global KB
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
274 from bl.vl.kb import KnowledgeBase as KB
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
275
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
276 global irods
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
277 import automator.agent.irods as irods
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
278
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
279 #global bioblend
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
280 #import bioblend
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
281
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
282 global GalaxyInstance
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
283 from bioblend.galaxy import GalaxyInstance
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
284
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
285 def init_omero_biobank(args):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
286 logger.info('opening kb connection to {0}'.format(args.host))
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
287
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
288 try:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
289 kb = KB(driver='omero')(args.host, args.user, args.passwd)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
290 return kb
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
291 except:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
292 logger.critical('connection refused or failed')
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
293 sys.exit()
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
294
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
295 def init_api_galaxy(args):
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
296 try:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
297 galaxy_host = args.galaxy_host or ini_file['GALAXY_HOST_{0}'.format(args.host.split('.')[0].upper())]
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
298 api_key = args.galaxy_api_key
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
299 except KeyError, ke:
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
300 msg = 'No argument passed and no global variable %s found' % ke
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
301 logger.critical(msg)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
302 sys.exit(msg)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
303
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
304
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
305 logger.info('opening connection to %s with key %s' %(galaxy_host,api_key) )
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
306 apiGalaxy = GalaxyInstance(galaxy_host, key=api_key)
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
307 return apiGalaxy
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
308
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
309 if __name__ == '__main__':
ba6cf6ede027 Uploaded
ric
parents:
diff changeset
310 main(sys.argv[1:])