社区所有版块导航
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 • 4 年前 • 363 次点击  

我想把一棵树从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
 
363 次点击  
文章 [ 2 ]  |  最新文章 4 年前
Gildas
Reply   •   1 楼
Gildas    5 年前

经过研究,我找到了一个可行的解决方案。 我决定 在这里为您提供链接 ,亲爱的读者: going to github

AlexanderPico
Reply   •   2 楼
AlexanderPico    5 年前

看来你已经做了很多了。我只能对你的方法提出一些选择/扩展。。。

  1. 不幸的是,我找不到一个可以读取此格式的Cytoscape应用程序我试着寻找菲利普,纽尼克和菲洛。你可能会有更多的运气:

  2. 有一个旧的cytoscape 2.x插件可以读取此格式,但是要运行此插件,您需要安装cytoscape2.8.3,导入网络,然后导出为xgmml(或另存为cys),然后尝试在cytoscape 3.7中打开,以便迁移回活代码之乡。同样,如果2.8.3满足了这个特殊情况的需要,那么可能不需要迁移:

  3. 最好的方法是编程式的,您已经探索过了找到将NEWICK转换为iGraph或GraphML的R或Python包是一个可靠的策略请注意,这些语言中也有更新的和平滑的cytoscape libs,因此您可以在脚本环境中执行所有标签清理、布局、数据可视化、分析、导出等操作: