Skip to content

Commit

Permalink
Trac #19463: A coding/two_weight_db module
Browse files Browse the repository at this point in the history
This ticket creates a new coding/two_weight_db module.

In it are stored all codes that were stored in
graphs/strongly_regular_db.pyx. I expect that this file will change
heavily, if we end up enriching our list of two weight codes for their
own sake.

A first commit moves out of the `strongly_regular_graph` function the
code that builds the database of small strongly regular graphs. Which
turned out to be a good idea later, as building this list actually takes
some time in order to guess the parameters of the SRG from the 2-weight
code.

Nathann

URL: http://trac.sagemath.org/19463
Reported by: ncohen
Ticket author(s): Nathann Cohen
Reviewer(s): Dima Pasechnik
  • Loading branch information
Release Manager authored and vbraun committed Nov 28, 2015
2 parents d1c3af6 + a865eb3 commit 4bd30a6
Show file tree
Hide file tree
Showing 3 changed files with 505 additions and 637 deletions.
2 changes: 2 additions & 0 deletions src/doc/en/reference/coding/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,7 @@ Coding Theory
sage/coding/delsarte_bounds
sage/coding/source_coding/huffman
sage/coding/binary_code
sage/coding/decoder
sage/coding/two_weight_db

.. include:: ../footer.txt
347 changes: 347 additions & 0 deletions src/sage/coding/two_weight_db.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,347 @@
r"""
Database of two-weight codes
This module stores a database of two-weight codes.
{DB_INDEX}
REFERENCE:
.. [BS03] I. Bouyukliev and J. Simonis,
Some new results on optimal codes over `F_5`,
Designs, Codes and Cryptography 30, no. 1 (2003): 97-111,
http://www.moi.math.bas.bg/moiuser/~iliya/pdf_site/gf5srev.pdf,
.. [ChenDB] Eric Chen,
Online database of two-weight codes,
http://moodle.tec.hkr.se/~chen/research/2-weight-codes/search.php
.. [Kohnert07] A. Kohnert,
Constructing two-weight codes with prescribed groups of automorphisms,
Discrete applied mathematics 155, no. 11 (2007): 1451-1457.
http://linearcodes.uni-bayreuth.de/twoweight/
TESTS:
Check the data's consistency::
sage: from sage.coding.two_weight_db import data
sage: for code in data:
....: M = code['M']
....: assert code['n'] == M.ncols()
....: assert code['k'] == M.nrows()
....: w1,w2 = [w for w,f in enumerate(LinearCode(M).weight_distribution()) if w and f]
....: assert (code['w1'], code['w2']) == (w1, w2)
"""
from sage.rings.finite_rings.constructor import FiniteField as GF
from sage.matrix.constructor import Matrix
from sage.coding.linear_code import LinearCode

# The following is a list of two-weight codes stored as dictionaries. Each entry
# sets the base field, the matrix and the source: other parameters are computed
# automatically


