Warning

This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

Source code for galaxy.tools.parameters.history_query

import logging

log = logging.getLogger(__name__)


[docs]class HistoryQuery: """An object for describing the collections to pull out of a history, used by DataCollectionToolParameter. """
[docs] def __init__(self, **kwargs): self.collection_type_descriptions = kwargs.get("collection_type_descriptions", None)
[docs] @staticmethod def from_collection_type(collection_type, collection_type_descriptions): kwargs = dict(collection_type_descriptions=[collection_type_descriptions.for_collection_type(collection_type)]) return HistoryQuery(**kwargs)
[docs] @staticmethod def from_collection_types(collection_types, collection_type_descriptions): if collection_types: collection_type_descriptions = [ collection_type_descriptions.for_collection_type(t) for t in collection_types ] # Place higher dimension descriptions first so subcollection mapping # (until we expose it to the user) will default to providing tool as much # data as possible. So a list:list:paired mapped to a tool that takes # list,paired,list:paired - will map over list:paired and create a flat list. collection_type_descriptions = sorted(collection_type_descriptions, key=lambda t: t.dimension, reverse=True) else: collection_type_descriptions = None kwargs = dict(collection_type_descriptions=collection_type_descriptions) return HistoryQuery(**kwargs)
[docs] @staticmethod def from_parameter(param, collection_type_descriptions): """Take in a tool parameter element.""" collection_types = param.collection_types return HistoryQuery.from_collection_types(collection_types, collection_type_descriptions)
[docs] def direct_match(self, hdca): collection_type_descriptions = self.collection_type_descriptions if collection_type_descriptions is not None: for collection_type_description in collection_type_descriptions: if collection_type_description.can_match_type(hdca.collection.collection_type): return True return False return True
[docs] def can_map_over(self, hdca): collection_type_descriptions = self.collection_type_descriptions if collection_type_descriptions is None: return False hdca_collection_type = hdca.collection.collection_type for collection_type_description in collection_type_descriptions: # See note about the way this is sorted above. if collection_type_description.is_subcollection_of_type(hdca_collection_type): return collection_type_description return False