CategoryData.jl logo


TensorKit.jl extension for low rank unitary fusion categories, using smallRankUnitaryFusionData and the AnyonWiki

Build Status Coverage

This package currently provides TensorKit's sectortypes for all objects of multiplicity-free (braided) fusion categories up to rank 6. The full list, along with the naming convention can be found here.

Additionally, some specific categories with multiplicities have also been added.

The fusion categories adhere to a hierarchical structure of exported abstract types:

BraidedCategory <: FusionCategory <: FusionRing

which indicate implementations of fusion rules (Nsymbol), associators (Fsymbol) and braidings (Rsymbol).

Objects in these categories are identified with integers ranging from 1 to R, where $R$ is the rank of the category and the identity object is always 1. These can then be used as any other Sector for constructing TensorMaps.

using TensorKit, CategoryData
๐’ž = CategoryData.Fib # Fibonacci category
๐’ช = Object{๐’ž}
@show collect(values(๐’ช))                    # 1 -> I, 2 -> ฯ„

t = TensorMap(rand, ComplexF64, Vect[๐’ช](1 => 2, 2 => 2) โ† Vect[๐’ช](1 =>2, 2 => 2))


The data for the fusion categories is stored in the data github branch, and retrieved using the Artifacts package. In particular, in order to add to, or change the data, the following steps should be taken:

  1. Update the data github branch with the new data.
  2. Release/tag a new version of the data data-vX.Y.Z, which can then be registered as an artifact.
  3. Check the url of the release, which should be of the following form ""
  4. Switch to the main branch, and update the Artifact.toml file. This can be done either manually, or by using ArtifactUtils.jl:
julia> using ArtifactUtils
julia> add_artifact("Artifacts.toml", "fusiondata", ""; force=true);
  1. Update the artifact_path constant in the source code src/artifacts.jl.
  2. Push the changes to the main branch.