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)。請注意,W(= A 或 T)和 S(= C 或 G)對於 Tm_Wallace 和 Tm_GC 並不明確。如果為 'False',則將使用平均值(如果適用)。

此模組無法檢測自我互補,也不會使用比對工具將寡核苷酸序列與其目標序列比對。因此,它本身無法檢測懸垂末端和錯配(甚至不要考慮鼓脹和環)。這些參數必須傳遞給各自的方法。

此模組的其他公共方法
  • make_table:建立具有熱力學資料的表。

  • salt_correction:透過不同的公式將 Tm 調整為給定的鹽濃度。此方法從 Tm_GC 和 Tm_NN 呼叫,但也可以「手動」存取。它會傳回校正項,而不是校正後的 Tm!

  • chem_correction:調整關於化學添加劑 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.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 等人 (2001) 或 Owczarzy 等人 (2008) 的說法,校正其他一價陽離子 (K+、Tris)、Mg2+ 和 dNTP(用於 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 等人 (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 等人 (2004), Biochemistry 43: 3537-3554)

    7. 具有決策樹和 7 個經驗常數的複雜公式。Mg2+ 會校正 dNTP 結合(如果存在)(Owczarzy 等人 (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)

校正給定的 DMSO 和甲醯胺 Tm。

請注意,這些校正只是大約的近似值。

引數
  • melting_temp:熔解溫度。

  • DMSO:DMSO 的百分比。

  • fmd:甲醯胺濃度(%(fmdmethod=1) 或莫耳 (fmdmethod=2))。

  • DMSOfactor:每增加百分比的 DMSO,Tm 應降低多少。預設值 = 0.65 (von Ahsen 等人 2001)。其他已發布的值為 0.5、0.6 和 0.675。

  • fmdfactor:每增加百分比的甲醯胺,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)

使用「華萊士規則」計算並傳回 Tm。

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

華萊士規則(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 等人 2001, Clin Chem 47: 1956-1961)。推薦「作為準確性和易用性之間的折衷」。

  • userset:由 A、B、C 和 D 四個值組成的元組。使用者設定會覆寫 valueset。

  • Na、K、Tris、Mg、dNTPs:各離子的濃度 [mM]。如果 K、Tris、Mg 和 dNTPs 中有任何一個值不為零,則會計算「鈉當量」濃度並用於鹽校正 (von Ahsen 等人,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 = [寡核苷酸(總量)]/4。要模擬此行為,您必須將 [寡核苷酸(總量)] 除以 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 表示不進行鹽校正。