Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Open-source simulation package for cw-EPR spectra. EPRsim has been developed in the group of Prof. Dr. Stefan Weber at the University of Freiburg, Freiburg im Breisgau, Germany, during the last couple of years. EPRsim was developed by Stephan Rein. The program uses several concepts described in [1]. EPRsim is open-source and available free of charge.

Find the full documentation at the link below: https://www.radicals.uni-freiburg.de/de/software

Installation

Install EPRsim via pip:

$ pip install eprsim

Run EPRsim

Call it as package when running Python.

>>> import EPRsim.EPRsim as sim

Define parameters and run the simulation by invoking the simulate() function of EPRsim.

>>> Param = sim.Parameters()
>>> B, spc, flag = sim.simulate(Param)

The simulate() functions is discribed in the following:

Parameters

Parametersobject

Object with all simulation parameters.

Returns

fieldnumpy.ndarray

Magnetic field vector

spcnumpy.ndarray

Intesity vector of the cw-EPR signal

flaglist

Flags with warning codes (description pleas find below)

Notes

Main function for the simulation of cw-EPR in different motional regimes (isotropic, fast-motion and solid state) All spectra are simulated as field sweep spectra.

Isotropic/fast-motion For the fast-motion regime/isotropic limit, the program solves the implicit Breit-Rabi formula [1] in a fixed-point iteration. Anisotropic line-broadening effects in the fast-motion regime are calculated via the Kivelson formula [2]. Currently, Euler angles between tensors are ignored by the algorithm! All tensors (only relevant for fast-motion) need to be in their principal axis system and colinear to each other.

Solid-state In the solid-state regime, the program uses a full matrix diagonalization algorithm. Therefore, only spin systems with a Hilbert space dimension of dim(H) < 512 can be calculated. The powder average is partially generated by interpolation of eigenvalues and transition probabilitites (similar to [1]). The interpolation level is automatically set by the program. The solid state algorithm treats arbitrary spin systems as long as the Hilbert space dimension is within the threshold. Spin-polarization can be defined (withing the electronic sublevels) as zero-field populations. The program constructs (sparse) density matrices out of the zero-field eigenvectors, to efficiently calculate the population transformation from zero field to high field. Per default, the program calculates with thermal equilibrium. Nuclear quadrupolar couplings (for I > 0.5) are currently not implemented.

The warning codes are:

0: Everything is alright

1: Solid-state is not possible due to too large matrix dimension.

2: Fast-motion/iso is not possible due to S > 1/2.

The Parameter syntax was kept similar to the one used in EasySpin [1], to make it Optional Parameters (with their defaults):

Parameter

Default

Meaning

mwFreq

9.6

microwave frequency in GHz

A

None

Hyperfine couplings in MHz

abund_threshold

0.0001

Threshold for isotope mixtures

D

None

Zero-field splitting in MHz

g

2.0023193

g-tensor

Harmonic

1

Harmonic of the spectrum

J

None

Exchange coupling

tcorr

None

Rotational correlation time in ns

logtcorr

None

Decadic logarithm of tcorr

lw

[0.1, 0.1]

Line-widths (Gaussian, Lorentzian)

ModAmp

0

Modulation amplitude

motion

‘solid’

Motional regime

mwPhase

0

Microwave phase offset

n

1

Number of equivalent nuclei

nKnots

12

Initial number of theta values

Nucs

None

Isotope specification

Points

1024

Number of points

Range

[330, 360]

Magentic field range in mT

S

0.5

Electron spin quantum number

SNR

None

Signal-to-noise ratio

verbosity

True

Print output information

weight

1

Weighting (for multiple species)

gFrame

None

Euler angles for the g tensor

AFrame

None

Euler angles for the A tensors

DFrame

None

Euler angles for the D tensor

Temperature

300

Experimental temperature

Population

None

Zero-field populations

LevelSelect

5e-5

Threshold for level selection

Examples

Simple example for the simulation of an isotropic nitroxide spectrum.

>>> import EPRsim.EPRsim as sim
>>> P = sim.Parameters()
>>> P.Range = [335 ,350]
>>> P.mwFreq = 9.6
>>> P.g = 2.002
>>> P.A = 45.5
>>> P.Nucs = 'N'
>>> P.lw = [0.2, 0.2]
>>> P.motion = 'fast'
>>> B0, spc, flag = sim.simulate(P)

Simple example for the simulation of an anisotropic nitroxide spectrum (only 14N) in the fast-motion regime.

>>> import EPRsim.EPRsim as sim
>>> Ra = [335 ,350]
>>> freq = 9.6
>>> g = [2.0083, 2.0061, 2.0022]
>>> A = [12, 13, 110]
>>> Nucs = '14N'
>>> lw = [0.2, 0.2]
>>> tcorr = 1e-10
>>> motion = 'fast'
>>> Param = sim.Parameters(Range=Ra, g=g, A=A, Nucs=Nucs, mwFreq=freq,
                           lw=lw, tcorr=corr, motion=motion)
>>> B0, spc, flag = sim.simulate(Param)

