【基于R語言群體遺傳學】-3-計算等位基因頻率

書接上文,我們講完了哈代溫伯格基因型頻率,也使用數據進行了擬合,那么接下來就是考慮一些計算的問題:

【基于R語言群體遺傳學】-1-哈代溫伯格基因型比例-CSDN博客

【基于R語言群體遺傳學】-2-模擬基因型(simulating genotypes)-CSDN博客

如果我們有群體樣本中個體的基因型,那么我們不需要假設哈代-溫伯格比例來從表型頻率估計等位基因頻率。我們可以簡單地計數等位基因。每個雜合子有一個等位基因的拷貝,而純合子有兩個拷貝(再次假設是一個二倍體生物)。由于每個采樣的個體在每個位點都有兩個拷貝,所以觀察到的等位基因總數是采樣個體數量的兩倍。

然后,我們可以通過將雜合子的數量加上純合子數量的兩倍(因為每個純合子有兩個等位基因的拷貝),然后除以采樣個體數量的兩倍(因為每個采樣的個體攜帶兩個位點),來計算特定等位基因的頻率:

哈代溫伯格假設

為了得到p2 + 2pq + q2并運行這里用來說明期望的模擬,我們做了以下假設:

? 被考慮的有機體是二倍體。

? 被考慮的有機體僅通過性繁殖(無克隆)。

? 不存在具有不同等位基因頻率的獨立種群,無論它們之間是否有遷移。

? 我們所考慮的種群在大小上是無限大的。

? 所有交配都是隨機發生的。

? 沒有遺傳變異受到自然選擇的影響(等位基因的生存和繁殖差異)。

? 沒有遺傳變異因突變而丟失或獲得(沒有等位基因突變為新的等位基因)。

? 世代之間不重疊。一旦繁殖發生,所有的親本消失,只有產生的后代貢獻給下一代。

顯然,這些期望在生物學上并不非常現實。然而,哈代-溫伯格期望對大多數這些假設的違反都相當穩健,除了前三個:單倍體或多倍體有機體必須以不同但合理的方式處理,通過無性繁殖的有機體可能與哈代-溫伯格期望有很大偏差,種群細分可能導致顯著偏差。

簡單的疾病例子

觀察到三種隱性疾病表型的攜帶者(雜合子)受影響個體(純合子)的數量:囊性纖維化(CF)、鐮狀細胞貧血(SC)和β-地中海貧血(βT)。數據改編自Lazarin等人2013年的研究。

我們首先看看篩查中囊性纖維化(CF)純合子的個體數量:這個數字(9)表明這九個個體總共攜帶了十八個CF等位基因。現在,攜帶者(雜合子)的數量相當多(842),對于一個罕見等位基因來說,這可能是我們預期的情況,因此我們可以計算得到CF等位基因頻率:

 p <- (9+842/2)/23369

得到等位基因頻率約為1.8%

現在,我們有了一個等位基因頻率值(從樣本中估計的種群頻率),它是直接從觀測數據計算出來的。在哈代-溫伯格原理的假設下,我們期望可以用公式2p(1-p)從這個等位基因頻率計算出雜合子的數量。因此,我們預期的攜帶者頻率可以計算為:

2*p*(1-p)

我們得到: 0.03636809

這意味著我們預期大約有3.64%的個體是CF等位基因的攜帶者。?這與實際觀測到的雜合子基因型頻率相比如何?在23,369名接受篩查的人中,共觀察到842名雜合子。即842/23,369,約等于0.03603,或大約3.6%。預期值和觀測值之間的差異非常小。讓我們對鐮狀細胞貧血(SC)和β-地中海貧血(βT)進行相同的計算,我們可以看到2p(1-p)是觀測到的雜合子頻率的一個非常好的預測器。

順便說一下,我們還可以看到,對于隱性遺傳疾病,攜帶者的頻率(雜合子)遠高于受影響個體的頻率(純合子)。這符合哈代-溫伯格預測。雜合子與純合子的比例預計為:

如果說p的值非常小,那么1-p的值就接近為1

從數據庫進行計算

我們使用popgenr數據集,我們首先得安裝,我們使用兩種方式:

如果可以直接下載,則:

install.packages("popgenr")
library("popgenr")

如果下載不成功可以手動安裝,官網下載包,把安裝包放到路徑中
CRAN: Package popgenr (r-project.org)

getwd()
install.packages("popgenr_0.2.tar.gz",repos=NULL)
library("popgenr")

