Giter VIP home page Giter VIP logo

raisin's Introduction

Raisin🍇

Raisin is a command-line tool designed to compress text files using layered Huffman encoding techniques. It employs a layered approach, where the data is successively compressed at each layer, resulting in further reduction in size. Python is used as the programming language for the backend implementation.

Features

  • Compresses text files using layered Huffman encoding.
  • Reduces the size of data while retaining the original content.
  • Utilizes a binary string representation for efficient compression.
  • Easy to use as a command-line tool.

Installation

  1. Clone the repository:

    git clone https://github.com/NehalH/Raisin.git
  2. Navigate to the project directory:

    cd Raisin
  3. Install the required dependencies:

    pip install -r requirements.txt

Contributing

Contributions to Raisin are welcome! If you have any bug reports, feature requests, or suggestions, please open an issue on this repository. Pull requests are also encouraged.

Modules/Functions:

  • level_1: Contains functions for Huffman encoding (huffman_L1()) and decoding (decode_L1()) at level 1.
  • level_2: Contains functions for Huffman encoding (huffman_L2()) and decoding (decode_L2()) at level 2.
  • pack_unpack: Contains functions for packing (pack()) and unpacking (unpack()) data for compression and decompression.
  • read_write: Contains functions for writing the compressed data to a file (write_to_compressed_file()), reading from a compressed file (read_from_compressed_file()), reading from a regular file (read_from_file()), and writing to a regular file (write_to_file()).
  • manipulation: Contains the main compression (compress()) and decompression (decompress()) functions, which utilize the functions from other modules to perform the necessary operations.
  • main: Contains the main function (main()) that serves as the entry point for the program.

Why "Raisin"?

Wondering why this compression tool is named "Raisin" ?

Just like plump grapes transform into tiny raisins without loosing their nutrition, Raisin shrinks your data while preserving the real information. It's compression without compromise!

So, Raisin takes your files, gives them a little squeeze, and voilà! They become compact, travel-friendly, and ready to be stored or transmitted with ease.

Next time you use Raisin, remember the grape-to-raisin transformation. It's a small change that makes a big difference!

Happy compressing, and raisin up your data game! 🍇✨

raisin's People

Contributors

nehalh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

raisin's Issues

Dictionary size

The size of the frequency dictionary varies depending on the scope. If the size is measured outside the for loop, the size increases by a few kilobytes.

Processing apostrophe characters and escape sequences in unicode string

This is a logic error.
What happens is, the program reads from the file and encodes perfectly. But while decoding, it simply is unable to decode the 'single quotation' symbol (and also escape characters like \n).

I assume the issue probably lies in the functions participating in decoding (unpack(), read_from_raisin_file(), write_to_file() )

I have fixed this temporarily by doing the following in the level_1 module:

Manually replaced right and left apostrophes with placeholders,
accommodated for escape sequences using .decode('unicode_escape')
replaced placeholders with actual characters.

NOTE: This is just a temporary fix. I believe there is a better solution for this logic error.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.