Bio.SeqUtils.MeltingTemp模块

计算核苷酸序列的熔化温度。

本模块包含计算寡核苷酸熔化温度的三种不同方法:

  1. TM_Wallace:“经验法则”

  2. TM_GC:基于GC含量的经验公式。可以包括盐度和失配校正。

  3. TM_NN:基于最近邻热力学的计算。包括DNA/DNA、DNA/RNA和RNA/RNA杂交的几个表格。可对不匹配、悬垂末端、盐浓度和其他添加剂进行校正。

TM_STARUC是“旧的”NN计算,保留是为了兼容。但是,建议改用TM_NN,因为将来可能会弃用TM_STARUC。此外,TM_NN有更多的选择。使用带有默认参数的TM_STARUC和TM_NN会得到(本质上)相同的结果。

大多数TM方法的一般参数:
  • SEQ--Biopython序列对象或字符串。

  • 检查--检查序列对于给定方法是否有效(默认值=True)。通常,会删除空格和非基本字符,并将字符转换为大写。RNA将被反转录。

  • 严格--不允许基本字符或邻居双工键(例如‘at/na’),它们不能或不能明确地为各自的方法求值(默认值=True)。注意,对于TM_Wallace和TM_GC,W(=A或T)和S(=C或G)没有歧义。如果为‘false’,将使用平均值(如果适用)。

该模块不能检测自身互补,也不会使用比对工具将寡核苷酸序列与其目标序列进行比对。因此,它本身不能检测出悬挂末端和不匹配(甚至不要考虑灯泡和环路)。这些参数必须移交给各自的方法。

本模块的其他公共方法:
  • make_table:创建包含热力学数据的表格。

  • 盐校正:通过不同的公式将TM调整到给定的盐浓度。此方法从TM_GC和TM_NN调用,但也可以“手动”访问。它返回的是修正项,而不是修正后的TM!

  • 化学更正:针对化学添加剂二甲基亚砜(DMSO)和甲醛,调整Tm。该方法返回校正后的TM。化学校正不是TM方法的组成部分,必须另外调用。

例如:

>>> from Bio.SeqUtils import MeltingTemp as mt
>>> from Bio.Seq import Seq
>>> mystring = 'CGTTCCAAAGATGTGGGCATGAGCTTAC'
>>> myseq = Seq(mystring)
>>> print('%0.2f' % mt.Tm_Wallace(mystring))
84.00
>>> print('%0.2f' % mt.Tm_Wallace(myseq))
84.00
>>> print('%0.2f' % mt.Tm_GC(myseq))
58.73
>>> print('%0.2f' % mt.Tm_NN(myseq))
60.32

带有默认值的TM_NN与‘old’TM_statuc产生相同的结果。但是,RNA的值有所不同,因为TM_STARUC对RNA的计算有一些错误。此版本中已修复这些错误。

新的TM_NN可以做得稍微多一点:使用不同的热力学表,例如来自Breslaer‘86或Sugimoto’96的热力学表:

>>> print('%0.2f' % mt.Tm_NN(myseq, nn_table=mt.DNA_NN1))  # Breslauer '86
72.19
>>> print('%0.2f' % mt.Tm_NN(myseq, nn_table=mt.DNA_NN2))  # Sugimoto '96
65.47

RNA和RNA/DNA杂交物的表格如下:

>>> print('%0.2f' % mt.Tm_NN(myseq, nn_table=mt.RNA_NN1))  # Freier '86
73.35
>>> print('%0.2f' % mt.Tm_NN(myseq, nn_table=mt.R_DNA_NN1))  # Sugimoto '95
58.45

几种类型的SALC校正(针对TM_NN和TM_GC):

>>> for i in range(1, 8):
...     print("Type: %d, Tm: %0.2f" % (i, Tm_NN(myseq, saltcorr=i)))
...
Type: 1, Tm: 54.27
Type: 2, Tm: 54.02
Type: 3, Tm: 59.60
Type: 4, Tm: 60.64
Type: 5, Tm: 60.32
Type: 6, Tm: 59.78
Type: 7, Tm: 59.78

根据von Ahsen等人对其他单价阳离子(K+,Tris)、Mg2+和dNTPs的校正。(2001)或Owczarzy等人。(2008)(针对TM_NN和TM_GC):

