RNAALIFOLD(1)

๐Ÿ“ฆ
version 2.7.0 ยท 5 versions
, in ubuntu resolute, ubuntu stonking

โœจ NAME โœจ

okay bestie, this is RNAalifold(1) (User Commands ๐Ÿ’…), the manual page for RNAalifold 2.7.0 ๐Ÿ’–

๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

RNAalifold [options] [<input0.aln>] [<input1.aln>]...

๐Ÿ’– DESCRIPTION ๐Ÿ’–

RNAalifold 2.7.0 ๐ŸŒˆ calculate secondary structures for a set of aligned RNAs ๐Ÿงฌ

okay so RNAalifold reads aligned RNA sequences from stdin or from a file like file.aln ๐ŸŽ€ and calculates their minimum free energy (mfe) structure, partition function (pf), and base pairing probability matrix. Right now, input alignments have to be in CLUSTAL, Stockholm, FASTA, or MAF format. In interactive mode you have to set the input format manually (default is Clustal), but if you don't set it explicitly, it gets determined automagically from the input file โœจ

it returns the mfe structure in bracket notation, its energy, the free energy of the thermodynamic ensemble, and the frequency of the mfe structure in the ensemble, all printed to stdout ๐Ÿ’…

it also makes Postscript files with plots: alirna.ps (the secondary structure graph) and alidot.ps (a "dot plot" of the base pairing matrix) ๐Ÿ“ˆ

the file alifold.out has a list of likely pairs sorted by credibility, and it's perfect for viewing with AliDot.pl ๐Ÿฆ‹

โš ๏ธ Be warned: the output file will overwrite any existing files of the same name. Don't say I didn't warn you ๐Ÿ’€

Now for the options, which are all lowkey iconic ๐Ÿ‘‘

  • -h, --help โ€” Print help and exit ๐Ÿงš
  • --detailed-help โ€” Print help, including all details and hidden options, and exit ๐Ÿ”
  • --full-help โ€” Print help, including hidden options, and exit ๐ŸŒธ
  • -V, --version โ€” Print version and exit ๐Ÿ’œ
  • -v, --verbose โ€” Be verbose. (default=off)

This lowers the log level so even INFO messages get passed through โœจ

  • -q, --quiet โ€” Be quiet. (default=off)

This option keeps the extra info and non-severe warnings from spamming stdout/stderr, which is a total vibe ๐Ÿซถ


๐Ÿ“ฅ I/O Options ๐Ÿ“ค

These are the command line options for input and output (pre-)processing, bestie ๐ŸŽ€

  • -f, --input-format=C|S|F|M โ€” File format of the input multiple sequence alignment (MSA).

If you set this, the input is treated as that particular file format. If you don't, the program tries to work out the format automatically, as long as an input file was provided in the parameters. When the input MSA comes in interactive mode or from a terminal (TTY), the program's default is to assume CLUSTALW format. The formats available right now are ClustalW ('C'), Stockholm 1.0 ('S'), FASTA/Pearson ('F'), and MAF ('M') ๐Ÿงพ

  • --mis โ€” Output the "most informative sequence" instead of the simple consensus. (default=off)

For each column of the alignment, it outputs the set of nucleotides whose frequency is greater than average, written in IUPAC notation ๐Ÿง 

  • -j, --jobs[=number] โ€” Split batch input into jobs and start processing in parallel using multiple threads. A value of 0 means use as many parallel threads as there are computation cores available. (default='0')

Processing is serial by default, meaning one alignment at a time. With this switch you can compute many alignments from the input in parallel ๐Ÿƒโ€โ™€๏ธ RNAalifold makes as many parallel computation slots as you specify and assigns the input alignments from the input file(s) to the open slots. Heads up: this increases memory consumption, since input alignments have to stay in memory until an empty compute slot is available, and every running job needs its own dynamic programming matrices ๐Ÿ’€

  • --unordered โ€” Do not try to keep output in order with input while parallel processing is in place. (default=off)

