Sequence design
For scaff-120, we intentionally chose not to use de novo designed DNA sequences for the scaffold for ease of sourcing long scaffolds and to prototype a system that is robust to sequence choice, even biologically sourced. We chose to have four scaffold position domains (A, B, C and D), and the additional reporting position E, of 24 bases each giving a 120-base scaffold sequence, scaff-120, arbitrarily chosen to be two contiguous subsequences of M13 (Supplementary Note 6). For scaff-288, we used a contiguous subsequence of biologically sourced M13, instead of a shorter synthetic scaffold; consisting of four 24-base domain sequences from scaff-120 (B, C, D and E) plus eight more 24-base contiguous domains; enabling computations on 11 scaffold positions (Supplementary Note 9.3). For scaff-624, we also used the biologically sourced full M13 molecule in solution, but chose a 624-base contiguous subsequence (26 domains) based on the criteria given in Supplementary Note 9. We used a thermodynamic sequence design approach13 for compute and reporting domains.
For the compute domains, we used a three-letter ATC code with at most one G as an exception, motifs CCCC, GGGG, AAAAA and TTTTT were forbidden, and isoenergetic complementary binding interactions of −11.7 ± 0.1 kcal mol−1 (chosen simply by our metric). The value −11.6 is the computed mean for a pool of 10,000 length 12 sequences. As soft constraints (that is, enforced with potential exceptions), orthogonal interactions (unintended binding) >−2 kcal mol−1 were evaluated using binding(A,B) = pfunc(A,B) - pfunc(A) - pfunc(B) as in Supplementary Information section 4.2.1 and p. 43 of ref. 13, with pfunc() given by NUPACK451. Secondary structure within each sequence compute domain was optimized to be >−0.25 kcal mol−1. Reporter domains were designed using similar principles (isoenergetic binding between −21.7 kcal mol−1 and −21.95 kcal mol−1 at 53 °C and no G was permitted to be within four bases of a fluorophore52,53). Software packages nuad54 and NUPACK451 were used for DNA sequence design.
Strand design
To have a system that is programmable, we designed a set of compute domains that can be used interchangeably to create an expressive programming language of compute tiles and strands. To avoid unintended hairpin formation within compute strands, each three-bit sequence has two distinct compute domains (for example, 000 and \(\hat{000}\), meaning they have DNA sequences that are not complementary; Supplementary Note 5.1), giving 2 × 23 = 16 distinct compute domains for ℓ = 3. A quenched-fluorescence reporting mechanism, operating at any scaffold position was designed. By convention, quenched (low) signals report output bit 0 and unquenched (high) signals bit 1. Fluorescence and quencher-labelled strands are 20 bases long.
The N = 4 scaffold positions and ℓ = 3 bits per compute domain imply 201 compute strands: a 120-base scaffold (named scaff-120), 64 strands at each position B, C and D, and 8 strands at anchor position A (unpurified). An additional 64 strands for reporting (purified) and 130 for renewable programs (unpurified), give a pool of 395 strands for N ≤ 4, plus an additional 1,144 for N ≤ 25 (Supplementary Note 5.5). We used a thermodynamics-based sequence design approach for compute and reporting domains, building on previous work13, with details in Supplementary Note 6.
DNA synthesis and fluorophore–quencher labelling
Apart from the biologically sourced M13 scaffold strand, which was ordered from tilibit, the other 1,539 DNA strands used in the system were ordered from Integrated DNA Technologies (IDT). Non-scaffold strands were generally ordered in 384-well or 96-well plates normalized to 200 µM in IDTE pH 8.0 buffer. All strands were ordered unpurified except for seven strands used in scaff-120 experiments: the 120-base synthetic scaffold (Ultramer DNA Oligo PAGE purified and dry; Supplementary Note 7.7), the two fluorophore–quencher-labelled strands (HPLC purified and normalized to 100 µM in IDTE pH 8.0 buffer), the four unlabelled reporting-related strands that bind to both scaff-120 and fluorophore-labelled strands (PAGE purified and normalized to 100 µM in IDTE pH 8.0 buffer). We used ATTO590 as a fluorophore label and Iowa Black FQ from IDT as quencher.
Sample mixing and buffer conditions
Most experimental mixes were generated using the custom cosmix library55, and some using the riverine library56. SDC programs and controls were mixed using an Echo 525 acoustic liquid handler (Beckman Coulter, supplied by Labplan Ltd. Ireland) for the data reported in Figs. 3–6, and by hand for some of the data in the Supplementary Information. Also, earlier versions of some data in Figs. 3–5 were mixed by single- and multi-channel hand pipettes, meaning that a liquid handler is not necessary to run SDC programs, but we found that it gave more consistent results (lower signal variance) than hand-mixing. Picklists specifying the liquid transfer sequence and volumes from the 384-well source plates to the 96-well destination plates were generated using the above-mentioned Python libraries. Mixes using synthetic scaff-120 were prepared with a scaffold concentration of 1× = 100 nM, whereas scaff-288 and scaff-624 used biologically sourced M13 at 1× = 10 nM concentration. That is, in all experiments, 1× is the scaffold concentration. All systems used 10× compute strands (except renewable programs used 5.7×), 0.93× of the reporting-related strands that bind to both the fluorophore-labelled strand and scaffold (for example, ATTO*B, ATTO*C, ATTO*D, ATTO*E), 0.79× of the fluorophore strand (5RF) and 17.86× of the quencher strand (3RQ); see beginning of Supplementary Note 10 for domain–strand naming conventions. DNA strands for an SDC program were placed in a single 0.1 ml 96-well PCR plate (or tube) to a volume of 35 µl in 12.5 mM Mg++ in Tris-acetate-EDTA (TAE) buffer with 0.01 % Tween.
... continue reading