Data analysis

pesto library (Python / Jupyter)

Author: Craig Polley (Bloch)

Status: Actively developed

Description: A library of python scripts for planning, visualizing and analyzing data from experiments at Bloch. Intended to be used from within a Jupyter notebook environment. See the documentation at https://pesto.readthedocs.io/, and get the latest version at https://gitlab.com/flashingLEDs/pesto.

Igor Pro

Igor 6.37 is installed on the measurement computer. The scripts discussed below are already installed, and you are welcome to install new ones. The discussion here is more intended towards adding analysis scripts to Igor on your own computer.

When you start an instance of Igor, it looks for procedure files in the user Documents folder.

On Windows, this might be C:\Users\<user>\Documents\WaveMetrics\Igor Pro 6 User Files\Igor Procedures, while in macOS it might be /Users/<user>/Documents/WaveMetrics/Igor Pro 6 User Files/Igor Procedures

Any procedures files (*.ipf) found in these folders will be automatically compiled and included every time you start Igor. So unless noted, installation of the following scripts simply means putting a copy in this folder.

Igor macro: DA30 chunkloader

Author: Scienta

Status: Frozen since 2015-ish

Description: Will load the binary file from an unzipped DA30 deflector scan, leaving you with a 3D matrix to work with in Igor. This is probably the least pleasant way to work with DA30 data, but we list it here anyway for completeness.

Installation notes: Put these 5 files into the procedures folder:

chunkloader.ipf DA_indexBoundaryCheck.ipf extractPlane.ipf load3Doverview.ipf loadDimAndScales.ipf

Documentation: Official manual

To run it: Once installed, it creates a new entry in the top bar of Igor called ‘DA30 loader’. Run ‘chunkLoaderControl’ from this menu.

Igor macro: ARPES Analysis

Author: Jacek Osiecki (Bloch); DA30 matrix handling added by Mats Leandersson (Bloch)

Status: Frozen since 2018-ish

Description: Allows visualization of 3D ARPES datasets (polar or deflector scans), e.g. taking constant energy or angle slices. Includes k-warping. To deal with DA30 deflector scans, chunkLoader must first be used to import the data into Igor as a matrix. Requires data to be saved in .zip or .txt format

Installation notes:

  1. Put these 5 files into the procedures folder:

ARPES_Analysis_3_272.ipf SPECS_XY.ipf SPECS_SH5.ipf SPECS_SP2.ipf

  1. Identify where the file ‘HDF5.xop’ in the main Igor installation directory. For Windows, typically C:\Program Files (x86)\WaveMetrics\Igor Pro Folder\More Extensions\File Loaders. Right click on this file in Windows Explorer to make a shortcut, then copy this shortcut into the ‘Igor Extensions’ folder in the User Documents folder, e.g. C:\Users\<user>\Documents\WaveMetrics\Igor Pro 6 User Files\Igor Extensions

  2. Do the same for ‘HDF5-64.xop’, except now the file is found in the ‘Igor Extensions (64-bit)’ folder of the Igor installation and the shortcut should be placed in the ‘Igor Extensions (64-bit)’ folder in User Documents.

  3. Make a shortcut to the file ‘HDF5 Browser.ipf’ found in the Igor installation directory. For Windows, typically C:\Program Files (x86)\WaveMetrics\Igor Pro Folder\WaveMetrics Procedures\File Input Output\. Place this shortcut in the same directory as the the main ARPES_Analysis procedure file, e.g. C:\Users\<user>\Documents\WaveMetrics\Igor Pro 6 User Files\Igor Procedures

To run it: Once installed, will create a new entry called ‘Data Analysis for ARPES’ menu entry under ‘Macros’ in the top bar of Igor.

