Hey Paul, I have just completed the first draft of a paper, "Classifying bent > functions by their Cayley graphs". > <https://sites.google.com/site/paulleopardi/Leopardi-Bent-functions-Cayley-graphs.pdf?attredirects=0&d=1> > > The computational results of the paper are fully reproducible via worksheets > in a SageMathCloud public folder > <https://cloud.sagemath.com/projects/80f4c9e7-8a37-4f59-82e7-aa179ec0b652/files/Boolean-Cayley-graphs/> > > and Sage code in a GitHub repository > <https://github.com/penguian/Boolean-Cayley-graphs>. > When I developed the code I tried to follow the Sage coding conventions > <http://doc.sagemath.org/html/en/developer/coding_basics.html>, but my > primary goal up until now has been to obtain results and finish the paper > while keeping the code as clear and readable as I could. >
> The purpose of the code is to calculate the Cayley graph classifications > of the extended translation classes of bent functions, and their duals. All > of these terms are defined in the paper, but briefly, > > - A* bent function* is a Boolean function on an even number of bits > that is as far as possible (in Hamming weight distance) from any affine > Boolean function; equivalently a Boolean function whose Walsh-Hadamard > transform has constant absolute value. > - The dual of a bent function *f* is obtained from the Walsh-Hadamard > transform of *f*, and is also a bent function. > - The *Cayley graph* of a Boolean function* f*, with *f(0)=0*, is a > graph whose vertices are all the bit vectors of a given dimension, with an > edge between vectors x and y if and only if *f(x+y)=1*. This Cayley > graph is *strongly regular* if *f* is bent. > - The *extended translation class* of a bent function *f* on boolean > vector space* V* is the set of all functions of the form *g(x) = > f(x+b) + <c,x> + d*, where *b, c* are in *V* and d is 0 or 1. > - The *Cayley graph classification* of the extended translation class > of a bent function* f* is the set of all isomorphism classes of Cayley > graphs of the functions *f(x+b) + <c,x> + f(b)*. > > The output of the code is displayed in the paper, and in the SageMathCloud > worksheets, and (with some exceptions) is also saved as objects of class > *BentFunctionCayleyGraphClassification* in both the public folder and the > GitHub repository. > > > Questions: > > 1. Is there a process to ask for a code review of this type of code > (i.e. code primarily written to support a paper)? > > It depends on what you want to do. If you want to include this code into Sage, which is something I would recommend, then you should open a trac ticket and upload the code as a git branch there. You will likely need to change a few things to start the integration into Sage, but we will be happy to help by answering questions. Another option would be to keep it as a separate package of code (say, as a pip installable package), but then you might not get as much exposure and need some more arm twisting to get it reviewed. However, considering you are utilizing Sage's infrastructure, I think the former approach is better. I had a very quick look through your code. It also seems like you have a lot of things scattered across a number of files that should be groups together into fewer files and probably into methods of a (already existing) class. You will also want to remove your custom pickling with your Savable class in order to not add an additional layer. The biggest thing you will have to do is add documentation and tests to all of your functions/methods. > > 1. Do you have any suggestions as to how and where I could publish a > fully peer reviewed version of such a long (52 page draft) paper with so > many examples, tables and figures? > > Are you asking for journal recommendations? If so, I don't have any knowledge of this field to help. However, a great place to put a draft is the arXiv <http://arxiv.org> (which could be the extended version of the actual published paper if the referee(s) ask for a shorter version). You can also upload supplementary documents, like your Sage worksheets. > > 1. Is there a process to promote this code, or a part of this code to > Sage itself? > Note: if this requires a complete rewrite then this could take me some > time, as it is a one-person project conducted in my spare time as an > Honorary Fellow of the University of Melbourne. > > You are basically doing it, but it can have further reach by being included in Sage's codebase. > > 1. Is there any interest in my further developing this code to include > a database (e.g. SQL) of Cayley graph classifications? > > We have a number of database spkgs in Sage (see the optional spkgs), so this could be a good option as part of including your code. Best, Travis -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at https://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.