# The Program `RNAinverse`

## Introduction

`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 `inv.in` containing the target structure and sequence constraints:

      (((.(((....))).)))
      NNNgNNNNNNNNNNaNNN

- Design sequences using `RNAinverse`:

      $ RNAinverse < inv.in
        GGUgUUGGAUCCGAaACC    5

  or design even more sequences with:

      $ RNAinverse -R5 -Fp < inv.in
        GGUgUGAACCCUCGaACC    5
        GGCgCCCUUUUGGGaGCC   12  (0.967418)
        CUCgAUCUCACGAUaGGG    6
        GGCgCCCGAAAGGGaGCC   13  (0.967548)
        GUUgAGCCCAUGCUaAGC    6
        GGCgCCCUUAUGGGaGCC   10  (0.967418)
        CGGgUGUUGUGACAaCCG    5
        GCGgGUCGAAAGGCaCGC   12  (0.925482)
        GCCgUAUCCGGGUGaGGC    6
        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 http://www.rnasoft.ca. `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 http://nibiru.tbi.univie.ac.at/rnadesign/index.html, 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.