树育发统系物生微归递递归微生物系统发育树

这篇博客分享了作者尝试将微生物系统发育树转化为字典并根据个人菌群列表过滤,最终绘制个人专属小树的过程。通过借鉴和修改代码,实现了从树文件到字典的转换,再到树的绘制,提供了不成熟的代码示例和建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个不成熟的想法

微生物系统发育树长啥样的呢?
这样
在这里插入图片描述
或者是这样
在这里插入图片描述
亦或者是这样。哈哈,反正这个不能用好看来形容了。
在这里插入图片描述
那那那自己肠道微生物又会是什么样的呢?阿这!
在这里插入图片描述

几段不成熟的代码

绘图步骤分为:

  1. 将树文件转成字典
  2. 根据字典绘制树
  3. 根据个人菌群列表过滤字典
  4. 绘制个人的小树

将树文件转换成字典

直接借鉴大佬代码,根据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 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值