大型网站设计方案,百度统计网站,wordpress 注册美化,网站要怎样做才能获得市场份额这个问题结合了分子生物学中的限制性酶#xff08;restriction enzymes#xff09;的概念和概率统计学的应用。
生物背景#xff1a;
限制性酶#xff1a;细菌使用这些酶来切割病毒DNA的双链#xff0c;从而使病毒失去功能。这些酶在病毒DNA上切割的位置被称为限制位点。…这个问题结合了分子生物学中的限制性酶restriction enzymes的概念和概率统计学的应用。
生物背景
限制性酶细菌使用这些酶来切割病毒DNA的双链从而使病毒失去功能。这些酶在病毒DNA上切割的位置被称为限制位点。识别序列每种限制性酶都预设了一个反向回文的DNA间隔作为其结合并切割的识别序列。这些间隔通常是偶数长度一般是4或6个碱基对长尽管也存在更长的识别序列。
计算问题
问题提出了一个简单的问题细菌如何“知道”它在病毒DNA中找到限制位点的可能性很高答案是识别序列的短长度保证了大量的随机匹配发生。例如一个长度为6的识别序列平均每4096个碱基对出现一次但这并不意味着相关的限制性酶每4096个碱基对就切割一次病毒DNA它可能在相邻的地方找到两个限制位点然后在许多千个核苷酸中都不找到限制位点。 计算单个碱基出现的概率: 根据GC含量我们可以计算每种碱基的出现概率。例如如果GC含量为0.5则G和C的出现概率各为0.25因为GC含量是G和C的总和而A和T的出现概率也各为0.25。 计算子串出现的概率: 对于特定的DNA子串其出现的概率是其所有碱基出现概率的乘积。例如对于子串AG如果A和G的出现概率分别为0.25和0.25则AG出现的概率是0.25 × 0.25 0.0625。 计算整个序列中子串出现的预期次数: 在长度为n的DNA序列中有n−∣s∣1个可能的起始位置来放置长度为∣s∣的子串s其中∣s∣是子串的长度。因此子串s出现的预期次数是每个位置出现子串的概率之和即(n−∣s∣1)×子串出现的概率。 应用于数组A中的每个GC含量: 对于数组A中的每个GC含量值重复上述步骤来计算子串在相应GC含量下出现的预期次数并将结果存储在数组B中。
举个例子对于样本数据集
DNA字符串长度 n10。DNA字符串 sAG。GC含量数组 A[0.25,0.5,0.75]。
我们需要分别对每个GC含量值计算AG出现的预期次数。假设在GC含量为0.25时A和T的概率为0.375G和C的概率为0.125那么AG出现的概率为0.375 × 0.125 0.046875。因此在长度为10的序列中AG出现的预期次数为(10−21)×0.0468759×0.0468750.422(10−21)×0.0468759×0.0468750.422。同样的方法应用于其他GC含量值。 代码:
data []
with open(, r) as f:for line in f:data.append(line.strip(\n))
n int(data[0])
s data[1]
A [float(x) for x in data[2].split()]AT, GC 0, 0
for nt in s:if nt A or nt T:AT 1elif nt G or nt C:GC 1B [0]*len(A)
for i, j in enumerate(A):P (((1 - j)/2)**AT)*((j/2)**GC)*(n - len(s)1)B[i] %0.3f % P
print(*B, sep )