When parallel input processing (the --jobs flag) is on, the order that input gets processed in depends on the host machine's job scheduler. So any output to stdout or to files will most likely not match the order of the input data sets ๐ŸŒ€ By default, RNAalifold uses a specialized data structure to keep results in input order, but that comes with a memory trade-off, since all output has to be held in memory until consecutive, ordered chunks are ready. With this flag, RNAalifold won't buffer results and instead prints each one as soon as it has been computed ๐Ÿš€

  • --noconv โ€” Do not automatically substitute nucleotide T with U. (default=off)
  • -n, --continuous-ids โ€” Use continuous alignment ID numbering when no alignment ID can be retrieved from input data. (default=off)

Because of its past, RNAalifold produces a specific set of output file names for the first input alignment, like alirna.ps and alidot.ps. For all further alignments in the input, it usually adopts a naming scheme based on IDs. Those IDs may come from the input alignment's meta-data, or get generated from a prefix followed by an increasing counter. Setting this flag tells RNAalifold to use the ID naming scheme for the first alignment too ๐ŸŽ€

  • --auto-id โ€” Automatically generate an ID for each alignment. (default=off)

The default mode of RNAalifold is to determine an ID from the input alignment if the input file format allows it. Alignment IDs are usually given in Stockholm 1.0 formatted input, for instance. If this flag is active, RNAalifold ignores any IDs retrieved from the input and automatically generates an ID for each alignment ๐Ÿช„

  • --id-prefix=STRING โ€” Prefix for automatically generated IDs (as used in output file names). (default='alignment')

If you set this, each alignment gets prefixed with the string you give. The output files will follow this naming scheme: prefix_xxxx_ss.ps (secondary structure plot), prefix_xxxx_dp.ps (dot-plot), prefix_xxxx_aln.ps (annotated alignment), and so on, where xxxx is the alignment number beginning with the second alignment in the input. Pair this with --continuous-ids if you want IDs to begin with the first input alignment ๐ŸŒธ

  • --id-delim=CHAR โ€” Change the delimiter between prefix and increasing number for automatically generated IDs (as used in output file names). (default='_')

This lets you swap out the default '_' delimiter between the prefix string and the increasing number for automatically generated IDs ๐Ÿ“

  • --id-digits=INT โ€” Specify the number of digits of the counter in automatically generated alignment IDs. (default='4')

When alignment IDs are automatically generated, they get an increasing number starting at 1. That number is always left-padded with leading zeros, so it takes up a certain width. Use this parameter to set the width to what you need. Numbers in the range [1:18] are allowed ๐Ÿ”ข

  • --id-start=LONG โ€” Specify the first number in automatically generated alignment IDs. (default='1')

When alignment IDs are automatically generated, they get an increasing number, usually starting at 1. This parameter lets you set the first number to whatever you need. Note: negative numbers are not allowed. Note: setting this parameter implies continuous alignment IDs, which means it activates the --continuous-ids flag ๐ŸŒŸ

  • --filename-delim=CHAR โ€” Change the delimiting character used in sanitized filenames. (default='ID-delimiter')

This parameter changes the delimiting character used while sanitizing filenames, which means replacing invalid characters. Note: the default delimiter ALWAYS is the first character of the "ID delimiter" supplied through the --id-delim option. If the delimiter is a whitespace character or empty, invalid characters get simply removed instead of substituted ๐Ÿงน Right now, these characters count as illegal in filenames: backslash '\', slash '/', question mark '?', percent sign '%', asterisk '*', colon ':', pipe symbol '|', double quote '"', and triangular brackets '<' and '>' ๐Ÿšซ

  • --log-level=level โ€” Set log level threshold. (default='2')

By default, log messages get filtered so only warnings (level 2) or errors (level 3) are printed. This setting lets you pick the threshold, and higher values mean less information. Log-level 5 turns off all messages, even errors and other critical information ๐Ÿ”‡

  • --log-file[=filename] โ€” Print log messages to a file instead of stderr. (default='RNAalifold.log') ๐Ÿ“
  • --log-time โ€” Include time stamp in log messages. (default=off) โฐ
  • --log-call โ€” Include file and line of log calling function. (default=off) ๐Ÿ”Ž

๐Ÿงฎ Algorithms ๐Ÿงฎ

Select additional algorithms which should be included in the calculations ๐Ÿฆ‹

  • -p, --partfunc[=INT] โ€” Calculate the partition function and base pairing probability matrix in addition to the mfe structure. Default is calculation of mfe structure only. (default='1')

