Polyhedral descriptor

Dear users and experts,

I have been working on using different structural descriptors for training my ML model and I wonder how I could use the polyhedral information as a descriptor in my case.

There have been a few research articles related to using bond lengths, bond angles, degree of trigonality, dihedral angle and continuous symmetry as parameters to measure similarity between two polyhedra but the results cannot be generalised to all polyhedral shapes.
Reference links to papers are:

  1. Idealized polytopal forms. Description of real molecules referenced to idealized polygons or polyhedra in geometric reaction path form
  2. Identification of coordination polyhedra in crystal structures

The possible way to tackle this could be querying all the structural entries in each polyhedral category into dictionaries in order to get labelled and organised data. However, a descriptor ought to show a value pertaining to individual crystalline structure. How do I proceed further? Is there any alternate way to approach the problem?

Python code for querying the structural entries from MPDS corresponding to different polyhedra has been shared for your reference.

import pickle
import httplib2
import json
from mpds_client import MPDSDataRetrieval

req = httplib2.Http()
response, content = req.request("https://mpds.io/polyhedra.json")
assert response.status == 200

client = MPDSDataRetrieval()

polyhedra_types = json.loads(content)
print(polyhedra_types)

polyhedral_info = {}

for polyhedra_type in polyhedra_types:
	entries = []
	for entry in client.get_data(
		{
			"classes" : "binary",
			"aetypes" : polyhedra_type
		},
		fields={'S': [
			'phase_id',
			'entry',
			'chemical_formula',
			'cell_abc',
			'sg_n',
			'basis_noneq',
			'els_noneq'
		]}
	):
		try:
			entries.append({
				'Phase': entry[0],
				'entry': entry[1],
				'chemical_formula': entry[2],
				'cell_abc': entry[3],
				'sg_n': entry[4],
				'basis_noneq': entry[5],
				'els_noneq': entry[6]
			})
		except:
			print("Received Bad Array")

	polyhedral_info[polyhedra_type] = entries
	print("Saved entries of polyhedral type: ", polyhedra_type)
	print(polyhedral_info)

pickle.dump(polyhedral_info, open("polyhedral_info.p", "wb"))
print(polyhedral_info)

Just to put some context into that question: we have an ongoing research at the MPDS aiming better and simpler descriptors, so although there are still no clear answers, we’re developing our understanding.