這個snp數據集來自人類基因組的二十五個隨機采樣的等位基因和基因型頻率,現在應該作為對象snp加載。這個snp數據集是從1000 Genomes項目(http://www.internationalgenome.org)中提取的,這是一個全球已知人類遺傳變異的公共庫。

data(snp)
str(snp)

對于分類變量,我們可以進行可視化:

對于R語言的統計知識,可以看我的博客:
【R語言從0到精通】-3-R統計分析(列聯表、獨立性檢驗、相關性檢驗、t檢驗)_r 列聯表分析-CSDN博客

plot(snp$type)

我們還是對于數據進行哈代溫伯格預測與實際對照:

plot(0, 0, type="n", xlim=c(0, 1), ylim=c(0, 1),xlab="Allele frequencies", ylab="Genotype frequencies")
curve(x^2, 0, 1, col="green", lwd=2, add=TRUE)
text(0.6, 0.2, "Homozygotes", col="green")
curve(2*x*(1-x), 0, 1, col="blue", lwd=2, add=TRUE)
text(0.25, 0.5, "Heterozygotes", col="blue")
points(snp$p, snp$hom, pch = 19, col = "green")
points(snp$p, snp$het, pch = 19, col = "blue")

?

總體而言,預測和測量數據之間似乎有很好的一致性。幾個特點顯而易見。與預測的偏差通常表現為雜合性較低,純合性較高。這與人口統計學效應一致,例如不同種群間等位基因頻率的差異,這將在后面更詳細地討論。此外,注意到圖中大多數點的等位基因頻率小于50%;這是因為我們正在繪制的變異是由突變產生的新的等位基因變異(衍生狀態),這些變異來自于預先存在的遺傳序列(通過與人類最近的親屬比較確定的祖先狀態),這些變異往往開始時相當罕見。當我們開始預測等位基因頻率的隨機波動并討論遺傳漂移的概念時,我們將再次回顧這個想法。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/39274.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39274.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/39274.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【leetcode--最小棧】

設計一個支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常數時間內檢索到最小元素的棧。 實現 MinStack 類: MinStack() 初始化堆棧對象。void push(int val) 將元素val推入堆棧。void pop() 刪除堆棧頂部的元素。int top() 獲取堆棧頂部的元素。int get…

TextInput是用于在用戶界面中輸入文本的控件,通常應用于表單、搜索框等需要用戶輸入文字的場景

TextInput是用于在用戶界面中輸入文本的控件&#xff0c;通常應用于表單、搜索框等需要用戶輸入文字的場景。以下是對TextInput的詳細解釋&#xff0c;涵蓋其各個方面的功能和屬性。 基本屬性 text 描述&#xff1a;TextInput中當前顯示的文本。用法&#xff1a;text: "示…

WebKey備受矚目的Web3.0新敘事,硬件與加密生態完美融合特性成為數字世界的新入口

在當今迅速發展的科技領域&#xff0c;Web3.0正在引領一場顛覆性的變革。而作為這一變革的先鋒&#xff0c;WebKey無疑是備受矚目的創新項目。它不僅代表了一種全新的技術趨勢&#xff0c;更是數字世界中硬件與加密生態完美融合的典范。 硬件與加密生態的完美融合 WebKey的核心…

Java基礎面試題(簡單版):

1.java的8個基本數據類型? 整型: byte(占用1個字節) short(占用2個字節) int(占用4個字節) long(占用8個字節) 浮點型: float(占用4個字節)、double(占用8個字節) 字符型: char 布爾型: boolean 2.ArrayList和LinkedList的區別? 可以說ArrayList和LinkedList除了是同屬于集合…

【QT】輸入類控件

目錄 Line Edit 核心屬性 核心信號 正則表達式 示例&#xff1a;使用正則表達式驗證輸入框內容 示例&#xff1a;切換輸入框密碼模式下的顯示狀態 Text Edit 核心屬性 核心信號 示例&#xff1a;獲取多行輸入框的內容同步顯示到label 示例&#xff1a;獲取文本的選…

三生隨記——眉筆詭事

在一個被遺忘的古鎮上&#xff0c;流傳著一個關于眉筆的詭異傳說。這個古鎮坐落在群山的環抱中&#xff0c;鮮少有人知曉它的存在。而在這片土地上&#xff0c;卻有著一件被視為詛咒之源的眉筆。 眉筆的來歷無人知曉&#xff0c;只知它在一夜之間出現在鎮上的古董店中。那支眉筆…

一文講懂npm link

前言 在本地開發npm模塊的時候&#xff0c;我們可以使用npm link命令&#xff0c;將npm 模塊鏈接到對應的運行項目中去&#xff0c;方便地對模塊進行調試和測試 用法 包鏈接是一個兩步過程&#xff1a; 1.為依賴項創建全局軟鏈npm link。一個符號鏈接&#xff0c;簡稱軟鏈&a…

0702_ARM5

練習&#xff1a;使用usart4 main.c #include "uart4.h"int main() {// 初始化 UART4hal_uart4_init();while (1) {// 發送一個字符串//hal_put_char( hal_get_char());hal_put_string(hal_get_string());}return 0; } usart4.c #include "uart4.h"//**…

c# 操作mysql的幫助類

MySqlHelper 的靜態類&#xff0c;其中包含了一些用于執行 MySQL 數據庫操作的方法。這些方法包括執行存儲過程、插入、更新、刪除操作以及執行數據庫事務查詢操作等。 該類中的方法主要有&#xff1a; ExecuteNonQuery 方法&#xff1a;用于執行存儲過程、插入、更新、刪除操…

如何降低布隆過濾器的誤判率

降低布隆過濾器的誤判率&#xff08;也稱為假陽性率&#xff09;是布隆過濾器應用中一個關鍵的問題。誤判率主要來源于哈希碰撞&#xff0c;即不同的元素可能被哈希到相同的位置。為了降低誤判率&#xff0c;可以從以下幾個方面進行優化&#xff1a; 1. 增加哈希函數的個數 原…

Asp.net Core 反射加載dll

定義一個類庫&#xff0c;定義接口 namespace Plugin {public interface IPlugin{void EllisTest();} }定義另外一個類庫&#xff0c;引用上面的類庫&#xff0c;實現接口 using Plugin;namespace UserCustom {public class Custom : IPlugin{public void EllisTest(){Conso…

二刷力扣——DP算法(子序列問題)

300. 最長遞增子序列 定義是以本元素結尾&#xff0c;所以公式初始化都好弄。但是太慢 class Solution {public int lengthOfLIS(int[] nums) {int nnums.length;int[] dp new int[n];//以自己結尾的最長遞增子序列dp[0]1;int maxzi1;for(int i1;i<n;i){dp[i]1;for(int j…

QT中QDomDocument讀寫XML文件

一、XML文件 <?xml version"1.0" encoding"UTF-8"?> <Begin><Type name"zhangsan"><sex>boy</sex><school>Chengdu</school><age>18</age><special>handsome</special>&l…

【YOLOv5進階】——引入注意力機制-以SE為例

聲明&#xff1a;筆記是做項目時根據B站博主視頻學習時自己編寫&#xff0c;請勿隨意轉載&#xff01; 一、站在巨人的肩膀上 SE模塊即Squeeze-and-Excitation 模塊&#xff0c;這是一種常用于卷積神經網絡中的注意力機制&#xff01;&#xff01; 借鑒代碼的代碼鏈接如下&a…

在C#中使用RabbitMQ做個簡單的發送郵件小項目 _

前言 好久沒有做項目了&#xff0c;這次做一個發送郵件的小項目。發郵件是一個比較耗時的操作&#xff0c;之前在我的個人博客里面回復評論和友鏈申請是會通過發送郵件來通知對方的&#xff0c;不過當時只是簡單的進行了異步操作。那么這次來使用RabbitMQ去統一發送郵件&#x…

vue中路由來回切換頁面直接卡死

今天發現一個很嚴重的問題&#xff0c;項目好不容易做好了&#xff0c;結果頁面多了&#xff0c;切換之后卡死。頁面所有的交互效果都失效了。 排查了許久的錯誤原因最后發現原來是路由名稱重復了。 如上圖當頁面跳轉到riskdetails詳細頁面之后&#xff0c;框架則被這個詳情頁…

隨機森林R語言預測工具

隨機森林&#xff08;Random Forest&#xff09;是一種基于決策樹的集成學習方法&#xff0c;它通過構建多個決策樹并集成它們的預測結果來提高預測的準確性。在R語言中&#xff0c;我們可以使用randomForest包來構建和訓練隨機森林模型。以下是對隨機森林的詳細介紹以及使用R語…

java高仿真數據生成器-需要的拿去

java高仿真數據生成器源碼-需要的拿去 nit-random-tools 介紹&#xff1a;高仿真數據生成器 逆天開源 java 證號碼, 姓名&#xff0c;職業, 日期&#xff0c;手機號 生成器 功能列表 編號功能描述class1號 生成器NitIdcardGenerator2姓名 生成器NitChineseNameGenerator3職…

node.lib下載失敗,手動下載并配置

在無網絡環境&#xff0c;或者網絡不好的環境&#xff0c;node.lib會下載失敗&#xff0c;此時可手動下載并進行配置。 我們以 node16.17.0 為例&#xff1a; 下載地址 分別下載node.lib和headers https://registry.npmmirror.com/-/binary/node/v16.17.0/win-x64/node.lib…

目標檢測算法的技術革新與應用案例

引言 目標檢測作為計算機視覺領域中的一項關鍵技術&#xff0c;近年來取得了顯著進展。從傳統的基于特征的方法到如今的深度學習算法&#xff0c;目標檢測技術在準確性、速度和魯棒性上均實現了大幅提升。本文將深入探討目標檢測算法的技術原理、發展歷程、最新進展以及實際應…