TopologyAnalyserPlugin.getRings() currently returns the atom indices of only the SSSR rings in a compound. I agree that this setting should be default, but it would be useful to have an option to return all rings, including those which are supersets of others. For example, decalin would return not two, but three rings.
That kind of ring calculation can take long time in case of some special ring systems. For what purpose would it be useful?
I've written a method that rotates the groups around a bond by a certain dihedral angle. It works by removing the rotatable bond, finding the two fragments, and rotating one with respect to the other. If the bond is part of one or more rings, disconnecting the rotatable bond is insufficient for generating two fragments; one needs to disconnect one additional bond in each ring of which the rotatable bond is part. With the current getRings() method, each time I disconnect a ring bond, if I still don't find two fragments in the molecule, I need to run getRings() again. If getRings() returned all the rings, not just the SSSR rings, then I would only have ot run getRings() once.
An all ring calculation takes much much longer than calling the current SSSR based method multiple times.
We will publish an existing method of the Geometry class (setDihedral) in its plugin that will not allow rotating ring bonds. Will that be ok for you?
I already have a setDihedral() method that will rotate both acyclic and ring bonds. I was just trying to make the code more efficient by not calling the TopologyAnalyzer plugin repeatedly. But seeing as you say that the all-rings method would be much slower than calling the SSSR method repeatedly, I'll just leave well enough alone.
We will publish these functions anyway, but in that case not with high priority.