Besides the MFE structure, we print a coarse representation of the pair probabilities in the form of a pseudo bracket notation, followed by the ensemble free energy. We also print the centroid structure derived from the pair probabilities, together with its free energy and distance to the ensemble. Finally, it prints the frequency of the mfe structure ๐Ÿ’ซ

An additional value passed to this option changes how the partition function calculation behaves. -p0 deactivates the calculation of the pair probabilities, which saves about 50% in runtime. It prints the ensemble free energy 'dG=-kT ln(Z)' instead ๐ŸŽ๏ธ

  • --betaScale=DOUBLE โ€” Set the scaling of the Boltzmann factors. (default='1.') โœจ

This value is the thing that scales the thermodynamic temperature inside the Boltzmann factors ๐ŸŒก๏ธโœจ. It does that completely independently from the temperature used for the individual loop energy contributions ๐Ÿ’…. The Boltzmann factors end up as exp(- dG/(kTn*betaScale)), where k is the Boltzmann constant ๐Ÿ”ฌ, dG is the free energy contribution of the state, T is the absolute temperature, and n is the number of sequences ๐Ÿงฌ.

  • -S, --pfScale=DOUBLE โ€” okay bestie, this one's for the partition function calc ๐Ÿ’–. It uses scale*mfe as an estimate for the ensemble free energy, and the whole point is to avoid overflows ๐Ÿซถ.
    • default: 1.07
    • The default is 1.07, and useful values are 1.0 to 1.2. You'll occasionally need it for long sequences ๐Ÿ.
  • --MEA[=gamma] โ€” computes the MEA (maximum expected accuracy) structure ๐ŸŽฏ. Main character energy ๐Ÿ‘‘.
    • default: 1.
    • The expected accuracy comes from the pair probabilities. Each base pair (i,j) gets a score of 2*gamma*p_ij, and an unpaired base gets a score equal to the probability of not forming a pair. The parameter gamma tunes how much correctly predicted pairs matter versus unpaired bases. So for small values of gamma, the MEA structure only keeps pairs with very high probability ๐ŸŒธ.
    • Using --MEA implies -p for computing the pair probabilities.
  • --sci โ€” computes the structure conservation index (SCI) for the MFE consensus structure of the alignment ๐Ÿงฉ.
    • default: off
  • -c, --circ โ€” treats the RNA molecule as circular instead of linear ๐Ÿ”„๐Ÿฆ‹.
    • default: off
  • --bppmThreshold=cutoff โ€” sets the threshold for which base pair probabilities get included in the postscript output ๐ŸŽ€.
    • default: 1e-6
    • By default, only pairs over 1e-6 in probability show up as squares in the dot plot. Changing the threshold to any other value lets you increase or decrease how much data shows up โœจ.
  • -g, --gquad โ€” incorporates G-Quadruplex formation into the structure prediction algorithm ๐Ÿ’….
    • default: off
  • -s, --stochBT=INT โ€” stochastic backtrack ๐ŸŽฒ. It computes a certain number of random structures, with a probability that depends on the partition function. Check out the -p option in RNAsubopt for more ๐Ÿ“–.
  • --stochBT_en=INT โ€” same as -s, but it also prints the energies and probabilities of the backtraced structures ๐Ÿ“Š.
  • -N, --nonRedundant โ€” turns on the non-redundant sampling strategy ๐Ÿ™…โ€โ™€๏ธ.
    • default: off
  • --random-seed=INT โ€” sets the seed for the random number generator ๐ŸŒˆ.

๐ŸŽ€ Structure Constraints ๐ŸŽ€

These are the command line options that let you interact with the structure constraints feature of this program ๐Ÿ’œ.

  • --maxBPspan=INT โ€” sets the maximum base pair span ๐Ÿ“.
    • default: -1
  • -C, --constraint[=filename] โ€” calculates structures subject to constraints ๐Ÿšง. The constraining structure gets read from stdin, and the alignment has to be given as a file name on the command line ๐Ÿ’Œ.
    • default: empty ('')
    • The program reads the sequence first, then a string of constraints encoded with these symbols:
      • . means no constraint for this base
      • | means the corresponding base has to be paired
      • x means the base is unpaired
      • < means base i is paired with a base j>i
      • > means base i is paired with a base j<i
      • matching brackets ( and ) mean base i pairs base j
    • Except for |, constraints disallow all pairs that conflict with the constraint. This is usually enough to enforce it, but occasionally a base can stay unpaired even with constraints ๐Ÿ™ˆ.