Simple example for the simulation of an anisotropic nitroxide spectrum (only 14N) in the solid-state regime.

>>> import EPRsim.EPRsim as sim
>>> import EPRsim.Tools as tool
>>> P = sim.Parameters()
>>> P.Range = [335 ,350]
>>> P.mwfreq = 9.6
>>> P.g = [2.0083, 2.0061, 2.0022]
>>> P.A = [[12, 13, 110], [20, 30, 30]]
>>> P.Nucs = '14N,H'
>>> P.lw = [0.5, 0.2]
>>> P.motion = 'solid'
>>> B0, spc, flag = sim.simulate(P)
>>> tool.plot(B0, spc)

Simple example for the simulation of an anisotropic nitroxide spectrum (only 14N) in the solid-state regime, coupled to an additional hydrogen nucleus.

>>> import EPRsim.EPRsim as sim
>>> import EPRsim.Tools as tool
>>> P = sim.Parameters()
>>> P.Range = [335 ,350]
>>> P.mwfreq = 9.6
>>> P.g = [2.0083, 2.0061, 2.0022]
>>> P.A = [[12, 13, 110], [20, 30, 30]]
>>> P.Nucs = '14N,H'
>>> P.lw = [0.5, 0.2]
>>> P.motion = 'solid'
>>> B0, spc, flag = sim.simulate(P)
>>> tool.plot(B0, spc)

Simple example for the simulation of two radical species.

>>> import EPRsim.EPRsim as sim
>>> import EPRsim.Tools as tool
>>> P = sim.Parameters()
>>> P.Range = [335 ,350]
>>> P.mwfreq = 9.6
>>> P.g = [2.0083, 2.0061, 2.0022]
>>> P.A = [12, 13, 110]
>>> P.Nucs = '14N'
>>> P.lw = [0.5, 0.2]
>>> P.motion = 'solid'
>>> P2 = sim.Parameters()
>>> P2.Range = [335 ,350]
>>> P2.mwfreq = 9.6
>>> P2.g = 2.0003
>>> P2.lw = [0.3, 0.0]
>>> P2.motion = 'solid'
>>> P2.weight = 0.1
>>> B0, spc, flag = sim.simulate([P, P2])
>>> tool.plot(B0, spc)

Simple example for the simulation of a spin-polarized triplet spectrum.

>>> import EPRsim.EPRsim as sim
>>> import EPRsim.Tools as tool
>>> P = sim.Parameters()
>>> P.S = 1
>>> P.Range = [130 ,450]
>>> P.mwfreq = 9.6
>>> P.g = 2
>>> P.lw = [4, 1]
>>> P.D = [-1400, 20]
>>> P.Population = [0.2, 0.3, 0.4]
>>> P.Harmonic = 0
>>> B0, spc, flag = sim.simulate(P)
>>> tool.plot(B0, spc)

Properties

EPRsim provides:

  • Simulation for cw-EPR spectra in the solid-state limit and fast-motion regime

  • Flexible simualtion options

  • Highly-optimized performance of the simulation algorithm

  • Various EPR-data processing function

  • Open-source

Feedback

We are eager to hear about your experiences with GloPel. You can email me at stephan.rein@physchem.uni-freiburg.de.

References

[1] : S. Stoll, A. Schweiger, J. Magn. Reson., 2006, 178, 42-55

[2] : N. M. Atherton, Principles of Electron Spin Resonance, 1993

Acknowledgement

A number of people have helped shaping EPRsim and the ideas behind. First and foremost, Prof. Dr. Stefan Weber and Dr. Sylwia Kacprzak (now Bruker Biospin) were for years the driving force behind EPRsim.

Metadata

Release files for EPRsim 0.0.4.dev0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for EPRsim 0.0.4.dev0
File Size Uploaded Provenance
EPRsim-0.0.4.dev0.tar.gz 58.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for EPRsim 0.0.4.dev0
File Interpreter ABI Platform
EPRsim-0.0.4.dev0-py3-none-any.whl Python 3 none any Details

Total release size: 133.9 kB

Release files / EPRsim-0.0.4.dev0.tar.gz

Download URL EPRsim-0.0.4.dev0.tar.gz
Size 58.5 kB
Tags Source
SHA-256 checksum
How to use checksums
e883164f8a8fc1fe44916cc8b5075f71b0f7b621c514593a513487381604e9fb
BLAKE2b-256 checksum
How to use checksums
0ed9949d6f6df441f363edd43df70ebe45d505565c62ba6df6da5e90ac677a66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.5.2

Release files / EPRsim-0.0.4.dev0-py3-none-any.whl

Download URL EPRsim-0.0.4.dev0-py3-none-any.whl
Size 75.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fed98ccc6e0b069abd0cfb88f12f9bcba2425112b3cac97e331498e12fd1bc31
BLAKE2b-256 checksum
How to use checksums
aa5cb3d25cdf895e068019592a7794539579581125262d1b9b2290447776eb46
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.5.2

Security for EPRsim 0.0.4.dev0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page