孟德尔分离定律建模

law of segregation 分离定理

segregation分离

算法:

模拟孟德尔分离定理

#coding=utf-8
#law of segregation 孟德尔分离定理

import math,random,pylab

#试验次数
n=1000

#三类实验对象
#显性遗传因子
dominant_hereditary_factor=‘D‘
#隐性遗传因子
recessive_hereditary_factor=‘d‘
#遗传因子列表
list_hereditary_factor=[dominant_hereditary_factor,recessive_hereditary_factor]

#纯种高茎
high_pure=[dominant_hereditary_factor,dominant_hereditary_factor]
#纯种矮茎
low_pure=[recessive_hereditary_factor,recessive_hereditary_factor]
#杂种高茎
cross_high=[dominant_hereditary_factor,recessive_hereditary_factor]

#配子时,随机选出一个遗传因子

def Random_hereditary_factor(list_hereditary_factor):
#真随机数
r=random.SystemRandom()
#随机抽出一个遗传因子
random_hereditary_factor=r.choice(list_hereditary_factor)
return random_hereditary_factor

#配子过程
def Son(list1,list2):
son=[]
#纯高茎中抽取一个遗传因子
factor1=Random_hereditary_factor(list1)
son.append(factor1)
#纯矮茎中抽取一个遗传因子
factor2=Random_hereditary_factor(list2)
son.append(factor2)
return son

#配子性状判断,例如是高还是矮
def Character_analysis(list1,list2):
son=Son(list1,list2)
#print ‘son:‘,son
#如果线性遗传因子在配子中,返回显性性状
if dominant_hereditary_factor in son:
character="dominant_character"

#否则返回隐性性状
else:
character="recessive_character"

return character

#实验n次,观察高茎与矮茎数量比
def Count_test(n,list1,list2):
count_dominant=0
count_recessive=0
for i in range(n):
analysis1=Character_analysis(list1,list2)
if analysis1=="dominant_character":
count_dominant+=1
if analysis1=="recessive_character":
count_recessive+=1

ration=count_recessive*1.0/count_dominant
return ration

def Print(n,ratio_pureHigh_pureLow,ratio_crossHigh_crossHigh,ratio_crossHigh_pureLow):
print ‘n:‘,n
print ‘ratio_pureHigh_pureLow:‘,ratio_pureHigh_pureLow
print ‘ratio_crossHigh_crossHigh:‘,ratio_crossHigh_crossHigh
print ‘ratio_crossHigh_pureLow:‘,ratio_crossHigh_pureLow

#绘图前准备,得到多次实验的比例系数集合
def List_ratio(n,list1,list2):
list_ration=[]
for i in range(n):
ration=Count_test(n,list1,list2)
list_ration.append(ration)

return list_ration

#实验1:纯种高茎与纯种矮茎的数量比
#list_ratio1=List_ratio(n,high_pure,low_pure)
#实验2:杂种高茎与杂种高茎的数量比
#list_ratio2=List_ratio(n,cross_high,cross_high)
#实验3:杂种高茎和纯种矮茎的数量比
#list_ratio3=List_ratio(n,cross_high,low_pure)

#实验1:纯种高茎与纯种矮茎的数量比
ratio_pureHigh_pureLow=Count_test(n,high_pure,low_pure)

#实验2:杂种高茎与杂种高茎的数量比
#ratio_crossHigh_crossHigh=Count_test(n,cross_high,cross_high)

#实验3:杂种高茎和纯种矮茎的数量比
#ratio_crossHigh_pureLow=Count_test(n,cross_high,low_pure)

#Print(n,ratio_pureHigh_pureLow,ratio_crossHigh_crossHigh,ratio_crossHigh_pureLow)

描述统计孟德尔分离定理

杂种高茎与杂种高茎

纯种高茎与纯种矮茎

杂种高茎与纯种矮茎

