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
- Create a dedicated Python environment.
- 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:
- Install Python 3.12 or higher.
- Learn to use Python environments ,
pipenvorvirtualenv.- Optionally, install a Python IDE such as Spyder or VSCode.
For developers
If you want to edit the source code:
- Clone the repository:
git clone git@github.com:AdrienPlacais/EEmiLib.git - Create a dedicated Python environment.
- From EEmiLib folder:
pip install -e .[test] - Test that everything is working with
pytest -m "not implementation".
[!WARNING] If you
Download ZIPthis repository (which can happen if you don't have access togit), 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.
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 dataandPlot modelbuttons push.- Let user choose
group_by_peande_pesfor"Emission Energy"plots.
- Let user choose
- 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 compareModeldata with tabulated data easily.
- Better handling of multiple
-
CI:
-
PyPIrelease. - Update installation instructions.
- Allow execution on online Docker ?
-
-
Exportbuttons- Tabulated model data.
- Model parameters value (makes sense along with an
Importbutton).
-
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
Modelstore its data in aDataMatrix? - Should every
Modelbe fitted onallpopulation?
-
-
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)
| File | Size | Uploaded | |
|---|---|---|---|
| eemilib-0.2.0.tar.gz | 2.0 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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