目录
1、Counting Point Mutations
Problem
点突变(point mutation)是突变的一种类型,在遗传材料DNA或RNA中,会使单一个碱基核苷酸替换成另一种核苷酸。
在信息论中,两个等长字符串之间的汉明距离(Hamming distance)是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。
给定两个等长的字符串 s 和 t,s 和 t 之间的汉明距离记为dH(s,t),表示 s 和 t 不同的对应符号数。
Given: 两个长度相等的DNA链 s 和 t (不超过1kbp)
Return: The Hamming distance dH(s,t)
Sample Dataset
GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
Sample Output
7
Code
# Counting Point Mutations
def hamming_distance(s, t):
return sum(ch1 != ch2 for ch1, ch2 in zip(s, t))
string1 = "GAGCCTACTAACGGGAT"
string2 = "CATCGTAATGACGGCCT"
print(hamming_distance(string1, string2))
with open("rosalind_hamm.txt", "r") as f:
lines = f.readlines()
string1 = lines[0]
string2 = lines[1]
print(hamming_distance(string1, string2))
Output
7
470
2、Mendel’s First Law
Problem
孟德尔定律是一系列描述了生物特性的遗传规律并催生了遗传学诞生的定律,包括两项基本定律和一项原则即:显性原则、分离定律(孟德尔第一定律),以及自由组合定律和独立分配律(孟德尔第二定律)。
Given: k,m,n为正整数,k+m+n代表一个有机体的种群,其中有k个纯和显性个体,m个杂合显性个体,n个纯和隐形个体。
Return: 随机的两个个体产生一个具有显性等位基因个体的概率。假设任何两个个体都可以交配。
Sample Dataset
2 2 2
Sample Output
0.78333
假设基因型为AA,Aa,aa的个体各有2个,其中A为显性基因,求子代中具有显性等位基因的概率。
子代中含有显性基因的亲代组合有{AA×AA,AA×Aa,AA×aa,Aa×AA,Aa×Aa,Aa×aa,aa×AA,aa×Aa},子代中不包含显性基因的亲代组合有{Aa×Aa,Aa×aa,aa×aa,aa×Aa}。
因此用总概率减去不包含A的概率更加方便,即1-P(Aa×Aa)-P(Aa×aa)-P(aa×aa)-P(aa×Aa)
Code
# Mendel's First Law
def probability(k, m, n):
s = k + m + n
prob_Aa_Aa = m / s * (m - 1) / (s - 1) * 0.25
prob_Aa_aa = m / s * n / (s - 1) * 0.5
prob_aa_Aa = n / s * m / (s - 1) * 0.5
prob_aa_aa = n / s * (n - 1) / (s - 1)
return round(1 - prob_Aa_Aa - prob_Aa_aa - prob_aa_Aa - prob_aa_aa, 5)
print(probability(2, 2, 2))
with open("rosalind_iprb.txt", "r") as f:
text = f.read().split()
k = int(text[0])
m = int(text[1])
n = int(text[2])
print(probability(k, m, n))
Output
0.78333
0.67995
3、Translating RNA into Protein
Problem
翻译(Translation),是蛋白质生物合成(基因表达中的一部分,基因表达还包括转录)过程中的第一步。翻译是根据遗传密码的中心法则,将成熟的mRNA分子(由DNA通过转录而生成)中“碱基的排列顺序”(核苷酸序列)解码,并生成对应的特定氨基酸序列的过程。
遗传密码(Genetic code)又称遗传编码,是遗传信息的传递规则,将DNA或mRNA序列以三个核苷酸为一组的“密码子(codon)”翻译为蛋白质的氨基酸序列,以用于蛋白质合成。几乎所有的生物都使用同样的遗传密码,称为“标准遗传密码”;即使是非细胞结构的病毒,它们也是使用标准遗传密码。
20种常见的氨基酸由20个英文字母缩写而成(除了B、J、O、U、X和Z以外的所有字母)。
DNA密码子表与RNA密码子表基本相同,除了使用T来替代U。
Given: 一个RNA链 s 对应的mRNA(长度最多为10 kbp)。
Return: s编码的蛋白质。
Sample Dataset
AUGGCCAUGGCGCCCAGAACUGAGAUCAAUAGUACCCGUAUUAACGGGUGA
Sample Output
MAMAPRTEINSTRING
Code
# Translating RNA into Protein
def translate(sequence