pyhdc: Top-Level Module
Version and availability
Convenience functions
These functions are thin wrappers that delegate to the first hypervector’s encoding. They are provided for concise one-off calls.
- pyhdc.generate(encoding, size, use_generator=None)[source]
Generate one or more hypervectors using
encoding.- Parameters:
encoding – An instantiated
Encodingobject.size – an
intfor a single vector of that dimension, or a dimension-firsttuple(D, *batch)for a batch. Axis 0 is always the hypervector dimensionD, the trailing axes are the batch.(D, N)returns(D, N)(Ncolumns, each a hypervector);(D, N, M)returns(D, N, M)(N * Mhypervectors). A non-int / non-tuplesizeraisesValueError. (TheEncoding.generate()method also acceptsNoneto default to the encoding dimension. This module-level wrapper requiressize.)use_generator – Override the encoding’s generator setting.
Trueforces the custom generator,Falseforces NumPy’s default.
- Returns:
A
Hypervector.
Reproducibility. Under a fixed seed and a given batch shape, batched generation reproduces itself. With the i.i.d. element generators the whole
(D, *batch)array is drawn in one vectorized call, so the result is not value-identical to generating theNvectors one at a time. Ordered generators (LCG, LFSR, and the rest), any customHDCGenerator, andSparseSegmenteduse a per-vector loop which does matchNsuccessivegenerate(enc, size=D)calls. See How to Make Experiments Reproducible.enc = pyhdc.MAP_C(dimension=10_000) hv = pyhdc.generate(enc, size=10_000) # (10000,) batch = pyhdc.generate(enc, size=(10_000, 100)) # (10000, 100) tensor = pyhdc.generate(enc, size=(10_000, 8, 4)) # (10000, 8, 4)
- pyhdc.zeros(encoding, size=None)[source]
Return a zero-valued hypervector (or batch) for
encoding.- Parameters:
encoding – An instantiated
Encodingobject.size – Same as for
generate().
- Returns:
A
Hypervectorfilled with zeros.
zero = pyhdc.zeros(enc)
- pyhdc.bundle(*hypervectors)[source]
Bundle two or more hypervectors using the encoding of the first argument.
- Parameters:
hypervectors – Two or more
Hypervectorobjects produced by the same encoding.- Returns:
A
Hypervector.
result = pyhdc.bundle(hv1, hv2, hv3)
- pyhdc.bind(*hypervectors)[source]
Bind two or more hypervectors using the encoding of the first argument.
- Parameters:
hypervectors – Two or more
Hypervectorobjects.- Returns:
A
Hypervector.
result = pyhdc.bind(key, value)
- pyhdc.unbind(*hypervectors)[source]
Unbind hypervectors using the encoding of the first argument, the inverse of
bind().- Parameters:
hypervectors – Two or more
Hypervectorobjects.- Returns:
A
Hypervector.
value = pyhdc.unbind(bound, key)
- pyhdc.permute(hypervector, shift=1)[source]
Cyclic-shift permutation along axis 0 (the dimension). A negative
shiftis the exact inverse of the positive shift.permuteis defined for every encoding.- Parameters:
hypervector – A
Hypervector(vector or batch).shift – Integer number of positions to roll along axis 0. Default
1.
- Returns:
A
Hypervector.
shifted = pyhdc.permute(hv, shift=3) restored = pyhdc.permute(shifted, shift=-3) # == hv
- pyhdc.inverse(hypervector)[source]
Return the binding inverse of
hypervector. RaisesNotImplementedErrorfor encodings that do not define one (MAP_C, VTB, MBAT, and the BSDC family).- Parameters:
hypervector – A
Hypervector.- Returns:
A
Hypervector.
inv = pyhdc.inverse(hv)
- pyhdc.negative(hypervector)[source]
Return the bundling (additive) inverse of
hypervector, element-wise negation. RaisesNotImplementedErrorfor encodings that do not define one (FHRR, BSC, and the BSDC family).- Parameters:
hypervector – A
Hypervector.- Returns:
A
Hypervector.
neg = pyhdc.negative(hv)
- pyhdc.normalize(hypervector)[source]
Return the canonical form of
hypervectorfor its encoding (sign for MAP, unit L2 length for HRR/VTB/MBAT, wrapped phase for FHRR). RaisesNotImplementedErrorfor encodings that do not define one (BSC and the BSDC family).- Parameters:
hypervector – A
Hypervector.- Returns:
A
Hypervector.
canon = pyhdc.normalize(hv)
- pyhdc.stack(hypervectors)[source]
Combine hypervectors and/or batches into one dimension-first
(D, N)batch by concatenating along the batch axis. A 1-D(D,)vector is treated as a single column(D, 1). Backend-agnostic (NumPy or PyTorch).- Parameters:
hypervectors – A list of
Hypervectorobjects (vectors or(D, N)batches) sharing a backend.- Returns:
A single
Hypervectorof shape(D, total_columns).
proto = enc.generate() # (10000,) codebook = enc.generate(size=(10_000, 50)) # (10000, 50) combined = pyhdc.stack([proto, codebook]) # (10000, 51); proto is column 0
Global backend and device defaults
Set a process-wide default backend/device; encodings created without an
explicit backend / device argument inherit it.
- pyhdc.prefer_torch(device=None)[source]
Make PyTorch the default backend (optionally pinning
device). RaisesImportErrorif PyTorch is not installed.
Encoding classes
All encoding classes are imported at the top level:
See Encoding Classes for full documentation of each class.
Exception classes
All exception classes are imported at the top level:
See Exceptions for details.
Generator base classes
HDCGenerator: abstract base for all generatorsDefaultGenerator: NumPy-backed default
See Generation Module for the full family listing.