Find if a structure is 2D or 3D

I’m working with MOFs mainly so I will restrict my question to them. Is there a way to separate 2D MOFs from 3D ones? I can’t find any such identifier on Materials Project. Is there a way to achieve it using say a cif file?

Hi @R_Walser,

Thanks for your question. Unfortunately, there is not currently a simple way to separate 3D MOFs from 1D/2D MOFs (which are usually better described as coordination polymers). There is probably an algorithm out there to determine this (e.g. based on the crystal graph), but I’m not aware of it. If you know of a robust algorithm, please let me know and I can implement it as something queryable.

If you wish to only focus on 3D MOFs, you might try filtering out the non-porous structures (e.g. small pore-limiting diameter) because most of those are 1D/2D. Additionally, you could try filtering by the source database, as some have more 3D structures than others. For instance, most of the 1D/2D structures are from the CSD MOF Subset.

I should mention that there are some dimensionality detection tools in Pymatgen (see here), but I am not confident that they will work as-intended for MOFs. Might be worth a shot though!

1 Like