PF folding ignores constraints of type |. Not the vibe, so keep it in mind ๐Ÿ’€.
  • --batch โ€” uses constraints for all alignment records ๐Ÿงบ.
    • default: off
    • Usually, constraints from the input file only get applied to a single sequence alignment. So RNAalifold stops computing and quits after the first input alignment is processed. With this switch on, RNAalifold processes all the sequence alignments in the input and applies the same constraints to each one ๐Ÿ”.
  • --enforceConstraint โ€” enforces the base pairs given by round brackets ( ) in the structure constraint ๐Ÿ”’.
    • default: off
  • --SS_cons โ€” uses the consensus structure from a Stockholm file (#=GF SS_cons) as a constraint ๐Ÿซง.
    • default: off
    • Stockholm formatted alignment files can store a secondary structure string in one of their #=GC column annotation tags. That tag is usually called SS_cons, which is the consensus secondary structure. Turning this flag on lets you use that consensus structure from the input file as a structure constraint. Right now, only these characters get interpreted:
      • ( and ) for matching parentheses, where column i pairs with column j
      • < and > for matching angular brackets, where column i pairs with column j
    • All other characters aren't interpreted (yet) ๐Ÿšซ.
Heads up: activating this flag implies --constraint ๐Ÿซถ.
  • --shape=file1,file2 โ€” uses SHAPE reactivity data to guide the structure predictions ๐Ÿฆด.
    • Multiple shapefiles for the individual sequences in the alignment can be given as a comma separated list. You can optionally link specific shape files to a specific sequence by prepending the sequence number to the file name. For example, "5=seq5.shape,3=seq3.shape" assigns the reactivity values from seq5.shape to the fifth sequence in the alignment, and the values from seq3.shape to sequence 3 ๐ŸŽฏ. If you don't specify any assignment, the reactivity values get assigned to the corresponding sequences in the order they were given ๐Ÿ”ข.
  • --shapeMethod=D[mX][bY] โ€” specifies the method for converting SHAPE reactivity data into pseudo energy contributions ๐Ÿงช.
    • default: D
    • Right now, the only conversion method available is the one from Deigan et al 2009. It's the default, and it's recognized by a capital D in the parameter. So --shapeMethod="D" is the default setting ๐Ÿ’…. The slope m and the intercept b can be set to non-default values if you need them. Otherwise, m=1.8 and b=-0.6, as stated in the paper mentioned before ๐Ÿ“„. To change these, for example to m=1.9 and b=-0.7, use a parameter string like this: --shapeMethod="Dm1.9b-0.7". You can also provide only one of the two, like --shapeMethod="Dm1.9" or --shapeMethod="Db-0.7" โœจ.

โšก Energy Parameters โšก

Energy parameter sets can be adapted or loaded from user-provided input files ๐ŸŒŸ.

  • -T, --temp=DOUBLE โ€” rescales the energy parameters to a temperature of temp C ๐ŸŒก๏ธ.
    • default: 37.0
    • The default is 37C.
  • -P, --paramFile=paramfile โ€” reads energy parameters from paramfile instead of using the default parameter set ๐Ÿ“‚.
    • Different sets of energy parameters for RNA and DNA should come with your distribution. See the RNAlib documentation for details on the file format ๐Ÿ“š. The placeholder file name DNA can be used to load DNA parameters without needing to actually specify an input file ๐Ÿงฌ.
  • -4, --noTetra โ€” skips the special tabulated stabilizing energies for tri-, tetra- and hexaloop hairpins ๐Ÿ™…โ€โ™€๏ธ.
    • default: off
    • Mostly for testing ๐Ÿงช.
  • --salt=DOUBLE โ€” sets the salt concentration in molar (M) ๐Ÿง‚.
    • default: 1.021M

๐Ÿ’Ž Model Details ๐Ÿ’Ž

Tweak the energy model and pairing rules even more with these parameters ๐Ÿฆ‹.

  • -d, --dangles=INT โ€” decides how to treat "dangling end" energies for bases next to helices in free ends and multi-loops ๐Ÿชข.
    • default: 2
    • With -d2, dangling energies get added for the bases next to a helix on both sides, no matter what ๐Ÿ’–.
    • The option -d0 ignores dangling ends altogether (mostly for debugging) ๐Ÿž.
  • --noLP โ€” produces structures without lonely pairs (helices of length 1) ๐Ÿšซ.
    • default: off
    • For partition function folding, this only disallows pairs that can only occur isolated. Other pairs may still occasionally show up as helices of length 1 ๐Ÿคทโ€โ™€๏ธ.
  • --noGU โ€” doesn't allow GU pairs ๐Ÿ™…โ€โ™€๏ธ.
    • default: off
  • --noClosingGU โ€” doesn't allow GU pairs at the end of helices ๐Ÿšช.
    • default: off
  • --cfactor=DOUBLE โ€” sets the weight of the covariance term in the energy function โš–๏ธ.
    • default: 1.0
  • --nfactor=DOUBLE โ€” sets the penalty for non-compatible sequences in the covariance term of the energy function ๐Ÿ’ข.
    • default: 1.0
  • -E, --endgaps โ€” scores pairs with endgaps the same as gap-gap pairs ๐Ÿซง.
    • default: off
  • -R, --ribosum_file=ribosumfile โ€” uses the specified Ribosum Matrix instead of the normal energy model ๐Ÿงฌ.
    • Matrices should be 6x6, and the order of the terms is AU, CG, GC, GU, UA, UG ๐Ÿ”ข.
  • -r, --ribosum_scoring โ€” uses the ribosum scoring matrix ๐ŸŽฏ.
    • default: off
    • The matrix gets chosen based on the minimal and maximal pairwise identities of the sequences in the file ๐Ÿชž.
  • --old โ€” uses the old energy evaluation, which treats gaps as characters ๐Ÿ•ฐ๏ธ.
    • default: off
  • --nsp=STRING โ€” allows other pairs on top of the usual AU, GC, and GU pairs ๐ŸŒˆ.
    • The argument is a comma separated list of the extra pairs you want to allow. If the first character is a -, then something like AB means that both AB and BA are allowed pairs. For example, --nsp="-GA" lets GA and AG pairs happen ๐Ÿ’…. Nonstandard pairs get a stacking energy of 0 ๐ŸŒธ.
  • --energyModel=INT โ€” sets the energy model ๐Ÿง .
    • This one is rarely used. It folds sequences from the artificial ABCD... alphabet, where A pairs with B, C pairs with D, and so on. You use the energy parameters for GC pairs with --energyModel 1 or for AU pairs with --energyModel 2 ๐Ÿงช.
  • --helical-rise=FLOAT โ€” sets the helical rise of the helix in units of Angstrom ๐Ÿ“.
    • default: 2.8
Use with caution! This value gets re-set automatically to 3.4 if DNA parameters are loaded via -P DNA and no further value is provided โš ๏ธ.
  • --backbone-length=FLOAT โ€” sets the average backbone length for looped regions in units of Angstrom ๐Ÿฆด.
    • default: 6.0

Okay bestie, this next bit is a big ol' warning ๐Ÿšจ

Use with caution! This value gets quietly re-set to 6.76 if you load DNA parameters with -P DNA and don't give it a value of its own. ๐Ÿ’€

๐ŸŽ€ Plotting

These are the knobs for changing the default look of structure layouts and pairing probability plots ๐Ÿฆ‹ Tbh they're so satisfying to play with.

  • --color โ€” Makes a colored version of the consensus structure plot, saved as alirna.ps. Without it you only get black and white. Default: off ๐ŸŒˆ
  • --color-threshold=FLOAT โ€” Sets the max number of counter examples allowed when coloring the consensus structure plot. Default: 2 ๐Ÿ’…
    • Floating point numbers between 0 and 1 are read as frequencies across all the sequences in the alignment. Anything else gets truncated to an integer and used as an absolute number of counter examples. โœจ
  • --color-min-sat=FLOAT โ€” Sets the minimum saturation for coloring the consensus structure plot. Default: 0.2 ๐Ÿซถ
    • It has to be a floating point number that's >= 0 and smaller than 1. No cap, that's the vibe.
  • --aln โ€” Makes a colored, structure-annotated alignment in PostScript format, saved as aln.ps in the current directory. Default: off ๐Ÿงš
  • --aln-EPS-cols=INT โ€” Sets how many columns go into the colored EPS alignment output. Default: 60 ๐Ÿ“
    • A value less than 1 means the output doesn't get wrapped at all. Full chaos mode ๐Ÿ™ˆ
  • --aln-stk[=prefix] โ€” Creates a multi-Stockholm formatted output file. Default: RNAalifold_results ๐Ÿ“
    • By default the file is RNAalifold_results.stk. If you want something else, pass a prefix as the optional argument and it becomes prefix.stk โœจ The file lands in the current directory if it doesn't exist yet. If it already exists, the output gets appended to it, so no overwriting drama.
    • Heads up: any special characters in the filename get replaced by the filename delimiter. That means you can't pass a whole directory path through this option yet. (See also the --filename-delim parameter.) ๐Ÿ’€
  • --noPS โ€” Skips the PostScript drawing of the MFE structure. Default: off ๐Ÿ™…โ€โ™€๏ธ
  • --noDP โ€” Skips creating the dot-plot PostScript file that holds the base pair or stack probabilities. Default: off ๐Ÿ“
    • Paired with -p, this flag also turns off the individual dot-plot files. So the base pair probability output gets left out, but centroid and MEA structure prediction still happen. It's giving selective memory ๐Ÿง 
  • -t, --layout-type=INT โ€” Picks the layout algorithm that works out the nucleotide coordinates. Default: 1 ๐Ÿฆ‹ These are your options:
    • '0' โ€” simple radial layout
    • '1' โ€” Naview layout (Bruccoleri et al. 1988)
    • '2' โ€” circular layout
    • '3' โ€” RNAturtle (Wiegreffe et al. 2018)
    • '4' โ€” RNApuzzler (Wiegreffe et al. 2018)

โš ๏ธ Caveats

Sequences are not weighted! If you can, don't mix very similar and very dissimilar sequences together. Duplicate sequences, for example, can distort the prediction. ๐Ÿ˜ญ

๐Ÿ“š REFERENCES ๐Ÿ“š

If you use this program in your work, you might want to cite these bops:

  • R. Lorenz, S.H. Bernhart, C. Hoener zu Siederdissen, H. Tafer, C. Flamm, P.F. Stadler and I.L. Hofacker (2011), "ViennaRNA Package 2.0", Algorithms for Molecular Biology: 6:26 ๐ŸŒธ
  • I.L. Hofacker, W. Fontana, P.F. Stadler, S. Bonhoeffer, M. Tacker, P. Schuster (1994), "Fast Folding and Comparison of RNA Secondary Structures", Monatshefte f. Chemie: 125, pp 167-188 ๐ŸŒธ
  • R. Lorenz, I.L. Hofacker, P.F. Stadler (2016), "RNA folding with hard and soft constraints", Algorithms for Molecular Biology 11:1 pp 1-13 ๐ŸŒธ
  • Ivo L. Hofacker, Martin Fekete, and Peter F. Stadler (2002), "Secondary Structure Prediction for Aligned RNA Sequences", J.Mol.Biol.: 319, pp 1059-1066. ๐ŸŒธ
  • Stephan H. Bernhart, Ivo L. Hofacker, Sebastian Will, Andreas R. Gruber, and Peter F. Stadler (2008), "RNAalifold: Improved consensus structure prediction for RNA alignments", BMC Bioinformatics: 9, pp 474 ๐ŸŒธ

The algorithm is a variant of the dynamic programming algorithms of M. Zuker and P. Stiegler (mfe) and J.S. McCaskill (pf), adapted for sets of aligned sequences with covariance information. It's giving teamwork ๐Ÿซถ

The energy parameters come from these two cuties:

  • D.H. Mathews, M.D. Disney, D. Matthew, J.L. Childs, S.J. Schroeder, J. Susan, M. Zuker, D.H. Turner (2004), "Incorporating chemical modification constraints into a dynamic programming algorithm for prediction of RNA secondary structure", Proc. Natl. Acad. Sci. USA: 101, pp 7287-7292 ๐Ÿ’œ
  • D.H Turner, D.H. Mathews (2009), "NNDB: The nearest neighbor parameter database for predicting stability of nucleic acid secondary structure", Nucleic Acids Research: 38, pp 280-282 ๐Ÿ’œ

โœจ EXAMPLES โœจ

A simple call to compute the consensus MFE structure, ensemble free energy, base pair probabilities, centroid structure, and MEA structure for a multiple sequence alignment (MSA) given as a Stockholm formatted file alignment.stk looks like this:

$ RNAalifold -p --MEA alignment.stk

Here's an MSA file for three sequences:

# STOCKHOLM 1.0

#=GF AC   RF01293
#=GF ID   ACA59
#=GF DE   Small nucleolar RNA ACA59
#=GF AU   Wilkinson A
#=GF SE   Predicted; WAR; Wilkinson A
#=GF SS   Predicted; WAR; Wilkinson A
#=GF GA   43.00
#=GF TC   44.90
#=GF NC   40.30
#=GF TP   Gene; snRNA; snoRNA; HACA-box;
#=GF BM   cmbuild -F CM SEED
#=GF CB   cmcalibrate --mpi CM
#=GF SM   cmsearch --cpu 4 --verbose --nohmmonly -E 1000 -Z 549862.597050 CM SEQDB
#=GF DR   snoRNABase; ACA59;
#=GF DR   SO; 0001263; ncRNA_gene;
#=GF DR   GO; 0006396; RNA processing;
#=GF DR   GO; 0005730; nucleolus;
#=GF RN   [1]
#=GF RM   15199136
#=GF RT   Human box H/ACA pseudouridylation guide RNA machinery.
#=GF RA   Kiss AM, Jady BE, Bertrand E, Kiss T
#=GF RL   Mol Cell Biol. 2004;24:5797-5807.
#=GF WK   Small_nucleolar_RNA
#=GF SQ   3

AL031296.1/85969-86120     CUGCCUCACAACGUUUGUGCCUCAGUUACCCGUAGAUGUAGUGAGGGUAACAAUACUUACUCUCGUUGGUGAUAAGGAACAGCU
AANU01225121.1/438-603     CUGCCUCACAACAUUUGUGCCUCAGUUACUCAUAGAUGUAGUGAGGGUGACAAUACUUACUCUCGUUGGUGAUAAGGAACAGCU
AAWR02037329.1/29294-29150 ---CUCGACACCACU---GCCUCGGUUACCCAUCGGUGCAGUGCGGGUAGUAGUACCAAUGCUAAUUAGUUGUGAGGACCAACU
#=GC SS_cons               -----((((,<<<<<<<<<___________>>>>>>>>>,,,,<<<<<<<______>>>>>>>,,,,,))))::::::::::::
#=GC RF                    CUGCcccaCAaCacuuguGCCUCaGUUACcCauagguGuAGUGaGgGuggcAaUACccaCcCucgUUgGuggUaAGGAaCAgCU
//

Then the program call above produces this output:

3 sequences; length of alignment 84.
>ACA59
CUGCCUCACAACAUUUGUGCCUCAGUUACCCAUAGAUGUAGUGAGGGUAACAAUACUUACUCUCGUUGGUGAUAAGGAACAGCU
...((((((.(((((((((...........))))))))).))))))..........(((((......)))))............ (-12.54 = -12.77 +   0.23)
...((((((.(((((((((...........))))))))).)))))){{,.......{{{{,......}))))............ [-14.38]
...((((((.(((((((((...........))))))))).))))))..........((((........))))............ {-12.44 = -12.33 +  -0.10 d=10.94}
...((((((.(((((((((...........))))))))).))))))..........((((........))))............ {-12.44 = -12.33 +  -0.10 MEA=66.65}
 frequency of mfe structure in ensemble 0.368739; ensemble diversity 17.77

Let's break that down, because it's actually so neat ๐Ÿงš The first line gets written to stderr and just tells you how many sequences there are and how long the alignment is. You can hush it with the --quiet option. The main output is 7 lines. The first two look like a FASTA header with the ID read from the input, and then the consensus sequence sits on the second line.

The third line is the consensus secondary structure in dot-bracket notation, followed by the averaged minimum free energy in parentheses. That energy has two main parts, the actual free energies from the Nearest Neighbor model and the covariance pseudo-energy term, and both of them show up after the equal sign. The fourth line shows the base pair propensity in pseudo dot-bracket notation, followed by the ensemble free energy dG = -kT ln(Z) in square brackets ๐Ÿ’…

The next two lines are the centroid and MEA structures, both in dot-bracket notation. Each one comes with its free energy contributions, the mean distance (d) to the ensemble, and the maximum expected accuracy (MEA). Again, the free energies are split into the Nearest Neighbor contribution and the covariance pseudo-energy term. Iconic data โœจ

RNAalifold also produces three output files. ACA59_ss.ps has the secondary structure drawing, ACA59_dp.ps has the base pair probability dot-plot, and ACA59_ali.out has a detailed table of base pair probabilities ๐ŸŒˆ


๐Ÿงš THE ALIOUT FILE ๐Ÿงš

When you compute base pair probabilities with the --partfunc option, RNAalifold writes a file with the suffix ali.out ๐Ÿฆ‹ It holds the base pairing probabilities between different alignment columns, along with detailed stats for each sequence in the alignment. It's a plain text file with a two-line header that tells you the number of sequences and the length of the alignment. The first few lines look something like this:

3 sequence; length of alignment 84
alifold output
   14    36  0  92.7%   0.212 CG:1    UA:2
   13    37  0  92.7%   0.218 GU:1    AU:2
   12    38  0  92.7%   0.231 CG:3
   15    35  0  91.9%   0.239 UG:3
   16    34  0  85.2%   0.434 UA:2    --:1
    8    42  0  80.7%   0.526 AU:3   +
    9    41  0  80.4%   0.542 CG:3   +
    7    43  1  80.1%   0.541 CG:2   +

Starting with the third row, each line has at least six and at most 13 columns separated by whitespace, and they mean the following ๐Ÿ’–

  • Column 1 and 2 โ€” the i-position and j-position of a potential base pair (i, j).
  • Column 3 โ€” the number of counter examples, meaning how many sequences in the alignment can't form a canonical base pair at their respective sequence positions.
  • Column 4 โ€” the base pair probability in percent.
  • Column 5 โ€” a pseudo entropy measure, S_ij = S_i + S_j - p_ij ln(p_ij), where S_i and S_j are the positional entropies for alignment columns i and j, and p_ij is the base pair probability.
  • Columns 6-12 โ€” the number of each particular base pair for the individual sequences in the alignment. We're tracking GC, CG, AU, UA, GU, UG, plus the special case --, which stands for gaps at both positions i and j.

Last but not least, any base pair that isn't part of the MFE structure gets an extra + sign in the last column. Main character energy, honestly ๐Ÿ‘‘


๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

Ivo L Hofacker, Stephan Bernhart, Ronny Lorenz ๐Ÿซถ

โœจ REPORTING BUGS โœจ

okay bestie, this part is short but it's giving important ๐Ÿ™ˆ The original's whole vibe is "if you think our program is wrong, it's probably nature being sus ๐Ÿ’€" ๐Ÿ˜ญ lol. Comments and bug reports go to rna@tbi.univie.ac.at ๐Ÿ’Œ ๐Ÿซถ

๐Ÿฆ‹ SEE ALSO ๐Ÿฆ‹

okay so there's a whole sister package called ALIDOT ๐ŸŒˆ you can find it at http://www.tbi.univie.ac.at/RNA/Alidot/ โœจ it's giving extra credit energy ๐Ÿ’…


RNAalifold 2.7.0 ๐ŸŽ€ February 2026 ๐ŸŒธ RNAALIFOLD(1) ๐Ÿ‘‘

no cap that's the whole page, you did amazing reading it ๐Ÿฅน๐Ÿ’– see you in the next manpage, bestie ๐Ÿงšโœจ

๐Ÿ“ฆ where this page comes from