千家信息网

怎样使用R语言利用vcf格式文件计算核苷酸多样性

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇文章给大家分享的是有关怎样使用R语言利用vcf格式文件计算核苷酸多样性,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先是使用bcf
千家信息网最后更新 2026年11月02日怎样使用R语言利用vcf格式文件计算核苷酸多样性

本篇文章给大家分享的是有关怎样使用R语言利用vcf格式文件计算核苷酸多样性,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

首先是使用bcftools软件操作vcf文件
  • 将vcf文件按照染色体拆分
bcftools view snp.vcf.gz scaffold_1 > popgenome-vcf/scaffold_1
bcftools view snp.vcf.gz scaffold_2 > popgenome-vcf/scaffold_2

如果当前目录下只有vcf格式文件,会遇到报错Failed to open .vcf.gz: could not load index,可以参考 https://www.cnblogs.com/chenwenyan/p/11945445.html

 tabix -p vcf snp.vcf.gz

如果当前目录下没有popgenome-vcf这个目录,还需要新建目录

mkdir popgenome-vcf

今天参考的文章里写道 In theory, the r PopGenome can read VCF files directly, using the readVCF function. However, because our samples are haploid, we need to use a different function, r readData, which requires a folder with a separate VCF for each scaffold. 这个是为什么呢?

接下来是在R语言里的操作

读入数据
#install.packages("PopGenome")
library(PopGenome)
getwd()
setwd("VCF/")
snp<-readData("popgenome-vcf",format = "VCF")
统计一些基本信息
get.sum.data(snp)
image.png

这里可以直接统计 转换和颠换的比例

获取样本名称并分组
pops<-get.individuals(snp)[[1]]
pop1<-pops[grep("B\\.bam",pops)]
pop2<-pops[grep("b\\.bam",pops)]
pop1
pop2
给数据划分类群
snp<-set.populations(snp,list(pop1,pop2))
snp@populations
计算FST
snp<-F_ST.stats(snp)
get.F_ST(snp)
image.png

这里的指标都是什么意思呢?

计算核苷酸多样性
get.diversity(snp)[[1]]

这里的指标也看不懂是什么意思呀

设置划窗计算指标
win_snp<-sliding.window.transform(snp,
width = 10000,
jump = 2000,type = 2)
win_snp<-F_ST.stats(win_snp)



win_snp@nucleotide.F_ST
win_snp@nuc.diversity.within

接下来用折线图来展示结果

FST
library(ggplot2)
win_fst <- data.frame(x=1:dim(win_snp@nucleotide.F_ST)[1],
y=win_snp@nucleotide.F_ST[,1])
head(win_fst)
p1<-ggplot(win_fst,aes(x=x,y=y))+
geom_point()+
geom_line()+
theme_bw()+
theme(panel.grid = element_blank())+
scale_x_continuous(breaks = win_fst$x,
labels = win_fst$x)+
labs(x=NULL,y=NULL,title = "FST")
ggsave("FST.pdf",p1,width = 15,height = 4)

image.png
核苷酸多样性
bb_div  <- win_snp@nuc.diversity.within[,1] # diversity among B (bb = "big B")
lb_div <- win_snp@nuc.diversity.within[,2] # diversity among B (lb = "little b")
bb_div
df1<-data.frame(x=1:length(bb_div),y=bb_div)
df2<-data.frame(x=1:length(lb_div),y=lb_div)
p2<-ggplot()+
geom_line(data=df1,aes(x=x,y=y),color="red")+
geom_point(data=df1,aes(x=x,y=y),size=2,color="red")+
geom_line(data=df2,aes(x=x,y=y),color="blue")+
geom_point(data=df2,aes(x=x,y=y),size=2,color="blue")+
theme_bw()+labs(x=NULL,y=NULL)
ggsave("diversity.pdf",p2,width = 15,height = 4)

以上就是怎样使用R语言利用vcf格式文件计算核苷酸多样性,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

文件 多样性 核苷酸 目录 格式 语言 指标 接下来 意思 数据 文章 更多 知识 篇文章 参考 统计 实用 信息 只有 名称 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 精品咖啡豆 智能科技公司是互联网公司吗 互联网科技革命 奇酷互联网络科技 华中科技大学互联网 南京欣网互联网科技 亿账通互联网科技 国外互联网科技网站 互联网科技公司的市场部门 互联网科技公司需要的职位 来此购互联网科技有限公司 浙江互联网科技研学营 本届互联网博览会上的黑科技 互联网科技如何创业 滨湖区互联网智能科技产品有哪些 梅州GM互联网络科技有限公司 互联网科技资金流入 互联网科技融合创新 新氧科技和美国互联网有关系吗 华人运通互联网科技公司 互联网科技网 互联网科技公司经营范围 互联网科技有限公司经营范围 金融科技 互联网金融 甘肃拓世互联网科技有限公司 广州恒生互联网科技有限 宁夏众和广鑫互联网科技有限公司 福建科技产业互联网发展 广州市恰铎互联网科技有限公司 盐城市攀科互联网科技有限公司
0