Source code for matador.plugins.voronoi_interface.voronoi_interface

# coding: utf-8
""" This file implements a thin wrapper to the Voronoi code
written by Can Kocer, for use with matador queries and docs.

https://bitbucket.org/can_kocer/ajm_group_voronoi_code

Requires Can's code to be on your PYTHONPATH.
"""

from matador.export import doc2res
from os import remove
from os.path import isfile


[docs]def get_voronoi_substructure(doc): """ Run Can's Voronoi analysis on a matador doc. """ try: from Vornetclass import VoronoiNetwork doc2res(doc, 'Vropple.res', hash_dupe=False, overwrite=True, info=False, sort_atoms=False) vornet = VoronoiNetwork(filename='Vropple.res') vornet.computeSubStrucs() doc['voronoi_substruc'] = [vc.getSubStruc(use_area=False) for vc in vornet.VoronoiCells] if isfile('Vropple.res'): remove('Vropple.res') return doc['voronoi_substruc'] except: if isfile('Vropple.res'): remove('Vropple.res') return False
[docs]def get_voronoi_points(doc, debug=False): """ Run Can's Voronoi analysis on a matador doc and return nodes, face midpoints and edge midpoints. """ try: from Vornetclass import VoronoiNetwork doc2res(doc, 'Vropple.res', hash_dupe=False, overwrite=True, info=False, sort_atoms=False) vornet = VoronoiNetwork(filename='Vropple.res') if debug: print(vornet.struc) vornet.computeVorNet() doc['voronoi_nodes'] = vornet.getNodeFracPos() doc['voronoi_face_midpoints'] = vornet.getFracFaceMidpoints() doc['voronoi_edge_midpoints'] = vornet.getFracEdgeMidpoints() if isfile('Vropple.res'): remove('Vropple.res') return doc['voronoi_nodes'] except: if isfile('Vropple.res'): remove('Vropple.res') return False
if __name__ == '__main__': from matador.query import DBQuery from matador.hull import QueryConvexHull # test with LiAs query = DBQuery(composition=['LiAs'], subcmd='hull') hull = QueryConvexHull(query, no_plot=True, hull_cutoff=0) hull_cursor = hull.hull_cursor most_lithiated = hull_cursor[-2] most_lithiated_substruc = get_voronoi_substructure(most_lithiated) other_substruc = [] for doc in hull_cursor: other_substruc.append(get_voronoi_substructure(doc)) print(other_substruc) print(most_lithiated_substruc)