Skip to content

Commit

Permalink
Update with Multiplicities
Browse files Browse the repository at this point in the history
  • Loading branch information
lkdvos committed Sep 21, 2023
1 parent 13ae70e commit 02e6b0f
Show file tree
Hide file tree
Showing 21 changed files with 678 additions and 888 deletions.
1 change: 1 addition & 0 deletions .JuliaFormatter.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
style = "yas"
7 changes: 7 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
60 changes: 46 additions & 14 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,71 @@ name: CI
on:
push:
branches:
- main
tags: ['*']
- 'master'
- 'main'
- 'release-'
tags: '*'
pull_request:
workflow_dispatch:

concurrency:
# Skip intermediate builds: always.
# Cancel intermediate builds: only if it is a pull request build.
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}
cancel-in-progress: true

jobs:
test:
name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }}
name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
version:
- '1.6'
- '1'
- 'nightly'
- '1.6' # LTS version
- '1' # automatically expands to the latest stable 1.x release of Julia
os:
- ubuntu-latest
- macOS-latest
- windows-latest
arch:
- x64
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v1
with:
version: ${{ matrix.version }}
arch: ${{ matrix.arch }}
- uses: julia-actions/cache@v1
- uses: julia-actions/julia-buildpkg@v1
- uses: julia-actions/julia-runtest@v1
- uses: julia-actions/julia-buildpkg@latest
- uses: julia-actions/julia-runtest@latest
env:
JULIA_NUM_THREADS: 4
- uses: julia-actions/julia-processcoverage@v1
- uses: codecov/codecov-action@v2
- uses: codecov/codecov-action@v3
with:
files: lcov.info
file: lcov.info
test-nightly:
needs: test
name: Julia nightly - ${{ matrix.os }} - ${{ matrix.arch }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
version:
- 'nightly'
os:
- ubuntu-latest
- macOS-latest
- windows-latest
arch:
- x64
steps:
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v1
with:
version: ${{ matrix.version }}
arch: ${{ matrix.arch }}
- uses: julia-actions/cache@v1
- uses: julia-actions/julia-buildpkg@latest
- uses: julia-actions/julia-runtest@latest
env:
JULIA_NUM_THREADS: 4
2 changes: 2 additions & 0 deletions .github/workflows/CompatHelper.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
name: CompatHelper

on:
schedule:
- cron: 0 0 * * *
workflow_dispatch:

jobs:
CompatHelper:
runs-on: ubuntu-latest
Expand Down
47 changes: 47 additions & 0 deletions .github/workflows/FormatCheck.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: FormatCheck

on:
push:
branches:
- 'main'
- 'master'
- 'release-'
tags: '*'
pull_request:

jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
version:
- '1' # automatically expands to the latest stable 1.x release of Julia
os:
- ubuntu-latest
arch:
- x64
steps:
- uses: julia-actions/setup-julia@latest
with:
version: ${{ matrix.version }}
arch: ${{ matrix.arch }}

- uses: actions/checkout@v4
- name: Install JuliaFormatter and format
# This will use the latest version by default but you can set the version like so:
#
# julia -e 'using Pkg; Pkg.add(PackageSpec(name="JuliaFormatter", version="0.13.0"))'
run: |
julia -e 'using Pkg; Pkg.add(PackageSpec(name="JuliaFormatter"))'
julia -e 'using JuliaFormatter; format(".", verbose=true)'
- name: Format check
run: |
julia -e '
out = Cmd(`git diff --name-only`) |> read |> String
if out == ""
exit(0)
else
@error "Some files have not been formatted !!!"
write(stdout, out)
exit(1)
end'
2 changes: 2 additions & 0 deletions .github/workflows/TagBot.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
name: TagBot

on:
issue_comment:
types:
- created
workflow_dispatch:

jobs:
TagBot:
if: github.event_name == 'workflow_dispatch' || github.actor == 'JuliaTagBot'
Expand Down
6 changes: 3 additions & 3 deletions Artifacts.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[fusiondata]
git-tree-sha1 = "fca6fd8f9067457a04423db3769be7dbc09fed52"
git-tree-sha1 = "a50388a06672a690097b50854354b417294fabea"

[[fusiondata.download]]
url = "https://github.com/JCBridgeman/smallRankUnitaryFusionData/tarball/a6ba1c3/"
sha256 = "85fae993c55c314034254a639101f20dbe32f6b3c783b796403fb87b69157ca5"
url = "https://github.com/lkdvos/CategoryData.jl/archive/refs/tags/data-v0.1.0.tar.gz"
sha256 = "f80739d99a0f5ddbd88fa96d6b3cf8d977d9a9b8b18d75a2a8e65b02ed26aa41"

9 changes: 6 additions & 3 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "CategoryData"
uuid = "8fccf25a-f50e-468c-8fba-3cb130506274"
authors = ["Lukas Devos", "Jacob Bridgeman"]
version = "0.1.0"
version = "0.2.0"

[deps]
Downloads = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
Expand All @@ -15,11 +15,14 @@ TensorKit = "07d1fe3e-3e46-537d-9eac-e9e13d0d4cec"
[compat]
Inflate = "0.1"
SparseArrayKit = "0.2, 0.3"
TensorKit = "0.10"
TensorKit = "0.11"
julia = "1.6"

[extras]
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
TestExtras = "5ed8adda-3752-4e41-b88a-e8b09835ee3a"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"

[targets]
test = ["Test"]
test = ["Test", "TestExtras", "LinearAlgebra", "Random"]
19 changes: 14 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,28 @@
[![Build Status](https://github.com/lkdvos/CategoryData.jl/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/lkdvos/CategoryData.jl/actions/workflows/CI.yml?query=branch%3Amain)
[![Coverage](https://codecov.io/gh/lkdvos/CategoryData.jl/branch/main/graph/badge.svg)](https://codecov.io/gh/lkdvos/CategoryData.jl)

This package 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 in the [Anyon Wiki](http://www.thphys.nuim.ie/AnyonWiki/index.php/List_of_small_multiplicity-free_fusion_rings).
This package 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
in the
[Anyon Wiki](http://www.thphys.nuim.ie/AnyonWiki/index.php/List_of_small_multiplicity-free_fusion_rings).

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

The fusion categories adhere to a hierarchical structure of exported abstract types:
```julia
PreModularFusionCategory{R,N,I,D₁,D₂} <: UnitaryFusionCategory{R,N,I,D₁} <: FusionRing{R,N,I}
BraidedCategory <: FusionCategory <: FusionRing
```
which indicate implementations of fusion rules (`Nsymbol`), associators (`Fsymbol`) and braidings (`Rsymbol`). The naming is such that `R` indicates the rank, `N` the amount of non-self-dual objects, `I` the fusion ring index, such that equal values imply the same objects and fusion rules. `D₁` is the category index, enumerating different solutions for `Fsymbol` of the pentagon equation, while `D₂` enumerates different solutions of `Rsymbol` the hexagon equation.

Objects in these categories are identified with integers ranging from `1` to `R`, where the unit is always `1`. These can then be used as any other `Sector` for constructing `TensorMap`s.
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 `TensorMap`s.

```julia
using TensorKit, CategoryData
𝒞 = PreModularFusionCategory{2,0,2,0,0} # Fibonacci category
𝒞 = CategoryData.Fib # Fibonacci category
𝒪 = Object{𝒞}
@show collect(values(𝒪)) # 1 -> I, 2 -> τ

Expand Down
Loading

2 comments on commit 02e6b0f

@lkdvos
Copy link
Owner Author

@lkdvos lkdvos commented on 02e6b0f Sep 21, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Registration pull request created: JuliaRegistries/General/91934

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:

git tag -a v0.2.0 -m "<description of version>" 02e6b0fc480a97f603436d3d8dc40042f625c369
git push origin v0.2.0

Please sign in to comment.