Figure and data processing for Topical Review: Extracting Molecular Frame Photoionization Dynamics from Experimental Data - MFPADs only

18/07/22

This document illustrates the use of the Photoelectron Metrology Toolkit (PEMtk) for analysis of matrix element fitting results, plus some additional plotting routines. Results and figures are as reported in the manuscript Topical Review: Extracting Molecular Frame Photoionization Dynamics from Experimental Data [1], available via Authorea.

Full data and code (current version) available via Figshare, DOI: 10.6084/m9.figshare.20293782.

For general info, see the PEMtk analysis routines docs.

Plotting backend via Plotly Surface plots, see https://plot.ly/python/3d-subplots

[1]:
saveFigs = False

Read data

[2]:
# dataSet = "matE_fittingAgg_Ref_230422_c.ncf"
dataSet = 'matE_fittingAgg_Ref_240422_DS_c.ncf'

import xarray as xr
dataIn = xr.open_dataset(dataSet, engine="h5netcdf")  # OK!
dataIn
[2]:
<xarray.Dataset>
Dimensions:  (Cont: 2, Eke: 51, Targ: 1, Total: 2, Type: 2, mu: 3, l: 6, m: 3,
              it: 1)
Coordinates:
  * Cont     (Cont) object 'PU' 'SU'
    Ehv      (Eke) float64 17.4 18.4 19.4 20.4 21.4 ... 63.4 64.4 65.4 66.4 67.4
  * Eke      (Eke) float64 0.1 1.1 2.1 3.1 4.1 5.1 ... 46.1 47.1 48.1 49.1 50.1
    SF       (Eke) complex128 (2.1560627+3.741674j) ... (4.4127053+1.8281945j)
  * Targ     (Targ) object 'SG'
  * Total    (Total) object 'PU' 'SU'
  * Type     (Type) object 'L' 'V'
  * it       (it) int64 1
  * l        (l) int64 1 3 5 7 9 11
  * m        (m) int64 -1 0 1
  * mu       (mu) int64 -1 0 1
Data variables:
    comp     (Eke, mu, l, m, Cont, Targ, Total) complex128 (nan+nanj) ... (na...
    compC    (Eke, mu, l, m, Cont, Targ, Total) complex128 (nan+nanj) ... (na...
    orb5     (Eke, mu, it, Type, l, m, Cont, Targ, Total) complex128 (nan+nan...
[3]:
# Restack for MFPAD plotter
from epsproc.util.listFuncs import dataTypesList

refDims = dataTypesList()['matE']['def']
dataStacked = dataIn.stack(refDims(sType='sDict'))
dataStacked
       # for k,v in dataSet.items():
       #      label = f'{key}_{k}'
       #      data.data[label] = {dType:v}
OMP: Info #273: omp_set_nested routine deprecated, please use omp_set_max_active_levels instead.
* sparse not found, sparse matrix forms not available.
* natsort not found, some sorting functions not available.