育种值探秘丨动植物遗传育种

育种值:生物的数字密码

嗨,大家好!今天分享的笔记是遗传育种领域中那神秘莫测的育种值。这个抽象的名词具体如何理解?为什么说育种值很重要?具体怎么计算?有什么用处?

别担心,我会用最幽默有趣的语言,辅以一些示例代码,让你快速了解育种值的定义、计算方法以及背后的算法原理,并给出Python和R两个版本的计算过程源码。


育种值是什么啊?

首先,我们得搞清楚育种值到底是啥。简单说,育种值是遗传育种领域里的一种评估指标,用来衡量个体在进化和繁殖中的“价值”。这个价值并不是指一个体有多么“强”,而是它在基因传递方面的出色表现。

定义

育种值是指种畜的种用价值。在数量遗传学中把决定数量性状的基因加性效应值定义为育种值(BV),个体育种值的估计值叫做估计育种值(EBV)。通俗的理解就是某个体所具有的遗传优势,即它高于或低于群体平均数的部分。

育种值的定义就像一把打开基因宝箱的钥匙,让我们能更好地了解基因世界中那些微小但却至关重要的差异。当我们在育种中选择父母个体时,育种值就是我们的指南针,指引我们朝着优化基因组的方向前进。

计算育种值的魔法

好了,现在让我们深入了解如何计算这个神秘的育种值。其实,计算育种值并不像看起来那么复杂,它的本质就是一些数学和统计的魔法。

算法一:选择差异法

在遗传学的大舞台上,一个广泛使用的育种值计算算法就是“选择差异法”(Selection Differential)。这个算法的核心思想是,我们通过比较选择群体和整体群体的基因型值来评估选择压力的强度。

下面是一个简单的示例代码:

import numpy as np

def calculate_selection_differential(selected_population, original_population):
    selected_mean = np.mean(selected_population)
    original_mean = np.mean(original_population)
    selection_differential = selected_mean - original_mean
    return selection_differential
# 示例数据
selected_population = np.random.normal(1021000)  
# 选择后的群体
original_population = np.random.normal(821000)   
# 整体群体

# 计算选择差异
selection_differential = calculate_selection_differential(selected_population, original_population)
print(f"选择差异为: {selection_differential}")

这段代码模拟了一个选择后的群体和整体群体的基因型值分布,然后计算了选择差异。选择差异越大,说明选择压力越强,育种值就越高。

算法二:后代平均值法

另一个常用的育种值计算方法是后代平均值法(Progeny Mean Method)。这个方法通过比较后代群体的表现来评估父母个体的基因传递效果。代码如下:

def calculate_progeny_mean(selected_parents, offspring):
    selected_mean = np.mean(selected_parents)
    offspring_mean = np.mean(offspring)
    progeny_mean = offspring_mean - selected_mean
    return progeny_mean

# 示例数据
selected_parents = np.random.normal(12, 1, 500)  # 选择的父母个体
offspring = np.random.normal(10, 1, 1000)         # 后代群体

# 计算后代平均值
progeny_mean = calculate_progeny_mean(selected_parents, offspring)
print(f"后代平均值为: {progeny_mean}")

这段代码模拟了选择的父母个体和后代群体的表现,然后计算了后代平均值。越高的后代平均值表示父母个体的基因传递效果越好,育种值也就越高。

育种值有什么用处?

育种值在遗传育种领域中具有重要的应用价值,它为农业、畜牧业和其他生物学领域提供了有力的工具,以下是育种值在实际应用中的几个重要方面:

优化遗传进程:

育种值的计算有助于优化基因组的传递,提高所关注性状的遗传表现。通过选择具有较高育种值的个体作为父母,可以加速所需性状的进化,达到更好的遗传改良效果。

提高生产效率:

在农业和畜牧业中,育种值的应用可以带来更高的生产效率。通过选择具有优越基因的个体,农作物和动物的生长速度、产量、抗病能力等性状可以得到有效改良,从而提高农业和畜牧业的产量和质量。

适应环境变化:

随着气候和环境的变化,育种值的应用可以帮助培育更适应新环境的品种。通过选择具有适应性基因的个体,可以提高作物或动物对新环境条件的适应能力,增加其生存和生长的成功率。

节约资源:

