Periodicity

Not everything worth describing is a crystal. A slab is periodic in two directions, a nanowire in one, a molecule in none. A Cell records which of its three directions actually repeat, so httk can represent all of them and reject operations that only make sense for a crystal:

from httk.atomistic import Cell

cell = Cell([[3, 0, 0], [0, 3, 0], [0, 0, 1]], periodicity=(True, True, False))
cell.periodicity             # (True, True, False) — a slab

The default is (True, True, True): a fully periodic crystal.

The full guide, Periodicity in detail, covers the frame-not-a-box rule for aperiodic directions, what changes (wrapping, identity, volume), which operations are refused, marking a structure as a slab, and serving nperiodic_dimensions/dimension_types over OPTIMADE.