Skip to main content

A suite of tools for handling surface science related data

Project description

surfsci

A suite of tools for handling surface science related data. This project will contain tools for the following:

  • X-ray photoelectron spectroscopy (XPS)

Future

  • Docmuentation (priority)

X-ray Photonelectron Spectroscopy

Example

An example analyzing a Ge peak fit within CasaXPS.

from surfsci import xps

# Shortcut for the XPS machine at Dalhousie
# xps_mach = 'Dalhousie'
# mach = xps.mach_param[xps_mach]
mach = {
	'coef' : [0.9033, -4.0724, 5.0677, 1.1066],
	'scale'     : 0.01,
	'work_func' : 4.6,
}
hv = xps.photon_energy['Al']

# Pass energy [eV], found from XPS operator
pe = 30

sfwagner_Ge = xps.sf.Ge['3d'].area

data = xps.parser.CasaXPS('Ge_example.csv')

# Labels defined by user in CasaXPS fits
pk_lbl = 'Ge 3d'
be = data.binding_energy(pk_lbl)
area = data.area(pk_lbl)

ke = xps.kinetic_energy(be, hv, mach['work_func'])

t_fn = xps.transmission(ke, pe, mach['coef'], mach['scale'])
t_fn_wagner = 1/ke # Proportional to 1/KE

sf_mach = xps.sf_machine(sfwagner_Ge, t_fn, t_fn_wagner)

pk_corr = xps.peak_correction(area, sf_mach)

# NOTE Use the surfsci.xps.XPSPeak(...) helper for convienence
# analyzed_Ge = xps.XPSPeak(pk_lbl, be, area, sfwagner_Ge, hv, pe, mach)

# NOTE Returns pandas.DataFrame with all parameters calculated.
# The user can also query parameters individually
# df = analyzed_Ge.df()

Matrix Factor corrections

If using multple elements within a matrix (e.g. an alloy), you can utilize the surfsci.xps.matrix_factor function. You require the inelastic mean free path of electron scattering (imfp) of both species in bulk and the density, as well as the imfp of the matrix at the measured kinetic energies of both elements. For example, if you have two corrected peaks: pk_Mn_corr, and pk_Ge_corr. The imfp can be calculated using the TPP-2M equation for inelastic mean free path, found in the following reference:

S. Tanuma, C. J. Powel, D. R. Penn, Surf. Interf. Anal., Vol 21, 165 (1994)

from surfsci import xps
# pk_Mn_corr and pk_Ge_corr calculated as in the example above

# a is the kinetic energy used to determine imfp of Ge in Bulk
imfp_matrix_a = 21.17
imfp_Ge_a = 29.84
rho_Ge_a = 5.32

# b is the kinetic energy used to determine imfp of Mn in Bulk
imfp_matrix_b = 14.17
imfp_Mn_b = 14.87
rho_Mn_b = 7.43

mat_fact = xps.matrix_factor(imfp_Ge_a, imfp_Mn_b,
							 mfp_matrix_a, mfp_matrix_b,
							 rho_Ge_a, rho_Mn_b)
relative_pk_Ge_corr = (pk_Ge_corr/pk_Mn_corr)*mat_fact

# NOTE because Mn is used as the normalizing component we can use its
# corrected peak value directly, all other elements require the matrix
# factor correction
print('Ratios of Mn and Ge in MnGe matrix')
print('Mn : {:0.4e}'.format(pk_Mn_corr))
print('Ge : {:0.4e}'.format(relative_pk_Ge_corr))

sfwagner.{db,py}: Empirically derived set of atomic sensitivity factors for XPS

The data in Appendix 5 is reproduced and provided here for non-profit use with permission of the publisher John Wiley & Sons Ltd.

"Practical Surface Analysis by Auger and X-ray Photoelectron Spectroscopy", D. Briggs and M. P. Seah, Appendix 5, p511-514, Published by J. Wiley and Sons in 1983, ISBN 0-471-26279

Copyright (c) 1983 by John Wiley & Sons Ltd.

The original set of data first appeared in the following resource: C. D. Wagner, L. E. Davis, M. V. Zeller, J. A. Taylor, R. M. Raymond and L. H. Gale, Surf. Interface Anal., 3. 211 (1981)

Any use of this data must include the citations above in any work.

Electron Inelastic Mean Free Path (IMFP)

Electron IMFP can be calculated from using the Tanuma, Powel, Penn modified (TPP-2M) equation derived from equations (3), (4b,c,d,e) and (8) in the following reference:

S. Tanuma, C. J. Powel, D. R. Penn, Surf. Interf. Anal., Vol 21, 165 (1994)

For convienence the IMFP TPP-2M equation is located in surfsci.scatter and can be used as such:

from surfsci import scatter

# Mn example
kinetic_energy = 1000 # Can be calculated from surfsci.xps.kinetic_energy

rho = 7.43         # [g/cc]
Nv = 7             # valence electrons
M = 53.938         # atomic mass
bandgap_energy = 0 # [eV]

# Return SI units [m]
imfp_Mn = scatter.imfp_TPP2M(kinetic_energy, rho, M, Nv,
							 bandgap_energy, 'SI')

The value here can be used in the surfsci.xps.matrix_factor calculations outlined above.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

surfsci-0.1.7.tar.gz (12.4 kB view details)

Uploaded Source

Built Distribution

surfsci-0.1.7-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file surfsci-0.1.7.tar.gz.

File metadata

  • Download URL: surfsci-0.1.7.tar.gz
  • Upload date:
  • Size: 12.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8

File hashes

Hashes for surfsci-0.1.7.tar.gz
Algorithm Hash digest
SHA256 ce1b8ae7cc2cb1a6c932686893747a03dd04be74bd0feabe7f817d39f8329385
MD5 6de4a321a86176fb97c4996201f09281
BLAKE2b-256 22c5569415569e4dcd7455510db22f33e6212a7b67835c9e667a50c0469b7b37

See more details on using hashes here.

File details

Details for the file surfsci-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: surfsci-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 16.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8

File hashes

Hashes for surfsci-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 3ae5f0962cd883c0c617264ffd194c756a89af359df5ce6c90dafe1aa610803d
MD5 5d4fb3fffd81d53d8ec193c8d194085f
BLAKE2b-256 8b96e3844cd7029d87e95eeaba23837849b09bbe9eb18c48c1b6e0027093f253

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page