重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章将为大家详细讲解有关如何进行R语言用DNA序列做主成分的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
成都创新互联公司专业为企业提供通城网站建设、通城做网站、通城网站设计、通城网站制作等企业网站建设、网页设计与制作、通城企业网站模板建站服务,十多年通城做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
之前也有人留言问过如何用DNA序列做主成分分析,当时我也不知道,但是大体有一个思路 就是先比对,然后把比对的数据转换成通常用的snp数据应该就可以了,但是也仅限于思路,完全不知道如何操作,今天坐车回家,路上无聊,翻了一下电脑上保存的一些资料,发现了一个办法:可以借助R语言的adegenet
包,用到的函数是fasta2genlight()
The function fasta2genlight extracts SNPs from alignments with fasta format. 从比对好的fasta文件中提取snp数据
adegenet这个包第一使用需要先安装,直接运行如下命令
install.packages("adegenet")
今天的推文使用的数据集是这个包的内置数据集,首先是获取这个数据集的存储路径
dfpath<-system.file("files/usflu.fasta",package="adegenet")
dfpath
library(adegenet)
flu<-fasta2genlight(dfpath,chunkSize = 10,parallel = F)
flu
library(ggplot2)
snpposi.plot(position(flu),genome.size = 1700,codon = F)+
theme_bw()
snpposi.plot(position(flu),genome.size = 1700,codon = T)+
theme_bw()
这个图如果分面画成山脊图的形式可能会更好看,但是自己目前还不知道如何实现
snpposi.test(position(flu),genome.size = 1700)
这一步的时间可能会比较长
df.pca<-glPca(flu,nf=3)
df.pca.scores<-as.data.frame(df.pca$scores)
df.pca.scores
df.pca.scores$population<-ifelse(df.pca.scores$PC1>0,"pop1",
ifelse(df.pca.scores$PC2>1,"pop2","pop3"))
library(ggplot2)
ggplot()+
geom_point(data=df.pca.scores,
size=2,
aes(x=PC1,y=PC2,
color=population))+
theme_bw()+
stat_ellipse(data=df.pca.scores,
aes(x=PC1,y=PC2,fill=population),
geom = "polygon",alpha=0.2,lty="dashed",color="black")
关于如何进行R语言用DNA序列做主成分的分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。