Skip to content
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

An Abstract Class for Rank Metric Codes #21226

Closed
arpitdm mannequin opened this issue Aug 11, 2016 · 71 comments
Closed

An Abstract Class for Rank Metric Codes #21226

arpitdm mannequin opened this issue Aug 11, 2016 · 71 comments

Comments

@arpitdm
Copy link
Mannequin

arpitdm mannequin commented Aug 11, 2016

We propose to implement AbstractRankMetricCode, an abstract class for rank metric codes which will initialize the basic parameters that every rank metric code possesses. This will inherit from AbstractCode class. Further, we propose to add rank-metric based methods to compute distance, weight and allow for matrix to vector (and reverse) conversions between representations. Finally, we create a generic representative class LinearRankMetricCode as well as encoding (generator matrix, systematic) and decoding (nearest neighbour) methods.

CC: @sagetrac-dlucas @johanrosenkilde @dimpase @xcaruso @Adurand8 @mbombar @vbraun

Component: coding theory

Author: Arpit Merchant, Marketa Slukova, Johan Rosenkilde

Branch: 899d390

Reviewer: Dima Pasechnik, Johan Rosenkilde, Xavier Caruso

Issue created by migration from https://trac.sagemath.org/ticket/21226

@arpitdm arpitdm mannequin added c: coding theory labels Aug 11, 2016
@arpitdm
Copy link
Mannequin Author

arpitdm mannequin commented Aug 11, 2016

@arpitdm
Copy link
Mannequin Author

arpitdm mannequin commented Aug 11, 2016

comment:2
  1. I've written a basic constructor for the class along with a couple of getter methods.
  2. I've added some modified rank-metric based methods.
  3. And deleted some methods from the ALC class according to the schema described in past discussions. There's about 10 more that need to be deleted similarly. I'm trying to see if this be written more compactly. Open to ideas.

More to follow.


New commits:

7e4b3a3added a very basic constructor, a couple of basic getter methods and deleted a couple of methods from ALC class. added some rank distance, rank weight, to_matrix_representation and from_matrix_representation.

@arpitdm
Copy link
Mannequin Author

arpitdm mannequin commented Aug 11, 2016

Commit: 7e4b3a3

@sagetrac-dlucas
Copy link
Mannequin

sagetrac-dlucas mannequin commented Aug 11, 2016

comment:3

Hello,

I won't comment extensively for now, as there's still a lot to do.
I just have one small comment/remark to keep in mind for later: when you will work on documentation, remember to carefully explain which representation you chose (matrix vs. vector) and how to get the other one to be sure users do understand how this class works
and what they should expect from it.

David

@johanrosenkilde
Copy link
Contributor

comment:4

Replying to @sagetrac-dlucas:

Hello,

I won't comment extensively for now, as there's still a lot to do.
I just have one small comment/remark to keep in mind for later: when you will work on documentation, remember to carefully explain which representation you chose (matrix vs. vector) and how to get the other one to be sure users do understand how this class works
and what they should expect from it.

Seconded. And remember to explain that this class only supports rank-metric codes which are linear over the big field!

Best,
Johan

@johanrosenkilde
Copy link
Contributor

comment:5

What's the state of this? What is missing? When do you plan to do it?

Best,
Johan

@johanrosenkilde
Copy link
Contributor

comment:6

I think the class should be call AbstractLinearRankMetricCode by the way. It's terribly long, but the Linear is important.

@emes4
Copy link

emes4 commented Jul 11, 2019

Changed commit from 7e4b3a3 to none

@emes4
Copy link

emes4 commented Jul 11, 2019

Dependencies: #28073

@emes4

This comment has been minimized.

@emes4
Copy link

emes4 commented Jul 11, 2019

Changed author from Arpit Merchant to Arpit Merchant, Marketa Slukova

@emes4
Copy link

emes4 commented Jul 11, 2019

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jul 11, 2019

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:

64f446aMerge branch 'develop' of git://trac.sagemath.org/sage into abstract_code
53e445badded base_ring and length parameter to AbstractCode
5e6dffeFixed some dependencies. Category still set up wrong.
ba4fc53Merge branch 'abstract_code' into t/28073/abstract_code
e8edfebFixed unclean merge.
880aebbFixed default decoder/encoder dependencies. Set to None by default.
d115600No category set up and base_field in AbstractCode. No encoder/decoder error msgs. Documentation and tests.
82fdc3cMerge branch 'develop' of git://trac.sagemath.org/sage into rank_metric
5c0fd69Merge branch 'develop' of git://trac.sagemath.org/sage into rank_metric
a251c61Inheriting from Abstract Code. Encoding, decoding methods. Generic LinearRankMetricCode class.

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jul 11, 2019

Commit: a251c61

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jul 11, 2019

Changed commit from a251c61 to 05476b3

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jul 11, 2019

Branch pushed to git repo; I updated commit sha1. New commits:

05476b3Generator matrix methods in AbstractLinearRankMetricCode

@emes4 emes4 self-assigned this Jul 11, 2019
@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jul 11, 2019

Changed commit from 05476b3 to 08b6e4f

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jul 11, 2019

Branch pushed to git repo; I updated commit sha1. New commits:

