Skip to main content

Plesty Perovskite G2 Search

Search a sample for single-photon emitters and measure the saturation curve of each one found. With the laser on at the search power, the stage maps the count rate in fine steps (0.1 µm), row by row in +x. A bright point is judged where the stage is, the moment it is read, and the row goes on from it: the stage never moves back. A spot is kept only if two conditions hold:

  1. its count rate is well above the background mapped so far, and
  2. the second-order correlation at zero delay, g2(0), is below 0.5 — the mark of a single-photon emitter (a source that rarely emits two photons at once) — from enough coincidences to tell.

A spot failing either condition is recorded and the map goes on. An emitter gets a saturation curve: its count rate at each laser power of a series, read against a powermeter.

laser on (8 %) -> map the area cell by cell (2 um cells), each cell in
                  0.1 um steps, each row in +x; at each point:
      -> (1) a spot? 3 x the background so far, >= 150 kcps, still climbing
      -> there and then, the stage still: g2, 20 s: g2(0) < 0.5?  no -> row on
                                          -> saturation curve, then row on

The rig

Sub-device Instrument Server on the bench (setup.yaml)
stage Thorlabs KST201 x/y/z stage (ZST225 actuators); only x and y move kst201-d2xx, plesty-kst201
tt Swabian Time Tagger, the two detectors of a Hanbury Brown–Twiss setup swabian-tt, plesty-swabian-tt
laser PicoQuant Taiko PDL M1 taiko-pdl-m1, plesty-taiko-pdl-m1
pm Thorlabs PM-series powermeter (PM100D), optional pow, plesty-thorlabs-powermeter

setup.yaml declares the servers as the perovskite bench does, names and sources alike; the bench starts each and gives the run its address (KST201_D2XX_ADDRESS, SWABIAN_TT_ADDRESS, TAIKO_PDL_M1_ADDRESS, POW_ADDRESS), which the rig's sub-devices read.

Choices in config/default.yaml

  • laser.mode — pulsed: g2(0) is the area of the zero-delay peak over the mean area of the side peaks, which sit at multiples of the laser period. cw: g2(0) is the coincidences around zero delay over the histogram's far wings.
  • map — the area in stage mm, its cells (cell_um) and its step. Cells are mapped one after the other, rows of cells from low y up, each in +x; within a cell, rows run in +x, each from backlash_um below its start, so the stepper's backlash does not shift sub-micron steps; a spot is judged where the row has the stage. Every move is checked against the map plus that approach before it is sent.
  • candidates — the background is a low percentile of the points mapped so far; a spot reads contrast times it and above min_cps, still climbing its patch, and a patch is judged again rejudge_gain times brighter.
  • g2.permille, g2.min_coincidences — the g2's own laser power (lower than the map's keeps biexciton emission out of the dip), and the coincidences below which a g2 is inconclusive rather than a verdict.
  • saturation — the powers from start_permille to stop_permille in points steps, log or linear.
  • powermeter — delete the block to run without one; the saturation curve's power axis is then the laser's own calibrated estimate.

The saturation curve is fitted with I(P) = I_inf · P / (P + P_sat) + b · P, the linear term taking the background that grows with the power.

Running

uv sync
uv run python -m plesty.perovskite_g2_search --dry-run          # the plan, no devices
uv run python -m plesty.perovskite_g2_search                    # config/default.yaml
uv run python -m plesty.perovskite_g2_search --resume <run_id>  # continue a run

Copy .env.example to .env first and fill in the bench's address, token and data paths. Runs land in <PLESTY_DATA>/perovskite-g2-search/<run_id>, one record per step in records.jsonl: each map row, the candidates, and per candidate where it was aimed, its correlation, g2(0) and verdict, and for an emitter its saturation points and fit. An interrupted run resumes at the step it stopped at; the laser is turned off however a run ends.

Metadata

Release files for plesty-perovskite-g2-search 0.1.0

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-perovskite-g2-search 0.1.0
File Size Uploaded Provenance Actions
plesty_perovskite_g2_search-0.1.0.tar.gz 513.9 kB Without provenance Details for plesty_perovskite_g2_search-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for plesty-perovskite-g2-search 0.1.0
File Interpreter ABI Platform Actions
plesty_perovskite_g2_search-0.1.0-py3-none-any.whl Python 3 none any Details for plesty_perovskite_g2_search-0.1.0-py3-none-any.whl

Total release size: 561.4 kB

Release files / plesty_perovskite_g2_search-0.1.0.tar.gz

Download URL plesty_perovskite_g2_search-0.1.0.tar.gz
Size 513.9 kB
Tags Source
SHA-256 checksum
How to use checksums
1d817153050de0149018ea147d6bbdec355532e0885617ad88c4340a50b84980
BLAKE2b-256 checksum
How to use checksums
53d111944ee48596621213a9b0962c166e4c235fc35b890bb0f64b57936ba638
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
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_perovskite_g2_search-0.1.0-py3-none-any.whl

Download URL plesty_perovskite_g2_search-0.1.0-py3-none-any.whl
Size 47.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
66265b3ba79628c666ae8d2d346d8c4142536580f2e53ce32e4c955e33a40d50
BLAKE2b-256 checksum
How to use checksums
9195b0bdea42c35b5a100336b67b07ccba3ed1a3f76514341d48650f8aee2a99
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
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-perovskite-g2-search 0.1.0

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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

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