data = [
{
'n' : 68,
'k' : 8,
'w1': 32,
'w2': 40,
'K' : GF(2),
'M' : ("10000000100111100110000001101000100111000011100101011010111111010110",
"01000000010011110011000000110100010011100001110010101101011111101011",
"00100000001001111101100000011010001001110000111001010110101111110101",
"00010000100011011100110001100101100011111011111001100001101000101100",
"00001000110110001100011001011010011110111110011001111010001011000000",
"00000100111100100000001101000101101000011100101001110111111010110110",
"00000010011110010000000110100010111100001110010100101011111101011011",
"00000001001111001100000011010001011110000111001010010101111110101101"),
'source': "Shared by Eric Chen [ChenDB]_.",
},
{
'n' : 140,
'k' : 6,
'w1': 90,
'w2': 99,
'K' : GF(3),
'M' : ("10111011111111101110101110111100111011111011101111101001001111011011011111100100111101000111101111101100011011001111101110111110101111111001",
"01220121111211011101011101112101220022120121011222010110011010120110112112001101021010101111012211011000020110012221212101011101211122020011",
"22102021112110111120211021122012100012202220112110101200110101202102122120011110020201211110021210110000101200121222122010211022211210110101",
"11010221121101111102210221220221000111011101121102012101101012012022222000211200202012211100111201200001122001211011120102110212212102121001",
"20201121211111111012202022201210001220122121211010121011010020110121220201212002010222011001111012100011010212110021202021102112221012110011",
"02022222111111110112020112011200022102212222110102210110100101102211201211220020002120110011110221100110002121100222120211021112010112220101"),
'source': "Found by Axel Kohnert [Kohnert07]_ and shared by Alfred Wassermann.",
},
{
'n' : 98,
'k' : 6,
'w1': 63,
'w2': 72,
'K' : GF(3),
'M' : ("10000021022112121121110122000110112002010011100120022110120200120111220220122120012012100201110210",
"01000020121020200200211101202121120002211002210100021021202220112122012212101102010210010221221201",
"00100021001211011111111202120022221002201111021101021212210122101020121111002000210000101222202000",
"00010022122200222202201212211112001102200112202202121201211212010210202001222120000002110021000110",
"00001021201002010011020210221221012112200012020011201200111021021102212120211102012002011201210221",
"00000120112212122122202110022202210010200022002120112200101002202221111102110100210212001022201202"),
'source': "Shared by Eric Chen [ChenDB]_.",
},
{
'n' : 84,
'k' : 6,
'w1': 54,
'w2': 63,
'K' : GF(3),
'M' : ("100000210221121211211212100002020022102220010202100220112211111022012202220001210020",
"010000201210202002002200010022222022012112111222010212120102222221210102112001001022",
"001000210012110111111202101021212221000101021021021211021221000111100202101200010122",
"000100221222002222022202010121111210202200012001222011212000211200122202100120211002",
"000010212010020100110002001011101112122110211102212121200111102212021122100010201120",
"000001201122121221222212000110100102011101201012001102201222221110211011100001200102"),
'source': "Shared by Eric Chen [ChenDB]_.",
},
{
'n' : 56,
'k' : 6,
'w1': 36,
'w2': 45,
'K' : GF(3),
'M' : ("10000021022112022210202200202122221120200112100200111102",
"01000020121020221101202120220001110202220110010222122212",
"00100021001211211020022112222122002210122100101222020020",
"00010022122200010012221111121001121211212002110020010101",
"00001021201002220211121011010222000111021002011201112112",
"00000120112212111201011001002111121101002212001022222010"),
'source': "Shared by Eric Chen [ChenDB]_.",
},
{
'n' : 65,
'k' : 4,
'w1': 50,
'w2': 55,
'K' : GF(5),
'M' : ("10004323434444234221223441130101034431234004441141003110400203240",
"01003023101220331314013121123212111200011403221341101031340421204",
"00104120244011212302124203142422240001230144213220111213034240310",
"00012321211123213343321143204040211243210011144140014401003023101"),
'source': "Shared by Eric Chen [ChenDB]_.",
},
{
'n' : 52,
'k' : 4,
'w1': 40,
'w2': 45,
'K' : GF(5),
'M' : ("1000432343444423422122344123113041011022221414310431",
"0100302310122033131401312133032331123141114414001300",
"0010412024401121230212420301411224123332332300210011",
"0001232121112321334332114324420140440343341412401244"),
'source': "Shared by Eric Chen [ChenDB]_.",
},
{
'n' : 39,
'k' : 4,
'w1': 30,
'w2': 35,
'K' : GF(5),
'M' : ("111111111111111111111111111111000000000",
"111111222222333333444444000000111111000",
"223300133440112240112240133440123400110",
"402340414201142301132013234230044330401"),
'source': "From Bouyukliev and Simonis ([BS03]_, Theorem 4.1)",
},
{
'n' : 55,
'k' : 5,
'w1': 36,
'w2': 45,
'K' : GF(3),
'M' : ("1000010122200120121002211022111101011212112022022020002",
"0100011101120102100102202121022211112000020211221222002",
"0010021021222220122011212220021121100021220002100102201",
"0001012221012012100200102211110211121211201002202000222",
"0000101222101201210020110221111020112121120120220200022"),
'source': "Shared by Eric Chen [ChenDB]_.",
},
{
'n' : 126,
'k' : 6,
'w1': 81,
'w2': 90,
'K' : GF(3),
'M' : ("100000210221121211211101220021210000100011020200201101121021122102020111100122122221120200110001010222000021110110011211110210",
"010000201210202002002111012020001001110012222220221211200120201212222102210100001110202220121001110211200120221121012001221201",
"001000210012110111111112021220210102211012212122200222212000112220212011021102122002210122122101120210120100102212112112202000",
"000100221222002222022012122120201012021112211112111120010221100121011012202201001121211212002211120210012201120021222121000110",
"000010212010020100110202102200200102002122111011112210121010202111121212020010222000111021000222122210001011222102100121210221",
"000001201122121221222021100221200012000220101001022022100122112010102222002122111121101002200020221110000122202000221222201202"),
'source': "Shared by Eric Chen [ChenDB]_.",
},
{
'n' : 154,
'k' : 6,
'w1': 99,
'w2': 108,
'K' : GF(3),
'M' : ("10000021022112121121110122002121000010001102020020110112102112202221021020201"+
"20202212102220222022222110122210022201211222111110211101121002011102101111002",
"01000020121020200200211101202000100111001222222022121120012020122110122122221"+
"02222102012112111221111021101101021121002001022221202211100102212212010222102",
"00100021001211011111111202122021010221101221212220022221200011221102002202120"+
"20121121000101000111020212200020121210011112210001001022001012222020000100212",
"00010022122200222202201212212020101202111221111211112001022110001001221210110"+
"12211020202200222000021101010212001022212020002112011200021100210001100121020",
"00001021201002010011020210220020010200212211101111221012101020222021111111212"+
"11120012122110211222201220220201222200102101111020112221020112012102211120101",
"00000120112212122122202110022120001200022010100102202210012211211120100101022"+
"01011212011101110111112202111200111021221112222211222020120010222012022220012"),
'source': "Shared by Eric Chen [ChenDB]_.",
},
{
'n' : 198,
'k' : 10,
'w1': 96,
'w2': 112,
'K' : GF(2),
'M' : ("1000000000111111101010000100011001111101101010010010011110001101111001101100111000111101010101110011"+
"11110010100111101001001100111101011110111100101101110100111100011111011011100111110010100110110000",
"0100000000010110011100100010101010101111011010001001010110011010101011011101000110000001101101010110"+
"10110111110101000000011011001100010111110001001011011100111100100000110001011001110110011101011000",
"0010000000011100111110111011000011010100100011110000001100011011101111001010001100110110000001111000"+
"11000000101011010111110101000111110010011011101110000010110100000011100010011111100100111101010010",
"0001000000001111100010000000100101010001110111100010010010010111000100101100010001001110111101110100"+
"10010101101100110011010011101100110100100011011101100000110011110011111000000010110101011111101111",
"0000100000110010010000010110000111010011010101000010110100101010011011000011001100001110011011110001"+
"11101000010000111101101100111100001011010010111011100101101001111000100011000010110111111111011100",
"0000010000110100111001111011010000101110001011100010010010010111100101011001011011100110101110100001"+
"01101010110010100011000101111100100001110111001001001001001100001101110110000110101010011010101101",
"0000001000011011110010110100010010001100000011001000011101000110001101001000110110010101011011001111"+
"01111111010011111010100110011001110001001000001110000110111011010000011101001110111001011011001011",
"0000000100111001101011110010111100100001010100100110001100100110010101111001100101101001000101011000"+
"10001001111101011101001001010111010011011101010011010000101010011001010110011110010000011011111001",
"0000000010101011010101010101011100111101111110100011011001001010111101100111010110100101100110101100"+
"00000001100011110110010101100001000000010100001101111011111000110001100101101010000001110101011100",
"0000000001101100111101011000010000000011010100000110101010011010100111100001000011010011011101110111"+
"01110111011110101100100100110110011100001001000001010011010010010111110011101011101001101101011010"),
'source': "Shared by Eric Chen [ChenDB]_.",
},
{
'n' : 219,
'k' : 9,
'w1': 96,
'w2': 112,
'K' : GF(2),
'M' : ("10100011001110100010100010010000100100001011110010001010011000000001101011110011001001000010011110111011111"+
"0001001010110110110111001100111100011011101000000110101110001010100011110011111111110111010100101011000101111111",
"01100010110101110100001000010110001010010010011000111101111001011101000011101011100111111110001100000111010"+
"1101001000110001111011001100101011110101011110010001101011110000100000101101100010110100001111001100110011001111",
"00010010001001011011001110011101111110000000101110101000110110011001110101011011101011011011000010010011111"+
"1110110100111111000000110011101101000000001010000000011000111111100101100001110011110001110011110110100111100001",
"00001000100010101110101110011100010101110011010110000001111111100111010000101110001010100100000001011010111"+
"1001001000000011000011001100100100111010000000001010111001001100100101011110001100110001000000111001100100100111",
"00000101010100010101101110011101001000101110000000000111101100011000000001110100000001011010101001111110110"+
"0010110111100111000000110011110110101101110000001111100001010001100101100001110011110001101101000000000000100001",
"00000000000000000000010000011101011100100010000110110100101011001011001100000001011000101010100111000111101"+
"0011100011011011011111100010011100010111101001011001001101100010011010001011010110001110100001001111110010100100",
"00000000000000000000000001011010110110101111010110101001001001000101010000000000001011000011000010100100110"+
"0000110000111101100010000111111111101101001010110000111111101110101011010010010001011101110011111001100100101110",
"00000000000000000000000000110111101011110010101110000110010010100010001010000000010100011000101000010011000"+
"0110000111100110100001001011111111111010110000001010111111110011110110001100100010101011101101110110011000110110",
"00000000000000000000000000000000000000000000000001111111111111111111111110000001111111111111111111111111111"+
"1111111100000000000011111111111111000000111111111111111111000000000000111111111111000000000000000000111111000110"),
'source': "Shared by Eric Chen [ChenDB]_.",
},
{
'n' : 73,
'k' : 9,
'w1': 32,
'w2': 40,
'K' : GF(2),
'M' : ("1010010100000010100000101010001100110101101101000010110010100100111011101",
"0110000110000101101111001101000100111111101011011101110010110001100111100",
"0001010000000001111111011010100101001111011010101100001010000001110100001",
"0000100100000001111111100111000011110011110101000001010110000001011010001",
"0000001010000001111110111100011000111100101110010010101100000001101001001",
"0000000001000111001010110010011001101001011010110110011001010111100010010",
"0000000000100100011000100100111100001100101111010001011011111000110011110",
"0000000000010111001100101011111110101010000000000100111110000001111111100",
"0000000000001011100001000011011010110001110101101100001100101110101110110"),
'source': "Shared by Eric Chen [ChenDB]_.",
},
{
'n' : 70,
'k' : 9,
'w1': 32,
'w2': 40,
'K' : GF(2),
'M' : ("0100011110111000001011010110110111100010001000001000001001010110101101",
"1000111101110000000110101111101111000100010000010000000010101111001011",
"0001111011100000011101011101011110011000100000100000000101011100010111",
"0011110101000000111010111010111100110001000011000000001010111000101101",
"0111101000000001110101110111111001100010000100000000010101110011001011",
"1111010000000011101011101101110011010100001000000000101011100100010111",
"1110100010000111000111011011100110111000010000000001000111001010101101",
"1101000110001110001110110101001101110000100010000010001110010101001011",
"1010001110011100001101101010011011110001000100000100001100101010010111"),
'source': "Found by Axel Kohnert [Kohnert07]_ and shared by Alfred Wassermann.",
},
{
'n' : 85,
'k' : 8,
'w1': 40,
'w2': 48,
'K' : GF(2),
'M' : ("1000000010011101010001000011100111000111111010110001101101000110010011001101011100001",
"0100000011010011111001100010010100100100000111101001011011100101011010101011110010001",
"0010000011110100101101110010101101010101111001000101000000110100111110011000100101001",
"0001000011100111000111111010110001101101000110010011001101011100001100000001001110101",
"0000100011101110110010111110111111110001011001111000001011101000010101001101111011011",
"0000010011101010001000011100111000111111010110001101101000110010011001101011100001100",
"0000001001110101000100001110011100011111101011000110110100011001001100110101110000110",
"0000000100111010100010000111001110001111110101100011011010001100100110011010111000011"),
'source': "Shared by Eric Chen [ChenDB]_.",
},
{
'n' : 15,
'k' : 4,
'w1': 9,
'w2': 12,
'K' : GF(3),
'M' : ("100022021001111",
"010011211122000",
"001021112100011",
"000110120222220"),
'source': "Shared by Eric Chen [ChenDB]_.",
},
{
'n' : 34,
'k' : 4,
'w1': 24,
'w2': 28,
'K' : GF(4,name='x'),
'M' : [[1,0,0,0, 1,'x', 'x','x^2', 1, 0, 'x','x', 0, 1,'x^2','x','x','x^2','x^2','x^2','x', 'x','x^2','x^2','x^2', 1,'x^2','x',1,0, 1, 'x','x^2', 1],
[0,1,0,0,'x','x', 1,'x^2', 1, 1,'x^2', 1,'x', 'x', 0, 0, 1, 0, 'x', 'x', 0, 1,'x^2', 'x', 'x', 1, 0, 0,0,1,'x', 'x','x^2', 1],
[0,0,1,0, 1, 0, 0, 'x','x', 1,'x^2', 1, 1,'x^2', 1,'x','x', 'x','x^2', 1, 0, 'x', 'x', 0, 1,'x^2', 'x','x',1,0, 0, 0, 1, 'x'],
[0,0,0,1,'x','x','x^2', 1, 0,'x', 'x', 0, 1,'x^2', 'x','x', 1,'x^2','x^2', 'x','x','x^2','x^2','x^2', 1,'x^2', 'x', 1,0,1,'x','x^2', 1,'x^2']],
'source': "Shared by Eric Chen [ChenDB]_.",
},
]

# Build actual matrices.
for code in data:
code['M'] = Matrix(code['K'],[list(R) for R in code['M']])

DB_INDEX = (".. csv-table::\n"
" :class: contentstable\n"
" :widths: 7,7,7,7,7,50\n"
" :delim: @\n\n")

data.sort(key=lambda x:(x['K'].cardinality(),x['k'],x['n']))
for x in data:
s = " `q={}` @ `n={}` @ `k={}` @ `w_1={}` @ `w_2={}` @ {}\n".format(x['K'].cardinality(),x['n'],x['k'],x['w1'],x['w2'],x.get('source',''))
DB_INDEX += s

__doc__ = __doc__.format(DB_INDEX=DB_INDEX)

0 comments on commit 4bd30a6

Please sign in to comment.