>>> print('%0.2f' % mt.Tm_NN(myseq, Na=50, Tris=10))
60.79
>>> print('%0.2f' % mt.Tm_NN(myseq, Na=50, Tris=10, Mg=1.5))
67.39
>>> print('%0.2f' % mt.Tm_NN(myseq, Na=50, Tris=10, Mg=1.5, saltcorr=7))
66.81
>>> print('%0.2f' % mt.Tm_NN(myseq, Na=50, Tris=10, Mg=1.5, dNTPs=0.6,
...                          saltcorr=7))
66.04

悬挂末端和不匹配,例如:

Oligo:     CGTTCCaAAGATGTGGGCATGAGCTTAC       CGTTCCaAAGATGTGGGCATGAGCTTAC
           ::::::X:::::::::::::::::::::  or   ::::::X:::::::::::::::::::::
Template:  GCAAGGcTTCTACACCCGTACTCGAATG      TGCAAGGcTTCTACACCCGTACTCGAATGC

这里:

>>> print('%0.2f' % mt.Tm_NN('CGTTCCAAAGATGTGGGCATGAGCTTAC'))
60.32
>>> print('%0.2f' % mt.Tm_NN('CGTTCCAAAGATGTGGGCATGAGCTTAC',
...                    c_seq='GCAAGGcTTCTACACCCGTACTCGAATG'))
55.39
>>> print('%0.2f' % mt.Tm_NN('CGTTCCAAAGATGTGGGCATGAGCTTAC', shift=1,
...                   c_seq='TGCAAGGcTTCTACACCCGTACTCGAATGC'))
55.69

RNA也是如此:

>>> print('%0.2f' % mt.Tm_NN('CGUUCCAAAGAUGUGGGCAUGAGCUUAC',
...                   c_seq='UGCAAGGcUUCUACACCCGUACUCGAAUGC',
...                   shift=1, nn_table=mt.RNA_NN3,
...                   de_table=mt.RNA_DE1))
73.00

请注意,热力学数据并不适用于所有类型的失配,例如,大多数双重失配或终端失配与悬垂末端相结合:

>>> print('%0.2f' % mt.Tm_NN('CGTTCCAAAGATGTGGGCATGAGCTTAC',
...                   c_seq='TtCAAGGcTTCTACACCCGTACTCGAATGC',
...                   shift=1))
Traceback (most recent call last):
ValueError: no thermodynamic data for neighbors '.C/TT' available

创建您自己的表,或更新/扩展现有表。例如,添加锁定核苷酸的值。这里,‘锁定A’(及其补码)应该用‘1’表示:

>>> mytable = mt.make_table(oldtable=mt.DNA_NN3,
...                         values={'A1/T1':(-6.608, -17.235),
...                         '1A/1T':(-6.893, -15.923)})
>>> print('%0.2f' % mt.Tm_NN('CGTTCCAAAGATGTGGGCATGAGCTTAC'))
60.32
>>> print('%0.2f' % mt.Tm_NN('CGTTCCA1AGATGTGGGCATGAGCTTAC',
...                           nn_table=mytable, check=False))
... # 'check' must be False, otherwise '1' would be discarded
62.53
Bio.SeqUtils.MeltingTemp.make_table(oldtable=None, values=None)

返回包含热力学参数的表(作为字典)。

参数:
  • 旧表:现有的热力学参数词典。

  • 值:具有新值或更新值的字典。

例如,用来自Allawi&Santalucia‘97的启动参数替换Sugimoto’96数据集中的启动参数:

>>> from Bio.SeqUtils.MeltingTemp import make_table, DNA_NN2
>>> table = DNA_NN2                               # Sugimoto '96
>>> table['init_A/T']
(0, 0)
>>> newtable = make_table(oldtable=DNA_NN2, values={'init': (0, 0),
...                       'init_A/T': (2.3, 4.1),
...                       'init_G/C': (0.1, -2.8)})
>>> print("%0.1f, %0.1f" % newtable['init_A/T'])
2.3, 4.1
Bio.SeqUtils.MeltingTemp.salt_correction(Na=0, K=0, Tris=0, Mg=0, dNTPs=0, method=1, seq=None)

计算一个项来修正盐离子的Tm。

根据TM的计算,该项将校正TM或熵。要计算校正后的TM值,需要应用不同的操作:

  • 方法1-4:TM(新)=TM(旧)+Corr

  • 方法5:增量(新)=增量(旧)+Corr

  • 方法6+7:TM(新)=1/(1/TM(旧)+Corr)

