社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

使用python将newick转换为graphml

Gildas • 5 年前 • 505 次点击  

我想把一棵树从newick转换成graphml这样的格式,我可以用cytoscape打开它。

所以,我有一个文件“small.newick”,其中包含:

((raccoon:1,bear:6):0.8,((sea_lion:11.9, seal:12):7,((monkey:100,cat:47):20, weasel:18):2):3,dog:25);

到目前为止,我是这样做的(python 3.6.5 anaconda):

from Bio import Phylo
import networkx
Tree = Phylo.read("small.newick", 'newick')
G = Phylo.to_networkx(Tree)
networkx.write_graphml(G, 'small.graphml')

image1

clade有一个问题,我可以使用以下代码修复:

from Bio import Phylo
import networkx

def clade_names_fix(tree):
    for idx, clade in enumerate(tree.find_clades()):
        if not clade.name:
            clade.name=str(idx)

Tree = Phylo.read("small.newick", 'newick')
clade_names_fix(Tree)
G = Phylo.to_networkx(Tree)
networkx.write_graphml(G, 'small.graphml')

给我一些看起来很好的东西:

image2

我的问题是:

  • 这是个好办法吗?在我看来,函数不处理内部节点名似乎很奇怪

  • 如果将一个节点名替换为足够长的字符串,则将使用以下命令对其进行修剪 Phylo.to_网络(树) . 如何避免?

示例:用“test-tring”替换“dog”,后者会产生一些问题

image3

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/48911
 
505 次点击  
文章 [ 2 ]  |  最新文章 5 年前