diff --git a/src/portal_visualization/builder_factory.py b/src/portal_visualization/builder_factory.py index 8d38089..8f2897a 100644 --- a/src/portal_visualization/builder_factory.py +++ b/src/portal_visualization/builder_factory.py @@ -25,6 +25,9 @@ def get_view_config_builder(entity, get_assay): hints = [hint for assay in assay_objs for hint in assay.vitessce_hints] dag_names = [dag['name'] for dag in entity['metadata']['dag_provenance_list'] if 'name' in dag] + if 'integrative' in hints: + # TODO: confirm the string to be used in the hint. + return IntegrativeViewConfBuilder if "is_image" in hints: if 'sprm' in hints and 'anndata' in hints: return MultiImageSPRMAnndataViewConfBuilder diff --git a/src/portal_visualization/builders/integrative_builders.py b/src/portal_visualization/builders/integrative_builders.py new file mode 100644 index 0000000..e51de9c --- /dev/null +++ b/src/portal_visualization/builders/integrative_builders.py @@ -0,0 +1,18 @@ +from vitessce import VitessceConfig + +from .base_builders import ViewConfBuilder +from ..utils import get_conf_cells + + +class IntegrativeViewConfBuilder(ViewConfBuilder): + # TODO: Add a test fixture. + # TODO: Determine the name of the property that will hold the viewconfs. + # TODO: If https://github.com/hubmapconsortium/portal-visualization/pull/66 + # arrives first this can be replaced with: + # def get_configs(self): + # return [ + # VitessceConfig.from_dict(conf) + # for conf in self._entity['viewconfs'] + # ] + def get_conf_cells(self): + return get_conf_cells(self._entity['viewconfs'])