Opened 4 years ago
Closed 4 years ago
#16846 closed enhancement (fixed)
a difference_matrices module
Reported by:  ncohen  Owned by:  

Priority:  major  Milestone:  sage6.4 
Component:  combinatorial designs  Keywords:  
Cc:  vdelecroix  Merged in:  
Authors:  Nathann Cohen  Reviewers:  Vincent Delecroix 
Report Upstream:  N/A  Work issues:  
Branch:  c66c19b (Commits)  Commit:  c66c19b305799452765ccf53d3380ee670700f85 
Dependencies:  #16817  Stopgaps: 
Description
This commit creates a difference_matrices
module which does not do much at the moment: it can creates DM for prime powers, and return DM from the database.
In the database, however, a lot changes as many OA were actually difference matrices. The constructors are turned into difference matrices constructors, and orthogonal_array
now calls difference_matrix
to get them.
All in all what this patch does is mostly code administration, but well, that's the way to go ...
Quasidifference matrices will be handled later as there are some problems with them, in particular in the way orthogonal_array
will query the future quasi_difference_matrix
constructor.
Nathann
Change History (15)
comment:1 Changed 4 years ago by
 Branch set to u/ncohen/16846
 Status changed from new to needs_review
comment:2 Changed 4 years ago by
 Commit set to 2649805f41094602cfbd2787f75028d806cf2d05
comment:3 Changed 4 years ago by
Sorry for the diff in the database file, it's a bit hard to review with everything being mixed up by the diff algorithm... :/
What happens there is simple: some DM_*
functions are removed and replaced by their DM_*
counterpart. No new constructor is added, it's only a rephrase of that code.
Nathann
comment:4 followup: ↓ 5 Changed 4 years ago by
Hi Nathann,
Very nice that you did that!
I guess that difference matrices are interesting only over Abelian groups. Is that true? It would be nice to coordinate with difference families for input/output. For example, in #16802, in the database, you can ask a difference family with a given group and not only a fixed cardinality. It is not perfect, but I tried to start involving the group...
Vincent
comment:5 in reply to: ↑ 4 ; followup: ↓ 6 Changed 4 years ago by
Yo !
I guess that difference matrices are interesting only over Abelian groups. Is that true?
I have no idea about that, but all examples I saw were on abelian groups indeed.
It would be nice to coordinate with difference families for input/output. For example, in #16802, in the database, you can ask a difference family with a given group and not only a fixed cardinality. It is not perfect, but I tried to start involving the group...
Hmmmmm... So a structure like that ?
DM_constructions = { order_of_the_group : { signature_of_the_abelian_group: [ (k1,matrix_constructor1), (k2,matrix_constructor2) ] } }
Having several difference families/matrices or OA and stuff is a hobby of yours, you know ? To me it's just not the interesting direction :P
It can be done anyway but we have to do that later, this heap of patches is really getting dangerous. Plus Travis wrote a patch that is totally incompatible with this one, and there are like 10 tickets in linear order an needs_review
at the moment :P
Nathann
comment:6 in reply to: ↑ 5 ; followup: ↓ 7 Changed 4 years ago by
Replying to ncohen:
Yo !
I guess that difference matrices are interesting only over Abelian groups. Is that true?
I have no idea about that, but all examples I saw were on abelian groups indeed.
Because you can not develop a difference matrix to get an OA if the group is non Abelian. But perhaps, difference matrices can be used for other purposes.
It would be nice to coordinate with difference families for input/output. For example, in #16802, in the database, you can ask a difference family with a given group and not only a fixed cardinality. It is not perfect, but I tried to start involving the group...
Hmmmmm... So a structure like that ?
DM_constructions = { order_of_the_group : { signature_of_the_abelian_group: [ (k1,matrix_constructor1), (k2,matrix_constructor2) ] } }
Might be better than what I did... I used {signature: DF}
Having several difference families/matrices or OA and stuff is a hobby of yours, you know ? To me it's just not the interesting direction
:P
Sometimes it is very important that your group is cyclic (for difference families or difference matrix)... so you want to be able to ask a given difference X over a cyclic group only.
It can be done anyway but we have to do that later, this heap of patches is really getting dangerous. Plus Travis wrote a patch that is totally incompatible with this one, and there are like 10 tickets in linear order an
needs_review
at the moment:P
+1
Vincent
comment:7 in reply to: ↑ 6 Changed 4 years ago by
Might be better than what I did... I used
{signature: DF}
If you just want a difference family to exist in order to build a BIBD but don't know the exact decomposition you need to list everything :/
Nathann
comment:8 Changed 4 years ago by
 Branch changed from u/ncohen/16846 to public/16846
 Commit changed from 2649805f41094602cfbd2787f75028d806cf2d05 to 3e0a79ba3154c1e2c9591c60cc9092361f77dfd7
Last 10 new commits:
e6deb83  trac #16859: doc

db53470  trac #16780: Merged with #16859 (need the resolvable incomplete OA)

52c4fa0  trac #16780: resolvable incomplete OA are built with 2 lines

7fe173a  trac #16780: review 2

931a33f  trac #16780: repeat "parallel classes"

5b8500b  trac #16864: designs/database.py: autogenerated doc index

bfbad46  trac #16864: use Python string .format() + doc

3ca48dc  trac #16817: OA for n=205,254,469,520,522,524,1262

43034f4  trac #16846: a difference_matrices module

3e0a79b  trac #16846: Remove obsolete functions

comment:9 Changed 4 years ago by
 Milestone set to sage6.4
comment:10 Changed 4 years ago by
 Commit changed from 3e0a79ba3154c1e2c9591c60cc9092361f77dfd7 to f7afe6f10d690f12c568401e8850a713f6874d51
comment:11 Changed 4 years ago by
 Commit changed from f7afe6f10d690f12c568401e8850a713f6874d51 to fd1bbc6686b99e38d200fecd32def5574d4ca806
comment:12 Changed 4 years ago by
 Commit changed from fd1bbc6686b99e38d200fecd32def5574d4ca806 to c66c19b305799452765ccf53d3380ee670700f85
Branch pushed to git repo; I updated commit sha1. New commits:
c66c19b  trac #16846: review

comment:13 Changed 4 years ago by
I did
 removed
TD_6_12
OA_7_39
>DM_39_6_1
As a consequence, doc builds... and test still pass.
If you like it, set to positive review.
Vincent
comment:14 Changed 4 years ago by
 Reviewers set to Vincent Delecroix
 Status changed from needs_review to positive_review
The doc builds, and doctests pass. Thank you very much for this last review ! :D
Nathann
comment:15 Changed 4 years ago by
 Branch changed from public/16846 to c66c19b305799452765ccf53d3380ee670700f85
 Resolution set to fixed
 Status changed from positive_review to closed
Branch pushed to git repo; I updated commit sha1. New commits:
trac #16797: is_difference_matrix
trac #16797: Fit with the current definition until we can change everything at once
trac #16797: int * and ** instead of Python list
trac #16797: change int to int * in a malloc
trac #16797: better malloc + better error msg
trac #16797: More compact mallocs
trac #16797: Reorder the arguments to copy is_orthogonal_array
trac #16797: Merged with 6.4.beta0
trac #16797: correct a row/column inversion
trac #16846: a difference_matrices module