alhambra.tiles#

Module Contents#

Classes#

D

Cardinal directions; also edge directions for single tiles.

EdgeLoc

EdgeView

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

UseView

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

Tile

Base class for a tile.

TileSupportingScadnano

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

SingleTile

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

VDupleTile

Base class for a tile.

HDupleTile

Base class for a tile.

SupportsGuards

BaseSSTile

Base class for single-stranded tiles.

BaseSSTSingle

Base class for a standard-orientation SST single tile.

BaseSSTSingleWithExtensions

Base class for a standard-orientation SST single tile.

SST10_5S

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

SST11_5S

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

SST10

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

SST11

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

TileFactory

TileList

Abstract base class for generic types.

DAOETile

Base class for a tile.

DAOESingle

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

DAOESingle5p

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

DAOESingle3p

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

DAOEHDouble3p

Base class for a tile.

DAOEHDouble5p

Base class for a tile.

DAOEVDouble3p

Base class for a tile.

DAOEVDouble5p

Base class for a tile.

Functions#

_scadnano_color(→ Optional[scadnano.Color])

Attributes#

Color

T

log

Offset

EL

Domain

tile_factory

SomeTile

alhambra.tiles.Color[source]#
alhambra.tiles.T[source]#
alhambra.tiles.log[source]#
class alhambra.tiles.D[source]#

Bases: enum.Enum

Cardinal directions; also edge directions for single tiles.

property complement: D[source]#
N = 0[source]#
E = 1[source]#
S = 2[source]#
W = 3[source]#
alhambra.tiles.Offset[source]#
class alhambra.tiles.EdgeLoc[source]#
direction: D[source]#
position: Offset = (0, 0)[source]#
alhambra.tiles.EL[source]#
class alhambra.tiles.EdgeView(_edges: List[alhambra.glues.Glue], _tile: Tile)[source]#

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

_edges: List[alhambra.glues.Glue][source]#
_tile: Tile[source]#
__slots__ = ('_edges', '_tile')[source]#
__getitem__(k: int | str) alhambra.glues.Glue[source]#
__getitem__(k: slice) list[alhambra.glues.Glue]
__setitem__(k: int | str, v: alhambra.glues.Glue) None[source]#
insert(index: int, value: alhambra.glues.Glue) None[source]#
abstract __delitem__(k: int | str) None[source]#
__iter__() Iterator[alhambra.glues.Glue][source]#
__next__() Generator[alhambra.glues.Glue, None, None][source]#
__len__() int[source]#
__repr__() str[source]#

Return repr(self).

__str__() str[source]#

Return str(self).

class alhambra.tiles.UseView(_tile: Tile)[source]#

Bases: MutableMapping[int, alhambra.glues.Use]

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

_tile: Tile[source]#
__slots__ = '_tile'[source]#
__getitem__(k: int) alhambra.glues.Use[source]#
__getitem__(k: slice) list[alhambra.glues.Use]
__setitem__(k: int, v: alhambra.glues.Use) None[source]#
abstract insert(index: int, value: alhambra.glues.Use) None[source]#
__len__() int[source]#
__repr__() str[source]#

Return repr(self).

__str__() str[source]#

Return str(self).

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

Base class for a tile.

property structure[source]#
property use: Sequence[alhambra.glues.Use][source]#
property edges: EdgeView[source]#
abstract property edge_directions: List[D][source]#
abstract property edge_locations: List[EdgeLoc][source]#
abstract property rotations: List[Tile][source]#
property is_fake: bool[source]#
property xgname: str[source]#
name: str | None[source]#
_edges: List[alhambra.glues.Glue][source]#
color: Color | None[source]#
stoic: float | None[source]#
note: str | dict[str, Any] | None[source]#
fake: bool[source]#
uses: List[List[alhambra.glues.Use]][source]#
__slots__ = ('name', '_edges', 'color', 'stoic', 'note', 'fake', 'uses')[source]#
get_concentration(base_concentration: float) float[source]#
get_stoic(base_concentration: float) float[source]#

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

