Biopython - Big Discrepancy Calculating RNA melting Temperature over Literature
1
0
Entering edit mode
9.0 years ago
g3056471 • 0

I experience big discrepancies when calculating melting temperature of RNA 7-mers with Biopython over values generated by a popular algorithm.

I tried the nearest neighbour algorithm with RNA and salt concentrations as described in a respective paper (thermodynamic table used as in paper below from: Freier et al 1986). Yet, the values largely differ (execute code below to see).

I tried all seven salt correction methods provided by Biopython, still I never get close to the values generated by siRNA design algorithm for the same 7-mers.

Can someone tell me how accurate Biopython's melting temperature nearest neighbour algorithm is? Especially for short oligomers like my 7-mers? Is there maybe something I am implementing wrong? Any suggestions?

Values derived from executing sample input: http://sidirect2.rnai.jp/

Tm is given for the seed duplex of the guide strand: bases 2-7

Literature:

Thermodynamic stability and Watson-Crick base pairing in the seed duplex are major determinants of the efficiency of the siRNA-based off-target effect

http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2602766/pdf/gkn902.pdf

Python code (indentations might be messed up):

    from Bio.Seq import Seq  
    from Bio.SeqUtils import MeltingTemp

    test_list = [
    ('GGAUUUG', 21.5),
    ('CUCAUUG', 18.1),
    ('CAUAUUC', 8.7),
    ('UUUGAGU', 19.2),
    ('UUUUGAG', 12.2),
    ('GUUUCAA', 14.9),
    ('AGUUUCG', 19.7),
    ('GAAGUUU', 13.3)
    ]

    for t in test_list:
        myseq = Seq(t[0])
        tm = MeltingTemp.Tm_NN(myseq, dnac1=100, Na=100,   nn_table=MeltingTemp.RNA_NN1, saltcorr=7)  # NN1 = Freier et al (1986)
        tm = round(tm, 1)  # round to one decimal
        print 'BioPython Tm: ' + str(tm) + '  siDirect Tm: ' + str(t[1])

Question first asked at stack-exchange: http://stackoverflow.com/questions/30037939/biopython-big-discrepancy-calculating-rna-melting-temperature-over-literature

Also asked at: http://biology.stackexchange.com/questions/33032/biopython-big-discrepancy-calculating-rna-melting-temperature-over-literature

RNA melting-Temperature Biopython • 3.5k views
ADD COMMENT
1
Entering edit mode
8.4 years ago
Markus ▴ 320

I have written the recent version of MeltingTemp in Biopython's SeqUtils. I have extensively tested the Tm calculations against other programs like MELTING and Primer3Plus and other online Tm calculators with consistent results, thus I'm pretty confident that there is no gross error in the module. The simple answer in this case is: the calculation of siDirect is wrong.

One minor thing: Many programs calculate k as k = total Oligo/4. MeltingTemp uses k = Oligo1 - (Oligo2/2). Thus to mimic this behaviour, you have to use dnac1=50, dnac2=50 instead of dnac1=100.

And now the major thing: Oligo concentration is usually given in nanomolar. However, siDirect seems to use micromolar in its calculation!

Thus, you have to pass 1000-fold higher oligo concentrations to Biopython's MeltingTemp to get the same result as siDirect:

>>> from Bio.SeqUtils import MeltingTemp as mt
>>> print mt.Tm_NN('GGAUUUG', dnac1=50000, dnac2=50000, Na=100,
                  nn_table=mt.RNA_NN1, saltcorr=1)
20.1472140567
>>> print mt.Tm_NN('CUCAUUG', dnac1=50000, dnac2=50000, Na=100,
                   nn_table=mt.RNA_NN1, saltcorr=1)
18.1074422939
`

This is of course wrong if your primer concentration is 100 nM, but that's the result you get from siDirect.

ADD COMMENT

Login before adding your answer.

Traffic: 2523 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6