Ovality gives a measure of how the shape of a molecule approaches a sphere (at one extreme) or a cigar shape (at the other). Ovality is described by a ratio of volume to area (see https://en.wikipedia.org/wiki/Ovality). So, it is basically "just" about intersecting Van-der-Waals spheres. Although this sounds simple, it can get pretty complicated.
There is a nice paper from M. Petitjean explaining how to get correct values of Van-der-Waals volumes and surfaces (see https://hal.archives-ouvertes.fr/hal-01955983). According to this paper, inacceptable approximations have been used in the past. I can follow this paper to a certain extent, but when it comes to implementing this in Python it would exceed my mathematical and programming knowledge.
Therefore my question:
Is there maybe already a Python module which can calculate Ovality from a given molecular structure? Input would be: atom types, atom positions, and Van-der-Waals radii of the atoms.
I'm already using RDKit and maybe it can do it, and I just haven't found this feature. Thank you for any hints.
I guess there was need for clarification:
The ovality (O), a parameter used as shape descriptor, is defined as the ratio between actual surface and minimum surface for the same volume (the surface of a sphere with a volume that equals the actual volume) (see https://www.sciencedirect.com/topics/chemistry/molecular-size)
For this, the van-der-Waals surface and the van-der-Waals volume of the molecule need to be calculated, basically by intersecting spheres with different sizes at different positions.