YuLab-SMU / treeio

:seedling: Base Classes and Functions for Phylogenetic Tree Input and Output
https://yulab-smu.top/treedata-book/
94 stars 24 forks source link

read.nhx() bug #96

Closed X1angyang closed 1 year ago

X1angyang commented 1 year ago

Y 叔好,

在read.nhx()函数中,对nhx文件的feature进行了数字转换,条件是正则匹配到数字的时候就使用as.numeric()函数将字符串转为数值。但是正则中是部分匹配而非完全匹配,这导致如果feature是字符和数字混合的时候,比如’AAA111‘’,仍然进行字符串转数字的操作,返回结果变成NA,由此引发在作图时使用类似geom_label()得不到预期的现象。我提交分支失败了,可以修复一下^-^

期待回复~

xiangpin commented 1 year ago

谢谢指出,不知是否有可重复错误的代码与文件?能否提供下,我这边看看先

X1angyang commented 1 year ago

library(ggtree) library(ggplot2) library(treeio)

treetext = "((((T0201:11.5[&&NHX],T0104:4.5[&&NHX]):1[&&NHX], T0103:5.5[&&NHX]):0.5[&&NHX], T0106:3[&&NHX], T0107:2[&&NHX]):1[&&NHX], T0102:7[&&NHX], (T0302:3[&&NHX],T0301:4[&&NHX]):1[&&NHX:S=GRIN2A Loss])[&&NHX];"

tree <- read.nhx(textConnection(treetext)) ggtree(tree, layout='ellipse') + geom_tiplab() + geom_label(aes(x=branch, label=S), fill='lightgreen')

示例中S=GRIN2A Loss,最终结果是无法展示的 image

删除其中的数字,只保留字符,则可以正常显示 1685503180203

原因是在这里是部分匹配,可以加上^ 和 $ image

xiangpin commented 1 year ago

谢谢,我已提交 #97