:py:mod:`alhambra.tiles`
========================

.. py:module:: alhambra.tiles


Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   alhambra.tiles.D
   alhambra.tiles.EdgeLoc
   alhambra.tiles.EdgeView
   alhambra.tiles.UseView
   alhambra.tiles.Tile
   alhambra.tiles.TileSupportingScadnano
   alhambra.tiles.SingleTile
   alhambra.tiles.VDupleTile
   alhambra.tiles.HDupleTile
   alhambra.tiles.SupportsGuards
   alhambra.tiles.BaseSSTile
   alhambra.tiles.BaseSSTSingle
   alhambra.tiles.BaseSSTSingleWithExtensions
   alhambra.tiles.SST10_5S
   alhambra.tiles.SST11_5S
   alhambra.tiles.SST10
   alhambra.tiles.SST11
   alhambra.tiles.TileFactory
   alhambra.tiles.TileList
   alhambra.tiles.DAOETile
   alhambra.tiles.DAOESingle
   alhambra.tiles.DAOESingle5p
   alhambra.tiles.DAOESingle3p
   alhambra.tiles.DAOEHDouble3p
   alhambra.tiles.DAOEHDouble5p
   alhambra.tiles.DAOEVDouble3p
   alhambra.tiles.DAOEVDouble5p



Functions
~~~~~~~~~

.. autoapisummary::

   alhambra.tiles._scadnano_color



Attributes
~~~~~~~~~~

.. autoapisummary::

   alhambra.tiles.Color
   alhambra.tiles.T
   alhambra.tiles.log
   alhambra.tiles.Offset
   alhambra.tiles.EL
   alhambra.tiles.Domain
   alhambra.tiles.tile_factory
   alhambra.tiles.SomeTile


.. py:data:: Color

   

.. py:data:: T

   

.. py:data:: log

   

.. py:class:: D


   Bases: :py:obj:`enum.Enum`

   Cardinal directions; also edge directions for single tiles.

   .. py:property:: complement
      :type: D


   .. py:attribute:: N
      :value: 0

      

   .. py:attribute:: E
      :value: 1

      

   .. py:attribute:: S
      :value: 2

      

   .. py:attribute:: W
      :value: 3

      


.. py:data:: Offset

   

.. py:class:: EdgeLoc


   .. py:attribute:: direction
      :type: D

      

   .. py:attribute:: position
      :type: Offset
      :value: (0, 0)

      


.. py:data:: EL

   

.. py:class:: EdgeView(_edges: List[alhambra.glues.Glue], _tile: Tile)


   A class to ensure that tile edge glue manipulations are handled through the tile.

   .. py:attribute:: _edges
      :type: List[alhambra.glues.Glue]

      

   .. py:attribute:: _tile
      :type: Tile

      

   .. py:attribute:: __slots__
      :value: ('_edges', '_tile')

      

   .. py:method:: __getitem__(k: int | str) -> alhambra.glues.Glue
                  __getitem__(k: slice) -> list[alhambra.glues.Glue]


   .. py:method:: __setitem__(k: int | str, v: alhambra.glues.Glue) -> None


   .. py:method:: insert(index: int, value: alhambra.glues.Glue) -> None


   .. py:method:: __delitem__(k: int | str) -> None
      :abstractmethod:


   .. py:method:: __iter__() -> Iterator[alhambra.glues.Glue]


   .. py:method:: __next__() -> Generator[alhambra.glues.Glue, None, None]


   .. py:method:: __len__() -> int


   .. py:method:: __repr__() -> str

      Return repr(self).


   .. py:method:: __str__() -> str

      Return str(self).



.. py:class:: UseView(_tile: Tile)


   Bases: :py:obj:`MutableMapping`\ [\ :py:obj:`int`\ , :py:obj:`alhambra.glues.Use`\ ]

   A class to ensure that tile edge use manipulations are handled through the tile.

   .. py:attribute:: _tile
      :type: Tile

      

   .. py:attribute:: __slots__
      :value: '_tile'

      

   .. py:method:: __getitem__(k: int) -> alhambra.glues.Use
                  __getitem__(k: slice) -> list[alhambra.glues.Use]


   .. py:method:: __setitem__(k: int, v: alhambra.glues.Use) -> None


   .. py:method:: insert(index: int, value: alhambra.glues.Use) -> None
      :abstractmethod:


   .. py:method:: __len__() -> int


   .. py:method:: __repr__() -> str

      Return repr(self).


   .. py:method:: __str__() -> str

      Return str(self).



