Source code for trescope.core.OutputManager

from pathlib import Path
from typing import List, Union

from trescope.core.Utils import get_abs_path


[docs]class DisplayOutputDesc(object): """ Display output description , specify **id** , **start** and **span** of output . """ def __init__(self): self.__id: str = '0' self.__rowStart: int = 0 self.__columnStart: int = 0 self.__rowSpan: int = 0 self.__columnSpan: int = 1
[docs] def id(self, id: Union[str, int]): """ Specify id of display output . :param id: ID of display output :return: self , for chain call """ self.__id = id return self
def getId(self) -> str: return self.__id
[docs] def startAt(self, rowStart: int, columnStart: int): """ Specify start of display output . :param rowStart: Start row :param columnStart: Start column :return: self , for chain call """ self.__rowStart, self.__columnStart = rowStart, columnStart return self
[docs] def withSpan(self, rowSpan: int, columnSpan: int): """ Specify span of display output . :param rowSpan: Rows to span :param columnSpan: Columns to span :return: self , for chain call """ self.__rowSpan, self.__columnSpan = rowSpan, columnSpan return self
def toDict(self): return { 'outputId': self.__id, 'rowStart': self.__rowStart, 'columnStart': self.__columnStart, 'rowSpan': self.__rowSpan, 'columnSpan': self.__columnSpan, }
[docs]class DisplayOutputManager(object): """ Specify output as display , check data in display ( browser ) with interaction , divide whole display to `resolutionRow` * `resolutionColumn` grids , then layout outputs by specifying which grid to start at and how many grids to span . :param resolutionRow: How many rows to divide :param resolutionColumn: How many columns to divide Example says all : .. code-block:: python :linenos: :emphasize-lines: 4 , 6 from trescope import Trescope, DisplayOutputManager, DisplayOutputDesc from trescope.config import Scatter2DConfig # Divide display to 4 * 10 grids outputManager = DisplayOutputManager(4, 10) # Output `startAt(0, 0).withSpan(1, 10)` occupies 1 * 10 grids and starts at grid(0 , 0) outputManager.add(DisplayOutputDesc().id('startAt(0, 0).withSpan(1, 10)').startAt(0, 0).withSpan(1, 10)) outputManager.add(DisplayOutputDesc().id('startAt(1, 0).withSpan(5, 2)').startAt(1, 0).withSpan(3, 2)) outputManager.add(DisplayOutputDesc().id('startAt(1, 3).withSpan(3, 2)').startAt(1, 2).withSpan(3, 8)) Trescope().initialize(True, outputManager) Trescope().selectOutput('startAt(0, 0).withSpan(1, 10)').plotScatter2D([0, 1, 2], [0, 1, 2]).withConfig(Scatter2DConfig()) Trescope().selectOutput('startAt(1, 0).withSpan(5, 2)').plotScatter2D([0, 1, 2], [0, 1, 2]).withConfig(Scatter2DConfig()) Trescope().selectOutput('startAt(1, 3).withSpan(3, 2)').plotScatter2D([0, 1, 2], [0, 1, 2]).withConfig(Scatter2DConfig()) You will see something below in browser : .. image:: ../_static/display-output-manager.png """ def __init__(self, resolutionRow: int, resolutionColumn: int): self.__outputDescs: List[DisplayOutputDesc] = [] self.__resolutionRow: int = resolutionRow self.__resolutionColumn: int = resolutionColumn
[docs] def add(self, outputDesc: DisplayOutputDesc): """ Add output description . :param outputDesc: Display output description to specify **output id** , **where starts** , **how many spans** :return: self , for chain call """ self.__outputDescs.append(outputDesc) return self
def __iter__(self): return iter(self.__outputDescs) def __next__(self): return next(self.__outputDescs) def toDict(self): return {'resolutionRow': self.__resolutionRow, 'resolutionColumn': self.__resolutionColumn}
[docs]class FileOutputDesc(): """ Display output description , specify **id** (name of image file) of output . """ def __init__(self): self.__id: str = '0'
[docs] def id(self, id: Union[str, int]): """ Specify id of file output . :param id: ID of file output :return: self , for chain call """ self.__id = id return self
def getId(self) -> str: return self.__id def toDict(self): return {'outputId': self.__id}
[docs]class FileOutputManager(object): """ Specify output as file , plot data to image file . :param directory: Directory where image file generated :param widthPixel: image width :param heightPixel: image height """ def __init__(self, directory: Union[str, Path], widthPixel: int = 640, heightPixel: int = 480): self.__outputDescs: List[FileOutputDesc] = [] self.__directory: str = get_abs_path(directory) self.__widthPixel: int = widthPixel self.__heightPixel: int = heightPixel
[docs] def add(self, outputDesc: FileOutputDesc): """ Add output description . :param outputDesc: File output description to specify **output id** (file names) :return: self , for chain call """ self.__outputDescs.append(outputDesc) return self
def __iter__(self): return iter(self.__outputDescs) def __next__(self): return next(self.__outputDescs) def toDict(self): return { 'directory': self.__directory, 'widthPixel': self.__widthPixel, 'heightPixel': self.__heightPixel}