def _pacbio_choice_option_from_dict(d): """ Factory/dispatch method for returning a PacBio Choice Option Type :rtype: PacBioOption """ choices = d['choices'] default_value = d['default'] # this will immediately raise option_type_id = TaskOptionTypes.from_choice_str(d['optionTypeId']) opt_id = d['id'] name = d['name'] desc = to_utf8(d['description']) klass_map = {TaskOptionTypes.CHOICE_STR: PacBioStringChoiceOption, TaskOptionTypes.CHOICE_FLOAT: PacBioFloatChoiceOption, TaskOptionTypes.CHOICE_INT: PacBioIntChoiceOption} k = klass_map[option_type_id] # Sanitize Unicode hack if k is PacBioStringChoiceOption: default_value = to_ascii(default_value) choices = [to_ascii(i) for i in choices] opt = k(opt_id, name, default_value, desc, choices) return opt
def load_analysis_job_json(d): """Translate a dict to args for scenario runner inputs""" job_name = to_ascii(d['name']) pipeline_template_id = to_ascii(d["pipelineId"]) service_epoints = [ServiceEntryPoint.from_d(x) for x in d['entryPoints']] tags = d.get('tags', []) return job_name, pipeline_template_id, service_epoints, tags
def __simple_option_by_type( option_id, name, default, description, option_type_id): option_type = TaskOptionTypes.from_simple_str(option_type_id) klass_map = {TaskOptionTypes.INT: PacBioIntOption, TaskOptionTypes.FLOAT: PacBioFloatOption, TaskOptionTypes.STR: PacBioStringOption, TaskOptionTypes.BOOL: PacBioBooleanOption} k = klass_map[option_type] # This requires a hack for the unicode to ascii for string option type. if k is PacBioStringOption: # sanitize unicode default = to_ascii(default) opt = k(option_id, name, default, description) return opt
def _pacbio_legacy_option_from_dict(d): """ Load the legacy (jsonschema-ish format) Note, choice types are not supported here. :rtype: PacBioOption """ warnings.warn( "This is obsolete and will disappear soon", DeprecationWarning) opt_id = d['pb_option']['option_id'] name = d['pb_option']['name'] default = d['pb_option']['default'] desc = d['pb_option']['description'] option_type_id = to_ascii(d['pb_option']['type']) # Hack to support "number" if option_type_id == "number": option_type_id = "float" return __simple_option_by_type(opt_id, name, default, desc, option_type_id)