1

我实际上有一个 cif 格式的分子。我不认为格式真的很重要,但提供给有兴趣的人。这个文件里面有很多数据。最重要的是(因为文件的这一部分实际上将分子描述为图形)是这一部分:

017 N1  C2   SING N N 1  
017 N1  H11  SING N N 2  
017 N1  H12  SING N N 3  
017 C2  C3   DOUB Y N 4  
017 C2  C7   SING Y N 5  
017 C3  C4   SING Y N 6

这不是整个文件,它只是一个示例。该分子可能包含许多环状结构。我可以通过第 6 列中的 Y 标志来定义芳香的。但也有其他的周期,可以是安静的不同:示例1或像那样示例2或那样:示例3。甚至这样的:例子4

我需要以这样一种方式提取所有循环,如果两个循环共享键,就像在第一个示例中一样,它们被视为一个循环。Tarjan 的算法在这里不起作用,因为它只运行每个节点一次。那么我该怎么做呢?请提供尽可能详细的信息。我对诸如 OpenBabel 之类的库不是很感兴趣,因为我打算用 Swift 编写东西并使用 cif 文件中的图形描述。

4

0 回答 0