python练习题3 孟德尔遗传定律 统计子代基因型为显性的概率
来源:互联网 发布:js插件编写 编辑:程序博客网 时间:2024/05/02 04:25
题目在这:http://rosalind.info/problems/iprb/
解这一题可以有两种思路,一种是穷举法,把所有子代的基因型全部列举出来,并放入字典中,然后再计算其中显性基因的概率。
#*_coding: utf-8_*import numpy as npdef character_list(parent_number): '''输入包含纯合,杂合样本的数量的信息的列表,得到所有样本性状的列表''' all_character_list = ['HH'] * parent_number[0] + ['Hr'] * parent_number[1] + ['rr'] * parent_number[2] return all_character_listdef character_probabily(character_A, character_B): '''统计两个亲本性状的所有可能子代的基因型''' total = {'HH':0, 'Hr':0, 'rr':0, 'rH':0} for base_A in character_A: for base_B in character_B: later = base_A + base_B total[later] +=1 HH = total['HH'] Hr = total['Hr'] + total['rH'] rr = total['rr'] return HH, Hr, rrdef main(parent_number): total_number = {'HH':0, 'Hr':0, 'rr':0} all_character_list = character_list(parent_number) '''统计所有可能得子代基因型,保存在字典中''' for i in range(len(all_character_list)-1): character_A = all_character_list[i] for j in range(i+1, len(all_character_list)): character_B = all_character_list[j] HH, Hr, rr = character_probabily(character_A, character_B) total_number['HH'] +=HH total_number['Hr'] +=Hr total_number['rr'] +=rr dominance = float((total_number['HH'] + total_number['Hr'])) / sum(total_number.values()) print '子代为显性的可能性为:%.6f'%dominance#按照格式,输入纯合,杂合样本的数量,并转换成数值格式的列表parent = raw_input('请分别输入纯显,杂合,纯隐的样本数(k,m,n):')parent_number = map(int, parent.split(','))main(parent_number)
当然,这种方法比较话费时间,如果亲代数目较多,那子代的数量也会成倍增加。因此可以用统计学的思想来解决这个问题。可以反推,先计算出子代隐形基因型的概率:P(隐)=(2C2+1/4*2C2 + 1/2*2C1*2C1),那么显性基因的概率P(显)=1-P(隐)
from scipy.misc import comb individuals = input('Number of individuals(k,m,n):')[k, m, n] = map(int,individuals.split(','))t = k+m+n rr = comb(n,2)/comb(t,2)hh = comb(m,2)/comb(t,2)hr = comb(n,1)*comb(m,1)/comb(t,2) prob = 1 - (rr+hh*1/4+hr*1/2) print (prob)
阅读全文
0 0
- python练习题3 孟德尔遗传定律 统计子代基因型为显性的概率
- 遗传算法之基因型与表现型的相互转换
- phased 基因型或者unphased 基因型的理解
- HTML的子代选择器
- 概率统计:第五章 大数定律与中心极限定理
- 概率统计的基本知识
- 简单c语言算法练习题 矩阵鞍点 统计int类型的值中有多少位为1
- 概率与统计的区别
- 概率统计的哲学思考
- 概率统计的奇妙结论
- 偶然遇到的概率统计
- 我的python练习题
- 后代选择器和子代选择器的区别
- Matlab概率统计工具箱(3)
- Selenium显性等待的方式
- Python练习题3
- Python练习题(3)
- python练习题 3 计时器
- 支付宝支付的服务端接入流程
- 1.1 Hello, World!
- 修改Eclipse中package explore中字体
- 一个ArcGIS实验
- Spark学习笔记(转)
- python练习题3 孟德尔遗传定律 统计子代基因型为显性的概率
- 《JAVA与模式》之策略模式
- HDU:2014 青年歌手大奖赛_评委会打分
- LightOJ 1030 Discovering Gold【概率dp】
- Vue.js解析(十)【Vue组件间通信】
- Mysql 安装
- hdu1671trie
- git命令
- Linode修改内核装锐速