.. py:class:: Tile(edges: Optional[Iterable[alhambra.glues.Glue | str]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, note: Optional[str | dict[str, Any]] = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)


   Base class for a tile.

   .. py:property:: structure


   .. py:property:: use
      :type: Sequence[alhambra.glues.Use]


   .. py:property:: edges
      :type: EdgeView


   .. py:property:: edge_directions
      :type: List[D]
      :abstractmethod:


   .. py:property:: edge_locations
      :type: List[EdgeLoc]
      :abstractmethod:


   .. py:property:: rotations
      :type: List[Tile]
      :abstractmethod:


   .. py:property:: is_fake
      :type: bool


   .. py:property:: xgname
      :type: str


   .. py:attribute:: name
      :type: Optional[str]

      

   .. py:attribute:: _edges
      :type: List[alhambra.glues.Glue]

      

   .. py:attribute:: color
      :type: Optional[Color]

      

   .. py:attribute:: stoic
      :type: Optional[float]

      

   .. py:attribute:: note
      :type: Optional[str | dict[str, Any]]

      

   .. py:attribute:: fake
      :type: bool

      

   .. py:attribute:: uses
      :type: List[List[alhambra.glues.Use]]

      

   .. py:attribute:: __slots__
      :value: ('name', '_edges', 'color', 'stoic', 'note', 'fake', 'uses')

      

   .. py:method:: get_concentration(base_concentration: float) -> float


   .. py:method:: get_stoic(base_concentration: float) -> float

      Returns the stoichiometric ratio of this tile to the base concentration.


   .. py:method:: set_edge(i: int, glue: alhambra.glues.Glue) -> None


   .. py:method:: copy() -> T


   .. py:method:: _get_edge_index(v: str) -> int
      :classmethod:
      :abstractmethod:


   .. py:method:: ident() -> str


   .. py:method:: merge(other) -> Tile


   .. py:method:: to_dict(refglues: set[str] = set()) -> dict[str, Any]


   .. py:method:: update_glues(gluedict: alhambra.glues.GlueList[alhambra.glues.Glue]) -> None


   .. py:method:: update_glues_and_list(gluedict: alhambra.glues.GlueList[alhambra.glues.Glue]) -> None


   .. py:method:: from_dict(d: dict[str, Any]) -> Tile
      :staticmethod:


   .. py:method:: to_xgrow(gluenamemap: Callable[[str], str] = lambda x: x) -> xgrow.tileset.Tile


   .. py:method:: abstract_diagram(tileset: alhambra.tilesets.TileSet | None = None, draw_names: bool = True, draw_glues: bool = True) -> alhambra.drawing.Group
      :abstractmethod:



.. py:class:: TileSupportingScadnano(edges: Optional[Iterable[alhambra.glues.Glue | str]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, note: Optional[str] = None, domains: Optional[Iterable[alhambra.glues.SSGlue]] = None)


   Bases: :py:obj:`abc.ABC`, :py:obj:`Tile`

   Abstract base class for a tile that allows export to scadnano.

   .. py:property:: _scadnano_5p_offset
      :type: tuple[int, int]
      :abstractmethod:


   .. py:method:: to_scadnano(design: scadnano.Design, helix: int, offset: int) -> scadnano.Strand
      :abstractmethod:



.. py:class:: SingleTile(edges: Optional[Iterable[alhambra.glues.Glue | str]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, note: Optional[str | dict[str, Any]] = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)


   Bases: :py:obj:`Tile`

   A tile with N, E, S and W edges.

   .. py:property:: edge_directions
      :type: List[D]


   .. py:property:: edge_locations
      :type: List[EdgeLoc]


   .. py:method:: _get_edge_index(v: str) -> int
      :classmethod:


   .. py:method:: abstract_diagram(tileset: alhambra.tilesets.TileSet | None = None, draw_names: bool = True, draw_glues: bool = True) -> alhambra.drawing.Group



.. py:class:: VDupleTile(edges: Optional[Iterable[alhambra.glues.Glue | str]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, note: Optional[str | dict[str, Any]] = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)


   Bases: :py:obj:`Tile`

   Base class for a tile.

   .. py:property:: edge_directions
      :type: List[D]


   .. py:property:: edge_locations
      :type: List[EdgeLoc]


   .. py:method:: to_xgrow(gluenamemap: Callable[[str], str] = lambda x: x) -> xgrow.tileset.Tile


   .. py:method:: _get_edge_index(v: str) -> int
      :classmethod:


   .. py:method:: abstract_diagram(tileset: alhambra.tilesets.TileSet | None = None, draw_names: bool = True, draw_glues: bool = True) -> alhambra.drawing.Group



.. py:class:: HDupleTile(edges: Optional[Iterable[alhambra.glues.Glue | str]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, note: Optional[str | dict[str, Any]] = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)


   Bases: :py:obj:`Tile`

   Base class for a tile.

   .. py:property:: edge_directions
      :type: List[D]


   .. py:property:: edge_locations
      :type: List[EdgeLoc]


   .. py:method:: to_xgrow(gluenamemap: Callable[[str], str] = lambda x: x) -> xgrow.tileset.Tile


   .. py:method:: _get_edge_index(v: str) -> int
      :classmethod:


   .. py:method:: abstract_diagram(tileset: alhambra.tilesets.TileSet | None = None, draw_names: bool = True, draw_glues: bool = True) -> alhambra.drawing.Group



.. py:class:: SupportsGuards


   .. py:method:: create_guards(directions: Collection[str | D] = (D.E, D.S)) -> list[alhambra.glues.Glue]
      :abstractmethod:



.. py:class:: BaseSSTile(edges: Optional[List[Union[str, alhambra.glues.Glue]]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, sequence: Optional[alhambra.seq.Seq] = None, domains: Optional[Sequence[alhambra.glues.SSGlue]] = None, note: Optional[str] = None, use: Optional[Sequence[alhambra.glues.Use]] = None, uses: Optional[Sequence[Sequence[alhambra.glues.Use]]] = None)


   Bases: :py:obj:`SupportsGuards`, :py:obj:`TileSupportingScadnano`

   Base class for single-stranded tiles.

   .. py:property:: _base_domains
      :type: List[alhambra.glues.SSGlue]
      :abstractmethod:


   .. py:property:: _base_edges
      :type: List[alhambra.glues.SSGlue]
      :abstractmethod:


   .. py:property:: domains
      :type: List[alhambra.glues.SSGlue]
      :abstractmethod:


   .. py:property:: edge_directions
      :type: list[D]
      :abstractmethod:


   .. py:property:: _sequence_length
      :type: int


   .. py:property:: sequence
      :type: alhambra.seq.Seq


   .. py:property:: edges


   .. py:attribute:: _edges
      :type: List[alhambra.glues.Glue]

      

   .. py:method:: to_dict(refglues: set[str] = set()) -> dict[str, Any]


   .. py:method:: _input_neighborhood_domains() -> Sequence[Tuple[Sequence[str], Sequence[str]]]
      :abstractmethod:


   .. py:method:: set_edge(i: int, glue: alhambra.glues.Glue) -> None


   .. py:method:: __repr__() -> str

      Return repr(self).


   .. py:method:: __str__() -> str

      Return str(self).


   .. py:method:: create_guards(directions: Collection[str | D] = (D.E, D.S)) -> list[alhambra.glues.Glue]



.. py:function:: _scadnano_color(color: Optional[str]) -> Optional[scadnano.Color]


.. py:class:: BaseSSTSingle(edges: Optional[Iterable[alhambra.glues.Glue | str]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, note: Optional[str | dict[str, Any]] = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)


   Bases: :py:obj:`SingleTile`, :py:obj:`BaseSSTile`

   Base class for a standard-orientation SST single tile.

   .. py:property:: domains
      :type: List[alhambra.glues.SSGlue]


   .. py:property:: _base_edges
      :type: List[alhambra.glues.SSGlue]


   .. py:attribute:: _edges
      :type: List[alhambra.glues.Glue]

      

   .. py:method:: _input_neighborhood_domains() -> Sequence[Tuple[Sequence[str], Sequence[str]]]


   .. py:method:: to_scadnano(design: scadnano.Design, helix: int, offset: int) -> scadnano.Strand



.. py:data:: Domain

   

.. py:class:: BaseSSTSingleWithExtensions(edges: Optional[list[Union[str, alhambra.glues.Glue]]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, sequence: Optional[alhambra.seq.Seq] = None, domains: Optional[list[Domain]] = None, note: Optional[str] = None, use: Optional[Sequence[alhambra.glues.Use]] = None, uses: Optional[Sequence[Sequence[alhambra.glues.Use]]] = None, mod5: alhambra.seq.Seq | str | int | dict | None = None, mod3: alhambra.seq.Seq | str | int | dict | None = None)


   Bases: :py:obj:`BaseSSTSingle`

   Base class for a standard-orientation SST single tile.

   .. py:property:: domains
      :type: List[alhambra.glues.SSGlue]


   .. py:property:: _sequence_length
      :type: int


   .. py:property:: sequence
      :type: alhambra.seq.Seq


   .. py:attribute:: mod5
      :type: Domain | None

      

   .. py:attribute:: mod3
      :type: Domain | None

      

   .. py:method:: to_dict(refglues: set[str] = set()) -> dict[str, Any]



.. py:class:: SST10_5S(edges: Optional[Iterable[alhambra.glues.Glue | str]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, note: Optional[str | dict[str, Any]] = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)


   Bases: :py:obj:`BaseSSTSingle`

   Single SST, with domains (5'→3') of 11, 10, 10, and 11 nt. North edge is 10nt. 5' is S, 3' is E.

   .. py:property:: domains
      :type: List[alhambra.glues.SSGlue]


   .. py:property:: _base_edges
      :type: List[alhambra.glues.SSGlue]


   .. py:attribute:: _base_domains
      :type: ClassVar[list[alhambra.glues.SSGlue]]

      

   .. py:attribute:: _scadnano_offsets
      :value: ((), (), (1, 10), (1,))

      

   .. py:attribute:: _scadnano_5p_offset
      :value: (1, 21)

      


.. py:class:: SST11_5S(edges: Optional[Iterable[alhambra.glues.Glue | str]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, note: Optional[str | dict[str, Any]] = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)


   Bases: :py:obj:`BaseSSTSingle`

   Single SST, with domains (5'→3') of 10, 11, 11, and 10 nt. North edge is 11nt. 5' is S, 3' is E.

   .. py:property:: domains
      :type: List[alhambra.glues.SSGlue]


   .. py:property:: _base_edges
      :type: List[alhambra.glues.SSGlue]


   .. py:attribute:: _base_domains
      :type: ClassVar[list[alhambra.glues.SSGlue]]

      

   .. py:attribute:: _scadnano_offsets
      :value: ((), (), (1, 11), (1,))

      

   .. py:attribute:: _scadnano_5p_offset
      :value: (1, 21)

      


.. py:class:: SST10(edges: Optional[Iterable[alhambra.glues.Glue | str]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, note: Optional[str | dict[str, Any]] = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)


   Bases: :py:obj:`BaseSSTSingle`

   Single SST, with domains (5'→3') of 11, 10, 10, and 11 nt. North edge is 10nt. 5' is E, 3' is S.

   .. py:attribute:: _base_domains
      :type: ClassVar[list[alhambra.glues.SSGlue]]

      

   .. py:attribute:: _scadnano_offsets
      :value: ((), (), (1, 10), (1,))

      

   .. py:attribute:: _scadnano_5p_offset
      :value: (1, 21)

      


.. py:class:: SST11(edges: Optional[Iterable[alhambra.glues.Glue | str]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, note: Optional[str | dict[str, Any]] = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)


   Bases: :py:obj:`BaseSSTSingle`

   Single SST, with domains (5'→3') of 10, 11, 11, and 10 nt. North edge is 11nt. 5' is E, 3' is S.

   .. py:attribute:: _base_domains
      :type: ClassVar[list[alhambra.glues.SSGlue]]

      

   .. py:attribute:: _scadnano_offsets
      :value: ((), (), (1, 11), (1,))

      

   .. py:attribute:: _scadnano_5p_offset
      :value: (1, 21)

      


.. py:class:: TileFactory


   .. py:attribute:: types
      :type: dict[str, Type[Tile]]

      

   .. py:method:: register(c: Type[Tile], n: Optional[str] = None) -> None


   .. py:method:: from_dict(d: dict[str, Any]) -> Tile


   .. py:method:: from_scadnano(d: scadnano.Strand | Iterable[scadnano.Strand], return_position: Literal[True]) -> tuple[TileSupportingScadnano, tuple[int, int]]
                  from_scadnano(d: scadnano.Strand | Iterable[scadnano.Strand], return_position: Literal[False]) -> TileSupportingScadnano



.. py:data:: tile_factory

   

.. py:data:: SomeTile

   

.. py:class:: TileList(initial: Iterable[T_NMI] = tuple())


   Bases: :py:obj:`Generic`\ [\ :py:obj:`SomeTile`\ ], :py:obj:`alhambra.classes.UpdateListD`\ [\ :py:obj:`SomeTile`\ ]

   Abstract base class for generic types.

   A generic type is typically declared by inheriting from
   this class parameterized with one or more type variables.
   For example, a generic mapping type might be defined as::

     class Mapping(Generic[KT, VT]):
         def __getitem__(self, key: KT) -> VT:
             ...
         # Etc.

   This class can then be used as follows::

     def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:
         try:
             return mapping[key]
         except KeyError:
             return default

   .. py:method:: glues_from_tiles() -> alhambra.glues.GlueList


   .. py:method:: domains_from_tiles() -> alhambra.glues.GlueList



.. py:class:: DAOETile(name: str, sequence: str | None = None, sequences: list[str] | None = None, edges: List[alhambra.glues.Glue | str] | None = None, label: str | None = None, color: str | None = None, **kwargs)


   Bases: :py:obj:`Tile`

   Base class for a tile.

   .. py:attribute:: _edges
      :type: List[alhambra.glues.Glue]

      

   .. py:attribute:: _strand_sequences
      :type: List[str] | None

      

   .. py:method:: to_dict(refglues: set[str] = set()) -> dict[str, Any]



.. py:class:: DAOESingle(edges: Optional[Iterable[alhambra.glues.Glue | str]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, note: Optional[str | dict[str, Any]] = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)


   Bases: :py:obj:`SingleTile`, :py:obj:`DAOETile`

   A tile with N, E, S and W edges.


.. py:class:: DAOESingle5p(edges: Optional[Iterable[alhambra.glues.Glue | str]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, note: Optional[str | dict[str, Any]] = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)


   Bases: :py:obj:`DAOESingle`

   A tile with N, E, S and W edges.

   .. py:attribute:: _baseglues
      :type: ClassVar[List[alhambra.glues.DXGlue]]

      

   .. py:attribute:: _gluelocs
      :value: [(0,), (3,), (3,), (0,)]

      


.. py:class:: DAOESingle3p(edges: Optional[Iterable[alhambra.glues.Glue | str]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, note: Optional[str | dict[str, Any]] = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)


   Bases: :py:obj:`DAOESingle`

   A tile with N, E, S and W edges.

   .. py:attribute:: _baseglues
      :type: ClassVar[List[alhambra.glues.DXGlue]]

      

   .. py:attribute:: _gluelocs
      :value: [(0,), (3,), (3,), (0,)]

      


.. py:class:: DAOEHDouble3p(edges: Optional[Iterable[alhambra.glues.Glue | str]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, note: Optional[str | dict[str, Any]] = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)


   Bases: :py:obj:`HDupleTile`, :py:obj:`DAOETile`

   Base class for a tile.


.. py:class:: DAOEHDouble5p(edges: Optional[Iterable[alhambra.glues.Glue | str]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, note: Optional[str | dict[str, Any]] = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)


   Bases: :py:obj:`HDupleTile`, :py:obj:`DAOETile`

   Base class for a tile.


.. py:class:: DAOEVDouble3p(edges: Optional[Iterable[alhambra.glues.Glue | str]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, note: Optional[str | dict[str, Any]] = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)


   Bases: :py:obj:`VDupleTile`, :py:obj:`DAOETile`

   Base class for a tile.


.. py:class:: DAOEVDouble5p(edges: Optional[Iterable[alhambra.glues.Glue | str]] = None, name: Optional[str] = None, color: Optional[Color] = None, stoic: Optional[float] = None, note: Optional[str | dict[str, Any]] = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)


   Bases: :py:obj:`VDupleTile`, :py:obj:`DAOETile`

   Base class for a tile.


