def __init__(self, factors): super(TensorProductDistribution, self).__init__( basis=tensor_product_basis( factor.basis for factor in factors ) ) self._factors = tuple(factors)
def __init__(self, basis, rank=None, enforce_tp=True): if isinstance(basis, int): basis = gell_mann_basis(basis) self._hdim = basis.dim # TODO: take basis on underlying space, tensor up? channel_basis = tensor_product_basis(basis, basis) # FIXME: this is a hack to get another level of nesting. channel_basis.dims = [basis.dims, basis.dims] channel_basis.superrep = 'choi' super(BCSZChoiDistribution, self).__init__(channel_basis) self._rank = rank self._enforce_tp = enforce_tp