Source code for qtdraw.parser.read_material

"""
Simple parser for CIF, XSF, and VESTA.

This module contains the parser.
"""

import numpy as np
from qtdraw.parser.util import parse_material, draw_site_bond
from qtdraw.parser.xsf import extract_data_xsf


# ==================================================
[docs] def read_draw(filename, widget): """ Read and draw CIF, XSF, VESTA file. Args: filename (str): filename. widget (PyVistaWidget): PyVista widget. Returns: - (dict) -- all data. """ all_data, site_info, bond_info, symmetrized = parse_material(filename) widget.write_info("* " + str(symmetrized)) name = all_data["status"]["model"] draw_site_bond(widget, name, site_info, bond_info) if filename.endswith(".xsf"): # determine color_range and value. data = np.array(extract_data_xsf(filename)["data"]) d_max = float(data.max()) d_min = float(data.min()) d_max = 1.1 * d_max if d_max > 0.0 else 0.9 * d_max d_min = 0.9 * d_min if d_min > 0.0 else 1.1 * d_min val = 0.5 * (d_max + d_min) widget.add_isosurface(data=filename, color="Pastel1", surface="phase", color_range=[d_min, d_max], value=[val]) return all_data