Bio.SeqUtils.MeltingTemp模块¶
计算核苷酸序列的熔化温度。
本模块包含计算寡核苷酸熔化温度的三种不同方法:
TM_Wallace:“经验法则”
TM_GC:基于GC含量的经验公式。可以包括盐度和失配校正。
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。方法是:
16.6 x日志 [Na+] (SChild kraut&Lifson(1965),生物聚合物3:195-208)
16.6 x日志( [Na+] /(1.0+0.7* [Na+] )(Wetmur(1991),Crit Rev Biochem Mol Biol 126:227-259)
12.5xlog(Na+)(Santalucia et al.(1996),生物化学35:3555-3562
11.7 x日志 [Na+] (桑塔卢西亚(1998),“美国学报”95:1460-1465
增量校正:0.368 x(N-1)x ln [Na+] (Santalucia(1998),Proc Natl Acad Sci USA 95:1460-1465)
(4.29(%GC)-3.95)x1e-5 x ln [Na+] +9.40e-6 x ln [Na+] ^2(Owczarzy等人(2004),生物化学43:3537-3554)
具有决策树和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方法:
TM=TM因子(%甲酰胺)(默认)
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:包括几个经常被引用的变体:
TM=69.3+0.41(%GC)-650/N(Marmur&Doty 1962,J Mol Biol 5:109-118;Chester&Marshak 1993),肛门生物化学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;SChild kraut&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,Crit Rev Biochem Mol Biol 126:227-259)。这是熔化近似模式下的标准公式4.3。
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来说。
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杂交体。
TM=81.5+0.41(%GC)-600/N+16.6 x log [Na+] 由Primer3Plus用于计算产品TM。默认设置。
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