通过精确计算育种值,可以更有效地选择父母个体,从而减少不必要的繁殖成本和资源浪费。这对于农业和畜牧业来说是非常重要的,因为资源的节约直接关系到生产的可持续性和经济效益。

R语言版计算方法

在R语言中,也可以使用lme4包快速的计算育种值,最佳线性无偏预测(Best Linear Unbiased Prediction,简称BLUP)。它可以对多环境数据进行整合,去除环境效应,得到个体稳定遗传的信息。

安装相关软件包

需要提前安装lme4包和tidyverse包

install.packages("lme4")
install.packages("tidyverse")

计算多环境无重复BLUP

输入数据格式要求

需要以下格式的数据,缺失值使用NA代替,注意环境和样品的数据类型应该为因子格式,表型为数值型。

# 样品 环境     表型值
line   env     y  
L1     env1    66.72533
L2     env1    53.82899
L3     env1    58.04559
计算方法

首先,读入数据并整理:

library(lme4)
data=read.table("data.txt",header = T)
head(data)
data$lines=factor(data$lines)
data$env=factor(data$env)

然后,可以使用lmer进行分析,把env和lines当成随机效应。

blp=lmer(y~(1|env)+(1|lines),data=data)
# 输出摘要信息
summary(blp)

得到类似如下结果,其中展示了遗传方差(即lines的方差)和残差方差,

alt 使用如下公式即可计算出遗传力h: alt


通过这篇文章,我们简要了解了育种值的定义和计算方法,以及背后的算法原理。在遗传育种的舞台上,育种值就像是一把魔法的秘钥,为我们解锁基因世界的奥秘。

如果你有任何疑问或想要深入探讨,欢迎后台私信交流,也欢迎将本文分享给其他朋友,我们一起在基因的海洋中探寻更多的奇迹!

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/173487.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

万字解析设计模式之桥接模式、外观模式

一、桥接模式 1.1概述 桥接模式是一种结构型设计模式,它的作用是将抽象部分和实现部分分离开来,使它们能够独立地变化。这样,抽象部分和实现部分可以分别进行扩展,而不会相互影响。它是用组合关系代替继承关系来实现,…

Linux:wget后台下载/查看后台任务进度

1. 后台下载 使用wget -b url: wget -b http://cn.wordpress.org/wordpress-3.1-zh_CN.zip后台任务启动后,会返回两段话,第一段返回一个pid,代表这个后台任务的进程,并且我们可以kill掉这个id来终止此次下载&#x…

【Python】给出n个数,找出这n个数的最大值,最小值,和。

问题描述 给出n个数,找出这n个数的最大值,最小值,和。 样例输入 5 1 3 -2 4 5 Data 样例输出 5 -2 11 n int(input()) # 从用户输入中读取一个整数,将其赋给变量n# 从用户输入中读取一行字符串,使用空格分割字符串&a…

LED Driver数码屏应用解决方案

