tomerfiliba-org / reedsolomon

⏳🛡 Pythonic universal errors-and-erasures Reed-Solomon codec to protect your data from errors and bitrot. Includes a future-proof zero-dependencies pure-python implementation 🔮 and an optional speed-optimized Cython/C extension 🚀
http://pypi.python.org/pypi/reedsolo
Other
358 stars 86 forks source link

Feature Req: Support Ignoring Symbols for Error/Erasure Correction #43

Open haneefmubarak opened 2 years ago

haneefmubarak commented 2 years ago

The following is mentioned in the README:

Although sanity checks are implemented whenever possible and when they are not too much resource consuming, there are a few cases where messages will not be decoded correctly without raising an exception:

  • If an incorrect erasure location is provided, the decoding algorithm will just trust the provided locations and create a syndrome that will be wrong, resulting in an incorrect decoded message. In case reliability is critical, always use the check() method after decoding to check the decoding did not go wrong.

A fairly straightforward method to enable variable rate coding would be to not transmit/store trailing error or data symbols, so you could increase or decrease the rate at will, respectively. Half of this functionality is already fully available, since if you skip error symbols, you can simply mark them as having been erased.

However, if you choose to skip data symbols (input them as zero and then don't store/transmit), there is no way to inform the decoder that these zeroed symbols (which will have been substituted back in as zeros before calling the decoder) are definitely correct.

For this and perhaps other uses that I am not aware of yet, a feature by which you could do the opposite of the existing functionality — inform the decoder that certain symbols are definitely correct — could be extremely useful.