Understanding weights in analysis.local_env classes voronoiNN and crystallNN

Dear Pymatgen developpers, maintainers and/or users,

Being a new user of pymatgen I am trying to understand how to properly use the analysis.local_env voronoiNN and crystallNN libraries. I understand from the documentation that the nearest-neighbor weight is calculated based on the solid angle of the corresponding facet of the Voronoi polyhedron (modulated with additional “smooth distance cutoffs” and electronegativity differences in the CrystalNN class), but I haven’t been able to find in the source code the mathematical relation between the solid angle and the NN weight in VoronoiNN. Can someone explain this to me and/or help me locate this in the source code ?

Then (and maybe more importantly) I would like to understand how to properly use this weight (as defined in VoronoiNN or in CrystalNN) to characterize the local structural unit formed by a given atom in a crystalline or amorphous system.

Finally there appears to be some overlap between the possibilities of the local_env and chemenv subpackages (I have not yet looked at the latter in detail) and maybe someone can help me understand which subpackage should be considered in priority and for what usage. My goal would be to relate the type of local chemical environment (typically within the first and second coordination sphere) to local experimental probes such as NMR or total diffusion in systems (e.g. oxides, chalcogenides) ranging from crystalline to amorphous.

Thank you very much for your help.
All the best.

Sylvian