-
-
Notifications
You must be signed in to change notification settings - Fork 514
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
A new structure for experimentation on decoding: communication channels #18269
Comments
Branch: u/dlucas/channels |
Commit: |
comment:3
Hello,
which is convenient.
of course the default implementation is to call
Eleven is a nice prime number. So I will stop there. Vincent |
comment:4
Hello, Thank you for the input!
My idea here was to mimic the way codes were stored and hide: a code_constructions file for the codes, and a codes_catalog file for the list of codes. I wanted to do the same with channels for consistency. That's why I chose the name channel_constructions.
Well, that was done on purpose as one should not use these methods except when implementing a new Channel object. Now, with a second thought about this, it's not that smart as one will have to browse through the code to find these methods. I think I'll remove the underscore to make them appear in the doc, while putting the statement "This is a helper function, for internal use only." in a For the rest of your comments, thanks a lot for the advice on these David |
comment:6
In the same function you should also:
|
comment:7
I did some changes, as stated by commit messages above. Some remarks:
David |
Branch pushed to git repo; I updated commit sha1. New commits:
|
New commits:
|
comment:10
Replying to @sagetrac-dlucas:
The name is very bad. Moreover you can convert an integer You should replace all occurrence of
Yes. You are right!
You should tell me ;-) Cryptogtaphers might like it but they do use strings
it would be more direct. Moreover it shows that
Vincent |
comment:12
Yes it is (the solution is not exactly linear though)
It is roughly the same speed for |
comment:13
Replying to @videlec:
This code for subsets is just using
So I guess this is currently the best way to do it. And moreover, looking at Python doc
Sorry for my previous remarks. You should just get rid of Vincent |
comment:15
Thank you again for the advice! The only thing I did not do is to add cross-references between channels and codes. I think it's not the best time to do it, as there is no proper Encoder/Decoder structure. But when we will propose our structure for decoding, I think it will be interesting to illustrate the error correction using channels to create errors. Before that, I let it as is. |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:22
Hello,
Ok, good to know! Modification done. |
comment:23
Moreover, in a class you should not write as a description
(BTW there is a nice short cut to build vector spaces:
And if you really care about pluralization
Such
Hence, you can simply cut your errors into two parts as
|
comment:26
i.e. no mention of
diff --git a/src/sage/coding/channel_constructions.py b/src/sage/coding/channel_constructions.py
index 0d32ffc..8935db7 100644
--- a/src/sage/coding/channel_constructions.py
+++ b/src/sage/coding/channel_constructions.py
@@ -592,4 +592,5 @@ class ErrorErasureChannel(Channel):
+ zero = V.base_ring().zero()
for i in erasure_positions:
- message[i] = 0
+ message[i] = zero
return message, erasure_vector it is cleaner and potentially faster (not much).
|
comment:28
Thanks for the information. I did the changes (and added input and output space in the representation methods for channels). |
comment:29
Salut David, All right! This ticket is good to go. That would be nice to start reviewing other's ticket as well. You can have a look at the section "Reviewer Checklist" in the Sage's Developer Guide. If you want to start slowly, there are some tickets that are marked "beginner". Basically: one of your ticket gets reviewed -> you review one ticket. Best, |
comment:30
Hello,
Ok. I'll start reviewing then :) |
comment:31
Replying to @sagetrac-dlucas:
Cool :-) If you have doubts, hesitations, or anything do not hesitate to post a message to sage-devel@googlegroups.com |
Changed branch from u/dlucas/channels to |
For now, there is no structure to easily add errors in codewords. If one wants to experiment with decoding algorithms on codes, the only possible way is to add errors "by hand", which is rather tedious.
We propose here a new structure, based on communication channels, on purpose to facilitate the experimentation process with decoding algorithms.
For now, our structure consists of:
With this new structure, creating
n
errors in a vector can be done in one line of code into Sage.Adding a new Channel class should also be easy: all one needs to do is to inherit from the abstract class, and override and implement a method.
For better consistency, channels can only be accessed using channels. (see #15445) from the global namespace.
CC: @johanrosenkilde
Component: coding theory
Author: David Lucas
Branch/Commit:
383e67c
Reviewer: Vincent Delecroix
Issue created by migration from https://trac.sagemath.org/ticket/18269
The text was updated successfully, but these errors were encountered: