pmcomp_distance#

RNAdist.dp.pmcomp.pmcomp_distance(sequence, md=None)#

Approximates Expected Distances using basepair probabilities

Calculates Approximated Expected Distances using the following formulae:

\[ \begin{align}\begin{aligned}jupin(i, j) = 1 - \sum_{i < k < j} p_{k,j}\\E_{i,j} = jupin(i, j) * (E_{i,j-1}+1) + p_{i,j} + \sum_{i < k < j} (E_{i,k-1}+2) * p_{k,j}\end{aligned}\end{align} \]
Parameters:
  • sequence (str) – RNA sequence of size N

  • md (RNA.md) – ViennaRNA model details object

Returns:

N x N matrix

containing approximated expected distances from nucleotide i to j at matrix[i][j]

Return type:

np.ndarray

You can calculate this using the default model details from ViennaRNA like this

>>> seq = "GGGCUAUUAGCUCAGUUGGUUAGAGCGCACCCCUGAUAAGGGUGAGGUCGCUGAUUCGAAUUCAGCAUAGCCCA"
>>> x = pmcomp_distance(seq)
>>> x.shape
(74, 74)

Via including a model details object in the function call you can change settings for e.g. the temperature

>>> seq = "GGGCUAUUAGCUCAGUUGGUUAGAGCGCACCCCUGAUAAGGGUGAGGUCGCUGAUUCGAAUUCAGCAUAGCCCA"
>>> md = RNA.md(temperature=35.4)
>>> x = pmcomp_distance(seq, md=md)
>>> x[:5, -5:]
array([[4.00170356, 3.00188247, 2.00211336, 1.00316215, 2.0033279 ],
   [3.00170363, 2.00188257, 1.00212447, 2.00234503, 3.00249076],
   [2.00170369, 1.00188828, 2.00369139, 3.00389263, 4.00401832],
   [1.00170376, 2.00329739, 3.00485005, 4.00502225, 5.0051279 ],
   [2.00676375, 3.00810301, 4.00939988, 5.00954299, 6.00962855]])