Warning

This document is for an in-development version 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(object): """ 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