Mercurial > repos > yating-l > hubarchivecreator
comparison hubArchiveCreator.py @ 2:4ced8f116509 draft
planemo upload for repository https://github.com/goeckslab/hub-archive-creator commit 23b12dd763c0235674988ebdf6a258afd1ad629a-dirty
| author | yating-l |
|---|---|
| date | Tue, 22 Nov 2016 17:13:18 -0500 |
| parents | 3e0c61b52a06 |
| children | 44577d6784b7 |
comparison
equal
deleted
inserted
replaced
| 1:42337785f87b | 2:4ced8f116509 |
|---|---|
| 120 | 120 |
| 121 outputFile = args.output | 121 outputFile = args.output |
| 122 | 122 |
| 123 json_inputs_data = args.data_json | 123 json_inputs_data = args.data_json |
| 124 | 124 |
| 125 # TODO: Instead use a class to properly store the objects, with object_hook | |
| 125 inputs_data = json.loads(json_inputs_data) | 126 inputs_data = json.loads(json_inputs_data) |
| 126 # We remove the spaces in ["name"] of inputs_data | 127 # We remove the spaces in ["name"] of inputs_data |
| 127 sanitize_name_inputs(inputs_data) | 128 sanitize_name_inputs(inputs_data) |
| 128 | 129 |
| 129 # TODO: Check here all the binaries / tools we need. Exception if missing | 130 # TODO: Check here all the binaries / tools we need. Exception if missing |
| 165 | 166 |
| 166 sys.exit(0) | 167 sys.exit(0) |
| 167 | 168 |
| 168 | 169 |
| 169 def sanitize_name_input(string_to_sanitize): | 170 def sanitize_name_input(string_to_sanitize): |
| 170 return string_to_sanitize \ | 171 """ |
| 172 Sanitize the string passed in parameter by replacing '/' and ' ' by '_' | |
| 173 | |
| 174 :param string_to_sanitize: | |
| 175 :return : | |
| 176 | |
| 177 :Example: | |
| 178 | |
| 179 >>> sanitize_name_input('this/is an//example') | |
| 180 this_is_an__example | |
| 181 """ | |
| 182 return string_to_sanitize \ | |
| 171 .replace("/", "_") \ | 183 .replace("/", "_") \ |
| 172 .replace(" ", "_") | 184 .replace(" ", "_") |
| 173 | 185 |
| 174 | 186 |
| 175 def sanitize_name_inputs(inputs_data): | 187 def sanitize_name_inputs(inputs_data): |
| 176 """ | 188 """ |
| 177 Sometimes output from Galaxy, or even just file name from user have spaces | 189 Sanitize value of the keys "name" of the dictionary passed in parameter. |
| 178 Also, it can contain '/' character and could break the use of os.path function | 190 |
| 191 Because sometimes output from Galaxy, or even just file name, from user inputs, have spaces. | |
| 192 Also, it can contain '/' character and could break the use of os.path function. | |
| 193 | |
| 179 :param inputs_data: dict[string, dict[string, string]] | 194 :param inputs_data: dict[string, dict[string, string]] |
| 180 :return: | |
| 181 """ | 195 """ |
| 182 for key in inputs_data: | 196 for key in inputs_data: |
| 183 inputs_data[key]["name"] = sanitize_name_input(inputs_data[key]["name"]) | 197 inputs_data[key]["name"] = sanitize_name_input(inputs_data[key]["name"]) |
| 184 | 198 |
| 185 | 199 |
| 186 def create_ordered_datatype_objects(ExtensionClass, array_inputs, inputs_data): | 200 def create_ordered_datatype_objects(ExtensionClass, array_inputs, inputs_data): |
| 187 """ | 201 """ |
| 188 Function which executes the creation all the necessary files / folders for a special Datatype, for TrackHub | 202 Function which executes the creation all the necessary files / folders for a special Datatype, for TrackHub |
| 189 and update the dictionary of datatype | 203 and update the dictionary of datatype |
| 190 :param ExtensionClass: T <= Datatype | 204 |
| 191 :param array_inputs: list[string] | 205 :param ExtensionClass: |
| 206 :param array_inputs: | |
| 192 :param inputs_data: | 207 :param inputs_data: |
| 208 :type ExtensionClass: Datatype | |
| 209 :type array_inputs: list[string] | |
| 210 :type inputs_data: dict | |
| 211 :rtype: dict | |
| 193 """ | 212 """ |
| 194 | 213 |
| 195 datatype_dictionary = {} | 214 datatype_dictionary = {} |
| 196 | 215 |
| 197 # TODO: Optimize this double loop | 216 # TODO: Optimize this double loop |
| 233 in STDOUT | 252 in STDOUT |
| 234 - Still access to full, brute and traceback for errors | 253 - Still access to full, brute and traceback for errors |
| 235 in STDERR | 254 in STDERR |
| 236 - And further access to debug if needed | 255 - And further access to debug if needed |
| 237 in .log | 256 in .log |
| 238 :return: | 257 |
| 239 """ | 258 """ |
| 259 | |
| 240 if not log_stdout: | 260 if not log_stdout: |
| 241 raise Exception("No log_stdout given. Stopping the application") | 261 raise Exception("No log_stdout given. Stopping the application") |
| 242 | 262 |
| 243 # stdout for INFO / WARN / ERROR / CRITICAL | 263 # stdout for INFO / WARN / ERROR / CRITICAL |
| 244 log_stdout.setLevel(logging.INFO) | 264 log_stdout.setLevel(logging.INFO) |
| 253 """ | 273 """ |
| 254 Dev Logger is defined as following: | 274 Dev Logger is defined as following: |
| 255 - Dev needs to have WARN, ERROR and CRITICAL but well formatted / without traceback, in stdout | 275 - Dev needs to have WARN, ERROR and CRITICAL but well formatted / without traceback, in stdout |
| 256 - Still access to full, brute and traceback in stderr for errors | 276 - Still access to full, brute and traceback in stderr for errors |
| 257 - And further access to debug if needed | 277 - And further access to debug if needed |
| 258 :return: | 278 |
| 259 """ | 279 """ |
| 260 if not log_stdout: | 280 if not log_stdout: |
| 261 raise Exception("No log_stdout given. Stopping the application") | 281 raise Exception("No log_stdout given. Stopping the application") |
| 262 log_format = '%(message)s' | 282 log_format = '%(message)s' |
| 263 | 283 |
| 271 logging.getLogger().addHandler(log_stdout) | 291 logging.getLogger().addHandler(log_stdout) |
| 272 | 292 |
| 273 def configure_logger_stderr(): | 293 def configure_logger_stderr(): |
| 274 """ | 294 """ |
| 275 Configure what should be logged in stderr | 295 Configure what should be logged in stderr |
| 276 :return: | |
| 277 """ | 296 """ |
| 278 log_error = logging.StreamHandler(sys.stderr) | 297 log_error = logging.StreamHandler(sys.stderr) |
| 279 log_error.setLevel(logging.ERROR) | 298 log_error.setLevel(logging.ERROR) |
| 280 log_error_format = '%(message)s' | 299 log_error_format = '%(message)s' |
| 281 | 300 |