set_edge(i: int, glue: alhambra.glues.Glue) None[source]#
copy() T[source]#
abstract classmethod _get_edge_index(v: str) int[source]#
ident() str[source]#
merge(other) Tile[source]#
to_dict(refglues: set[str] = set()) dict[str, Any][source]#
update_glues(gluedict: alhambra.glues.GlueList[alhambra.glues.Glue]) None[source]#
update_glues_and_list(gluedict: alhambra.glues.GlueList[alhambra.glues.Glue]) None[source]#
static from_dict(d: dict[str, Any]) Tile[source]#
to_xgrow(gluenamemap: Callable[[str], str] = lambda x: ...) xgrow.tileset.Tile[source]#
abstract abstract_diagram(tileset: alhambra.tilesets.TileSet | None = None, draw_names: bool = True, draw_glues: bool = True) alhambra.drawing.Group[source]#
class alhambra.tiles.TileSupportingScadnano(edges: Iterable[alhambra.glues.Glue | str] | None = None, name: str | None = None, color: Color | None = None, stoic: float | None = None, note: str | None = None, domains: Iterable[alhambra.glues.SSGlue] | None = None)[source]#

Bases: abc.ABC, Tile

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

abstract property _scadnano_5p_offset: tuple[int, int][source]#
abstract to_scadnano(design: scadnano.Design, helix: int, offset: int) scadnano.Strand[source]#
class alhambra.tiles.SingleTile(edges: Iterable[alhambra.glues.Glue | str] | None = None, name: str | None = None, color: Color | None = None, stoic: float | None = None, note: str | dict[str, Any] | None = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)[source]#

Bases: Tile

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

property edge_directions: List[D][source]#
property edge_locations: List[EdgeLoc][source]#
classmethod _get_edge_index(v: str) int[source]#
abstract_diagram(tileset: alhambra.tilesets.TileSet | None = None, draw_names: bool = True, draw_glues: bool = True) alhambra.drawing.Group[source]#
class alhambra.tiles.VDupleTile(edges: Iterable[alhambra.glues.Glue | str] | None = None, name: str | None = None, color: Color | None = None, stoic: float | None = None, note: str | dict[str, Any] | None = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)[source]#

Bases: Tile

Base class for a tile.

property edge_directions: List[D][source]#
property edge_locations: List[EdgeLoc][source]#
to_xgrow(gluenamemap: Callable[[str], str] = lambda x: ...) xgrow.tileset.Tile[source]#
classmethod _get_edge_index(v: str) int[source]#
abstract_diagram(tileset: alhambra.tilesets.TileSet | None = None, draw_names: bool = True, draw_glues: bool = True) alhambra.drawing.Group[source]#
class alhambra.tiles.HDupleTile(edges: Iterable[alhambra.glues.Glue | str] | None = None, name: str | None = None, color: Color | None = None, stoic: float | None = None, note: str | dict[str, Any] | None = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)[source]#

Bases: Tile

Base class for a tile.

property edge_directions: List[D][source]#
property edge_locations: List[EdgeLoc][source]#
to_xgrow(gluenamemap: Callable[[str], str] = lambda x: ...) xgrow.tileset.Tile[source]#
classmethod _get_edge_index(v: str) int[source]#
abstract_diagram(tileset: alhambra.tilesets.TileSet | None = None, draw_names: bool = True, draw_glues: bool = True) alhambra.drawing.Group[source]#
class alhambra.tiles.SupportsGuards[source]#
abstract create_guards(directions: Collection[str | D] = (D.E, D.S)) list[alhambra.glues.Glue][source]#
class alhambra.tiles.BaseSSTile(edges: List[str | alhambra.glues.Glue] | None = None, name: str | None = None, color: Color | None = None, stoic: float | None = None, sequence: alhambra.seq.Seq | None = None, domains: Sequence[alhambra.glues.SSGlue] | None = None, note: str | None = None, use: Sequence[alhambra.glues.Use] | None = None, uses: Sequence[Sequence[alhambra.glues.Use]] | None = None)[source]#