参数:
  • Na、K、Tris、Mg、dNTPs:各离子的毫摩尔浓度。要进行简单的“盐校正”,只需传递Na即可。如果K、Tris、Mg和dNTPs中的任何一个为非零,则根据von Ahsen等人计算“钠当量”浓度。(2001,Clin Chem 47:1956-1961): [Na_eq] = [Na+] + [K+] + [Tris] /2+120*( [Mg2+] - [dntps] )^0.5如果 [dntps] >= [Mg2+] : [Na_eq] = [Na+] + [K+] + [Tris] /2

  • 方法:应用哪种方法。方法1-4校正TM,方法5校正三角洲,方法6和7校正1/TM。方法是:

    1. 16.6 x日志 [Na+] (SChild kraut&Lifson(1965),生物聚合物3:195-208)

    2. 16.6 x日志( [Na+] /(1.0+0.7* [Na+] )(Wetmur(1991),Crit Rev Biochem Mol Biol 126:227-259)

    3. 12.5xlog(Na+)(Santalucia et al.(1996),生物化学35:3555-3562

    4. 11.7 x日志 [Na+] (桑塔卢西亚(1998),“美国学报”95:1460-1465

    5. 增量校正:0.368 x(N-1)x ln [Na+] (Santalucia(1998),Proc Natl Acad Sci USA 95:1460-1465)

    6. (4.29(%GC)-3.95)x1e-5 x ln [Na+] +9.40e-6 x ln [Na+] ^2(Owczarzy等人(2004),生物化学43:3537-3554)

    7. 具有决策树和7个经验常数的复杂公式。对Mg2+进行dNTPs结合校正(如果存在)(Owczarzy等人)。(2008),生物化学47:5336-5353)

示例

>>> from Bio.SeqUtils import MeltingTemp as mt
>>> print('%0.2f' % mt.salt_correction(Na=50, method=1))
-21.60
>>> print('%0.2f' % mt.salt_correction(Na=50, method=2))
-21.85
>>> print('%0.2f' % mt.salt_correction(Na=100, Tris=20, method=2))
-16.45
>>> print('%0.2f' % mt.salt_correction(Na=100, Tris=20, Mg=1.5, method=2))
-10.99
Bio.SeqUtils.MeltingTemp.chem_correction(melting_temp, DMSO=0, fmd=0, DMSOfactor=0.75, fmdfactor=0.65, fmdmethod=1, GC=None)

将给定的TM更正为DMSO和甲酰胺。

请注意,这些修正是粗略的+/-近似值。

参数:
  • 熔化温度:熔化温度。

  • DMSO:百分比DMSO。

  • FMD:甲酰胺浓度,以%(fmdmethod=1)或摩尔(fmdmethod=2)表示。

  • DMSO因子:TM每%DMSO应减少多少。默认值=0.65(von Ahsen等人2001)。其他发布的值为0.5%、0.6%和0.675。

  • fmdfactor:每百份甲酰胺Tm应减少多少。默认值=0.65。有几篇论文报道的因子在0.6到0.72之间。

  • fmd方法:

    1. TM=TM因子(%甲酰胺)(默认)

    2. Tm=Tm+(0.453(f(GC))-2.88)x [甲酰胺]

    这里f(Gc)是gc的分数。请再次注意,在fmdmethod=1中,甲酰胺浓度以%表示,而在fmdmethod=2中,它以摩尔表示。

  • GC:GC含量,以百分比表示。

示例:
>>> from Bio.SeqUtils import MeltingTemp as mt
>>> mt.chem_correction(70)
70
>>> print('%0.2f' % mt.chem_correction(70, DMSO=3))
67.75
>>> print('%0.2f' % mt.chem_correction(70, fmd=5))
66.75
>>> print('%0.2f' % mt.chem_correction(70, fmdmethod=2, fmd=1.25,
...                                    GC=50))
66.68
Bio.SeqUtils.MeltingTemp.Tm_Wallace(seq, check=True, strict=True)

使用“华莱士法则”计算并返回TM。

TM=4摄氏度 (G+C)+2摄氏度 (A+T)

华莱士法则(Thein&Wallace 1986,“人类遗传病:实用方法,33-50”)经常被用作14-20个核苷酸长度引物的近似TM计算的经验法则。

此方法忽略非DNA字符(例如,E、F、J、!、1等)。

示例:
>>> from Bio.SeqUtils import MeltingTemp as mt
>>> mt.Tm_Wallace('ACGTTGCAATGCCGTA')
48.0
>>> mt.Tm_Wallace('ACGT TGCA ATGC CGTA')
48.0
>>> mt.Tm_Wallace('1ACGT2TGCA3ATGC4CGTA')
48.0
Bio.SeqUtils.MeltingTemp.Tm_GC(seq, check=True, strict=True, valueset=7, userset=None, Na=50, K=0, Tris=0, Mg=0, dNTPs=0, saltcorr=0, mismatch=True)

使用基于GC含量的经验公式返回TM。

通用格式:TM=A+B(%GC)-C/N+盐校正-D(%不匹配)

A、B、C、D:经验常数,N:引物长度D(Tm每%失配的减少量)通常为1,但有时也使用其他值(0.6-1.5)。使用‘X’指示序列中的不匹配位置。请注意,这一失配修正是一个粗略估计。

>>> from Bio.SeqUtils import MeltingTemp as mt
>>> print("%0.2f" % mt.Tm_GC('CTGCTGATXGCACGAGGTTATGG', valueset=2))
69.20
参数:
  • Value Set:包括几个经常被引用的变体:

    1. TM=69.3+0.41(%GC)-650/N(Marmur&Doty 1962,J Mol Biol 5:109-118;Chester&Marshak 1993),肛门生物化学209:284-290)

    2. TM=81.5+0.41(%GC)-675/N-%不匹配‘QuikChange’公式。(制造商推荐)用于QuikChange诱变引物的设计。

    3. TM=81.5+0.41(%GC)-675/N+16.6 x log [Na+] (Marmur&Doty 1962,J Mol Biol 5:109-118;SChild kraut&Lifson 1965,生物聚合物3:195-208)

    4. TM=81.5+0.41(%GC)-500/N+16.6 x log( [Na+] /(1.0+0.7 x [Na+] ))-%不匹配(Wetmur 1991,Crit Rev Biochem Mol Biol 126:227-259)。这是熔化近似模式下的标准公式4.3。

    5. TM=78+0.7(%GC)-500/N+16.6 x log( [Na+] /(1.0+0.7 x [Na+] ))-%不匹配(Wetmur 1991,Crit Rev Biochem Mol Biol 126:227-259)。对于RNA来说。

    6. TM=67+0.8(%GC)-500/N+16.6 x log( [Na+] /(1.0+0.7 x [Na+] ))-%不匹配(Wetmur 1991,Crit Rev Biochem Mol Biol 126:227-259)。RNA/DNA杂交体。

    7. TM=81.5+0.41(%GC)-600/N+16.6 x log [Na+] 由Primer3Plus用于计算产品TM。默认设置。

    8. TM=77.1+0.41(%GC)-528/N+11.7 x log [Na+] (von Ahsen等人)2001年,临床化学47:1956-1961)。推荐“作为准确性和易用性之间的折衷”。

  • 用户集:A、B、C和D的四个值的元组。用户集覆盖值集。

  • Na、K、Tris、Mg、dNTPs:各离子浓度 [mM] 。如果K、Tris、Mg和dNTPs中的任何一个为非零,则计算“钠当量”浓度并用于盐校正(von Ahsen等人,2001年)。

  • saltcorr:盐校正的类型(请参阅方法saltcor)。默认值=5.0或无表示不进行盐度校正。

  • 不匹配:如果‘True’(默认值)为‘True’,则序列中的每个‘X’都被视为不匹配。

