This release is a pre-release and may not be stable for production use.
Plesty Polarization-dependent PL
Polarization-dependent photoluminescence of quantum dots. A half-wave plate on a
Thorlabs K10CR1 rotation stage sits in the detection path in front of a fixed
polarizer. For every plate angle the experiment takes one spectrum; after the
last angle of a dot it runs the FineStructure analyzer from
plesty-fss over that dot's
spectra and saves the fine-structure splitting of every emission line in the run.
How it is built
rig.py connects the two device servers — the K10CR1 stage (hwp) and the
LightField spectrometer (spec) — into one CompositeDevice and owns the whole
device vocabulary: home and move the plate, set up and take a spectrum.
experiment.py turns the configuration into a fixed plan (one step per dot per
angle, then one analysis step per dot), runs it step by step and commits one
record per step to <run_root>/<run_id>/records.jsonl, which is what makes a run
resumable. Spectra never cross the network: the spectrometer host writes them to
the shared disk and only their paths travel.
Installation
git clone https://gitlab.com/plesty/hub/experiments/plesty-pol-pl.git
cd plesty-pol-pl
uv sync
The stage and spectrometer servers are installed and run from their own repositories, on the computers the hardware is attached to.
Running it without a lab
The easy way is the Bench app's welcome (Help ▸ Welcome… ▸ Install the demo). By hand — the commands and why each is needed are in the documentation:
cp setup.yaml /tmp/pol-pl-fleet.yaml
LOCAL_DATA=/tmp DEVICE_DATA_ROOT=/tmp DEVICE_DATA_PATH=/tmp \
plesty-server -f /tmp/pol-pl-fleet.yaml fleet up
plesty-server -f /tmp/pol-pl-fleet.yaml fleet status # the two ports
HWP_ADDRESS=tcp://localhost:<hwp port> SPEC_ADDRESS=tcp://localhost:<spec port> \
PLESTY_DATA=/tmp uv run python -m plesty.pol_pl --config config/demo.yaml
setup.yaml brings up the stage under --mock and the spectrometer's replay
server, both on this machine (the bench bench-local); the demo writes its
spectra under /tmp. Under the bench, the bench gives each device its folder
and the run the devices' addresses and the shared-disk path; installing the
module writes the .env, and Configure… ▸ Device Setup edits it and
setup.yaml together.
That is a real run of this experiment: the same plan, the same records, the
same analysis, resumable the same way. Nothing in this module knows it is a
demo, because nothing here is different — the setup is. The stage is the
released module under --mock, and the spectrometer is the demo/pol-pl
branch of plesty-lightfield-spectrometer, which hands back spectra really
measured on sample E098-SIL (QD-001, QD-002 or QD-003, 0–178° in 2° steps).
An acquisition says nothing about where the run has got to, so that server
reads the run's journal.jsonl and answers for the step it finds there. Set
the dot in config/demo.yaml; a sweep the recording does not hold is refused
rather than answered with another spectrum.
Running the experiment
Run it from the Bench app, which serves both devices on this machine's bench
and gives the run their addresses. By hand, copy .env.example to .env and
set the two device addresses and PLESTY_DATA, where this machine sees the
shared data disk: runs go to <PLESTY_DATA>/pol-pl/<run_id> and spectra to
each run's raw/spec. Tune the measurement in config/default.yaml.
# Preview the plan without touching devices
uv run python -m plesty.pol_pl --dry-run
# Run
uv run python -m plesty.pol_pl --config config/default.yaml
# Resume an interrupted run
uv run python -m plesty.pol_pl --resume <run_id>
# What this module takes — run command, environment, configuration schema
uv run python -m plesty.pol_pl --manifest
A started run is paused, resumed, cancelled or aborted through
plesty.lib.experiment.control on its run directory — see the
documentation.
Results
- Each spectrum's record: dot, commanded and reported plate angle (
hwp_deg,hwp_reported_deg), the spectrum file, exposure window and grating centre. - Each dot's analysis record: for every emission line its position, the fine-structure splitting ± σ in µeV, whether that splitting is valid, and the polarization axis, plus any analyzer warnings.
- The full analyzer outputs under
<run_dir>/analysis/:<dot>_fine_structureand<dot>_line_fit, and the analyzer's report of them,<dot>.report.json— a sentence, a table of the lines and the sweep drawn, ready to render as HTML or LaTeX.
The splitting is read from how far a line's fitted position oscillates with the
plate angle. That measures a doublet only while its two components are closer
than the linewidth and appear as one line; lines where that does not hold are
marked fss_valid: false and named in the warnings.
Metadata
Release files for plesty-pol-pl 0.2.0.dev1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| plesty_pol_pl-0.2.0.dev1.tar.gz | 704.4 kB | Without provenance | Details for plesty_pol_pl-0.2.0.dev1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| plesty_pol_pl-0.2.0.dev1-py3-none-any.whl | Python 3 | none | any | Details for plesty_pol_pl-0.2.0.dev1-py3-none-any.whl |
Total release size: 735.1 kB
Release files / plesty_pol_pl-0.2.0.dev1.tar.gz
| Download URL | plesty_pol_pl-0.2.0.dev1.tar.gz |
|---|---|
| Size | 704.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6f3dfd4e7113f5eea6dbcab5c0c62823e83b80bd391f10d7c8266957b1a1b4e8
|
|
BLAKE2b-256 checksum How to use checksums |
c44cd06b990f824499ffb1aaef340976cf9c54c7aa5df61ac749155dd395ba5d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / plesty_pol_pl-0.2.0.dev1-py3-none-any.whl
| Download URL | plesty_pol_pl-0.2.0.dev1-py3-none-any.whl |
|---|---|
| Size | 30.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4fb191b602a162be44fcae856fc5cf1efb0659b4ba1a963ee835276b3f9e3137
|
|
BLAKE2b-256 checksum How to use checksums |
278a2ee2c1db7508c0dec9d937d969527acabf1359c92aa1f712f50ee3d261d8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for plesty-pol-pl 0.2.0.dev1
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.