Python client SDK for the RoboAI LIBS Spectrum Simulator API.
Project description
RoboAI LIBS Client
Lightweight Python client SDK and command-line helper for the RoboAI LIBS Spectrum Simulator API.
Contents
Install
Prerequisite: Python 3.10 or newer.
From PyPI:
pip install --upgrade roboai-libs-client
From GitHub, if you need the latest repository version:
pip install git+https://github.com/RoboAI-Green/roboai-libs-client.git
Quick Start
Authenticate once:
roboai-libs auth login
Run a first static spectrum from Python:
from roboai_libs_client import RoboAILIBSClient
client = RoboAILIBSClient()
result = client.simulate_static(
elements=["Ni"],
range_min_nm=200, # start wavelength in nm
range_max_nm=230, # end wavelength in nm
resolution_nm=0.05, # wavelength step in nm
te_ev=1.0, # electron temperature in eV
ne_cm3=1e17, # electron density in cm^-3
fwhm_nm=0.0, # instrumental FWHM in nm
)
print(result.wls[:5])
print(result.intensity[:5])
Or run the same kind of quick export from the command line:
roboai-libs static --element Ni --range 200 230 --resolution 0.05 --out ni.csv
For built-in command help:
roboai-libs --help
roboai-libs static --help
roboai-libs dynamic --help
Authentication
The client requires a platform Bearer token before calling protected simulation endpoints. The recommended setup is interactive login:
roboai-libs auth login
Enter your email address, open the verification link from your mailbox, and paste
the returned access_token value. The token is stored locally, so future
RoboAILIBSClient() calls can use it automatically.
Useful authentication and connection checks:
roboai-libs doctor
roboai-libs auth status
roboai-libs auth logout
roboai-libs auth status only checks local token configuration. roboai-libs doctor checks the API connection, validates the token if one is configured, and
queries the elements endpoint.
Alternative authentication methods
Request a login email directly:
roboai-libs auth login --email you@uni.fi
If you already have a token, validate it and store it locally:
roboai-libs auth login --token tok_...
Alternatively, pass a token directly with api_key=... or the
ROBOAI_LIBS_API_KEY environment variable:
export ROBOAI_LIBS_API_KEY=tok_...
from roboai_libs_client import RoboAILIBSClient
client = RoboAILIBSClient(api_key="tok_...")
Usage Examples
1. List available elements
from roboai_libs_client import RoboAILIBSClient
client = RoboAILIBSClient()
elements = client.list_elements()
print(elements[:20])
Command-line equivalent:
roboai-libs elements
2. Static spectrum
from roboai_libs_client import RoboAILIBSClient
client = RoboAILIBSClient()
result = client.simulate_static(
elements=["Ni"],
range_min_nm=280,
range_max_nm=330,
resolution_nm=0.05,
te_ev=1.0,
ne_cm3=1e17,
)
print(len(result.wls), len(result.intensity))
print(result.lines[:3])
Command-line equivalent:
roboai-libs static --element Ni --range 280 330 --resolution 0.05 --out ni.csv
3. Mixture spectrum
proportions do not need to sum to 1. The client normalizes them before sending
the request.
from roboai_libs_client import RoboAILIBSClient
client = RoboAILIBSClient()
result = client.simulate_static(
elements=["Ni", "Fe"],
proportions=[2, 1],
range_min_nm=280,
range_max_nm=330,
resolution_nm=0.05,
te_ev=1.0,
ne_cm3=1e17,
)
print(result.wls[:5])
print(result.intensity[:5])
Command-line equivalent:
roboai-libs static \
--element Ni \
--element Fe \
--proportion 2 \
--proportion 1 \
--out ni_fe.csv
4. Instrument broadening
from roboai_libs_client import RoboAILIBSClient
client = RoboAILIBSClient()
result = client.simulate_static(
elements=["Ni"],
range_min_nm=280,
range_max_nm=330,
resolution_nm=0.05,
te_ev=1.0,
ne_cm3=1e17,
fwhm_nm=0.10,
instrument_profile="gaussian",
)
print(result.instrument_profile, result.fwhm_nm)
5. Dynamic exposure
from roboai_libs_client import RoboAILIBSClient
client = RoboAILIBSClient()
result = client.simulate_exposure(
elements=["Ni"],
range_min_nm=200,
range_max_nm=230,
resolution_nm=0.05,
te_ev=1.0,
ne_cm3=1e17,
fwhm_nm=0.0,
integration_time_s=1e-6,
time_resolution_s=100e-9,
)
print(len(result.time_vector))
print(len(result.snapshot_matrix), len(result.snapshot_matrix[0]))
print(len(result.total_exposure))
snapshot_matrix is the time-wavelength intensity matrix. total_exposure is
the time-integrated spectrum.
6. Save dynamic HDF5
from roboai_libs_client import RoboAILIBSClient, ExposureRequest
client = RoboAILIBSClient()
request = ExposureRequest(
elements=["Ni"],
range_min_nm=200,
range_max_nm=230,
resolution_nm=0.05,
integration_time_s=1e-6,
time_resolution_s=100e-9,
)
path = client.save_dynamic_hdf5("ni_dynamic.h5", request)
print(f"Saved {path}")
Command-line equivalent:
roboai-libs dynamic --element Ni --out ni_dynamic.h5
The current platform API serves HDF5 for completed dynamic exposure jobs. Static
spectra are available through simulate_static() as typed JSON results.
API Reference and Parameters
Main client methods:
RoboAILIBSClient()creates a client using the stored login token orROBOAI_LIBS_API_KEY.list_elements()returns element symbols available from the hosted simulator.simulate_static(...)returns aStaticSpectrumResult.simulate_exposure(...)returns anExposureResult.save_dynamic_hdf5(path, request)submits a dynamic exposure job, waits for it, downloads the HDF5 result, and returns the writtenPath.
Most spectrum requests use the following parameters:
| Parameter | Meaning |
|---|---|
elements |
Element symbols to include, for example ["Ni"] or ["Ni", "Fe"]. |
proportions |
Relative element proportions. Values are normalized automatically, so [2, 1] becomes 2/3 and 1/3. |
range_min_nm |
Start wavelength of the simulated range, in nanometres. |
range_max_nm |
End wavelength of the simulated range, in nanometres. |
resolution_nm |
Wavelength spacing, in nanometres. Smaller values give finer spectra but require more computation. |
te_ev |
Electron temperature in electronvolts. |
ne_cm3 |
Electron number density in cm^-3. |
fwhm_nm |
Instrumental broadening full width at half maximum, in nanometres. Use 0.0 for no instrumental broadening. |
instrument_profile |
Instrument broadening profile, usually "gaussian" or "lorentzian". |
integration_time_s |
Total simulated exposure time for dynamic simulations, in seconds. |
time_resolution_s |
Time step for dynamic simulations, in seconds. |
Typed request models:
StaticSpectrumRequestExposureRequestPlasmaConfigTemporalConfig
Typed result models:
StaticSpectrumResultExposureResult
Support
For bugs, questions, or feature requests, please open an issue on the GitHub repository.
License
MIT License.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file roboai_libs_client-0.1.10.tar.gz.
File metadata
- Download URL: roboai_libs_client-0.1.10.tar.gz
- Upload date:
- Size: 18.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0693843bf28121e325caac9dec6a13a47f7248a4207c4028e17fe675e294f2d
|
|
| MD5 |
0963be1365a9bd51a00d91150669c7ed
|
|
| BLAKE2b-256 |
710fb4abc1b469d1e466d4e2e485ad6aa856987b96e45406076bf5a7840c4d3b
|
File details
Details for the file roboai_libs_client-0.1.10-py3-none-any.whl.
File metadata
- Download URL: roboai_libs_client-0.1.10-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
979db9d19404a38e4e4d103b85fbf023cf44fac301ea7d655a4c43e5f8353013
|
|
| MD5 |
396d28b4af197b4afd8a6b484bd8d20c
|
|
| BLAKE2b-256 |
5dba0da7cd273ff7cf470055c1d2c299523adb8f04f53b9fc88f3d14dffd3a5a
|