对于包含不同分子的文件,我有许多成对的值(成对的键合原子)。如果两对有一个共同的成员,这意味着他们是同一分子的一部分。我试图在python中找到一种有效的方法,根据原子所属的分子对原子进行分组。你知道吗
例如,乙烷和甲烷为:
1,5
和9
是碳,其余是氢
[[1,2],[1,3],[1,4],[1,5],[5,6],[5,7],[5,8],[9,10],[9,11],[9,12],[9,13]]
我想得到一个列表/数组,其中我有:
[[1,2,3,4,5,6,7,8],[9,10,11,12,13]]
我试过好几种方法,但它们对于包含大量原子的文件来说确实是无效的。应该有个聪明的办法,但我找不到。有什么想法吗?你知道吗
谢谢你, 琼
如果我理解正确的话,你要做的是识别图中的连接成分,其中每个节点是一个原子,每个边是一个键(因此,一个连接成分是一个分子)。在^{} 中有一个有效的实现。你知道吗
首先让我们把这个图设为一个稀疏矩阵:
此时,只需调用^{} ,但默认情况下输出的格式略有不同:
让我们稍微修改一下:
还要注意,在
range
中,我是从1开始的,因为Python标准从0开始计数,而这将作为一个孤立的节点出现,因为您是从1开始的。如果原子的编号是非连续的,则需要跳过孤立节点,例如:另一种方法是:
相关问题 更多 >
编程相关推荐