The La Jolla Circulant Weighing Matrix Repository
The La Jolla Circulant Weighing Matrix Repository¶
This page is a jupyter notebook which allows users to access the data.
A circulant weighing matrix is an \(n \times n\) matrix \(W\) with entries from \(\{0, \pm 1 \}\) where each row is a cyclic shift of the one before, and
Tan gave tables with existence results for \(n \leq 200\) and \(k \leq 100\). Arasu, Gordon and Zhang settled 12 of 34 open cases.
This Jupyter notebook gives access to a database of known circulant weighing matrices and existence results for \(n \leq 1000\) and \(k < 20^2\). To run it, use the binder launch button above.
import pandas as pd
cwparams = pd.read_csv('cwmparams.csv', sep=' ')
cwparams is a database of known existence results.
cwparams.head()
n | s | Status | Reference | |
---|---|---|---|---|
0 | 4 | 2 | All | Eades and Hain |
1 | 5 | 2 | No | Eades and Hain |
2 | 6 | 2 | All | Eades and Hain |
3 | 7 | 2 | All | Eades |
4 | 8 | 2 | All | Eades and Hain |
cwlist = pd.read_csv('cwmlist.csv', sep=' ')
cwlist is a database of known circulant weighing matrices.
cwlist.head()
n | s | P | N | Reference | |
---|---|---|---|---|---|
0 | 4 | 2 | 1,2,3 | 0 | Eades and Hain |
1 | 6 | 2 | 1,3,4 | 0 | Eades and Hain |
2 | 7 | 2 | 1,2,4 | 0 | Eades and Hain |
3 | 8 | 2 | 1,4,5 | 0 | Eades and Hain |
4 | 8 | 2 | 2,4,6 | 0 | Eades and Hain |
from cwm_code import *
cwm_code.py contains Python functions to access the database.
get_status(cwparams,28,3)
No CW(28,3^2)s exist
Reference: Ang, Arasu, Ma and Strassler
get_status() checks what is known about some parameters.
show(cwlist,28,4)
10 CW(28,16)s in database
P: {0,3,5,9,16,17,18,19,23,24}, N: {1,2,4,10,14,15}
P: {1,2,3,4,8,16,18,19,22,23}, N: {0,5,9,14,15,17}
P: {0,1,2,9,11,15,18,22,23,25}, N: {4,7,8,14,16,21}
P: {0,3,4,5,9,17,19,20,22,23}, N: {1,6,8,14,15,18}
P: {1,2,4,5,8,16,18,21,22,23}, N: {0,7,9,14,15,19}
P: {0,2,3,5,9,17,18,19,22,23}, N: {1,4,8,14,15,16}
P: {1,2,4,7,8,15,20,21,22,24}, N: {0,6,10,14,16,18}
P: {0,1,2,4,7,14,15,20,21,24}, N: {6,8,10,16,18,22}
P: {0,1,2,4,8,14,15,20,22,24}, N: {6,7,10,16,18,21}
P: {0,2,4,7,8,14,20,21,22,24}, N: {1,6,10,15,16,18}
show() displays all known CW’s for a set of parameters.
C = get_cw(cwlist,28,4,3)
get_cw(n,s,i) pulls the \(i\)th \(CW(n,s^2)\) out of the database.
is_cw(C)
P = [0, 3, 4, 5, 9, 17, 19, 20, 22, 23],
N = [1, 6, 8, 14, 15, 18]
is a CW(28,4^2)
True
is_cw(C) verifies that \(C\) is actually a circulant weighing matrix.
n_range = [50,100]
s_range = [4,6]
comment = 'Arasu'
status = ['Yes','All']
search_cwm(cwparams,n_range,s_range,comment,status)
56 4 Yes Arasu et al., 2006
62 4 Yes Arasu et al., 2006
70 4 Yes Arasu et al., 2006
84 4 Yes Arasu et al., 2006
93 4 All Arasu et al., 2006
98 4 Yes Arasu et al., 2006
66 5 All Arasu and Torban 1999
99 5 All Arasu and Torban 1999
91 6 Yes Arasu and Seberry (1998)
search_cwm() reproduces the behavior of the original CWM website. It takes a range of \(n\) and \(s\), comment string and status list, and prints the parameters in the dataset matching the search.