PyMieSimX
PyMieSimX is the standalone graphical interface for PyMieSim. It provides a Dash application for configuring optical setups, running parameter sweeps, exploring individual particles, and exporting results.
Source-model note
The Gaussian source exposed by PyMieSimX is not a generalized Lorenz–Mie theory (GLMT) implementation. It is a convenience object for defining a Gaussian illumination through its numerical aperture and optical power in watts. The Gaussian and GaussianSet source options should therefore be interpreted as a practical source parameterization, not as a separate GLMT solver.
Installation
Install the GUI with PyMieSim and PyOptik with:
pip install PyMieSimX
The first pymiesimx launch downloads PyOptik’s complete RefractiveIndex.INFO snapshot. It can also be initialized explicitly with:
python -m PyOptik setup --no-progress
Launch the dashboard with:
pymiesimx
Use pymiesimx --help to see the available host, port, browser, and debug options.
Development
Install an editable checkout with:
pip install -e .
The GUI source lives in PyMieSimX/gui. Scientific calculations are provided by the installed PyMieSim package rather than duplicated here.
Testing and automation
Run the GUI test suite with:
pip install -e ".[testing]" python -m pytest
GitHub Actions includes quality checks, GUI tests, PyPI publishing, Conda recipe publishing, and coverage deployment. The Conda recipe is in meta.yaml and the container entry point is defined in Dockerfile.
Python API
The computational API can be used without constructing the Dash application:
from PyMieSimX import run_experiment
result = run_experiment(
source_type="GaussianSet",
source_values={
"wavelength": "650",
"polarization": "0",
"optical_power": "1e-3",
"numerical_aperture": "0.2",
},
scatterer_type="SphereSet",
scatterer_values={"diameter": "500", "material": "1.4", "medium": "1.0"},
detector_type="None",
detector_values={},
measure="Qsca",
)
PyMieSimX.create_dash_app and PyMieSimX.OpticalSetupGUI remain available for applications that need the graphical interface.
Multiple measures
The Parameter Sweep Measures selector accepts several quantities in one run. For example, select Qsca, Qabs, and Qext to compare scattering, absorption, and extinction efficiencies. Measures with the same units share a plot; different units use separate panels with a shared X axis. CSV exports contain a column for each computed measure.
The Python API accepts either a single name or a list, for example run_experiment(..., measure=["Qsca", "Qabs", "Qext"]). Results include measures with every computed name; measure retains the first name for compatibility with existing single-measure callers. Size validation accounts for the additional result columns.
Background calculations and limits
Parameter sweeps are submitted to a bounded background worker and reported to the dashboard with visible queued, running, completed, and error messages beside Run. The completed-run card shows the number of result rows. Oversized sweeps are rejected with guidance when you click Run. Results are guarded by both an in-memory dataframe limit and a serialized Dash-payload limit, with estimated size validation before execution and actual size checks after computation.
Run the command-line launcher with --debug to enable detailed logs. Log messages use the format timestamp | level | logger | message and include experiment job identifiers, input configuration, queue transitions, dataframe memory usage, and serialized result sizes.
Server-side usage metrics
The dashboard can share a PostgreSQL metrics database with RosettaX. Configure the Render service with:
PYMIESIMX_USAGE_METRICS_BACKEND=postgres DATABASE_URL=<the shared PostgreSQL URL>
PyMieSimX writes namespaced counters to the shared metrics_counters table: pymiesimx_home_page_visit_count, pymiesimx_experiment_run_count, and pymiesimx_single_run_count. Metrics are collected only when the PostgreSQL backend is explicitly configured and available. Local installations do not persist usage counters.
Administration page
Usage counters are shown only on the hidden, token-protected administration page. Configure a server-side token with:
PYMIESIMX_ADMIN_TOKEN=<a long random value>
Then open /admin?token=<the same value>. The page is intentionally absent from the public sidebar and refreshes its counters every 30 seconds.
Metadata
Release files for PyMieSimX 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pymiesimx-0.1.4.tar.gz | 4.0 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pymiesimx-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 8.1 MB
Release files / pymiesimx-0.1.4.tar.gz
| Download URL | pymiesimx-0.1.4.tar.gz |
|---|---|
| Size | 4.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d39c6ce22ca696a163fca2003c4302731817a7af05db27827e251c0a8fe82d03
|
|
BLAKE2b-256 checksum How to use checksums |
017ba1047949e729a937655089dc9b9ef10d1bc40f4328d14dd2626cbf2a24c8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pymiesimx-0.1.4-py3-none-any.whl
| Download URL | pymiesimx-0.1.4-py3-none-any.whl |
|---|---|
| Size | 4.0 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d7dc6c8021a5bafd09c0e62801576f4835b6e6689ee0a57eafb2bfc3b41079ba
|
|
BLAKE2b-256 checksum How to use checksums |
b1a4385ea4219d664aa0584d0f914e9136fb2cbcf95b58e1c0d17d4ed44b6e06
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|