Maxwell Bloch Solver
A PySide6 desktop application for simulating, visualizing, and fitting one-dimensional Maxwell-Bloch models to astronomical maser light-curve data. The application combines an interactive Qt interface, configurable physical and numerical parameters, Numba-accelerated time evolution, and publication-oriented plotting/export tools.
Screenshot
Features
- Interactive GUI for Maxwell-Bloch model configuration and visualization.
- Numba-accelerated numerical solver using Runge-Kutta time stepping, from the maxbloch package.
- Interface built with sciwidgets (sliders, parameter panels, plot canvas).
- Light-curve import from velocity-tagged text files.
- Support for period-tagged source folders, e.g. multiple folded periods for the same source.
- Adjustable source, sample, initial-condition, pump-profile, and plotting parameters.
- Built-in visualization of fitted flux, inversion/population, pump terms, and other solver quantities.
- Parameter saving/loading using JSON files.
- Export to PDF, PNG, or SVG, with PDF exports including metadata and parameter reports.
- Local user guide and equations reference.
Installation
The app needs Python 3.10 or newer. The easiest way is pipx, which installs the app in its own environment and puts the command on your path:
pipx install maxwell-bloch-solver
If you work in a conda or virtual environment, install it there with pip instead:
pip install maxwell-bloch-solver
Running the application
maxwell-bloch-solver
(mbsolver is a shorter name for the same command, and python -m mbsolver works too.)
Use the menu bar to load data folders, adjust parameters, run the solver and export plots.
Updating
The app tells you when a new version is available. To update:
pipx upgrade maxwell-bloch-solver
or pip install -U maxwell-bloch-solver in the environment where you installed it.
Input data format
The application expects light-curve files as plain text files with at least two whitespace-separated columns:
time flux
Blank lines and lines beginning with # are ignored.
Supported file-name patterns are:
Source_v=12.3.txt
Source_p1_v=12.3.txt
where:
Sourceis the source name,p1,p2, etc. are optional period labels,v=12.3is the velocity-component label.
Matching parameter files can be stored as:
Source_params.json
Source_p1_params.json
When period-tagged files are present, the application lets the user select the period set to load.
Exporting results
Plots can be exported from the GUI as:
- PNG
- SVG
PDF exports include the plot plus a report page containing metadata and the current parameter state.
Documentation
The user guide and the equations reference (PDF) are installed with the app; open them from the Help and Info menus.
Development
git clone https://github.com/vahid-anari/maxwell-bloch-solver.git
cd maxwell-bloch-solver
pip install -e .
mbsolver
python main.py in the repository root also starts the app from the source
folder. The code lives in src/mbsolver/:
src/mbsolver/
├── main.py # application entry point
├── app/ # main window, plotting, solver controller, update pipeline
├── ui/ # physics parameter widgets, dialogs, splash screen, step viewer
├── io/ # data and parameter import/export
├── config/ # app metadata, style and UI defaults
├── utils/ # units, constants, helper functions
└── resources/ # settings.json, icons, user guide and equations PDFs
The numerical solver is the maxbloch package; the widgets come from sciwidgets.
License
This project is released under the MIT License. See LICENSE for details.
Metadata
Release files for maxwell-bloch-solver 9.0.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 | |
|---|---|---|---|
| maxwell_bloch_solver-9.0.0.tar.gz | 1.6 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| maxwell_bloch_solver-9.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.2 MB
Release files / maxwell_bloch_solver-9.0.0.tar.gz
| Download URL | maxwell_bloch_solver-9.0.0.tar.gz |
|---|---|
| Size | 1.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
056fb36d521028edfba4b3d987e798c4554eab132328b85316b7c47ba4d8d2fb
|
|
BLAKE2b-256 checksum How to use checksums |
d8c1d72194394fdec8ce649c2af26f5403a34776bcc681c4aad158e3661b0e21
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.12
|
Release files / maxwell_bloch_solver-9.0.0-py3-none-any.whl
| Download URL | maxwell_bloch_solver-9.0.0-py3-none-any.whl |
|---|---|
| Size | 1.6 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
68fedee6c664c9860891bb88039ae7eeefc124a901e5efd1f7edcc3a9894fa44
|
|
BLAKE2b-256 checksum How to use checksums |
ee5f5045dbb99d054edc8e049697cbf68ded1313879b8426a233dd48c8e95d74
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.12
|