ePSproc wavefunction plotting tests & demo
20/07/20
This notebook demos (continuum photoelectron) wavefunction plotting from ePS gridded file outputs. The plotting is handled with pyVista, with itkwidgets for interactive plotting. Both tools are built on the ITK/VTK toolchain.
Aims:
Implement wfPlot.py module.
Test & demo.
See also:
Early dev notebook, http://localhost:8888/notebooks/github/ePSproc/epsproc/tests/plottingDev/pyVista_tests_070320_basics_working_150320.ipynb
Extended test notebook: http://localhost:8888/notebooks/github/ePSproc/epsproc/tests/plottingDev/ePSproc_wfPlot_tests_150720.ipynb
Orbital plotting, https://epsproc.readthedocs.io/en/dev/methods/ePSproc_orbPlot_tests_130520.html
Setup
[1]:
# Standard libs
import sys
import os
from pathlib import Path
import numpy as np
import xarray as xr
from datetime import datetime as dt
timeString = dt.now()
# For reporting
import scooby
# scooby.Report(additional=['holoviews', 'hvplot', 'xarray', 'matplotlib', 'bokeh'])
# TODO: set up function for this, see https://github.com/banesullivan/scooby
[2]:
# Installed package version
# import epsproc as ep
# ePSproc test codebase (local)
if sys.platform == "win32":
modPath = r'D:\code\github\ePSproc' # Win test machine
else:
modPath = r'/home/femtolab/github/ePSproc/' # Linux test machine
sys.path.append(modPath)
import epsproc as ep
* plotly not found, plotly plots not available.
* pyevtk not found, VTK export not available.
wfPlotter class
This provides a basic interface to pyVista plotting methods. An object is created with the wavefunction data (from file(s)) and set as a pyVista object, .vol
, with a set of data arrays.
For testing, there’s a single demo data file in the ePSproc repo, DABCOSA2PPCA2PP_10.5eV_Orb.dat
, which is an example wavefunction for DABCO scattering at 10.5eV, \(A_{2}"\) continuum symmetry.
For more general use, an interface to ePSdata and Zenodo is in development.
[3]:
# Load class and data
from epsproc.vol.wfPlot import wfPlotter
# Load data from modPath\data
dataPath = os.path.join(modPath, 'data', 'wavefn')
wfClass = wfPlotter(fileBase = dataPath)