Bases: SupportsGuards, TileSupportingScadnano

Base class for single-stranded tiles.

abstract property _base_domains: List[alhambra.glues.SSGlue][source]#
abstract property _base_edges: List[alhambra.glues.SSGlue][source]#
abstract property domains: List[alhambra.glues.SSGlue][source]#
abstract property edge_directions: list[D][source]#
property _sequence_length: int[source]#
property sequence: alhambra.seq.Seq[source]#
property edges[source]#
_edges: List[alhambra.glues.Glue][source]#
to_dict(refglues: set[str] = set()) dict[str, Any][source]#
abstract _input_neighborhood_domains() Sequence[Tuple[Sequence[str], Sequence[str]]][source]#
set_edge(i: int, glue: alhambra.glues.Glue) None[source]#
__repr__() str[source]#

Return repr(self).

__str__() str[source]#

Return str(self).

create_guards(directions: Collection[str | D] = (D.E, D.S)) list[alhambra.glues.Glue][source]#
alhambra.tiles._scadnano_color(color: str | None) scadnano.Color | None[source]#
class alhambra.tiles.BaseSSTSingle(edges: Iterable[alhambra.glues.Glue | str] | None = None, name: str | None = None, color: Color | None = None, stoic: float | None = None, note: str | dict[str, Any] | None = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)[source]#

Bases: SingleTile, BaseSSTile

Base class for a standard-orientation SST single tile.

property domains: List[alhambra.glues.SSGlue][source]#
property _base_edges: List[alhambra.glues.SSGlue][source]#
_edges: List[alhambra.glues.Glue][source]#
_input_neighborhood_domains() Sequence[Tuple[Sequence[str], Sequence[str]]][source]#
to_scadnano(design: scadnano.Design, helix: int, offset: int) scadnano.Strand[source]#
alhambra.tiles.Domain[source]#
class alhambra.tiles.BaseSSTSingleWithExtensions(edges: list[str | alhambra.glues.Glue] | None = None, name: str | None = None, color: Color | None = None, stoic: float | None = None, sequence: alhambra.seq.Seq | None = None, domains: list[Domain] | None = None, note: str | None = None, use: Sequence[alhambra.glues.Use] | None = None, uses: Sequence[Sequence[alhambra.glues.Use]] | None = None, mod5: alhambra.seq.Seq | str | int | dict | None = None, mod3: alhambra.seq.Seq | str | int | dict | None = None)[source]#

Bases: BaseSSTSingle

Base class for a standard-orientation SST single tile.

property domains: List[alhambra.glues.SSGlue][source]#
property _sequence_length: int[source]#
property sequence: alhambra.seq.Seq[source]#
mod5: Domain | None[source]#
mod3: Domain | None[source]#
to_dict(refglues: set[str] = set()) dict[str, Any][source]#
class alhambra.tiles.SST10_5S(edges: Iterable[alhambra.glues.Glue | str] | None = None, name: str | None = None, color: Color | None = None, stoic: float | None = None, note: str | dict[str, Any] | None = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)[source]#

Bases: BaseSSTSingle

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

property domains: List[alhambra.glues.SSGlue][source]#
property _base_edges: List[alhambra.glues.SSGlue][source]#
_base_domains: ClassVar[list[alhambra.glues.SSGlue]][source]#
_scadnano_offsets = ((), (), (1, 10), (1,))[source]#
_scadnano_5p_offset = (1, 21)[source]#
class alhambra.tiles.SST11_5S(edges: Iterable[alhambra.glues.Glue | str] | None = None, name: str | None = None, color: Color | None = None, stoic: float | None = None, note: str | dict[str, Any] | None = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)[source]#

Bases: BaseSSTSingle

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

