The Program RNAinverse


RNAinverse searches for sequences folding into a predefined structure, thereby inverting the folding algorithm. Input consists of the target structures (in dot-bracket notation) and a starting sequence, which is optional.

Lower case characters in the start sequence indicate fixed positions, i.e. they can be used to add sequence constraints. N’s in the starting sequence will be replaced by a random nucleotide. For each search the best sequence found and its Hamming distance to the start sequence are printed to stdout. If the the search was unsuccessful a structure distance to the target is appended.

By default the program stops as soon as it finds a sequence that has the target as MFE structure. The option -Fp switches RNAinverse to the partition function mode where the probability of the target structure \(\exp(-E(S)/RT) / Z\) is maximized. This tends to produce sequences with a more well-defined structure.

This probability is written in dot-brackets after the found sequence and Hamming distance. With the option -R you can specify how often the search should be repeated.

Sequence Design

  • Prepare an input file containing the target structure and sequence constraints:

  • Design sequences using RNAinverse:

    $ RNAinverse <

    or design even more sequences with:

    $ RNAinverse -R5 -Fp <
      GGCgCCCUUUUGGGaGCC   12  (0.967418)
      GGCgCCCGAAAGGGaGCC   13  (0.967548)
      GGCgCCCUUAUGGGaGCC   10  (0.967418)
      GCGgGUCGAAAGGCaCGC   12  (0.925482)
      GGCgCCCUUUUGGGaGCC   13  (0.967418)

The output consists of the calculated sequence and the number of mutations needed to get the MFE-structure from the start sequence (start sequence not shown). Additionaly, with the partition function folding (-Fp) set, the second output is another refinement so that the ensemble preferes the MFE and folds into your given structure with a distinct probability, shown in brackets.

Other RNA design tools

Another useful program for inverse folding is RNA designer, see RNA Designer takes a secondary structure description as input and returns an RNA strand that is likely to fold in the given secondary structure.

The sequence design application of the ViennaRNA Design Webservices, see, uses a different approach, allowing for more than one secondary structure as input. For more detail read the online Documentation and the next section of this tutorial.