知识点丨重测序数据进行kinship亲缘关系分析、构建IBS矩阵的方法与介绍

简介: 知识点丨重测序数据进行kinship亲缘关系分析、构建IBS矩阵的方法与介绍

kinship矩阵 和 IBS矩阵

亲缘关系矩阵(kinship matrix)和同源性矩阵(IBS matrix)是基于遗传数据计算得到的两种矩阵,用于描述个体之间的亲缘关系和遗传相似度。

重测序数据发掘亲缘关系

构建基于重测序数据的亲缘关系矩阵(kinship matrix)和同源性矩阵(IBS matrix)是基因组学研究中常见的任务之一,下面介绍操作方法:

读取重测序数据

您可以使用 read.table()readr::read_tsv() 函数从文件中读取数据,并将其存储为数据框。

library(readr)
seq_data <- read_tsv("path/to/sequencing/data/file.tsv")

过滤和清理数据

您需要根据自己的研究问题和目标样本集合,选择适当的过滤和清理策略来处理重测序数据。例如,去除缺失位点、低覆盖度位点或过滤掉与疾病相关的位点等。

# 假设要去除缺失位点和低覆盖度位点
filtered_data <- seq_data[complete.cases(seq_data), ]
filtered_data <- filtered_data[filtered_data$Coverage > 10, ]

计算杂合率

杂合率是指在某个位点上两个等位基因的频率之和,通常用于估计个体的基因型质量。您可以使用 VCFtools 或其他软件包计算杂合率并将其添加到数据框中。

# 假设杂合率的列名为 "HetRate"
filtered_data$HetRate <- calculate_heterozygosity(filtered_data)

计算亲缘关系矩阵和同源性矩阵

在 R 中,您可以使用 snpStats 或 GenABEL 包中的函数来计算亲缘关系矩阵和同源性矩阵。您需要提供一个包含所有样本的基因型信息的矩阵对象,并指定矩阵的类型(例如,二倍体或多倍体)和计算方法(例如,经典MLE或EM-REML)。

library(snpStats)
geno_matrix <- read.plink("path/to/genotype/data/file")
ibs_matrix <- ibs(geno_matrix)
kinship_matrix <- ibs2kin(ibs_matrix, type = "RR", Nind = ncol(geno_matrix))

可视化结果

您可以使用 ggplot2 或其他可视化软件包来可视化亲缘关系矩阵和同源性矩阵。例如,下面的代码使用 ggplot2 包绘制了一个基于 kinship 矩阵的 heatmap。

library(ggplot2)
kinship_df <- as.data.frame(as.matrix(kinship_matrix))
ggplot(kinship_df, aes(x = Var1, y = Var2, fill = value)) + 
  geom_tile() + 
  scale_fill_gradient(low = "white", high = "blue") +
  theme(axis.text.x = element_blank(),
        axis.text.y = element_blank(),
        axis.title.x = element_blank(),
        axis.title.y = element_blank())

补充介绍

亲缘关系矩阵衡量了不同个体之间亲缘关系的程度,通常使用 Pearson 相关系数或 Euclidean 距离来表示。亲缘关系矩阵的对角线元素为 1,表示每个个体与自己的亲缘关系是最近的。而非对角线元素的大小表示不同个体之间的亲缘关系程度,例如,越接近 1 表示越近亲。

同源性矩阵是指在某个位点上,两个个体所拥有的等位基因是否相同。同源性矩阵可以用三种方式(AA, AB, BB)表示两个个体在某个位点上的等位基因状态,其中 A 代表一个等位基因,B 代表另一个等位基因。同源性矩阵是通过计算每对个体之间在所有位点上的同源性程度得到的。

作用与应用场景

一般情况下,亲缘关系矩阵和同源性矩阵是通过重测序数据或 SNP array 数据计算得到的。对于 SNP array 数据,同源性矩阵可以直接从样本的基因型数据计算得到。而亲缘关系矩阵则需要进一步转换。亲缘关系矩阵和同源性矩阵在基因组学研究中具有重要作用。


以上内容整理并参考了Chatgpt3.5,每天分享一个生信知识点,欢迎后台提问,将优先考虑粉丝提出的问题并整理答案~

END

© 素材来源于网络,侵权请联系后台删除

往期推荐:

文献丨群体转录组分析锁定关键转录因子

文献丨转录组RNA seq——青年阶段!

文献丨高通量表型组图像识别与GWAS

笔记丨ggplot2热图入门学习笔记

笔记丨PCA分析基本知识和数学原理

图书丨R语言、Python、Linux

超算丨数据分析时电脑配置不够用?试试

软件 | 如何进行基因家族分析?TBtools

服务器丨家用联想台式机重装Linux系统

转录组丨一套完整的操作流程案例

转录组丨利用limma包进行差异表达分析

Python笔记丨函数和类相关基础知识总结

Python笔记丨条件与循环流程知识总结

Python笔记丨数据类型基础与易错点总结

GWAS丨全基因组关联分析工具GAPIT最新版

数据可视化丨优雅的带显著性标记的箱线散点图

相关文章
|
9月前
|
算法 搜索推荐 图计算
图计算中的社区发现算法是什么?请解释其作用和常用算法。
图计算中的社区发现算法是什么?请解释其作用和常用算法。
186 0
|
2月前
|
机器学习/深度学习 数据可视化 数据挖掘
基于Copula分布的合成数据采样:保持多维数据依赖结构的高效建模方法
本文深入探讨了Copula的基础理论、运作机制及其在数据科学领域的应用。Copula作为一种数学框架,能够将随机变量间的依赖关系与其边际分布分离,特别适用于处理非线性依赖关系或异质分布变量。文章通过年龄与收入的关系分析,展示了Copula在多元分析中的独特优势,并介绍了高斯Copula的具体应用实例。此外,还详细讲解了Copula在合成数据生成中的应用,验证了合成数据在训练机器学习模型时的有效性。
126 18
|
9月前
|
数据可视化
R语言生态学进化树推断物种分化历史:分类单元数与时间关系、支系图可视化
R语言生态学进化树推断物种分化历史:分类单元数与时间关系、支系图可视化
R语言生态学进化树推断物种分化历史:分类单元数与时间关系、支系图可视化
|
9月前
|
资源调度 并行计算 数据可视化
【视频】马尔可夫链原理可视化解释与R语言区制转换MRS实例|数据分享
【视频】马尔可夫链原理可视化解释与R语言区制转换MRS实例|数据分享
|
算法 调度 决策智能
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
379 0
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
|
9月前
|
数据可视化 数据建模
R语言用线性混合效应(多水平/层次/嵌套)模型分析声调高低与礼貌态度的关系
R语言用线性混合效应(多水平/层次/嵌套)模型分析声调高低与礼貌态度的关系
Matlab:如何利用层次分析法(升级版)计算具有多重指标的判断矩阵的一致性检验和权重
Matlab:如何利用层次分析法(升级版)计算具有多重指标的判断矩阵的一致性检验和权重
407 0
|
9月前
【SPSS】两独立样本的极端反应检验和两配对样本的非参数检验详细操作教程(附案例实战)
【SPSS】两独立样本的极端反应检验和两配对样本的非参数检验详细操作教程(附案例实战)
273 0
|
9月前
|
C++
【SPSS】两独立样本T检验分析详细操作教程(附案例实战)
【SPSS】两独立样本T检验分析详细操作教程(附案例实战)
1533 0
|
9月前
|
算法 Java 图计算
图计算中的最短路径算法是什么?请解释其作用和常用算法。
图计算中的最短路径算法是什么?请解释其作用和常用算法。
88 0

热门文章

最新文章