一个不成熟的想法
微生物系统发育树长啥样的呢?
这样
或者是这样
亦或者是这样。哈哈,反正这个不能用好看来形容了。
那那那自己肠道微生物又会是什么样的呢?阿这!
几段不成熟的代码
绘图步骤分为:
- 将树文件转成字典
- 根据字典绘制树
- 根据个人菌群列表过滤字典
- 绘制个人的小树
将树文件转换成字典
直接借鉴大佬代码,根据metaphlan3提供的树文件,稍微修改了一下。
def parse(newick):
tokens = re.findall(r"([^:;,()\s]*)(?:\s*:\s*([\d.|\d+\.\d+E\-\d+]+)\s*)?([,);])|(\S)", newick)
def recurse(nextid = 0, parentid = -1): # one node
thisid = nextid;
children = []
name, length, delim, ch = tokens.pop(0)
if ch == "(":
while ch in "(,":
node, ch, nextid = recurse(nextid+1, thisid)
children.append(node)
name, length, delim, ch = tokens.pop(0)
return {
"id": thisid, "name": name, "length": float(length) if length else None,
"parentid": parentid, "children": children}, delim, nextid
return recurse()[0]
根据字典绘制树
同样是参考大佬代码,根据自己的需求,稍作修改。大佬画得很漂亮,自己的就很小白了,哈哈。
rom turtle import *
from random import *
from math import *
import re
def tree(t_dict, k