GeometricKernels
GeometricKernels copied to clipboard
Signature mismatch for SpecialUnitary space
Bug
The list of signatures in WeylAdditionTheorem._signatures
for SpecialUnitary(5)
does not match the list of precomputed signatures in precomputed_characters.json
(although the sizes of these two lists are equal).
In particular, WeylAdditionTheorem._signatures
contains (3, 0, 0, 0, 0)
and does not contain (3, 3, 3, 3, 0)
while for precomputed_characters.json
it is the other way around.
To reproduce
The simple code
import geometric_kernels
from geometric_kernels.spaces import SpecialUnitary
from geometric_kernels.kernels.matern_kernel import default_num
eigenfunctions = space.get_eigenfunctions(default_num(space))
gives
KeyError Traceback (most recent call last)
Cell In[5], line 1
----> 1 eigenfunctions = space.get_eigenfunctions(default_num(space))
File ~/Workspace/GeometricKernels/geometric_kernels/spaces/su.py:205, in SpecialUnitary.get_eigenfunctions(self, num)
197 def get_eigenfunctions(self, num: int) -> Eigenfunctions:
198 """
199 Returns the :class:`~.SUEigenfunctions` object with `num` levels
200 and order n.
(...)
203 Number of levels.
204 """
--> 205 return SUEigenfunctions(self.n, num)
File ~/Workspace/GeometricKernels/geometric_kernels/spaces/su.py:40, in SUEigenfunctions.__init__(self, n, num_levels, compute_characters)
36 self.rank = n - 1
38 self.rho = np.arange(self.n - 1, -self.n, -2) * 0.5
---> 40 super().__init__(n, num_levels, compute_characters)
File ~/Workspace/GeometricKernels/geometric_kernels/spaces/lie_groups.py:93, in WeylAdditionTheorem.__init__(self, n, num_levels, compute_characters)
91 if compute_characters:
92 print("self._signatures", self._signatures)
---> 93 self._characters = [
94 self._compute_character(n, signature) for signature in self._signatures
95 ]
96 self._num_eigenfunctions: Optional[int] = None
File ~/Workspace/GeometricKernels/geometric_kernels/spaces/lie_groups.py:94, in <listcomp>(.0)
91 if compute_characters:
92 print("self._signatures", self._signatures)
93 self._characters = [
---> 94 self._compute_character(n, signature) for signature in self._signatures
95 ]
96 self._num_eigenfunctions: Optional[int] = None
File ~/Workspace/GeometricKernels/geometric_kernels/spaces/su.py:86, in SUEigenfunctions._compute_character(self, n, signature)
83 def _compute_character(
84 self, n: int, signature: Tuple[int, ...]
85 ) -> LieGroupCharacter:
---> 86 return SUCharacter(n, signature)
File ~/Workspace/GeometricKernels/geometric_kernels/spaces/su.py:115, in SUCharacter.__init__(self, n, signature)
113 self.signature = signature
114 self.n = n
--> 115 self.coeffs, self.monoms = self._load()
File ~/Workspace/GeometricKernels/geometric_kernels/spaces/su.py:127, in SUCharacter._load(self)
125 return coeffs, monoms
126 except KeyError as e:
--> 127 raise KeyError(
128 "Unable to retrieve character parameters for signature {} of {}, "
129 "perhaps it is not precomputed."
130 "Run compute_characters.py with changed parameters.".format(
131 e.args[0], group_name
132 )
133 ) from None
KeyError: 'Unable to retrieve character parameters for signature (3, 0, 0, 0, 0) of SU(5), perhaps it is not precomputed.Run compute_characters.py with changed parameters.'
Expected behavior
Same lists, no exception.
System information
- GeometricKernels version: 1ef797b
- Python version: 3.10
- Operating system: macOS 14.2.1