泛基因家族分析R语言计算核苷酸多样性

基因组 基因组 448 人阅读 | 0 人回复 | 2024-07-28

泛基因家族分析通常会分析 kaks 和 核苷酸多样性,之前的推文介绍过使用wgd这个软件计算dnds,这个软件调用的是codeml。计算dnds的时候可以选择把比对好的文件保存下来,直接用这个保存好的比对文件计算核苷酸多样性。codeml计算kaks的代码

wgd ksd --n_threads 8 02.mcl 02.cds/ZH13.v2.CDS.fasta --preserve

02.mcl 是某个基因家族所有序列id 每行是一个基因家族,序列id用制表符分割 ZH13.v2.CDS.fasta 是所有的cds序列

保存的比对文件

image.png

这个比对格式忘记叫什么格式了

R语言里 pegas 包里有一个函数 nuc.div()函数可以直接计算核苷酸多样性

这个函数的输入是 ape包 read.dna()这个函数读取fasta格式的比对序列,读取以后是个DNAbin格式

如何用R语言的函数把wgd 保存的比对文件读入并保存成 DNAbin这个格式 没有找到现成的函数

ape 这个R包里有函数 as.DNAbin() 可以把矩阵转换成 DNAbin的格式

比如

library(tidyverse)
c("A","T","C","G","A","A","C","G") %>% 
  matrix(nrow = 2,byrow = TRUE) %>% 
  ape::as.DNAbin()
library(tidyverse)
c("A","T","C","G","A","A","C","G") %>% 
  matrix(nrow = 2,byrow = TRUE) %>% 
  ape::as.DNAbin() %>% 
  pegas::nuc.div()

把上面提到的格式数据读取进来转换成一个矩阵就行了

library(tidyverse)
read_lines("D:/Jupyter/panGeneFamily/GF_000001.fasta.msa.nuc",
           skip = 1) %>% 
  matrix(ncol=2,byrow=TRUE) %>% 
  as.data.frame() %>% 
  pull(V2) %>% 
  str_split(pattern = "") %>% 
  unlist() %>% 
  matrix(nrow = 5,byrow = TRUE) %>% 
  as.DNAbin()

欢迎大家关注我的公众号 小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!

微信扫一扫分享文章

+14
无需登陆也可“点赞”支持作者

最近谁赞过

分享到:
评论

使用道具 举报

热门推荐