LDheatmap|SNP连锁不平衡图(LD)可视化,倒三角图?
时间:2022-07-22
本文章向大家介绍LDheatmap|SNP连锁不平衡图(LD)可视化,倒三角图?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
连锁不平衡图,用来可视化不同SNP之间的连锁程度,前同事间俗称“倒三角”图
本文使用自己的数据,因为安装R包后使用内置数据集运行出结果较容易,但是自己的数据就可能会有一些不大不小的“坑”,我替你们趟了。。。
一 载入R包 数据
数据为内置CEUData保存后,进行了“细微”的处理(去掉SNP碱基之间的“/”),因为这种基因型形式文件很常见;
library("LDheatmap")
#读入数据
SNP <- read.csv("CEUSNP.csv",header = TRUE)
pos <- read.csv("CEUDist.csv",header= TRUE)
#查看数据
head(pos)
SNP[1:4,1:4]
二 绘制连锁不平衡图
2.1 直接绘制
SNPpos <- pos$x
LDheatmap(SNP, SNPpos,color = grey.colors(20))
Error in LDheatmap(SNP, SNPpos, color = grey.colors(20)) : column 1 is not a genotype object
额, 也许是因为没有“/”的原因,加上试试?
2.2 碱基型之间加“/“
怎么加呢? 首先想到 Tidyverse|数据列的分分合合,一分多,多合一的separate
和unite
,可是没有分隔符。。
经高人指点 ,使用替换的方式,解决方法很多。此处使用R-do包的函数
library(do)
df <- na.omit(SNP)
#A,C,G ,T 替换为A/,C/,G/,T/
df1 = do::Replace(df,pattern = c("A:A/","C:C/","G:G/","T:T/"))
#去掉最后的/
SNPdata <- do::Trim(df1,"/")
SNPdata[1:4,1:4]
rs4615512 rs2283089 rs1894731 rs2283092
1 T/C C/C A/A T/T
2 T/C C/T A/A T/T
3 T/C C/C A/A T/T
5 T/C C/C A/A T/T
加上了,再次绘图
LDheatmap(SNPdata, SNPpos,color = grey.colors(20))
Error in LDheatmap(SNPdata, SNPpos, color = grey.colors(20)) : column 1 is not a genotype object
额 ,还是不行,同样的报错。检索报错,尝试转换数据格式。
2.3 碱基型转为genotype object
使用genetics包的函数转化
library("genetics")
for(i in 1:ncol(SNPdata)){
SNPdata[,i]<-as.genotype(SNPdata[,i])
}
LDheatmap(SNPdata, SNPpos,color = grey.colors(20))
额 ,,,终于可以了。。。
三 图形调整,优化
3.1 调整颜色,更改标题,标示SNP名称
color.rgb <- colorRampPalette(rev(c("white","red")),space="rgb")
## 绘制连锁不平衡图
names <- c("rs1111183", "rs2237789", "rs2299531")
LDheatmap(SNPdata, SNPpos,
color=color.rgb(20),
title = "DEU Pairwise LD",
SNP.name=names,flip=TRUE)
3.2 使用grid调整SNP标记名称字体大小、颜色
library(grid)
grid.edit(gPath("ldheatmap", "geneMap","SNPnames"),
gp = gpar(col="black",lwd = 1,cex=0.7))
所谓的”倒三角图“完成,haploview软件也很好看,且有block,批量也许不太友好,见仁见智了!
- 预防SQL注入攻击之我见
- 企业网站架构之Nginx详解原理以及工作模块;源码Lnmp架构
- 【自然框架】——页面基类与设计模式(二) 模板模式
- HLS Lesson17-数组优化:数组映射和重组
- HLS Lesson16-数组优化:数组分割
- HLS Lesson15-for循环优化:其他方法
- 对自己的上网搜索记录进行爬虫是怎样一种体验
- HLS Lesson13-for循环优化:合并
- HLS Lesson12-for循环优化:基本性能指标
- HLS Lesson11-c/c++ testbench书写续2
- 【机器学习】实例详解机器学习如何解决问题
- 企业网站架构之Nginx+tomcat+memcached集群
- 企业级Docker Registry开源工具Harbor的介绍以及使用指南
- HLS Lesson8-基本操作
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一天一大 leet(不同的二叉搜索树 II)难度:中等-Day20200721
- 组合游戏系列5: 井字棋、五子棋AlphaGo Zero 算法实战
- 一天一大 leet(最小路径和)难度:中等-Day20200723
- 一天一大 leet(二叉树的最大深度)难度:简单-Day20200728
- 生产者消费者模式的三种实现方式
- java中的阻塞队列
- java虚拟机
- 重构:保持Dockerfile整洁的5个技巧
- spring boot启动过程
- 如何构造jvm的堆溢出和栈溢出
- 一日一技:导入父文件夹中的模块并读取当前文件夹内的资源
- Matpotlib绘图遇到时间刻度就犯难?现在,一次性告诉你四种方法
- Windows NetLogon权限提升漏洞(CVE-2019-1424) 复现
- 源码解析:Git的第一个提交是什么样的?
- 终于搞懂,为什么 Java 的 main 方法必须是 public static void?