Skip to main content

EEmiLib

EEmiLib (Electron EMIssion Library) provides several electron emission models and a simple interface to fit them to experimental data. It includes both a graphical user interface (GUI) for ease of use and a Python API for advanced users.

The library focuses on electron emission models relevant to multipactor simulations, i.e. for impinging energies ranging from a few eV to several hundred eV.

This project is still under active development. I maintain it in my free time, but I'll do my best to answer any questions you may have.

Features

  • Multiple electron emission models
  • Graphical interface for quick model fitting
  • Python API for scripting and automation

Installation

For users

  1. Create a dedicated Python environment.
  2. Run
pip install EEmiLib

[!NOTE] If you are completely new to Python and these instructions are unclear, check this tutorial. In particular, you will want to:

  1. Install Python 3.12 or higher.
  2. Learn to use Python environments , pipenv or virtualenv.
  3. Optionally, install a Python IDE such as Spyder or VSCode.

For developers

If you want to edit the source code:

  1. Clone the repository: git clone git@github.com:AdrienPlacais/EEmiLib.git
  2. Create a dedicated Python environment.
  3. From EEmiLib folder: pip install -e .[test]
  4. Test that everything is working with pytest -m "not implementation".

[!WARNING] If you Download ZIP this repository (which can happen if you don't have access to git), installation will fail at step #3. A workaround is proposed here. This is a different library, but the same method applies.

Usage

Graphical User Interface

To start the GUI, run following command in a bash:

eemilib-gui

A Module not found error generally means that the EEmiLib Python environment is not activated.

GUI animation

Python API

A typical script would look like:

import numpy as np
from eemilib.emission_data import DataMatrix
from eemilib.loader import PandasLoader
from eemilib.model import Vaughan
from eemilib.plotter import PandasPlotter

data_matrix = DataMatrix()
data_matrix.set_files(
    filepath="path/to/a/TEEY/file.csv",
    population="all",
    data_type="Emission Yield"
)

loader = PandasLoader()
data_matrix.load_data(loader)

model = Vaughan()
model.find_optimal_parameters(data_matrix)

plotter = PandasPlotter()
axes = data_matrix.plot(
    plotter=plotter,
    population="all",
    data_type="Emission Yield"
)
model.plot(
    plotter=plotter,
    population="all",
    data_type="Emission Yield",
    energies=np.linspace(0, 1000, 1001),
    angles=np.linspace(0, 60, 4),
    axes=axes,
)

Complete examples are available in the documentation.

Roadmap/To-Do

  • Document abbreviations

  • GUI:

    • Better handling of multiple Plot data and Plot model buttons push.
      • Let user choose group_by_pe and e_pes for "Emission Energy" plots.
    • Display quantitative criteria to assess model quality (e.g., Nicolas Fil's criterion)
    • Display derived quantities such as crossover energies, maximum TEEY, etc.
    • Let user load and plot files that are not needed for current Model, so they can compare Model data with tabulated data easily.
  • CI:

    • PyPI release.
    • Update installation instructions.
    • Allow execution on online Docker ?
  • Export buttons

    • Tabulated model data.
    • Model parameters value (makes sense along with an Import button).
  • Fix error when not running from a git repo:

    fatal: not a git repository (or any parent up to mount point /)
    Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).`
    
  • API:

    • Model.display_parameters() method for nice printing.
    • Import/export model configuration with a TOML.
    • Make Model store its data in a DataMatrix?
    • Should every Model be fitted on all population?
  • If it proves useful:

    • Handle experimental data with error bars
    • Add control over interpolation of loaded experimental data
    • Optional smoothing of measured data
    • Different line styles/colors for different populations.
    • Ready-to-use interface for PIC codes.

Release files for EEmiLib 0.2.0

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

Source distribution (sdist)

Source distribution for EEmiLib 0.2.0
File Size Uploaded
eemilib-0.2.0.tar.gz 2.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for EEmiLib 0.2.0
File Interpreter ABI Platform
eemilib-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.4 MB

Release files / eemilib-0.2.0.tar.gz

Download URL eemilib-0.2.0.tar.gz
Size 2.0 MB
Tags Source
SHA-256 checksum
How to use checksums
e01013911cc19f6a53e62be6fa44e95f125db0503b9008d7ed8872ff35c5318a
BLAKE2b-256 checksum
How to use checksums
bf1b31ae1748616cead151514c7d5578606984173bda772af1f66a561c5cc836
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 6, 2026.

Transparency log

Release files / eemilib-0.2.0-py3-none-any.whl

Download URL eemilib-0.2.0-py3-none-any.whl
Size 405.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
424f446f36ce5fd3bbeb30f6eb5bb40883971f427addeef5cff45cf905446b59
BLAKE2b-256 checksum
How to use checksums
87dadb9eaae965c75e42de291f5343e7b4eeb64938924a826d46515ebd3e791e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 6, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.0.15

2 release files

0.0.14

2 release files

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