#coding=utf-8
# mode 函数有问题
import math,numpy,pylab,distribution_status,statistics_functions,quartile,Law_of_segregation
#list1=[2.96,2.84,3.01,3.15,2.95,2.82,3.14]
#list1=[19,15,29,25,24,23,21,38,22,18,30,20,19,19,16,23,27,22,34,24,41,20,31,17,23]
#list1=[5.5,6.5,6.7,6.8,7.1,7.3,7.4,7.8,7.8]
#list1=[164,167,168,165,170,165,164,168,164,162,163,166,167,166,165]
#list1=[129,130,129,130,131,130,129,127,128,128,127,128,128,125,132]
#list1=[125,126,126,127,126,128,127,126,127,127,125,126,116,126,125]
list1=Law_of_segregation.list_ratio1
n=len(list1)
mean=statistics_functions.Mean(list1)
median=statistics_functions.Median(list1)
mode=statistics_functions.Mode(list1)
deviation=statistics_functions.Deviation(list1)
standardError=statistics_functions.Standard_error_of_the_mean(list1)
coefficient_of_variation=statistics_functions.Coefficient_of_variation(list1)

max1=max(list1)
min1=min(list1)

q_l=quartile.Quartile(list1,‘q_l‘)
q_u=quartile.Quartile(list1,‘q_u‘)
quartile_deviation=quartile.Quartile_deviation(list1)

skew=distribution_status.Skew(list1)
kurtosis=distribution_status.Kurtosis(list1)

print "Central tendency:"
print "n:",n
print "range[%d:%d]" %(min1,max1)
print "mean:",mean
print "median:",median
print "mode:",mode
print "quartile 1/4:",q_l
print "quartile 3/4:",q_u
print "quartile_deviation:",quartile_deviation

print "-"*20
print "Dispersion:"
print "deviation:",deviation
print "standard Error:",standardError
print "coefficient of variation:",coefficient_of_variation

print "-"*20
print "Distribution status:"
print "skew:",skew
print "kurtosis:",kurtosis

#绘图
def Draw(list1):
for i in list1:
x=i[0]
y=i[1]
pylab.plot(x,y,‘r--‘)
pylab.xlabel(‘x‘)
pylab.ylabel(‘y‘)
pylab.title("descriptive statistics")
pylab.grid(True)
# Pad margins so that markers don‘t get clipped by the axes,让点不与坐标轴重合
pylab.margins(0.05)
pylab.show()

def Draw_hist(list1):
#facecolor表面颜色
pylab.hist(list1,bins=100,normed=1,facecolor=‘green‘,alpha=0.5)
pylab.xlabel(‘x‘)
pylab.ylabel(‘frenquency‘)
pylab.title(‘hist‘)
pylab.margins(0.01)
pylab.show()

#数组中不重复数字
#list_noneRepeat=statistics_functions.List_noneRepeat(list1)
#不重复数字频率
#frequency=statistics_functions.Frequence(list1)

#dict_mean_frequency=dict(zip(list_noneRepeat,frequency))

#list_mean_frequency=dict_mean_frequency.items()

#Draw(list_mean_frequency)

Draw_hist(list1)

时间: 2024-10-07 19:38:17

孟德尔分离定律建模的相关文章

孟德尔Mendel

视频:http://v.youku.com/v_show/id_XNzg0NTQ3Njgw.html http://wenku.baidu.com/link?url=C-xkdwDM-PXAqjNG4-1dzhqgttibi5IDV5xMidQM0umW7iE0f0sy7aV3rG7F3dpXS64rqgegWRUsYldIrkJ63YwP3pwZ1vUr4YSRHu8h5O_ 孟德尔1822年7月20日出生于奥地利西里西亚,是遗传学的奠基人,被誉为现代遗传学之父.他通过豌豆实验,发现了遗传规律

生物遗传学 整理人PYJ (恋_紫花地丁)

生物遗传学整理人PYJ (恋_紫花地丁) 高中生物唯一需要数学知识的就是遗传学的概率计算了.这里对简单的遗传学规律做一些总结. 目录: 1.      孟德尔第一定律(分离定律): 2.      孟德尔第二定律(自由组合定律) 3.      连锁交换 4.      基因的相互作用 1)      等位基因的相互作用 ①  完全显性 ②  不完全显性 ③  共显性关系 2)      等位基因的相互作用 ①  基因互作 ②  上位效应 ③  微效基因累加作用 5.      细胞质遗传 6.

系统架构师-基础到企业应用架构-系统建模[中篇](上)

