This repository contains a Python script (see DNA_Fountain_Project_Code.py) for a project centered around DNA Fountain technology, which demonstrates the encoding and processing of digital data into DNA sequences for potential digital storage applications. The script performs the following tasks:
-
Data Encoding:
- Encodes digital data into DNA sequences using a predefined encoding scheme.
-
Luby Transform Code:
- Utilizes Luby Transform (LT) codes to encode the data into DNA droplets, providing robustness and error correction capabilities.
-
DNA Sequence Processing:
- Processes the DNA droplets, handling different block indices and generating binary sequences.
-
Error Handling:
- Includes error handling to manage unexpected bases and out-of-range indices during the droplet processing.
-
Output Generation:
- Outputs the encoded DNA sequences and provides a final decoded message.
The script is designed to explore the potential of DNA as a medium for digital data storage, showcasing the feasibility and challenges of encoding and decoding digital information using biological molecules.
To run the script:
- Ensure you have Python installed.
- Navigate to the project directory.
- Execute the script using Python:
python DNA_Fountain_Project_1.py
- Python 3.x
- Pygments (for syntax highlighting, if converting to HTML)
- Pandoc (for converting HTML to PDF, optional)
- MiKTeX (for
pdflatex
, optional)
DNA_Fountain_Project_1.py
: Main script file containing the DNA Fountain encoding and processing logic.DNA_Fountain_Project_1.html
: HTML file generated from the script (optional, for conversion to PDF).luby_blocks.csv
: CSV file containing Luby Transform blocks data.
For convenience, the script can be converted to a PDF file using Pandoc and pdflatex
. Follow these steps:
- Convert Python script to HTML:
pygmentize -f html -O full,style=colorful -o DNA_Fountain_Project_1.html DNA_Fountain_Project_1.py
- Convert HTML to PDF:
pandoc DNA_Fountain_Project_1.html -o DNA_Fountain_Project_1.pdf
This project is licensed under the MIT License - see the LICENSE file for details.
Feel free to contribute to this project by opening issues and submitting pull requests, or send me a message at [email protected]