生信刷题之ROSALIND——Part 2

文章介绍了生物学中与遗传信息处理相关的五个问题:计算DNA链间的点突变(汉明距离)、应用孟德尔第一定律计算显性基因概率、将RNA序列翻译成蛋白质、查找DNA中的特定模式(motif)以及确定一组同源DNA链的共识序列和特征矩阵。每个问题都提供了样例数据、输出结果及相应的Python代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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。

密码子AUG同时编码甲硫氨酸并作为起始点:在信使RNA的编码区里,首个ATG的出现标志着蛋白质翻译的开始。

Given: 一个RNA链 s 对应的mRNA(长度最多为10 kbp)。

Return: s编码的蛋白质。

Sample Dataset

AUGGCCAUGGCGCCCAGAACUGAGAUCAAUAGUACCCGUAUUAACGGGUGA

Sample Output

MAMAPRTEINSTRING

Code

# Translating RNA into Protein


def translate(sequence
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值