Bio.SeqUtils.MeltingTemp模块
计算核苷酸序列的解链温度。
该模块包含三种不同的方法来计算寡核酸的解链温度:
TM_Wallace:“经验法则”
Tm_GC:基于GC含量的经验公式。可以包括盐和失配校正。
TM_NN:基于最近邻热力学的计算。其中包括DNA/DNA、DNA/RNA和RNA/RNA杂交的几个表格。可以对错配、悬空末端、盐浓度和其他添加剂进行纠正。
- 大多数TM方法的一般参数:
seq --Biopython序列对象或字符串。
check --检查序列对于给定方法是否有效(默认= True)。一般来说,空白和非基本字符会被删除,字符会转换为大写字母。RNA将被逆转录。
严格--不允许为相应方法明确评估的基本字符或邻居双重键(例如“AT/NA”)(默认=True)。请注意,W(= A或T)和S(= C或G)对于TM_Wallace和TM_GC并不模糊。如果“假”,将使用平均值(如果适用)。
该模块无法检测自身互补,并且不会使用比对工具将寡聚核酸序列与其目标序列进行比对。因此,它无法自行检测悬垂端和不匹配(甚至不要考虑灯泡和环路)。这些参数必须移交给相应的方法。
- 本模块的其他公共方法:
制造表 :创建包含热力学数据的表。
salt_correction:通过不同的公式将TM调节到给定的盐浓度。该方法从TM_GC和TM_NN调用,但也可以“手动”访问。它返回一个修正项,而不是修正后的TM!
chem_correction:调整有关化学添加剂DMS和甲醛的温度。该方法返回更正的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
几种类型的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等人(2001)或Owczarzy等人(2008)对其他一价阳离子(K+、Tris)、镁2+和dNTPs的更正(对于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(新)= TM(旧)+ corr
方法5:增量S(新)=增量S(旧)+ corr
方法6+7:TM(新)= 1/(1/TM(旧)+ corr)
- 论点:
钠、钾、三线、镁、dNTPS:各离子的毫摩尔浓度。要进行简单的“盐纠正”,只需通过Na即可。如果K、三体、镁和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正确的TK,方法5正确的Delta S,方法6和7正确的1/TK。方法是:
16.6 X log [Na+] (Schildkraut & Lifson(1965),生物聚合物3:195-208)
16.6 x log( [Na+] /(1.0 + 0.7* [Na+] ))(Wetmur(1991),Critt Rev Biochem Mol Biol 126:227-259)
12.5 x log(Na+)](SantaLucia等人(1996),Biochemistry 35:3555-3562
11.7 X log [Na+] (SantaLucia(1998),Proc Natl Acad Sci USA 95:1460-1465
增量S的更正:0.368 x(N-1)x lon [Na+] (SantaLucia(1998),Proc Natl Acad Sci USA 95:1460-1465)
(4.29(%GC)-3.95 x1 e-5 x En [Na+] + 9.40e-6 x LN [Na+] #2(Owczarzy等人(2004),生物化学43:3537-3554)
具有决策树和7个经验常数的复杂公式。针对dNTPs结合(如果存在)进行了纠正(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)
纠正二甲基硫醚和甲氨的给定的温度。
请注意,这些更正是+/-粗略估计。
- 论点:
melting_temp:熔化温度。
DMS0:DMS0百分比。
ftd:甲胺浓度,单位为%(fmd方法=1)或摩尔(fmd方法=2)。
DMSO因子:每百分之一的DMSO,TM应该减少多少。默认=0.65(von Ahsen等人2001)。其他已发布的值为0.5、0.6和0.675。
fmdfactor:每百分之甲氨,TM应该减少多少。默认=0.65。几篇论文报告的因子在0.6和0.72之间。
fmd方法:
TM = TM -因子(%甲氨甲胺)(默认)
Eu = Eu+(0.453(f(GC))-2.88)x [formamide]
这里f(GC)是GC的分数。(再次)请注意,在fmd方法=1中,甲氨浓度以%给出,而在fmd方法=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 degC * (A+T)
华莱士规则(Thein & Wallace 1986,《人类遗传疾病:实用方法,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
- 论点:
价值:包括一些经常引用的变体:
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)
TM = 81.5 + 0.41(%GC)- 675/N - %错配“QuikChange”公式。(由制造商)推荐用于QuikChange突变的碱基设计。
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,生物聚合物3:195-208)
TM = 81.5 + 0.41(%GC)- 500/N + 16.6 x log( [Na+] /(1.0 + 0.7 x [Na+] )-错配%(Wetmur 1991,Critt Rev Biochem Mol Biol 126:227-259)。这是MELTING 4.3近似模式的标准公式。
TM = 78 + 0.7(%GC)- 500/N + 16.6 x log( [Na+] /(1.0 + 0.7 x [Na+] )-错配%(Wetmur 1991,Critt Rev Biochem Mol Biol 126:227-259)。对于RNA。
TM = 67 + 0.8(%GC)- 500/N + 16.6 x log( [Na+] /(1.0 + 0.7 x [Na+] )-错配%(Wetmur 1991,Critt Rev Biochem Mol Biol 126:227-259)。对于RNA/DNA杂交体。
TM = 81.5 + 0.41(%GC)- 600/N + 16.6 x log [Na+] Primer 3Plus用于计算产品TK。默认设置。
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四个值的二元组。用户集覆盖值集。
钠、钾、三线、镁、dNTPs:各离子的浓度 [mM] .如果K、Tris、Mg和dNTPS中的任何一个不为零,则计算“钠当量”浓度并用于盐校正(von Ahsen等人,2001年)。
saltcorr:盐修正的类型(请参阅方法salt_correction)。默认=0。0或无意味着没有盐修正。
不匹配:如果“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序列对象的primer/探针序列。对于RNA/DNA杂交,seq必须是RNA序列。
c_seq:互补序列。模板/目标在3 '-'方向上的序列。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的长度不同或应该有悬空端,则需要使用sh参数来对齐它们。默认=0
表:热力学NN值,实施八个表:对于DNA/DNA杂交:
DNA_NN 1:Breslauer等人(1986)的值
DNA_NN 2:Sugimoto等人(1996)的值
DN_NN 3:来自Allawi & SantaLucia(1997)的值(默认)
DN_NN 4:SantaLucia & Hicks的价值观(2004)
对于RNA/RNA杂交:
RNA_NN1:来自Freier等人(1986)的值
RNA_NN2:来自Xia等人(1998)的值
RN_NN 3:Chen等人(2012)的值
对于RNA/DNA杂交:
R_DN_NN 1:Sugimoto等人(1995)的值请注意
seq
一定是RNA序列。
使用模块的maktable方法创建新表或更新其中一个实现的表。
tmm_table:终端不匹配的热力学值。默认:DNA_TMM 1(SantaLucia & Peyret,2001)
imm_table:内部不匹配的热力学值,可能包括Insosine不匹配。默认:DNA_IMAM1(Allawi & SantaLucia,1997-1998; Peyret等人,1999年;沃特金斯和桑塔露西亚,2005年)
de_table:悬空端的热力学值:
DNA_DE 1:用于DNA。Bommarito等人(2000)的值(默认)
RN_DE1:用于RNA。特纳和马修斯的价值观(2010)
dnac 1:较高浓度链的浓度 [nM] .通常,这将是(用于PCR的)PCR或探针。默认=25。
dnac 2:较低浓缩链的浓度 [nM] .在PCR中,这是模板链,其浓度通常非常低,可以忽略(dnac 2 =0)。在oligo/oligo杂交实验中,dnac 1等于dnac 1。默认=25。MELTING和Primer 3 Plus使用k = [Oligo(Total)] 默认情况下为/4。为了模仿这种行为,你必须将 [Oligo(Total)] 乘以2并将此浓度指定为dnac 1和dnac 2。例如,Primer 3 Plus中的总寡聚物浓度为50 μ M,意味着dnac 1 =25,dnac 2 =25。
selfcompy:序列是自我互补的吗?默认=假。如果“True”,则认为该primer与其自身结合,因此不考虑dnac 2。
钠、钾、三线、镁、dNTPs:详情请参阅方法“TM_GC”。:钠=50,K=0,三体=0,镁=0,dNTPs=0。
saltcorr:请参阅方法“TM_GC”。默认=5。0表示没有盐修正。