Skip to content
/ dnastore Public

Software for error-tolerant coding of information into DNA sequences using finite-state transducers.

License

Notifications You must be signed in to change notification settings

ihh/dnastore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e1c90aa · Jan 8, 2017
Jun 5, 2016
Jun 6, 2016
Jun 8, 2016
Jan 6, 2017
Jun 6, 2016
Jun 8, 2016
Jun 5, 2016
Jun 8, 2016

Repository files navigation

DNAstore

Software for error-tolerant coding of information into DNA sequences using finite-state transducers.

For license, please see LICENSE.txt

To build:

make dnastore
make test

I have built using Apple LLVM version 7.3.0 (clang-703.0.31). You will also need Boost: http://www.boost.org/

Description of method is in doc/ directory:

cd doc
make
open trans.ps

The tests include a few examples.

To generate a code transducer with 4 nucleotides of context (this will avoid all homopolymer and dinucleotide repeats):

bin/dnastore -l 4

To encode the string "Hello World!" in DNA using this transducer:

bin/dnastore -l 4 -E "Hello World!" > HelloWorld.fasta

To decode this DNA:

bin/dnastore -l 4 -d HelloWorld.fasta

To construct a composite machine using the MIXRADAR6 block code for mixed-radix conversion:

bin/dnastore -l 4 --compose-machine data/flusher.json  --compose-machine data/mixradar6.json --save-machine mixradar6-dnastore4.json

(The flusher.json file describes an outer transducer that automatically flushes MIXRADAR6 whenever the end of the file is reached.)

To encode and decode using this transducer:

bin/dnastore --load-machine mixradar6-dnastore4.json -E "Hello World!" >HelloWorld46.fasta
bin/dnastore --load-machine mixradar6-dnastore4.json -d HelloWorld46.fasta

To use Viterbi decoding instead of exact decoding:

bin/dnastore --load-machine mixradar6-dnastore4.json -V HelloWorld46.fasta --error-global

To create a 64-bit watermark synchronization code with 1 watermark bit per signal bit:

bin/dnastore -l 4 --compose-machine data/water64.1.json --save-machine watmark64-dnastore4.json

Strings encoded using this code must be a multiple of 64 bits in length:

bin/dnastore --load-machine watmark64-dnastore4.json -E "Hello World! (192 bits.)" >hw64.fa
bin/dnastore --load-machine watmark64-dnastore4.json -d hw64.fa

For a list of more options:

bin/dnastore -h

You can also look at the script doc/errdecode.pl for examples of usage (this script does a lot of benchmarking).

About

Software for error-tolerant coding of information into DNA sequences using finite-state transducers.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published