This is a test version of Biostars. For the public version, visit https://www.biostars.org.
How to get primer internal stability graph

Hi,

How can I get the Internal Stability graph or short oligonutides, like this one for B1 (1993 Rychlik)

enter image description here

Also I don't know why the last nucleotides does not match with any value of the graph

I try to get the graph using nearest neighbor dG values, but I cant get a similar graph with the python 2.7 code below, using this approach I can get every value exept for the last nucleotide.

enter image description here

def calc_dG(seq):
    NearPairsPlus = ['AA','AC','AG','AT',
                     'CA','CC','CG','CT',
                     'GA','GC','GG','GT',
                     'TA','TC','TG','TT']
    DeltaG =        [-1.9, -1.3, -1.6, -1.5,
                     -1.9, -3.1, -3.6, -1.6,
                     -1.6, -3.1, -3.1, -1.3,
                     -1.0, -1.6, -1.9, -1.9 ]
    c = []
    seq = seq+ ' '
    a = 0
    while a < len(seq):
        b = 0
        nuc = []
        while b < len(NearPairsPlus):
            if seq[a-2:a] == NearPairsPlus[b]:
                c.append(DeltaG[b])
            b = b + 1
        a = a + 1
    return c

sequence = "ACTTGGGATTGGGCT"
dG_values = calc_dG(sequence)
y = dG_values
x = list(sequence)[:-1]

import matplotlib.pyplot as plt

plt.plot(dG_values)
plt.gca().invert_yaxis()
plt.ylabel(r'$\Delta$ G $\left(\frac{kcal}{mol}\right)$')
plt.show()
pcr primer design python

1 answer

I just solved it, didn't read that the dG values were from pentamers.

Now I got a similar graph from B1 enter image description here

def calc_dG(seq):
    NearPairsPlus = ['AA','AC','AG','AT',
                     'CA','CC','CG','CT',
                     'GA','GC','GG','GT',
                     'TA','TC','TG','TT']
    DeltaG =        [-1.9, -1.3, -1.6, -1.5,
                     -1.9, -3.1, -3.6, -1.6,
                     -1.6, -3.1, -3.1, -1.3,
                     -1.0, -1.6, -1.9, -1.9 ]
    c = []
    seq = seq+ ' '
    a = 0
    while a < len(seq):
        b = 0
        nuc = []
        while b < len(NearPairsPlus):
            if seq[a-2:a] == NearPairsPlus[b]:
                c.append(DeltaG[b])
            b = b + 1
        a = a + 1
    return c

sequence = "ACTTGGGATTGGGCT"
dG_values = calc_dG(sequence)
y = dG_values
x = list(sequence)[:-1]

dG_pentamers = []
for i in range(0, len(y)):
    dG_pentamers.append(sum(y[i:i+4]))
    if i+4 == len(y):
        break

import matplotlib.pyplot as plt

y_labels = list(sequence[0:-5])
y_labels.append(sequence[len(sequence)-5:len(sequence)])

plt.plot(dG_pentamers, marker='o', linestyle=':', color='b')

plt.ylabel(r'$\sum \Delta$ G $\left(\frac{kcal}{mol}\right)$ pentamers')
plt.xticks(range(len(y_labels)), y_labels)
plt.gca().axes.set_ylim([-12,-5])
plt.gca().invert_yaxis()
plt.show()

Log in to answer this question.