Skip to main content
Pre-release

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_structure and <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)

Source distribution for plesty-pol-pl 0.2.0.dev1
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)

Table of built distributions (wheels) for plesty-pol-pl 0.2.0.dev1
File Interpreter ABI Platform Actions
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page