Bio.SeqUtils.MeltingTemp.Tm_NN(seq, check=True, strict=True, c_seq=None, shift=0, nn_table=None, tmm_table=None, imm_table=None, de_table=None, dnac1=25, dnac2=25, selfcomp=False, Na=50, K=0, Tris=0, Mg=0, dNTPs=0, saltcorr=5)

使用最近邻热力学将TM退回。

参数:
  • SEQ:作为字符串或Biopython序列对象的引物/探针序列。对于RNA/DNA杂交,序列必须是RNA序列。

  • c_seq:互补序列。模板/靶在3‘->5’方向的序列。c_seq是失配校正和悬挂端校正所必需的。如果存在不匹配或悬空末端,将自动应用这两个更正。默认值=无。

  • 移位:模板/靶序列上引物/探针序列的移位,例如::

                       shift=0       shift=1        shift= -1
    Primer (seq):      5' ATGC...    5'  ATGC...    5' ATGC...
    Template (c_seq):  3' TACG...    3' CTACG...    3'  ACG...
    

    如果seq和c_seq具有不同的长度,或者如果它们应该有悬垂的末端,则需要使用Shift参数来对齐seq和c_seq。默认值=0

  • 表:热力学NN值,实现了八个表:对于DNA/DNA杂交:

    • DNA_NN1:来自Breslaer等人的值。(1986年)

    • DNA_NN2:来自Sugimoto等人的值。(1996年)

    • DNA_NN3:来自Allawi&Santalucia(1997)的值(默认值)

    • DNA_NN4:来自Santalucia&Hicks的价值(2004)

    对于RNA/RNA杂交:

    • RNA_NN1:来自Freier等人的值。(1986年)

    • RNA_NN2:来自Xia等人的值。(1998年)

    • RNA_NN3:来自Chen et al.(2012年)

    对于RNA/DNA杂交:

    • R_DNA_NN1:来自Sugimoto等人的值。(1995)请注意, seq 一定是RNA序列。

    使用模块的Maketable方法创建新表或更新其中一个已实现的表。

  • TMM_TABLE:端子不匹配的热力学值。默认:DNA_TMM1(Santalucia&Peyret,2001)

  • IMM_TABLE:内部不匹配的热力学值,可能包括胰岛素不匹配。默认:DNA_IMM1(Allawi&Santalucia,1997-1998;Peyret等人,1999;Watkins&Santalucia,2005)

  • DETABLE:悬挂端的热力学值(_T):

    • DNA_DE1:用于DNA。来自Bommarito等人的价值。(2000)(默认)

    • RNA_DE1:表示RNA。特纳和马修斯的价值(2010)

  • dnac1:高浓度链的浓度 [nM] 。通常这将是引物(用于PCR)或探针。默认值=25。

  • dnac2:低浓缩链的浓度 [nM] 。在PCR中,这是通常浓度非常低的模板链,可以忽略(dnac2=0)。在寡核苷酸/寡核苷酸杂交实验中,dnac1等于dnac1。默认值=25。熔化和Primer3Plus使用k= [OLGO(总计)] 默认情况下为/4。要模仿这种行为,你必须将 [OLGO(总计)] 并将该浓度分配给dnac1和dnac2。例如,引物3Plus中50 nM的总寡聚浓度意味着dnac1=25,dnac2=25。

  • 自我比较:序列是自我互补的吗?默认值=False。如果为“True”,则认为引物与自身结合,因此不考虑dnac2。

  • Na、K、Tris、Mg、dNTPs:有关详细信息,请参阅方法‘TM_GC’。默认值:NA=50,K=0,Tris=0,Mg=0,dNTPS=0。

  • saltcorr:请参阅方法‘TM_GC’。默认值=5.0表示不进行盐度校正。

Bio.SeqUtils.MeltingTemp.Tm_staluc(s, dnac=50, saltc=50, rna=0)

使用最近邻热力学(过时)退回DNA/DNA TM。

此方法在将来可能会被弃用。请改用TM_NN。使用默认值的TM_NN会产生与TM_STARUC相同的结果。

s是字符串形式的序列,或者序列对象dnac是DNA浓度 [nM] 盐度是指盐的浓度。 [mM] 。RNA=0表示DNA/DNA(默认值),使用1表示RNA/RNA杂交。

参见Allawi&Santalucia(1997年),生物化学36:10581-10594,参见Xia等人(1998年),生物化学37:14719-14735

示例

>>> print("%0.2f" % Tm_staluc('CAGTCAGTACGTACGTGTACTGCCGTA'))
59.87
>>> print("%0.2f" % Tm_staluc('CAGTCAGTACGTACGTGTACTGCCGTA', rna=True))
77.90

您还可以使用Seq对象而不是字符串,

>>> from Bio.Seq import Seq
>>> s = Seq('CAGTCAGTACGTACGTGTACTGCCGTA')
>>> print("%0.2f" % Tm_staluc(s))
59.87
>>> print("%0.2f" % Tm_staluc(s, rna=True))
77.90