一.上章回顾 上篇文章主要简单的介绍了建模中使用的标准建模语言UML的相关内容,包括用例图与类图的使用方法及如何建模.相信大家对UML建模语言已经有了初步的认 识,还请大家谨记UML不同的建模图形的用处.比如,用例图主要用来描述系统的功能需求.类图主要用来描述实体间的关系.谨记这些就可以帮助我们在系统架构的 过程中深入的分析. 首先向大家道歉,上篇中有部分描述错误的地方,可能对大家造成一定的错误引导.  这是上篇给出的图,我描述的是组合关系. 特别更正为:  这是正确的结果.箭头指向聚合类.描述

声音泄露?可能被复制的“声音DNA”

是否想过你独一无二的声音,在某天被复刻出现在你的面前时,你该怎么办.这并不是嘉宾的模仿秀,而是现在实实在在能够发生的事情.时间到进入2019年,AI技术的应用落地越来越多样化.科大讯飞.搜狗等技术公司相继发布了语音合成技术的应用.通过AI手段,用户可以一秒变声社会名人或者其他想模仿的声音. 特别喜欢游戏行业的人应该清楚,现在很多游戏里面都自带语音系统,而一些牟利的人为了掩人耳目,直接采用变声软件进行变声.但是那只能够单向的变声,固定的几个音色参数,并不能达到灵活的地步. 而这个技术有什么不同之处

对软件开发中uml建模的理解和图形整理(一)

由于uml(统一建模语言)在开发中经常会用到,特别是在软件开发中的OOAD阶段,因此要理解和使用uml显得尤为重要.在uml开始之前,咱先回顾一个OOAD.OOP的主要特征. OOAD:根据面向对象的方法学来对软件系统进行分析和设计的过程.它包括OOA 分析阶段和OOD设计阶段.其中分析阶段主要解决"What to do?"的问题,而设计阶段主要解决"How to do?"的问题.具体来说就是:在OOA分析阶段咱要做的主要工作就是建立对业务问题域的视图(建立模型).

[转]从MVC到前后端分离

从MVC到前后端分离 来源:csdn 发布时间:2015-10-26 阅读次数:1680 1. 理解MVC MVC是一种经典的设计模式,全名为Model-View-Controller,即模型-视图-控制器. 其中,模型是用于封装数据的载体,例如,在Java中一般通过一个简单的POJO(Plain Ordinary Java Object)来表示,其本质是一个普通的Java Bean,包含一系列的成员变量及其getter/setter方法.对于视图而言,它更加偏重于展现,也就是说,视图决定了界面

第二章:数据仓库与数据集市建模

前言 数据仓库建模包含了几种数据建模技术,除了之前在数据库系列文章中介绍过的ER建模和关系建模,还包括专门针对数据仓库的维度建模技术. 本文将详细介绍数据仓库维度建模技术,并重点讨论三种基于ER建模/关系建模/维度建模的数据仓库总体建模体系:规范化数据仓库,维度建模数据仓库,以及独立数据集市. 维度建模的基本概念 维度建模(dimensional modeling)是专门用于分析型数据库.数据仓库.数据集市建模的方法. 它本身属于一种关系建模方法,但和之前在操作型数据库中介绍的关系建模方法相比增

程序员生存定律--升华成高手的可能方法

程序员生存定律这系列的目录在这里:程序员生存定律--目录 喜欢从头瞄的,可以移步. ------------------------------------------------------------------------------ 一旦度过了初始阶段,做过了前面说的那些事情,那么一个人算是基本入行了,接下来的目标就非常简单,要在选定方向上成为高手.高手意味着专业,而在分工无限细化的年代里,专业则是生存.发展好最为重要的一个前提. 1 高手的定义和养成关键 我估计如果问100个人“什么样

从 MVC 到前后端分离——转自:OSChina 黄勇

转自:OSChina 黄勇 从 MVC 到前后端分离 1 理解 MVC MVC 是一种经典的设计模式,全名为 Model-View-Controller,即 模型-视图-控制器. 其中,模型 是用于封装数据的载体,例如,在 Java 中一般通过一个简单的 POJO(Plain Ordinary Java Object)来表示,其本质是一个普通的 Java Bean,包含一系列的成员变量及其 getter/setter 方法.对于 视图 而言,它更加偏重于展现,也就是说,视图决定了界面到底长什么样