Loading a DA30 dataset:

  1. Unzip the .zip file, you can put the contents wherever you like.

  2. Use Scienta’s chunkLoader procedure to import the data matrix:
    • Start the chunkLoader control panel

    • Press the ‘Open viewer.ini’ button, and direct it to the viewer.ini file from the zip file you just unzipped.

    • Press ‘Load 3d overview’ to import the matrix

  3. Start the ‘Data Analysis for ARPES’ procedure, which should leave you looking at a ‘Load_and_Set_Panel’

  4. Press the ‘Load DA30’ button in the lower right. It will ask you which folder contains the chunkCube wave - the default should usually be fine unless you’ve moved it, so pressure ‘Continue’. The name doesn’t matter. You may get a Function Execution Error about ‘KillDataFolder’, ignore it.

  5. Now the individual images from the matrix are loaded into the macro. Press the ‘Build 3D’ button at the top of the ‘Load_and_Set_Panel’ window

    • You are asked for the angular separation between frames, which defaults to 0.5 degrees. You will see in the background the ‘Tilt/Emis’ column which should contain the correct spacing according to the metadata.

    • Just press continue on the next prompt (you know Ef and don’t make a 2nd derivative matrix)

    • Enter your best estimate of the photon energy, workfunction (=4.439eV at Bloch) and kinetic energy of the Fermi level. If you don’t know, just accept the default guesses - you can always come back and rebuild the matrix once you’ve figured it these values.

  6. You now have two windows, one showing constant energy cuts and one showing two angle cuts. I will not go into every detail or possibility here, but basic functionality:

    • ‘Nr.’ refers to the energy slice in pixels, higher number means higher Ek. A quick way to get a number of interest is to use Igor’s graph pointers (Graph>Show Info or ctrl+i)

    • Two blue sliders at the very top and on the left hand side of the constant energy cut window will change where the angle slices are being taken

    • All panels have ‘Min/Max’ sliders to adjust the color scale

    • Set an angular offset by placing the crosshairs with the blue sliders and using the ‘Set Axis’ button up the top

    • k-warp by checking the ‘kx ky’ box on the left hand side. This assumes that you have correctly set the photon energy and Fermi level and that you have correctly offset the data in angle space (i.e. (0,0) corresponds to normal emission)

Loading a motor polar scan dataset: This proceeds in a similar way to the description above, except:

  1. The ‘Load_and_Set’ panel can directly load a polar scan .txt file.

  2. In general it does not get the angle values correct, so you will need to adjust this before pressing ‘Build 3D’

    • After loading in the data, press the ‘Set Multiple Columns’ button on the left.

    • Under the ‘Tilt / Emission’ tab, set the starting angle in ‘Offset’ and the step size in ‘Delta’.

    • Aside: The S.E. and S.A. tabs here allows you to energy or angle smooth the data - set a number of frames to average in ‘Offset’

  3. Press ‘Build 3D’ and proceed as for the DA30 scans described above.

Igor macro: ESpectroscopia

Filename: ESPECTROSCOPIA_v3.ipf

Status: Frozen since 2014-ish

Author: Jesús Martínez Blanco

Description: Loads and visualizes 2D ARPES images - useful for simple k-warping, second derivatives, EDC/MDC analysis etc.

Installation notes: Put ESPECTROSCOPIA_v3.ipf into the procedures folder.

To run it: Will create a new entry in the macros menu of Igor called ‘ESPECTROSCOPIA panel’. Manual available here

Igor macro: BLOCHFit

Author: Craig Polley (Bloch)

Status: Frozen since 2018

Description: Fitting functions for peak shapes including Fermi edges and complicated core level spectra; also contains functions for EDC/MDC extraction. For a basic tutorial, see https://gitlab.com/flashingLEDs/blochfit

Installation notes: Put BLOCHFIT.ipf into the procedures folder.

To run it: Will create a new entry in the top bar of Igor called ‘BLOCHFIT’. See https://gitlab.com/flashingLEDs/blochfit for a short tutorial. Example data available here

SES

Finally, don’t forget that SES can load and display saved spectra. Useful and fast, but don’t risk loading a big dataset if you’re also using SES to measure something important.