Rosalind 025 Introduction to Random Strings

背景知识:

我们知道基因组不仅仅是 A、T、C 和 G 的随机集合,而且整个基因组中存在大量不同的基序,其中一些基序在许多不同物种中是相似的。但由于人类基因组庞大,我们需要考虑我们正在查看的子序列是随机创建的可能性。在这个问题中,我们研究一种计算某个子序列随机发生的概率的简化方法。给定一个最多 80 bp 的子字符串和一个包含最多 20 个随机字符串的 GC 内容的数组,并要求我们找到该子字符串与随机字符串完全匹配的概率的log10。一句话总结:

        对于给定的字符串和 GC 内容,字符串中每个字符出现的对数概率是多少?

https://rosalind.info/problems/prob/

题目的要求:

  • 给定:一段DNA序列,以及一个包含20个0~1的小数的数组A。
  • 返回:一个和A长度相同的数组B,里面的每个数都是要我们计算出随机生成的 DNA 字符串与给定字符串完全匹配的概率,然后取对数值而得出来的数。

代码:

import math
string = ''
prob = [float(i) for i in input().split(" ")]
outputs = []
for i in prob:
    probability = 0
    chances = {
        'A': (1 - i) / 2,
        'C': i / 2,
        'G': i / 2,
        'T': (1 - i) / 2
    }
    for c in string:
        probability +=  math.log10(chances[c])
    outputs.append(str(round(probability,3)))
print(' '.join(outputs))

你可能感兴趣的:(生物信息,算法)