Source code for src.domains.hamming_space

import numpy as np
from nifty8 import RGSpace
from functools import reduce

[docs] class HammingSpace(RGSpace): """Represents a Hamming Space Parameters: ----------- alphabet : list of strings alphabet of the Hamming space. wordlength : int Number of letters in each word. """
[docs] def __init__(self, alphabet, wordlength): self._harmonic = False if not isinstance(wordlength,(int,np.int64)): raise ValueError('Non-integer wordlength encountered') if not isinstance(alphabet,list): raise ValueError('Alphabet needs to be a list') self._alphabet = alphabet self._wordlength = wordlength self._shape = (len(self.alphabet),)*self.wordlength # distances = 1. self._rdistances = (float(distances),) * len(self._shape) self._hdistances = tuple( 1. / (np.array(self.shape)*np.array(self._rdistances))) # self._dvol = 1. self._size = int(reduce(lambda x, y: x*y, self._shape))
def __repr__(self): return ("HammingSpace(alphabet={}, wordlength={})" .format(self.alphabet, self.wordlength)) @property def alphabet(self): return self._alphabet @property def wordlength(self): return self._wordlength