Source code for qailab.utils

 1""" Utility functions """
 2import itertools
 3import numpy as np
 4
 5
[docs] 6def number_to_bit_tuple(number: int, size: int) -> tuple[int, ...]: 7 """Changes number to tuple of bits. 8 9 Args: 10 number (int): number 11 12 Returns: 13 tuple[int]: tuple with bits 14 """ 15 bits = list(map(int, bin(int(number))[2:])) 16 bits = [0] * (size - len(bits)) + bits 17 return tuple(map(int, bits))
18 19
[docs] 20def distribution_to_array(distribution: dict[tuple[int, ...], float]) -> np.ndarray: 21 """Changes the distribution into the one dimensional array with size 2^n of respective values for each permutation. 22 23 Args: 24 distribution (dict[tuple[int, ...], float]): the distribution in given format. 25 26 Returns: 27 np.ndarray: one dimensional array of given distribution. 28 """ 29 size = len(next(iter(distribution.keys()))) 30 array = np.zeros((2**size,)) 31 for ind, combination in enumerate(itertools.product((0, 1), repeat=size)): 32 array[ind] = distribution[combination] 33 return array