美文网首页js css html
使用R语言ggtree读取进化树时的报错和解决办法

使用R语言ggtree读取进化树时的报错和解决办法

作者: 小明的数据分析笔记本 | 来源:发表于2022-07-30 17:50 被阅读0次

想复现一篇论文中的进化树图,论文中提供的数据是excel存储的,首先把进化树的内容复制到一个文本文件里

读取树文件

library(ggtree)
read.tree("data/20220725/tree01.nwk")

遇到报错

Error in nchar(tree) : invalid multibyte string, element 1

查了一下报错,有人提到可能是字符编码问题

https://community.rstudio.com/t/problem-importing-csv-file-in-r-error-in-make-names-x-invalid-multibyte-string-1/72802/2

使用readLines()函数读取的话可以 看到有一个字符是乱码

readLines("data/20220725/tree01.nwk")
image.png

对应着到进化树中去看发现其是用减号链接的字符,这样可能不行?

image.png

对应着把这个减号改成下划线就好了,如果确实想在图上体现这个减号,可以出图后再编辑

然后读取

read.tree("data/20220725/tree01.nwk")

又遇到报错

Error in FUN(X[[i]], ...) : 
  numbers of left and right parentheses in Newick string not equal

报错的意思就是进化树里的半括号数不匹配

搜索找到 参考

https://github.com/YuLab-SMU/ggtree/issues/432

有人说可能是进化树的文本标签 里有分号,我搜了一下我的没有

统计一下半括号的数量

readLines("data/20220725/Figure3b_1.txt") %>% 
  str_count("\\(")

readLines("data/20220725/Figure3b_1.txt") %>% 
  str_count("\\)")

一个13 一个14 确实不匹配

暂时想不到如何用代码去找是哪个括号多了,只能一个一个看了,还好进化树文件不多

把枝长信息去掉

readLines("data/20220725/Figure3b_1.txt") %>% 
  str_replace_all(":0.[0-9]+","")

把结果

((AbarCN65538_AB,(((Asat_Ogle_ACD_A,Sanfensan_ACD_A),(AlonCN58139_Al,AlonCN58138_Al)),((((AinsINS_4_CD_D,AinsCN108634_CD_D),AmarCN57945_CD_D),AmurCN21989_CD_D),(AagaCN25869_AB,(AcanCN23017_Ac,AdamCN19457_Ad)))))),(AnudCN58062_As,AstrCN88610_As),AwieCN90217_As);

放到rstudio写代码的地方,遇到逗号就换行,就能够找到多的那个右括号

但实际应该是少了一个左括号,在文件的最左边添加上就可以了

可能是在将树文件复制到excel的时候少选了一个左边的括号?

使用ggtree作图的时候

ggtree(tree01,layout = "daylight")+
  geom_tiplab()

使用daylight这个布局一直报错

Error: C stack usage 15924720 is too close to the limit

我现在用的R是4.0.3
换成4.1版本的R就没有这个问题

相关文章

  • 使用R语言ggtree读取进化树时的报错和解决办法

    想复现一篇论文中的进化树图,论文中提供的数据是excel存储的,首先把进化树的内容复制到一个文本文件里 读取树文件...

  • 2019-04-16

    简单的利用R语言绘制进化树(模仿笔记) 必备软件:treeio,ggtree。需要首先安装Bioconductor...

  • 使用iTOL美化进化树

    小编之前写过一篇使用“ggtree" 快速美化进化树的文章(使用ggtree对进化树进行分组美化 - 简书),但是...

  • R语言的ggtree展示进化树的一些常用操作

    ggtree是R语言里对进化树进行可视化展示的一个功能非常强大的R包,ggtree的作者还专门写了一本书对ggtr...

  • R语言:ggtree绘制进化树(二)

    导读 上一篇:R语言ggtree绘制进化树(一)上一篇相关:Phylophlan(二)种间进化分析tree文件和绘...

  • 学习小组Day10-进化树的学习1

    1 background--updateR() 想用Y叔的ggtree来画进化树,但安装软件时,提示R4.0.1太...

  • ggtree绘制基础版进化树

    ggtree是Y叔来发的用于分析进化关系很强大的R包,用ggtree可以轻轻松松绘制一棵优雅的进化树,高配版进化树...

  • 【R语言】ggtree绘制进化树

    绘制进化树的方法有很多,入门的MEGA。美化比较好用的,也是我经常用的工具如iTOL,evolview等。 今天测...

  • 进化树

    1.使用 ggtree 实现进化树的可视化和注释:https://cosx.org/2015/11/to-achi...

  • ggtree笔记

    进化树的可视化软件非常多,其中R包 ggtree 功能非常强大,非常灵活,简单记录自己的学习笔记 第一步:使用 m...

网友评论

    本文标题:使用R语言ggtree读取进化树时的报错和解决办法

    本文链接:https://www.haomeiwen.com/subject/wgfhwrtx.html