Package: reixs
CLS REIXS AnalysisThis is a library to analyse, plot, and export REIXS beamline data. The package is meant to provide a framework to load data into jupyter and enable data interaction.Furtherbeamline informationis available on the Website of the Canadian Light Source.InstallationInstall the package from PyPi with the pip package manager. This is the recommended way to obtain a copy for your local machine and will install all required dependencies.$ pip install reixsYou will also needJupyter Notebooktogether with python 3 on your local machine.In case that certain widgets aren't rendered properly, make sure to enable the appropriate jupyter extensions$ jupyter nbextension enable --py widgetsnbextensionRunningLaunch your local jupyter installation with$ jupyter notebookExamplesLoad the required moduleBefore you start, you will need to import the required reixs package, enable bokeh plotting, and set the base directory.## Define base directory
basedir = "/home/braun/ownCloud/Beamtime/example_data/"

## Setup necessarry inputs
from reixs.LoadData import *
from bokeh.io import show, output_notebook
output_notebook(hide_banner=True)1d plotsGeneral Loader1dsca = Load1d()
sca.load(basedir,'FileName.dat','x_stream','y_stream',1,2,3,4)  # Loads multiple scans individually
sca.add(basedir,'FileName.dat','x_stream','y_stream',1,2,3,4)  # Adds multiple scans
sca.subtract(basedir,'FileName.dat','x_stream','y_stream',1,2,3,4,norm=False) # Subtracts scans from the first scan
sca.xlim(lower_lim,upper_lim) # Sets the horizontal axis plot region
sca.ylim(lower_lim,upper_lim) # Sets the vertical axis plot region
sca.plot_legend("pos string as per bokeh") # Determines a specific legend position
sca.vline(position) # Draws a vertical line
sca.hline(position) # Draws a horizontal line
sca.label(pos_x,pos_y,'Text') # Adds a label to the plot
sca.plot() # Plots the defined object
sca.exporter() # Exports the data by calling an exporter widgetCreate "Loader" objectSpecify the variable for the base directory (basedir)Enter the file name of the scan to analyse ('FileName.dat')Options forx_streamquantities include:All quantities in the header fileMono Energyfor the excitation energyMCP Energy(uncalibrated)SDD Energy(uncalibrated)XEOL Energy(uncalibrated, actually the wavelength scale)Points(by index)Options fory_streamquantities include:All quantities in the header fileTEY(Total Electron Yield: sample normalized by mesh)TFY(Total Fluorescence Yield, normalized by mesh)PFYandiPFY(Partial Fluorescence Yield and Inverse Partial Fluorescence Yield, both normalized by mesh)
Specify ROI with brackets, either by XAS edge or energy:
e.g.PFY[O]for PFY at the O K edge
e.g.PFY[490:560]for PFY from 490eV to 560eVspecPFY(spectrometer PFY, normalized by mesh)
specify energy range
e.g. specPFY[500:520]XESandrXES(X-Ray emission and resonant x-ray emission at selected energies from the spectrometer MCP data)
e.g. rXES[560:565]XRFandrXRF(X-Ray fluorescence and resonant x-ray fluorescence at selected energies from the SDD data)
e.g. rXRF[550:570]XEOLandrXEOL(XEOL data from the optical spectrometer)POYandTOY(Partial optical yield and total optical yield, normalized by mesh)
e.g. POY[300:750]EYorSample(Sample current, not normalized by mesh)Mesh(Mesh current)ET(Energy Transfer data, integrates over energy loss ROI and probes constant final states, sometimes referred to as CET scan)
specify energy transfer region
e.g. ET[-2:5] to probe mostly scattering close to the elastic linerLOSS(Resonantly excited emission data on energy loss scale, integrates over incident energy ROIS and probes constant intermediate states, sometimes referred to as CIE scan)
specify incident energy region
e.g. rLOSS[620:640]List all scans to analyse (comma-separated)Set optional flags. Options include:norm(Normalizes to [0,1])xcoffset(Defines a constant shift in the x-stream)xoffset(Takes a list of tuples and defines a polynomial fit of the x-stream)ycoffset(Defines a constant shift in the y-stream)yoffset(Takes a list of tuples and defines a polynomial fit of the y-stream)
e.g. offset = [(100,102),(110,112),(120,121)]background(Subtracts a XEOL background from XEOL scans)
Set to True, uses the getXEOLback function with the background data stored (only supported with HDF5)
Specify scan number, subtracts the XEOL scan taken at this particular scanenergyloss(Transfers the resultant MCP scale to energy loss
Set to True, then takes mean of mono energy array
Specify float with the incident photon energygrid_x(Takes a list with three arguments to apply 1d interpolation gridding)
e.g. grid_x = [Start Energy, Stop Energy, Delta]savgol(Takes a list with two or three arguments to apply data smoothing and derivatives)
e.g. savgol = [Window length, Polynomial order, deriavtive] as specified in the scipy Savitzky-Golay filterbinsize(int, allows to perform data binning to improve Signal-to-Noise)legend_items(dict={scan_number:"name"}, overwrites generic legend names; works for theloadmethod)legend_item(str, overwrites generic legend name in theadd/subtractmethod)Absorption Scansxas = XASLoader()
xas.load(basedir,'Plate2a.dat','TEY',1,4,6)
xas.load(basedir,'Plate2a.dat','PFY[O]',1,4)
xas.add(basedir,'Plate2a.dat','PFY[500:520]',1,4)
xas.subtract(basedir,'Plate2a.dat','specPFY[500:520]',1,4,6)
xas.plot()
xas.exporter()Emission Scans (MCP)xes = XESLoader()
# Options: XES, rXES
xes.load(basedir,'Plate2a.dat','XES',3,xoffset=[(515,520),(520,525),(530,535)])
xes.load(basedir,'Plate2a.dat','rXES[520:560]',4)
xes.add(basedir,'Plate2a.dat','XES',1,4)
xes.subtract(basedir,'Plate2a.dat','XES',1,4)
xes.plot()
xes.exporter()XRF Scans (SDD)xrf = XRFLoader()
# Options XRF,rXRF
xrf.load(basedir,'Plate2a.dat','XRF',3)
xrf.load(basedir,'Plate2a.dat','rXRF[520:560]',4)
xrf.add(basedir,'Plate2a.dat','XRF',1,4,)
xrf.subtract(basedir,'Plate2a.dat','XRF',1,4)
xrf.plot()
xrf.exporter()XEOL Scans (Optical Spectrometer)xeol = XEOLLoader()
#Options: XEOL, rXEOL
xeol.load(basedir,'RIXS_ES_QA.dat','XEOL',1,2,3,4,background=3)
xeol.load(basedir,'RIXS_ES_QA.dat','XEOL',1,2,3,4,background=True)
xeol.plot()2d ImagesGeneral loader for MCA detector dataNote: Can only load one scan at a time!load2d = Load2d()
load2d.load(basedir,'Filename.dat','x_stream','y_stream','detector',1)
load2d.plot()
load2d.exporter()Create "Loader" objectSpecify the variable for the base directory (basedir)Enter the file name of the scan to analyse ('FileName.dat')Options forx_streamquantities include:All quantities in the header fileMono Energyfor the excitation energyOptions fory_streamquantities include:SDD Energy(Energy scale of the SDD detector)MCP Energy(Energy scale of the MCP detector)XEOL Energy(Wavelength scale of the XEOL optical spectrometer)Options fordetectorquantities include:SDD(SDD detector MCA)MCP(MCP detector MCA)XEOL(XEOL optical spectrometer MCA)List all scans to analyse (comma-separated)Set optional flags. Options include:norm(Normalizes to [0,1])xcoffset(Defines a constant shift in the x-stream)xoffset(Takes a list of tuples and defines a polynomial fit of the x-stream)ycoffset(Defines a constant shift in the y-stream)yoffset(Takes a list of tuples and defines a polynomial fit of the y-stream)
e.g. offset = [(100,102),(110,112),(120,121)]background(Subtracts a XEOL background from XEOL scans)
Set to True, uses the getXEOLback function with the background data stored (only supported with HDF5)
Specify scan number, subtracts the XEOL scan taken at this particular scanenergyloss(Transfers the excitation-emission map to energy loss scalegrid_x(Takes a list with three arguments to apply 1d interpolation gridding)
e.g. grid_x = [Start Energy, Stop Energy, Delta]EEMs (normalized by mesh current, special version of the general 2d image loader)Note: Can only load one scan at a time!eems = EEMsLoader()
eems.load(basedir,'Plate2a.dat','SDD',1)
eems.load(basedir,'Plate2a.dat','MCP',1)
eems.load(basedir,'RIXS_ES_QA.dat','XEOL',2,background=3)
eems.plot()
eems.exporter()Mesh Scans (Plots a 2d histogram)mesh = LoadMesh()
mesh.load(basedir,'Filename.txt','x_stream','y_stream','z_stream',24)
mesh.plot()
mesh.exporter()Create "Loader" objectSpecify the variable for the base directory (basedir)Enter the file name of the scan to analyse ('FileName.dat')Options forx_streamquantities include:All quantities in the header fileMono Energyfor the excitation energySDD Energy(Energy scale of the SDD detector)MCP Energy(Energy scale of the MCP detector)XEOL Energy(Wavelength scale of the XEOL optical spectrometer)Options fory_streamquantities include:All quantities in the header fileMono Energyfor the excitation energySDD Energy(Energy scale of the SDD detector)MCP Energy(Energy scale of the MCP detector)XEOL Energy(Wavelength scale of the XEOL optical spectrometer)Options forz_streamquantities include:All quantities in the header fileAll special quantities as specified for the Load1d() functionList all scans to analyse (comma-separated)Set optional flags. Options include:norm(Normalizes to [0,1])xcoffset(Defines a constant shift in the x-stream)xoffset(Takes a list of tuples and defines a polynomial fit of the x-stream)ycoffset(Defines a constant shift in the y-stream)yoffset(Takes a list of tuples and defines a polynomial fit of the y-stream)
e.g. offset = [(100,102),(110,112),(120,121)]background(Subtracts a XEOL background from XEOL scans)
Set to True, uses the getXEOLback function with the background data stored (only supported with HDF5)
Specify scan number, subtracts the XEOL scan taken at this particular scan