Information Theory Course - Final work, Winter 2020, BIU
pdf file: https://github.com/JudahGazit/information-theory/raw/master/information.pdf
This is my project for Information Theory course 88-782.
The new compression is called Rotem Compression
or rg compression
(my initials).
It utilize 4 methods, described in the attached PDF file:
- Lempel-Ziv-Welch method (the method in active use here)
- Huffman method
- Lempel-Ziv-Welch method + Huffman for encoding the results
- "Words Encoding" - using Huffman method to encode words instead of singular symbols
├── README.md // YOU ARE HERE ├── information.pdf // the PDF paper explaining the project ├── setup.py // standard python setup file ├── app.py // main file for the package, applying the compression on user input ├── rgcompress // bash file initiating the pyton app.py ├── test | └── ... // contains demos for input file, zip compression and rg compression ├── latex | └── ... // contains raw lyx files used for making the pdf file └── rotem_compressor ├── contract │ └── ... // python interfaces for the compression methods ├── data_models │ └── ... // data models used by the compression methods ├── huffman_compression │ └── ... ├── lzw.py ├── words_encoder.py ├── utils.py // utilities used by the the compression methods ├── rotem_compressor.py // the main compressor, applying multiple compressions on top of each other └── unittests └── ... // unittests for the entire project
for compression:
rgcompress -i <inputFile> -o <outputFile>
or python app.py -i <inputFile> -o <outputFile>
for decompression:
rgcompress -d -i <inputFile> -o <outputFile>
or python app.py -d -i <inputFile> -o <outputFile>