Kinfold(1)

πŸ’– Kinfold πŸ’–

Okay bestie, let's talk about Kinfold, the RNA section 1 manual 🧚 It's the tool that's obsessed with how RNA secondary structures fold over time, and honestly it's giving main character energy ✨

✨ NAME ✨

Kinfold, simulates the kinetic folding of RNA secondary structures πŸ¦‹

✨ SYNTAX ✨

Kinfold [OPTIONS] < input

✨ DESCRIPTION ✨

Kinfold runs a stochastic folding simulation on RNA sequences, turning them into secondary structures πŸ’… It uses a Monte Carlo approach, where base pairs get formed and dissociated one at a time. Optionally, base pairs can also be shifted around 🌸

For energy evaluation, Kinfold borrows routines from the Vienna RNA Package 🫢

Input comes in through stdin. It's an RNA sequence, and you can optionally add the initial structure plus one or more stop structures, all written in dot-bracket notation πŸ“

Output is a set of trajectories written to stdout, plus a log file with summary info for each trajectory πŸ’œ

✨ OPTIONS ✨

🌈 Move set options

  • --noShift β€” turns off shift moves πŸ™ˆ
  • --noLP β€” forbids structures that contain isolated base pairs

πŸŽ€ Simulation options

  • --num β€” how many trajectories to compute (default=1) πŸ¦‹
  • --time<tmax> β€” sets the maximum length of a folding trajectory. The default is 500, which is super short and only meant for testing, so don't get attached to it 😭
  • --grow <rate> β€” simulates folding during transcription, with a chain growth event happening every rate timesteps ⭐
  • --glen <len> β€” starts a folding-during-transcription simulation with an initial chain length of len 🧚
  • --fpt β€” toggles between first passage time runs, which end as soon as a stop structure is reached, and open-ended simulations. The default is first passage time, so using --fpt switches you over to open-ended simulation πŸ‘‘
  • --start β€” reads a start conformation from stdin. Otherwise, the open chain is used as the start structure 🌸
  • --stop β€” reads one or more stop structures from stdin. Otherwise, the MFE structure is used πŸ’…
  • --met β€” uses the Metropolis rule for the rate between two neighboring conformations, so k=min{1,exp(-dE/RT)}. By default, Kinfold goes with the symmetric Kawasaki rule, k=exp(-dE/2RT) ✨
  • --seed<string> β€” sets the random number seed. The seed string is three numbers separated by equal signs, like 123=456=789. If you don't specify one, it's pulled from the system clock when the program starts πŸŽ€

🫧 Output options

  • -v or --verbose β€” prints more info to stdout πŸ”₯
  • -q or --silent β€” stops trajectories from being written to stdout πŸ™ˆ
  • --lmin β€” skips the complete trajectory and only prints the local minima it runs into πŸ’–
  • --cut<energy> β€” prints only the parts of the trajectory that stay below energy πŸ“
  • --log<file> β€” sets the log file to file.log. The default is kinout 🧚

🌸 Energy model

Check out the Vienna RNA documentation for more details on this part, bestie πŸ“š

  • --dangles<int> β€” picks the dangling end model. Possible values are 0 (none), 1 (normal), and 2 (simplified) πŸ¦‹
  • --T, --Temp<temp> β€” sets the simulation temperature to temp degrees centigrade 🌑️
  • -P, --Par <filename> β€” reads energy parameters from filename πŸ’œ
  • --logML β€” uses logarithmic multiloop energies instead of linear ones. The default is on, so using --logML actually switches log energies off πŸ€”

🎈 Generic options

  • --help β€” outputs help info and exits 🫢
  • --version β€” outputs version info and exits ✨

✨ EXAMPLES ✨

πŸ’… Default mode

In default mode, the start structure is the open chain and the stop structure is the MFE structure. The output below is a possible trajectory for the sequence ACUGAUCGUAGUCAC, so you can see the vibe 🧚

Kinfold --time 100000 < seq.in
...............   0.00      2.660
....(......)...   4.80      2.664
...((......))..   0.70      2.760
..(((......))).   0.20      3.407
..((((....)))).  -0.60      3.579 X1

Each line of the trajectory shows the structure, the energy, and the time for each simulation step. That X1 at the end means the trajectory ended at the first stop structure 🎯 The log file kinout.log also keeps the info you'd need to reproduce the results, like the options and random seeds that were used πŸ“

#Date: Tue Oct  7 10:24:27 2008
#EnergyModel: dangle=2 Temp=37.0 logML=logarithmic Par=(null)
#MoveSet: noShift=off noLP=off
#Simulation: num=2 time=500.00 seed=clock fpt=on mc=Kawasaki
#Simulation: phi=1 pbounds=0.1 0.1 2
#Output: log=kinout silent=off lmin=off cut=20.00
#ACUGAUCGUAGUCAC
#............... (  0.00)
#..((((....)))). ( -0.60) X01
(20773  2191 29311) X01        3.579
( 7439 25635 52414)
Heads up, babe: all the times are in internal units. You can only turn them into real time by comparing against experiment πŸ™ˆ Very roughly, one time step is about 1e-7 seconds.

πŸš‚ Folding during transcription

To run a folding-during-transcription simulation, use the --grow option. Say you've got a transcription rate of 100 nt/sec and you want 1 second, which is about 1e7 time steps. You could run:

Kinfold --grow 100000 --glen 10 < seq.in

✨ AUTHORS ✨

  • Christoph Flamm <xtof@tbi.univie.ac.at> πŸ‘‘
  • Ivo Hofacker <ivo@tbi.univie.ac.at> πŸ‘‘

✨ SEE ALSO ✨

Check out the Vienna RNA package at http://www.tbi.univie.ac.at/~ivo/RNA 🌈


Written with love by Christoph Flamm and Ivo Hofacker, version 1.1 πŸ«ΆπŸ’œ