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)