今天给大家介绍的产品是LED Driver,这属于电源管理类芯片,一般分为恒流驱动与恒压驱动,但是常见的就是恒流驱动,能够保持产品在驱动中提供恒定且稳定的电流。 基本概述 TM1629是一种带键盘扫描接口的LED(发光二极管显…

线程池[重点]

线程池概述 线程池就是一个可以复用线程的技术。 不使用线程池的问题 :如果用户每发起一个请求,后台就创建一个新线程来处理,下次新任务来了又要创建新线程,而创建新线程的开销是很大的,这样会严重影响系统的性能。 …

2023年中国醇酸树脂涂料需求量、应用领域及市场规模前景分析[图]

醇酸树脂指多元醇和多元酸与脂肪酸经过酯化缩聚生成的高聚物,其由邻苯二甲酸酐、多元醇和脂肪酸或甘油三脂肪酸酯缩合聚合而成。醇酸树脂固化成膜后,具有耐磨性好、绝缘性佳等优势,在涂料领域应用广泛。2022年醇酸树脂产量约336.3万吨&#x…

完全二叉树你需要了解一下

完全二叉树介绍完全二叉树应用场景完全二叉树和满二叉树的区别完全二叉树代码示例拓展 完全二叉树介绍 完全二叉树(Complete Binary Tree)是一种特殊的二叉树,它的定义是:如果设二叉树的深度为h,除第h层外&#xff0c…

基于白冠鸡算法优化概率神经网络PNN的分类预测 - 附代码

基于白冠鸡算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于白冠鸡算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于白冠鸡优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络…

改进YOLOv8:结合Biformer——基于动态稀疏注意力构建高效金字塔网络架构

🗝️YOLOv8实战宝典--星级指南:从入门到精通,您不可错过的技巧   -- 聚焦于YOLO的 最新版本, 对颈部网络改进、添加局部注意力、增加检测头部,实测涨点 💡 深入浅出YOLOv8:我的专业笔记与技术总结   -- YOLOv8轻松上手, 适用技术小白,文章代码齐全,仅需 …

为什么AirtestIDE的selenium Window突然无法检索控件了?

1. 前言 最近有很多朋友跟我们反馈,为什么1.2.15版本的IDE没办法做网页元素检索了,是不是我们不支持selenium了之类的。 测试后发现,目前版本确实存在这个问题,原因是Chrome113.0.5672.127(最新)版本过高,AirtestIDE…

C语言--输入三角形的三边,输出三角形的面积

一.题目描述 输入三角形的三边,输出三角形的面积。比如:输入三角形的三边长度是3,4,5.输出6 二.思路分析 利用海伦公式可以很好解决 海伦公式的表达式如下: s (a b c) / 2 面积 sqrt((s * (s - a) * (s - b) * (…

基于阶梯碳交易的含P2G-CCS耦合和燃气掺氢的虚拟电厂优化调度matlab程序

微❤关注“电气仔推送”获得资料(专享优惠) 参考文献: 基于阶梯碳交易的含P2G-CCS耦合和燃气掺氢的虚拟电厂优化调度——陈登勇 主要内容: 以碳交易和碳封存成本、燃煤机组启停和煤耗成本、弃风成本、购气成本之和为目标函数&…

安装gitlab

安装gitlab 环境 关闭防火墙以及selinux,起码4核8G 内存至少 3G 不然启动不了 下载环境 gitlab官网:GitLab下载安装_GitLab最新中文基础版下载安装-极狐GitLab rpm包下载地址: [Yum - Nexus Repository Manager (gitlab.cn)](https://pack…

使用 ClickHouse 做日志分析

原作:Monika Singh & Pradeep Chhetri 这是我们在 Monitorama 2022 上发表的演讲的改编稿。您可以在此处找到包含演讲者笔记的幻灯片和此处的视频。 当 Cloudflare 的请求抛出错误时,信息会记录在我们的 requests_error 管道中。错误日志用于帮助解…

【Spring Boot】如何运用Spring Cache并设置缓存失效时间

简单描述 Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。Spring Cache提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓存技术。CacheMan…

Arduino驱动Si7021温湿度传感器(温湿度传感器)

目录 1、传感器特性 2、控制器和传感器连线图 3、驱动程序 Si7021温湿度传感器,应用了专用的数字模块采集技术和温湿度传感技术,具有极高的可靠性与卓越的长期稳定性。同时其体积小巧、精度高,特别是拥有毫秒级测试转换时间(DHT系列需要约2s的转换时间),启动测量与读…

【LeetCode刷题】--12.整数转罗马数字

12.整数转罗马数字 方法:模拟 分析罗马数字的规则是:对于罗马数字从左到右的每一位,选择尽可能大的符号值 根据罗马数字的唯一表示法,为了表示一个给定的整数num,寻找不超过num的最大符号值,将num减去该符…

UEC++ day7

敌人NPC机制 敌人机制分析与需求 新建一个character类来作为敌人,直接建蓝图设置骨骼网格,因为敌人可能多种就不规定死,然后这个敌人肯定需要两个触发器,一个用于大范围巡逻,一个用于是否达到主角近点进行攻击 注意我…

thinkphp8 DB_PREFIX 属性

设计表的时候使用**_user, **就是前缀,DB_PREFIX就是默认把前缀给去掉 在config/database.php prefix,改成你的前缀,数据库的表重命名‘ltf_user’ 代码调用 $user Db::name("user")->select();return json($user);之前是使用…

java springboot在测试类中构建虚拟MVC环境并发送请求

好 上文java springboot在测试类中启动一个web环境我们在测试类中搭了一个web环境 那么 下面就要想办法弄一个接口的测试 这边 我们还是要在controller包下去创建一个 controller类 写一个访问接口 这里 我创建一个 TestWeb.java 这里 我们编写代码如下 package com.example.…