Nucleic acids are not strips of tape

Summary or TL;DR – We tend to think of nucleic acid sequences as strips of tape: a line of letters read from left to right. That picture breaks down as soon as two strands pair, and breaks down further when the building block you want is a structure. I’ve put online a browser-based tool that designs and checks structured building blocks for (T)InDel assembly. You write the strands you want made; it works out what kind of block that is, the oligos to order and the ends the block leaves, and it draws every position where something other than a plain Watson–Crick pair will happen. It builds on InDel assembly (Tizei et al. 2021). The TInDel manuscript is under revision, so I’m keeping the method itself high-level here and will update this post once it is accepted.

Most of us think about a nucleic acid sequence as a strip of tape: a line of letters, read left to right. It’s a useful picture, and it’s the one most of us start from. It also stops working the moment two strands meet. It already confuses some students that the two strands of a duplex run in opposite directions, and that the sequence of one has to be reversed before it can be read against the other.

Now bend that tape. A building block for TInDel assembly isn’t a single duplex. It can carry a bulge or a loop, a mismatch put there on purpose, a universal base, a branch where three strands meet, or a hairpin that closes the end. Working out the strands for a block like that by hand is harder than working out a plain complement, and until now there was nothing to help. The returning strand was worked out by hand, and that’s where errors crept in: simple ones, and difficult to trace once they’re inside a (T)InDel assembly pipeline.

The three kinds of building block used in TInDel assembly, drawn as DNA strands: a linear block (no change in topology), a loop block (decreases topological order) and a DNA junction (increases topological order). Each block's assembly overhang is labelled KNNK.
The three kinds of building block: a linear block, a loop block and a DNA junction. Adapted from Määttälä, Withanage & Pinheiro (manuscript under revision).

That’s the first reason for the tool: to remove those errors before they cost anyone a week. The second is to hold every design to our best understanding of what matters for a block to work. The checks in the tool are that understanding, written down. A design that passes meets our current standard, and one that doesn’t tells you which rule it broke. It’s our best understanding, not the last word, and I expect the rules to change as we learn.

What you give it, and what you get back

You write the strands in their sense orientation and say what you’re building. The tool handles the three kinds of block in the figure: a linear block, a loop block (a hairpin cap that closes a branch) and a DNA junction (a branch point with two or more arms). It checks the design and returns:

  • which kind of block it is, and the complementary strand;
  • the oligos to order, with modifications written the way the supplier reads them (5-nitroindole, for instance, takes a different code at the 5′ end, inside the oligo and at the 3′ end);
  • the end the block leaves, so you can see what can follow it;
  • a drawing of the block that marks every degenerate position and what will become of it: whether it will pair, or may be left as a mismatch.

It works in both directions. If you give it only the sense strand and list the deviations you want (a bulge, a mismatch, a loop, a 5-nitroindole), it derives the partner strand. If you give it both strands, it aligns them and works out what you designed. For a whole set of blocks it builds one order table, so an oligo used by two blocks is ordered once.

How I know it works

Three checks, because a design tool that’s wrong in a quiet way is worse than no tool:

  • A full Python version was set up to write nothing unless the oligos it produces parse back to themselves and validate with no errors.
  • The page you use is a second implementation, in JavaScript. On every load it rebuilds each worked example and compares the result with the Python’s. If they disagree, it says so and tells you not to trust the page.
  • Across our two test sets, 24 of 24 duplexes were inferred correctly from their two strands, and each inference is replayed to reproduce the strand that was typed, character for character.

What it doesn’t do (yet)

  • It models the fold-back product only, so a hairpin and not a duplex of two separate strands.
  • When the bases around a hairpin turn are degenerate, the sequence can’t say where the stem ends and the loop begins. The tool asks rather than guessing.
  • A linear indel assembly is recognised and its reading frame is checked, but the construct layout isn’t validated. The page says so, so a pass can’t be mistaken for a full check.
  • The primer thresholds are a first pass. They’re shown on the page so they can be argued with.

Using it

It runs in your browser. Your sequences aren’t sent anywhere, and the blocks you keep stay in your browser’s local storage. Open it here: TInDel Block Designer. If you find a design it gets wrong, let me know.

Acknowledgement. The tool was developed with Claude Code (Anthropic).

References. Tizei PAG, Harris E, Withanage S, Renders M, Pinheiro VB. A novel framework for engineering protein loops exploring length and compositional variation. Sci Rep 11, 9134 (2021). doi:10.1038/s41598-021-88708-4. Määttälä, Withanage & Pinheiro. Topology-guided engineering of synthetic RNA thermometers via Topological InDel (TInDel) Assembly. Manuscript under revision.


Discover more from Pinheiro Lab

Subscribe now to keep reading and get access to the full archive.

Continue reading