gpt4 book ai didi

python - 使用 python 将 newick 转换为 graphml

转载 作者:行者123 更新时间:2023-12-01 01:26:35 27 4
gpt4 key购买 nike

我想将 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_networkx(Tree) 修剪。如何避免这种情况?

示例:将“dog”替换为“test_tring_that_create_some_problem_later_on”

image3

最佳答案

看来您已经在这方面取得了很大进展。我只能对你的方法提出一些替代/扩展......

  1. 不幸的是,我找不到可以读取这种格式的 Cytoscape 应用程序。我尝试搜索 PHYLIP、NEWICK 和 PHYLO。你可能会更幸运:

  2. 有一个旧的 Cytoscape 2.x 插件可以读取此格式,但要运行此插件,您需要安装 Cytoscape 2.8.3,导入网络,然后导出为 xGMML(或另存为 CYS)并然后尝试在 Cytoscape 3.7 中打开,以便迁移回生活代码之地。话又说回来,如果 2.8.3 满足了您对这种特殊情况的需要,那么也许您不需要迁移:

  3. 最好的方法是程序化,您已经探索过。找到一个将 NEWICK 转换为 iGraph 或 GraphML 的 R 或 Python 包是一个可靠的策略。请注意,这些语言也有更新且灵活的 Cytoscape 库,因此您可以在脚本环境中完成所有标签清理、布局、数据可视化、分析、导出等操作:

关于python - 使用 python 将 newick 转换为 graphml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53280197/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com