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