Hello,

It seems that you really implemented a lot of things before creating
any ticket on Sage's trac. Be aware that the reviews may be very
painful as a result, for some fundamental design decisions may have to
be changed in this process.

Nathann

On 20 February 2015 at 18:32, Dima Pasechnik <dimp...@gmail.com> wrote:
> ---------- Forwarded message ----------
> From: "Johan S. R. Nielsen" <santaph...@gmail.com>
> Date: 20 Feb 2015 17:24
> Subject: [sage-coding-theory] Coding Theory development project.
> Request-for-comments: New code family and encoder/decoder structu
> To: <sage-coding-the...@googlegroups.com>
> Cc:
>
> Hello everyone,
>
> As we announced previously
> (https://groups.google.com/forum/#!topic/sage-devel/pBmeknQcyZM), we started
> October 1. a 2-year project for improving coding theory support in Sage.
> This post has two purposes: 1) It's our "going public" post, where we
> announce more precisely our plans for our 2-year project; and 2) It puts up
> for discussions our new scalable design for doing coding theory in Sage
> which comes with a fully working and documented implementation, integrated
> into a fork of Sage.
>
> Our project now has a web page, which is also our project repository:
> https://bitbucket.org/lucasdavid/sage_coding_project
>
> This page contains a description of our project, our development plan, and a
> description of what has currently been implemented including examples. It is
> also a Git repository containing a fork of the Sage project containing at
> any time the newest version of Sage with the newest (unstable) version of
> our code integrated. Little by little, our code will be cut up into tickets
> and incorporated into Sage using Trac and the review system. While tickets
> are being reviewed, new ones will be written, and our Git repository makes
> it easy to get a Sage version containing all the newest functionality.
>
> What we have done so far and our suggested design:
> Our team -- and principally our main developer David Lucas -- has been hard
> at work thinking of a scalable design for representing the core objects of
> coding theory: it should appeal to people coming from any of the many
> approaches to coding theory, and as with all things Sage, it should appeal
> to many levels of user competence. This is just the first step of our
> project, and later ones will add much more new functionality.
>
> The result is a base design and a working demo of this that we suggest to
> incorporate into Sage. It concerns principally
>
>  - Code families as classes
>  - Representation of multiple encoding and decoding methods, specific to the
> respective code family.
>
> And secondarily
>
>  - Representing communication channels, i.e. "adding errors"
>  - Some renaming of foundational methods
>
> To demonstrate this, we have implemented:
>
>  - Generalized Reed-Solomon codes as a class
>  - Hamming Codes as a class
>  - Concatenated codes as a class, demonstrating the modularity of
> class-based families
>  - 2 encoders for GRS codes
>  - 3 fast decoders for GRS codes, two half-minimum distance decoders, 1
> error-erasure decoder
>  - A channel for adding errors, and a channel for adding errors-and-erasures
>
> It will have deep consequences for the representation, use and further
> development of coding theory functionality. Before opening tickets for these
> changes, we want to present the design here, so that we can discuss and
> possibly improve it.
>
> Code examples are much better than words at conveying design: we have
> written a page going through the new ideas of the design from a user's point
> of view:
> https://bitbucket.org/lucasdavid/sage_coding_project/wiki/Examples
>
> In more technical details, the main design features that we propose are:
>
> 1) Code families are classes. This enables family-specific functionality,
> such as minimum distance bounds or fast decoders.
> 2) A code is therefore no longer always given by a generator matrix. For
> such code families, a generator matrix will only be computed on demand.
> 3) Encoders are classes. We support multiple encoders for a code family
> allowing different mappings.
> 4) The message space for an encoder can be something else than a vector
> space. Reed-Solomon codes can e.g. have an encoder which encodes polynomials
> directly.
> 5) The inverse of encoding is called "unencoding" (as opposed to "decoding"
> which we reserve for correcting errors). unencode() is a method on Encoder.
> 6) Decoders are classes. This enables multiple decoders for a code family.
> 7) Decoders have an input space which is not necessarily the ambient space
> of the code. This supports e.g. soft-decision decoders where reliability
> information is part of the input.
> 8) Decoders can decode to a codeword or directly to a message space.
> 9) There are convenience methods directly on a code for encoding, decoding
> and unencode such that users not caring about these choices are not
> burdened.
> 10) We introduce Channels which embody the concept of communication
> channels, both for adding errors and for changing representation. They
> provide a modular and convenient structure for user-friendliness and
> code-reusability in e.g. benchmarking frameworks.
> 11) Renaming of some methods in LinearCode: gen_mat into generator_matrix
> and check_mat to parity_check_matrix.
>
> We invite for discussion on this design and for contributions by everyone
> motivated by coding theory. As soon as we agree on this thread, we will
> create a ticket on Trac with the first few changes. Reviewers will be more
> than welcome!
>
> David Lucas, Johan S. R. Nielsen, Clément Pernet and Daniel Augot
>
> --
> You received this message because you are subscribed to the Google Groups
> "sage-coding-theory" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sage-coding-theory+unsubscr...@googlegroups.com.
> To post to this group, send email to sage-coding-the...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sage-coding-theory/1089c130-0283-42ff-a28b-0869776eaed4%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>
> --
> 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 http://groups.google.com/group/sage-devel.
> For more options, visit https://groups.google.com/d/optout.

-- 
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 http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to