This is a Python script to encode/decode arbitrary computer files into DNA sequences. It is a straight implementation of a method published in this Nature’s paper. The details of the method can be found in the Supplementary Information report. Another version of report can be found here. The source code organization follows the article steps and nomenclature, so it should be easy to understand.
Install it using pip:
$ sudo pip install file2dna
The installed script will be called dna
and accepts four types of operations passed as arguments together
with the file name:
$ dna -h
usage: dna [-h] [-e | -s | -d | -j] file
positional arguments:
file File to be encoded/decoded.
optional arguments:
-h, --help show this help message and exit
-e encode file and save it as .dna
-s encode file and save it as .splitted.zip
-d decode .dna file and save as .decoded
-j decode .splitted.zip file and save it as .decoded
As an example, we can decode one the files encoded by the authors of the paper. Suppose you have cloned this repo with its examples folder:
$ dna -d examples/DNA_versions/wssnt10.txt.dna
To see the decoded file:
$ cat examples/DNA_versions/wssnt10.txt.decoded
Nick Goldman talking about DNA Hard Drivers at the WEF2015
Emily Leprous talking about DNA storage
Towards practical, high-capacity, low-maintenance information storage in synthesized DNA
Hidding messages in DNA microdots
An improved Huffman coding method for archiving text, images, and music characters in DNA
Bacterial based storage and encryption device
If You Were a Secret Message, Where in the Human Genome Would You Hide?