众所周知 基因组的核酸链不可能是随机形成的。有时候许多物种基因组之间 存在一些保守序列 motif 这意味着它们可能具有重要功能。但是 我们如何确定这些序列不是随机形成的 DNA 片段呢一个常识是 越短的序列越容易随机形成 越长的序列
众所周知,基因组的核酸链不可能是随机形成的。有时候许多物种基因组之间,存在一些保守序列(motif),这意味着它们可能具有重要功能。但是,我们如何确定这些序列不是随机形成的 DNA 片段呢?
一个常识是:越短的序列越容易随机形成,越长的序列越难随机形成。如何对随机形成序列的概率进行量化,以及如何确定容易和不容易随机形成的序列的长度的阈值呢?这篇文章将对这个问题进行探索。
给定: 一段 DNA 序列,以及一系列假定的 GC 出现的概率。
需得: 在特定 GC 出现的概率的情况下,得到一条与给定 DNA 序列 GC 含量相同的序列的概率,并且将概率值取对数输出。
示例数据
ACGATACAA
0.129 0.287 0.423 0.476 0.641 0.742 0.783
示例结果
-5.737 -5.217 -5.263 -5.360 -5.958 -6.628 -7.009
Python 实现
本题思路参考自下述博客:
Rosalind – Introduction to Random Strings[1]
因为 DNA 有 4 种碱基,每一个位置都有 4 种可能。如果每一种碱基出现的概率都是 25%,那么一个 9bp 的序列,共有 4·4·4·4·4·4·4·4·4 = 49=262144 种可能性。但现在我们假定 GC 出现的概率是 0.129 而不是 0.5