How to get pore coordinates from pymatgen or other python code?

Hi everyone,

I am working on metal organic framework (MOF). I want to get the Cartesian coordinates of pore in a MOF unit cell from pymatgen. Does any one know to how to do it? I am aware the code like PoreBlazer or Zeo++ may work, however I a python code that can do it? If pymatgen can’t do it, does any other python code can get the Cartesian coordinates of pore in MOF?

Hi @fanliqmul. Happy to help.

Pymatgen has an interface to Zeo++. Please see the functions listed here: module — pymatgen 2022.11.1 documentation. In essence, Pymatgen calls Zeo++ and parses key outputs automatically for you. Please let me know if you’d like assistance with this.

With regards to the coordinates in particular, it depends what you’re looking for. Perhaps the voronoi nodes (get_voronoi_nodes) is what you’re after?

Hi @arosen. Thanks for your helpful reply.
The module seems to be a tool I am looking for. I had a look at the link you posted and have questions about how to install it. I would like to install it under linux as the Zeo++ installation seems to be easier. Could you please outline the install procedures under linux? My final goal is to call this library in a python code I am programming in Pycham under Windows. It would be grateful if you know how to install module compatible with Pycham under Windows.


For installing zeo++ you can use conda: conda install -c conda-forge zeopp-lsmo. Or compile it yourself: GitHub - lsmo-epfl/zeopp-lsmo: zeo++ fork of the LSMO.

(Technically, this is a fork and you can obtain the original, official zeo++ code here Zeo++ - High throughput analysis of crystalline porous materials).

Note, however, that I did not test how this installation route interfaces with pymatgen. Pymatgen itself has some installation instructions.

For getting Cartesian coordinates of the pore there is no direct Python interface (to my knowledge) as it is not well defined (e.g., there might be more than one pore) via zeo++. The most convenient route for you might actually be via porE.

Thanks for the reply. I will try porE.