首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用python3收集所有链

如何使用python3收集所有链
EN

Stack Overflow用户
提问于 2018-10-11 15:25:35
回答 1查看 631关注 0票数 1

背景:

我在做聚合物模拟。我正在尝试使用networkx来计算系统中的链数。系统内的分子等于节点,键等于节点之间的连接。

我尝试过的:

我用networkx.chain_decompostion来计算链的数目。

代码语言:javascript
复制
import networkx as nx
info = nx.chain_decomposition(G)

问题:

我发现它只找到闭环的链,比如A1-A2-A3-A1

然而,仍然有许多链是不关闭的,如A1-A2-A3

有一个简单的方法来收集这两种类型的链条。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-12 09:24:44

函数chain_decomposition不是您所认为的那样。从医生那里:

具有深度优先搜索树的图的链分解是从树的基本循环集合导出的一组循环或路径。

您可能需要的是函数number_connected_components。详情请参见此链接。这假设每个连通分量都是一个链,即图G中有几个不相交的子图,每个子图对应于一个(非分支)聚合物分子。如果不是这种情况(聚合物是支化的),那么我需要做一些更聪明的事情。例如,您可以计算离开节点之间的所有最短路径(具有单个键的原子)。您可以通过使用list(G.degree) (叶子有1级)检查这些节点的程度来找到叶节点,然后用all_shortest_paths计算所有叶对之间的最短路径。要找到环状分子,你可以像以前一样使用chain_decomposition

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52763751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档