8 DNA-Based Memories: A Survey 263
a distributed VTT implementation. The computational framework of EdnaCo
is a complex of interacting data structures distributed over several processing
nodes which are interconnected, transparently to the user, in order to produce
a single test tube in each run.
The VTT of EdnaCo consists of an organized network space of a cellular
automaton [16] arranged in grid formation. The nodes (cells) represent quanta
of 2D or 3D space that may be empty or occupied by nucleotides, molecules, or
other reactants. Each cell can also be characterized by associated parameters
that render the tube conditions in a realistic way, such as temperature, salinity,
covalent bonds, etc. The entire tube is distributed over a cluster of processors
in such a way that each local processor holds only a segment of the entire tube.
A segment is itself a copy of Edna, so that one can check the contents of the
tube and manage deletions (when a strand leaves the local tube segment) and
additions (incoming strands, strand additions at the outset of the simulation,
and hybridization events). No strand is split between two different nodes, but
their Brownian motion may include migration to any other different node.
Further details on the performance and implementation of EdnaCo can be
found in [14].
Real nucleotides are replaced in EdnaCo with virtual ones implemented
as C++ objects. Polymers, called strands when implemented in simulation,
are represented as complex structural combinations of these nucleotide ob-
jects (e.g., linked lists in a software implementation.) Strands carry context
information (meta-information, such as position, velocity, direction, etc.), in
addition to their internal structure, which may include even morphological in-
formation. Strand interaction in silico occurs similarly to how it would occur
if the interaction were to occur in vitro. Two strands encounter each other
when they come into close proximity to each other. At this point of the en-
counter, the tube attempts to hybridize one strand to hybridize to the other,
according to some pre-specified criterion for local interactions, for example,
some approximation of the Gibbs Energy released by the real molecules. One
approximation is the Hamming distance [30] with provides an error count or
count of mismatches between two DNA sequences of equal length perfectly
lined up to each another. A second approximation is the h-measure developed
by [16] that computes the Hamming distance with frame shifts but still as-
sumes the strands are rigid and do not form buldges, in particular. A third
approximation is the simplified dynamic programming algorithm of [9].
Each strand is moved about by a motion engine that mimics random-like
Brownian motion of the real test tube with actually random motion. The
motion engine tracks when any molecule moves beyond the border of a cell.
When a border is crossed, the motion model transfers the molecule to the
migration engine, which moves it from cell to cell (processor to processor).
Motion occurs in discrete steps, called iterations. Each iteration corresponds
to about 1 ms of real time in the real test tube, roughly equivalent to the time
it takes two molecules to settle a hybridization event.