Bio.SeqUtils.MeltingTemp 模块

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

该模块包含三种不同的方法来计算寡核苷酸的熔解温度

  1. Tm_Wallace:‘经验法则’

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

  3. Tm_NN:基于最近邻热力学的计算。包含多个用于 DNA/DNA、DNA/RNA 和 RNA/RNA 杂交的表格。提供对错配、悬垂末端、盐浓度和其他添加剂的校正。

大多数 Tm 方法的通用参数
  • seq – 一个 Biopython 序列对象或一个字符串。

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

  • strict – 不允许无法或不能明确地为相应方法评估的碱基字符或相邻双链体键(例如 'AT/NA')(默认=True)。请注意,对于 Tm_Wallace 和 Tm_GC,W (= A 或 T) 和 S (= C 或 G) 不是模棱两可的。如果为 'False',将使用平均值(如果适用)。

该模块无法检测自互补,也不会使用比对工具将寡核苷酸序列比对到其目标序列。因此它无法自行检测悬垂末端和错配(不要考虑灯泡和环路)。这些参数必须传递给相应的方法。

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

  • salt_correction: 通过不同的公式调整 Tm 到给定的盐浓度。该方法从 Tm_GC 和 Tm_NN 调用,但也可以 '手动' 访问。它返回一个校正项,而不是校正后的 Tm!

  • chem_correction: 调整 Tm 以考虑化学添加剂 DMSO 和甲醛。该方法返回校正后的 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.97
>>> print('%0.2f' % mt.Tm_NN(myseq))
60.32

使用不同的热力学表格,例如 Breslauer ‘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

几种类型的盐校正(对于 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+ 和 dNTP 进行校正。(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)

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

参数
  • oldtable: 包含热力学参数的现有字典。

  • values: 包含新值或更新值的字典。

例如,用 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(new) = Tm(old) + corr

  • 方法 5: deltaS(new) = deltaS(old) + corr

  • 方法 6+7: Tm(new) = 1/(1/Tm(old) + 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

  • method: 要应用的哪种方法。方法 1-4 校正 Tm,方法 5 校正 deltaS,方法 6 和 7 校正 1/Tm。这些方法是

    1. 16.6 x log[Na+] (Schildkraut & Lifson (1965), Biopolymers 3: 195-208)

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

    3. 12.5 x log(Na+] (SantaLucia et al. (1996), Biochemistry 35: 3555-3562

    4. 11.7 x log[Na+] (SantaLucia (1998), Proc Natl Acad Sci USA 95: 1460-1465

    5. 对 deltaS 的校正: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 et al. (2004), Biochemistry 43: 3537-3554)

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

示例

>>> from Bio.SeqUtils.MeltingTemp import salt_correction
>>> print('%0.2f' % salt_correction(Na=50, method=1))
-21.60
>>> print('%0.2f' % salt_correction(Na=50, method=2))
-21.85
>>> print('%0.2f' % salt_correction(Na=100, Tris=20, method=2))
-16.45
>>> print('%0.2f' % 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 和甲酰胺。

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

参数
  • melting_temp: 熔解温度。

  • DMSO: DMSO 百分比。

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

  • DMSOfactor: 每增加 1% 的 DMSO,Tm 应该下降多少。默认=0.65 (von Ahsen 等人 2001)。其他已发表的值是 0.5、0.6 和 0.675。

  • fmdfactor: 每增加 1% 的甲酰胺,Tm 应该下降多少。默认=0.65。多篇论文报道了 0.6 到 0.72 之间的系数。

  • fmdmethod

    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)

使用 'Wallace 规则' 计算并返回 Tm。

Tm = 4 degC * (G + C) + 2 degC * (A+T)

Wallace 规则 (Thein & Wallace 1986, in Human genetic diseases: a practical approach, 33-50) 通常被用作经验法则,用于对 14 到 20 nt 长度的引物进行近似 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
参数
  • valueset:包含了一些经常引用的变体。

    1. Tm = 69.3 + 0.41(%GC) - 650/N (Marmur & Doty 1962, J Mol Biol 5: 109-118; Chester & Marshak 1993), Anal Biochem 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; Schildkraut & Lifson 1965, Biopolymers 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)。这是MELTING 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 et al. 2001, Clin Chem 47: 1956-1961)。推荐“作为准确性和易用性之间的折衷”。

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

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

  • saltcorr:盐校正类型(参见方法salt_correction)。默认值=0。0或None表示没有盐校正。

  • mismatch:如果为“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杂交,seq必须是RNA序列。

  • c_seq:互补序列。模板/靶标序列的3'->5'方向。c_seq对于错配校正和悬垂末端校正是必需的。如果存在错配或悬垂末端,则将自动应用这两种校正。默认值=None。

  • shift:引物/探针序列在模板/靶标序列上的偏移,例如

                       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

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

    • DNA_NN1:Breslauer等人的值。(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等人的值。(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)

  • de_table:悬垂末端的热力学值

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

    • RNA_DE1:用于RNA。Turner & Mathews的值(2010)

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

  • dnac2:浓度较低的链的浓度[nM]。在PCR中,这是模板链,其浓度通常非常低,可以忽略(dnac2=0)。在寡核苷酸/寡核苷酸杂交实验中,dnac1等于dnac1。默认值=25。MELTING和Primer3Plus默认使用k = [Oligo(Total)]/4。要模拟这种行为,您必须将[Oligo(Total)]除以2,并将此浓度分配给dnac1和dnac2。例如,Primer3Plus中的总寡核苷酸浓度为50 nM,表示dnac1=25,dnac2=25。

  • selfcomp:序列是否自互补?默认值=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表示没有盐校正。