toytree icon indicating copy to clipboard operation
toytree copied to clipboard

Node sizes/color set to only zero

Open MauriAndresMU1313 opened this issue 3 years ago • 2 comments

I have a tree file and a data frame that I use to create a phylogenetic tree with customized labels. Here is my tree in Newick format with here node support:

#newick_cluster_4 = "(BCM92732.1:0.7685029303,((VTR99890.1:0.4826415409,(QEL17956.1:0.2862178948,AMV31440.1:0.4550572636)63.7/99:0.0971311784)95.5/100:0.1795637351,QVL29850.1:0.6975169956)98.6/100:0.2293084866,(((((QOV88855.1:0.8558129122,(CAD73141.1:0.3008165189,(QEG23589.1:0.3933009609,QDT05639.1:0.4379373270)71.8/98:0.0754352804)100/100:0.4457016912)27.1/13:0.0732908440,(QDU83071.1:1.2112768519,ALS34740.1:1.3915765148)86.1/85:0.1640289509)89.3/17:0.0940172822,((((((((((((QDV28174.1:0.6295593021,(QDV27814.1:0.4353988863,QDV62751.1:0.6123586065)97.6/100:0.2027746774)15.6/54:0.0719348404,AQT67197.1:0.5341720625)95.1/96:0.1476151400,((((QQL50302.1:0.4738311866,ACU03914.1:0.5933967390)99.7/100:0.3235094734,AYQ36531.1:0.5161841949)88.8/97:0.1063020966,QCX38072.1:0.5663045894)84.1/84:0.0635036223,(CAZ95099.1:0.5457493858,ASO04237.1:0.5561514804)91.5/89:0.1125239173)99.7/96:0.2677374357)89/88:0.0933869161,AQQ70479.1:0.6401124885)45.7/76:0.0673016016,((QDU69490.1:0.7709891183,QDS98805.1:0.5121905785)75.4/98:0.1410971710,QDT75624.1:0.8314702614)92.7/87:0.1555272826)97.8/92:0.1575812471,((((QDU38612.1:0.4385645115,(QXD33910.1:0.2479098491,QXD26134.1:0.3293661971)100/100:0.4813458936)99.8/100:0.3951966866,AQQ70473.1:1.0081096306)87.3/95:0.1328647306,((ARN56175.1:0.5938118896,AQQ09113.1:0.7023530184)31/94:0.0976014373,AQQ70481.1:0.6166516153)99.5/100:0.2930393386)93.7/85:0.1276708020,(((((QJB38038.1:0.4584921092,QEC78088.1:1.4242071972)80.3/96:0.2820687588,(QEC52400.1:0.3427898720,AEV96958.1:0.4055943959)86.6/99:0.1149541603)97.6/97:0.2016385238,AWI09673.1:0.6998345970)65/71:0.0320295308,(AEL27516.1:0.1677751137,AKP53111.1:0.1701471235)100/100:0.4703047274)94/96:0.1127363900,(((UBM33850.1:0.1163296130,QDU73633.1:0.1147967927)100/100:0.5753397957,QDU60405.1:0.5511690603)96.8/100:0.1716458861,((UBM58675.1:0.3792865116,QGY44258.1:0.1873872216)63/97:0.1356016071,(ULB34471.1:0.2962247924,SCM55950.1:0.4240064384)72.6/100:0.0781211253)100/100:0.7388842010)92.7/83:0.1018432955)98.1/85:0.1351038866)32.6/73:0.0466820775)98.6/78:0.1921367927,((((((QDS98827.1:1.4809458708,BDE91655.1:2.0455125718)48.5/94:0.1911637321,AWT60963.1:1.2993440517)83.6/77:0.1937548051,CAD7278645.1:1.6845843821)70.3/76:0.0863454245,ULL13658.1:0.7472402295)93.4/74:0.1297773768,(QDU29801.1:0.9537321556,QDU94646.1:0.9383580874)99.2/99:0.3170806023)94.9/72:0.1106469948,((((QDU26291.1:0.5682601165,QDU95146.1:0.5989854412)86/98:0.1613665837,(AIF01494.1:0.8551774000,(QDT38819.1:1.0388257719,QDU93959.1:1.0428698742)57.8/81:0.2120100415)84.8/82:0.0825384585)99.6/91:0.2377047601,(((BCS37145.1:0.4500351589,ABJ81207.1:0.5066945697)97.9/100:0.2943250568,QOY90981.1:0.7525007333)85.6/95:0.1376275141,AGA27092.1:0.7081717802)89.1/88:0.1019201752)69.8/33:0.0590656851,((QEL13168.1:0.3158342410,VIP09812.1:0.3121643336)100/100:0.3460450448,((ASV75391.1:0.9677689844,VTS04048.1:0.7201248884)57.8/82:0.1323101488,BCS34238.1:0.7654831448)43/32:0.0643923916)89/34:0.0804009365)87.8/46:0.0638171673)90.6/45:0.0769634491)86.2/38:0.0390481083,((((QGQ21444.1:0.2066356098,(QDT89242.1:0.1591031620,QEG16826.1:0.1487248978)100/100:0.2529138728)53.9/98:0.0474215100,(QDV50699.1:0.1002962443,QDT97753.1:0.1812827716)90.6/100:0.0683278219)100/100:0.5499584461,(QUE49644.1:0.3779995881,QJE95126.1:0.4817557468)100/100:0.8365663775)94/65:0.1613925624,((((ARN56174.1:1.1091064473,(SEH72311.1:0.5542842767,QDT09869.1:1.1981073880)99.7/100:0.6023682907)92.5/95:0.1975271951,(((UBD60394.1:0.5461066957,BDE91651.1:1.2406803435)96.1/96:0.2628804163,((BBA15866.1:0.4612785296,(QEH43526.1:0.7423722501,(((((UGU17416.1:0.4960121514,((QDM12169.1:0.0979750674,ANU58084.1:0.1176625259)100/100:0.3668006428,ULB36064.1:0.3574632826)99.9/100:0.3523019585)84.7/100:0.1263505464,QNL51687.1:0.7967088344)92.4/100:0.1478341352,AHF16456.1:0.9789627213)98.9/100:0.2618727096,SDB58825.1:1.0139659875)83.8/88:0.0738227830,(QEC45250.1:0.6085212651,QJB38037.1:0.6266805242)5.41/59:0.0883333581)34.1/83:0.0573510646)91.9/90:0.1185661136)76.9/90:0.1091171910,UAY56099.1:0.9839661692)98/98:0.2479118963)23.2/86:0.0678674510,(ASM67226.1:0.5801258567,ANU64080.1:1.2341369628)100/100:0.8360322592)49.9/89:0.0959092110)95.5/88:0.1342700442,(((ULL13659.1:0.3407878850,(ANY72720.1:0.1301234475,AYB46155.1:0.1294206237)99.9/100:0.2538038430)100/100:0.7414644349,(AQQ70483.1:0.7073724473,ARN56176.1:0.6265723413)100/100:0.5577586764)97.9/99:0.2581524524,QDS98806.1:1.0902735478)93.8/96:0.2052767841)0/18:0.0000022870,(((QDU56027.1:0.4612460752,QDT09447.1:0.4229685728)99.9/100:0.3319571889,QXD33075.1:0.7150562208)80.2/99:0.0891048164,QDT14405.1:2.3683380432)90.7/94:0.1421068447)97.1/65:0.0942286775)85.6/42:0.0328863572)99/90:0.2074630440,(((AQT68188.1:1.0532854870,AQQ70495.1:1.0846441184)98.6/100:0.3739847455,(AWI08349.1:0.6790625143,QIF01542.1:0.8509272304)100/100:0.9684655326)44.7/88:0.0586403786,SDS49230.1:1.0657885791)94.4/85:0.1680257749)49.4/58:0.0691008214,(((QEH38844.1:0.8281473625,ASV74657.1:0.5576661370)99.7/100:0.6605748736,AVM44867.1:1.9385545068)75.4/96:0.2793091518,QFU75447.1:2.0173856949)79.5/91:0.1927309878)99.8/100:0.4360312648,ARU40244.1:1.5938152237)80/15:0.0617139118,(((QDT51073.1:0.3896972044,QDU78830.1:0.8359150210)99.8/100:0.5463869449,QDT62708.1:1.2818814010)89.2/98:0.2513630493,QQL44735.1:1.5604912079)92.2/86:0.2579333772)90.6/15:0.0959879745)84.4/27:0.1077456585,(QDS99083.1:0.2741935591,QDS99096.1:0.3601791257)100/100:0.9462957039)91.8/93:0.1473784614,((AYR29523.1:0.0817798962,QWO86812.1:0.0484772316)99.6/100:0.3088630733,SEH94018.1:0.3226403167)100/100:1.2685991620)82/98:0.1033294428);"

