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.1

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.1
File Size Uploaded Provenance Actions
plesty_perovskite_g2_search-0.1.1.tar.gz 514.2 kB Without provenance Details for plesty_perovskite_g2_search-0.1.1.tar.gz

Built distribution (wheel)

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

Total release size: 561.6 kB

Release files / plesty_perovskite_g2_search-0.1.1.tar.gz

Download URL plesty_perovskite_g2_search-0.1.1.tar.gz
Size 514.2 kB
Tags Source
SHA-256 checksum
How to use checksums
2858d8afcf679341719afa5fe4acf73cc1667eebaec92931fc4121ad704d5cc4
BLAKE2b-256 checksum
How to use checksums
62d76a0e180c57785b4a98048eea84c962a13db8bf5aa6df7fbc80d5bcbca5fc
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.1-py3-none-any.whl

Download URL plesty_perovskite_g2_search-0.1.1-py3-none-any.whl
Size 47.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f2b2398035712c5d22fefdacac954dcbc631770c9056c98463590950cd6cd3bd
BLAKE2b-256 checksum
How to use checksums
29b462cdc3b2457324f9ddcd6fa16911c60e6041e642d3232dab5694e6a39cb3
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.1

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.1 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