Source code for anchor_python_visualization.visualize.factory

"""Creates :class:`~visualize.VisualizeFeaturesScheme`"""

__author__ = "Owen Feehan"
__copyright__ = "Copyright (C) 2021 Owen Feehan"
__license__ = "MIT"
__version__ = "0.1"

from typing import Optional

from anchor_python_visualization import projection

from ._plot_features_projection import PlotFeaturesProjection
from ._tensorboard_export import TensorBoardExport
from .visualize_features_scheme import VisualizeFeaturesScheme

[docs]IDENTIFIERS = ["plot", "tensorboard"]
"""Unique strings to use as command-line-arguments to select a :class:`VisualizeFeaturesScheme`. All are lower-case. """
[docs]DEFAULT_IDENTIFIER = "plot"
"""The default choice to use in :const:`IDENTIFIERS`."""
[docs]def create_method( identifier: Optional[str], projector: Optional[projection.Projector], output_path: Optional[str], ) -> VisualizeFeaturesScheme: """ Creates a visualize-embeddings method from an identifier. Args: identifier: string that is one of :const:`IDENTIFIERS`, case-insensitive. projector: method for performing projection into smaller dimensionality. output_path: a path for writing any relevant output. Returns: a newly created instance corresponding to the identifier. """ if projector is None: raise ValueError("No projector specified.") if identifier is None: return PlotFeaturesProjection(projector) identifier = identifier.casefold() if identifier == IDENTIFIERS[0]: return PlotFeaturesProjection(projector) elif identifier == IDENTIFIERS[1]: if output_path is None: raise ValueError("An output-path is required but not specified.") return TensorBoardExport(projector, output_path) else: raise ValueError("Unknown identifier for projection: {}".format(identifier))