Here the data frame (only a part of the df):

ID	Gender	Belongs
BCM92732.1	Abditibacteriota	0
VTR99890.1	Tuwongella	0
QEL17956.1	Limnoglobus	0
AMV31440.1	Pirellula	0
...

I´m using this line of code to generate the tree, everything is good except for the node support.

# Node colors
colors = ['red' if ((i) == '100.0') else 'grey' for i in tre.get_node_values('support', 1, 0)]
sizes = [10 if i else 0 for i in tre.get_node_values('support', 1, 0)]

#### Now, drawing the new version of the tree
tre2.draw(
  tip_labels_align=True,
  node_sizes=sizes,
  node_colors=colors,
  tip_labels=newNodnames,
  tip_labels_colors=newColors,
  width=1200, height=2000,
  node_labels='support',
  edge_style={
    "stroke": "darkgrey",
    "stroke-width": 3,
  },
);

Here is a part of the tree where every node has a value of zero, I don´t understand why.

Screen Shot 2022-08-31 at 13 25 45

Any suggestion to fix that?

MauriAndresMU1313 avatar Aug 31 '22 18:08 MauriAndresMU1313

Hi @MauriAndresMU1313 ,

This has to do with the unusual formatting of the newick string. It lists the support values as fractions (e.g., '99/100') instead the more common representation as a digit or decimal (e.g., 99 or 0.99). The toytree.tree parsing function recognizes that these values are not numeric and thus interprets and stores them as internal node names rather than supports.

Do you mind if I ask what software was used to generate the newick string?

eaton-lab avatar Jan 21 '23 20:01 eaton-lab

Here is a hack that should work for now. The default newick parsing function will store the support values as 'name's, and then you can extract the info from names and store it as 'support' attributes on nodes using a custom function.

image

eaton-lab avatar Jan 21 '23 20:01 eaton-lab