property domains: List[alhambra.glues.SSGlue][source]#
property _base_edges: List[alhambra.glues.SSGlue][source]#
_base_domains: ClassVar[list[alhambra.glues.SSGlue]][source]#
_scadnano_offsets = ((), (), (1, 11), (1,))[source]#
_scadnano_5p_offset = (1, 21)[source]#
class alhambra.tiles.SST10(edges: Iterable[alhambra.glues.Glue | str] | None = None, name: str | None = None, color: Color | None = None, stoic: float | None = None, note: str | dict[str, Any] | None = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)[source]#

Bases: BaseSSTSingle

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

_base_domains: ClassVar[list[alhambra.glues.SSGlue]][source]#
_scadnano_offsets = ((), (), (1, 10), (1,))[source]#
_scadnano_5p_offset = (1, 21)[source]#
class alhambra.tiles.SST11(edges: Iterable[alhambra.glues.Glue | str] | None = None, name: str | None = None, color: Color | None = None, stoic: float | None = None, note: str | dict[str, Any] | None = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)[source]#

Bases: BaseSSTSingle

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

_base_domains: ClassVar[list[alhambra.glues.SSGlue]][source]#
_scadnano_offsets = ((), (), (1, 11), (1,))[source]#
_scadnano_5p_offset = (1, 21)[source]#
class alhambra.tiles.TileFactory[source]#
types: dict[str, Type[Tile]][source]#
register(c: Type[Tile], n: str | None = None) None[source]#
from_dict(d: dict[str, Any]) Tile[source]#
from_scadnano(d: scadnano.Strand | Iterable[scadnano.Strand], return_position: Literal[True]) tuple[TileSupportingScadnano, tuple[int, int]][source]#
from_scadnano(d: scadnano.Strand | Iterable[scadnano.Strand], return_position: Literal[False]) TileSupportingScadnano
alhambra.tiles.tile_factory[source]#
alhambra.tiles.SomeTile[source]#
class alhambra.tiles.TileList(initial: Iterable[T_NMI] = tuple())[source]#

Bases: Generic[SomeTile], alhambra.classes.UpdateListD[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
glues_from_tiles() alhambra.glues.GlueList[source]#
domains_from_tiles() alhambra.glues.GlueList[source]#
class alhambra.tiles.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)[source]#

Bases: Tile

Base class for a tile.

_edges: List[alhambra.glues.Glue][source]#
_strand_sequences: List[str] | None[source]#
to_dict(refglues: set[str] = set()) dict[str, Any][source]#
class alhambra.tiles.DAOESingle(edges: Iterable[alhambra.glues.Glue | str] | None = None, name: str | None = None, color: Color | None = None, stoic: float | None = None, note: str | dict[str, Any] | None = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)[source]#

Bases: SingleTile, DAOETile

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

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

Bases: DAOESingle

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

_baseglues: ClassVar[List[alhambra.glues.DXGlue]][source]#
_gluelocs = [(0,), (3,), (3,), (0,)][source]#
class alhambra.tiles.DAOESingle3p(edges: Iterable[alhambra.glues.Glue | str] | None = None, name: str | None = None, color: Color | None = None, stoic: float | None = None, note: str | dict[str, Any] | None = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)[source]#

Bases: DAOESingle

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

_baseglues: ClassVar[List[alhambra.glues.DXGlue]][source]#
_gluelocs = [(0,), (3,), (3,), (0,)][source]#
class alhambra.tiles.DAOEHDouble3p(edges: Iterable[alhambra.glues.Glue | str] | None = None, name: str | None = None, color: Color | None = None, stoic: float | None = None, note: str | dict[str, Any] | None = None, use: Sequence[alhambra.glues.Use | int | str] | None = None, fake: bool = False, uses: Sequence[Sequence[alhambra.glues.Use | int | str]] | None = None)[source]#

Bases: HDupleTile, DAOETile

Base class for a tile.

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

Bases: HDupleTile, DAOETile

Base class for a tile.

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

Bases: VDupleTile, DAOETile

Base class for a tile.

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

Bases: VDupleTile, DAOETile

Base class for a tile.