524efc8Inheriting from Abstract Code. Encoding, decoding methods. Generic LinearRankMetricCode class.
77fc1e2Generator matrix methods in AbstractLinearRankMetricCode
08b6e4fMerge branch 'u/gh-emes4/coding/linear_rank_metric' of git://trac.sagemath.org/sage into rank_metric

@emes4
Copy link

emes4 commented Jul 17, 2019

Changed dependencies from #28073 to #28073, #28209

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jul 19, 2019

Branch pushed to git repo; I updated commit sha1. New commits:

8442aa6documentation
086fa74AbstractLinearRankMetricCode done
c39e3caClasses and methods done.
12bb30fGeneric documentation.

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jul 19, 2019

Changed commit from 08b6e4f to 12bb30f

@emes4
Copy link

emes4 commented Jul 19, 2019

comment:15

Finished up everything and added documentation and doc tests. Few notes:

I kept the parameter requirement that the length of the code has to be at most the degree of the extension.

I didn't manage to turn off the experimental warning, except for handling it in doc tests.

I will add a doctest for the method decode_to_code when Gabidulin codes are in place.

There is no test for linearity over the big field and also no test for the finite field extension in the initialising parameters of AbstractLinearRankMetricCode.

I also added a very slow algorithm for computing the minimum distance.

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jul 22, 2019

Changed commit from 12bb30f to 72df923

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jul 22, 2019

Branch pushed to git repo; I updated commit sha1. New commits:

2bf73f8Merge branch 'develop' of git://trac.sagemath.org/sage into t/28073/abstract_code
487e9e2Category related methods added. Encoder/decoder documentation specified for linear codes.
40df01eFinished up documentation.
b7cab95Merge branch 'u/gh-emes4/coding/abstract_code' of git://trac.sagemath.org/sage into rank_metric
25ca9b7Merge branch 'develop' of git://trac.sagemath.org/sage into rank_metric
72df923Documentation tree link and fixes. Updated Sage.

@emes4
Copy link

emes4 commented Jul 29, 2019

Changed dependencies from #28073, #28209 to #28073

@xcaruso
Copy link
Contributor

xcaruso commented Jul 16, 2020

comment:41

Thanks.

Since I haven't really looked into the code of this ticket, I let Dima give again a positive review if appropriate.

Btw, I'm wondering: is it preferable to implement __eq__, __ne__, etc. or _richcmp_? I believed that the latter solution was better, but I'm not sure.

@xcaruso
Copy link
Contributor

xcaruso commented Jul 16, 2020

comment:42

Note also that the patchbot reported some warning (pyflakes, pycodestyle and blocks).

@dimpase
Copy link
Member

dimpase commented Jul 17, 2020

comment:43

Thanks. First time I missed the _eq_ problem, as I thought it's just some kind of Python3 formality. Looks OK now.

@vbraun
Copy link
Member

vbraun commented Jul 19, 2020

comment:44

PDF docs don't build:

[docpdf] l.4668 \(1,^^H
[docpdf]               eta,\ldots,^^Heta^{sm}\) be the power basis that SageMath uses to

@dimpase
Copy link
Member

dimpase commented Jul 21, 2020

comment:45

hmm, is \beta the problem, or \ldots, or both?

@xcaruso
Copy link
Contributor

xcaruso commented Jul 21, 2020

comment:46

I'm not 100% sure but I think it comes from \beta. However, I don't know what's wrong.

Besides, reading this doctest, I find that it's not very clear; for instance, what is q is implicit and not obvious, I would say. Moreover, the two notations GF(q) and F_{q} are used to refer to the same object (namely, the finite field with q elements) and I think that they are both incorrect, the correct one being \GF(q).

@dimpase
Copy link
Member

dimpase commented Jul 21, 2020

comment:47

by the way, there are typos - beta vs \beta in 6 places.

Perhaps \beta must be added to some silly list... (and/or written in utf-8)

@dimpase
Copy link
Member

dimpase commented Jul 22, 2020

Changed commit from 5f46031 to 899d390

@dimpase
Copy link
Member

dimpase commented Jul 22, 2020

Changed dependencies from #28350 to none

@dimpase
Copy link
Member

dimpase commented Jul 22, 2020

@dimpase
Copy link
Member

dimpase commented Jul 22, 2020

comment:48

ok, this works with pdf


New commits:

899d390make \beta unicode

@vbraun
Copy link
Member

vbraun commented Jul 28, 2020

Changed branch from u/dimpase/coding/linear_rank_metric to 899d390

@dimpase
Copy link
Member

dimpase commented Aug 1, 2020

comment:50

the last commit did not make it into the beta, or got overwritten

@dimpase
Copy link
Member

dimpase commented Aug 1, 2020

Changed commit from 899d390 to none

@dimpase
Copy link
Member

dimpase commented Aug 1, 2020

comment:51

Volker, something went missing with this merge, e.g. the last commit, ​899d390, did not get merged.

@vbraun
Copy link
Member

vbraun commented Aug 2, 2020

comment:52

This ticket isn't in any relased beta yet. 899d390 will be in 9.2.beta7 which I'm releasing right now

@dimpase
Copy link
Member

dimpase commented Aug 2, 2020

comment:53

OK - it was confusing that it was marked as closed already.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants