def _parse_output( self, data_elem, tool, default_format="data", default_format_source=None, default_metadata_source="", ): output = galaxy.tools.ToolOutput(data_elem.get("name")) output_format = data_elem.get("format", default_format) auto_format = string_as_bool(data_elem.get("auto_format", "false")) if auto_format and output_format != "data": raise ValueError( "Setting format and auto_format is not supported at this time." ) elif auto_format: output_format = "_sniff_" output.format = output_format output.change_format = data_elem.findall("change_format") output.format_source = data_elem.get("format_source", default_format_source) output.metadata_source = data_elem.get("metadata_source", default_metadata_source) output.parent = data_elem.get("parent", None) output.label = xml_text(data_elem, "label") output.count = int(data_elem.get("count", 1)) output.filters = data_elem.findall('filter') output.tool = tool output.from_work_dir = data_elem.get("from_work_dir", None) output.hidden = string_as_bool(data_elem.get("hidden", "")) output.actions = ToolOutputActionGroup(output, data_elem.find('actions')) output.dataset_collectors = output_collect.dataset_collectors_from_elem( data_elem) return output
def _parse_output( self, data_elem, tool, default_format="data", default_format_source=None, default_metadata_source="", ): output = galaxy.tools.ToolOutput( data_elem.get("name") ) output_format = data_elem.get("format", default_format) auto_format = string_as_bool( data_elem.get( "auto_format", "false" ) ) if auto_format and output_format != "data": raise ValueError("Setting format and auto_format is not supported at this time.") elif auto_format: output_format = "_sniff_" output.format = output_format output.change_format = data_elem.findall("change_format") output.format_source = data_elem.get("format_source", default_format_source) output.metadata_source = data_elem.get("metadata_source", default_metadata_source) output.parent = data_elem.get("parent", None) output.label = xml_text( data_elem, "label" ) output.count = int( data_elem.get("count", 1) ) output.filters = data_elem.findall( 'filter' ) output.tool = tool output.from_work_dir = data_elem.get("from_work_dir", None) output.hidden = string_as_bool( data_elem.get("hidden", "") ) output.actions = galaxy.tools.ToolOutputActionGroup( output, data_elem.find( 'actions' ) ) output.dataset_collectors = output_collect.dataset_collectors_from_elem( data_elem ) return output
def _replace_output_collectors(self, xml_str): # Rewrite tool as if it had been created with output containing # supplied dataset_collector elem. elem = util.parse_xml_string(xml_str) self.tool.outputs[ DEFAULT_TOOL_OUTPUT].dataset_collectors = output_collect.dataset_collectors_from_elem( elem)
def _parse_output( self, data_elem, tool, default_format="data", default_format_source=None, default_metadata_source="", ): output = galaxy.tools.ToolOutput( data_elem.get("name") ) output.format = data_elem.get("format", default_format) output.change_format = data_elem.findall("change_format") output.format_source = data_elem.get("format_source", default_format_source) output.metadata_source = data_elem.get("metadata_source", default_metadata_source) output.parent = data_elem.get("parent", None) output.label = xml_text( data_elem, "label" ) output.count = int( data_elem.get("count", 1) ) output.filters = data_elem.findall( 'filter' ) output.tool = tool output.from_work_dir = data_elem.get("from_work_dir", None) output.hidden = string_as_bool( data_elem.get("hidden", "") ) output.actions = galaxy.tools.ToolOutputActionGroup( output, data_elem.find( 'actions' ) ) output.dataset_collectors = output_collect.dataset_collectors_from_elem( data_elem ) return output
def parse_outputs(self, tool): out_elem = self.root.find("outputs") outputs = odict() output_collections = odict() if out_elem is None: return outputs, output_collections data_dict = odict() def _parse(data_elem, **kwds): output_def = self._parse_output(data_elem, tool, **kwds) data_dict[output_def.name] = output_def return output_def map(_parse, out_elem.findall("data")) for collection_elem in out_elem.findall("collection"): name = collection_elem.get("name") label = xml_text(collection_elem, "label") default_format = collection_elem.get("format", "data") collection_type = collection_elem.get("type", None) structured_like = collection_elem.get("structured_like", None) inherit_format = False inherit_metadata = False if structured_like: inherit_format = string_as_bool( collection_elem.get("inherit_format", None)) inherit_metadata = string_as_bool( collection_elem.get("inherit_metadata", None)) default_format_source = collection_elem.get("format_source", None) default_metadata_source = collection_elem.get( "metadata_source", "") filters = collection_elem.findall('filter') dataset_collectors = None if collection_elem.find("discover_datasets") is not None: dataset_collectors = output_collect.dataset_collectors_from_elem( collection_elem) structure = galaxy.tools.ToolOutputCollectionStructure( collection_type=collection_type, structured_like=structured_like, dataset_collectors=dataset_collectors, ) output_collection = galaxy.tools.ToolOutputCollection( name, structure, label=label, filters=filters, default_format=default_format, inherit_format=inherit_format, inherit_metadata=inherit_metadata, default_format_source=default_format_source, default_metadata_source=default_metadata_source, ) outputs[output_collection.name] = output_collection for data_elem in collection_elem.findall("data"): _parse( data_elem, default_format=default_format, default_format_source=default_format_source, default_metadata_source=default_metadata_source, ) for data_elem in collection_elem.findall("data"): output_name = data_elem.get("name") data = data_dict[output_name] assert data del data_dict[output_name] output_collection.outputs[output_name] = data output_collections[name] = output_collection for output_def in data_dict.values(): outputs[output_def.name] = output_def return outputs, output_collections
def parse_outputs(self, tool): out_elem = self.root.find("outputs") outputs = odict() output_collections = odict() if out_elem is None: return outputs, output_collections data_dict = odict() def _parse(data_elem, **kwds): output_def = self._parse_output(data_elem, tool, **kwds) data_dict[output_def.name] = output_def return output_def map(_parse, out_elem.findall("data")) for collection_elem in out_elem.findall("collection"): name = collection_elem.get( "name" ) label = xml_text( collection_elem, "label" ) default_format = collection_elem.get( "format", "data" ) collection_type = collection_elem.get( "type", None ) structured_like = collection_elem.get( "structured_like", None ) inherit_format = False inherit_metadata = False if structured_like: inherit_format = string_as_bool( collection_elem.get( "inherit_format", None ) ) inherit_metadata = string_as_bool( collection_elem.get( "inherit_metadata", None ) ) default_format_source = collection_elem.get( "format_source", None ) default_metadata_source = collection_elem.get( "metadata_source", "" ) dataset_collectors = None if collection_elem.find( "discover_datasets" ) is not None: dataset_collectors = output_collect.dataset_collectors_from_elem( collection_elem ) structure = galaxy.tools.ToolOutputCollectionStructure( collection_type=collection_type, structured_like=structured_like, dataset_collectors=dataset_collectors, ) output_collection = galaxy.tools.ToolOutputCollection( name, structure, label=label, default_format=default_format, inherit_format=inherit_format, inherit_metadata=inherit_metadata, default_format_source=default_format_source, default_metadata_source=default_metadata_source, ) outputs[output_collection.name] = output_collection for data_elem in collection_elem.findall("data"): _parse( data_elem, default_format=default_format, default_format_source=default_format_source, default_metadata_source=default_metadata_source, ) for data_elem in collection_elem.findall("data"): output_name = data_elem.get("name") data = data_dict[output_name] assert data del data_dict[output_name] output_collection.outputs[output_name] = data output_collections[ name ] = output_collection for output_def in data_dict.values(): outputs[output_def.name] = output_def return outputs, output_collections
def _replace_output_collectors( self, xml_str ): # Rewrite tool as if it had been created with output containing # supplied dataset_collector elem. elem = util.parse_xml_string( xml_str ) self.tool.outputs[ DEFAULT_TOOL_OUTPUT ].dataset_collectors = output_collect.dataset_collectors_from_elem( elem )