Using the Charge Stability Diagram Models

Installation

We recommend using pip, poetry, or uv to install the package.

$pip install conductorquantum

Authentication

The SDK requires an API key for authentication. Sign in and create a new API key. Remember, your API key is your access secret—keep it safe with environment variables.

Using environment variables:

Python
1from dotenv import load_dotenv
2import os
3from conductorquantum import ConductorQuantum
4
5# Load API key from .env file
6load_dotenv()
7TOKEN = os.getenv("CONDUCTOR_API_KEY")
8
9# Initialize client
10client = ConductorQuantum(token=TOKEN)

Or provide the API key directly:

Python
1from conductorquantum import ConductorQuantum
2
3# Initialize client with API key
4client = ConductorQuantum(token="YOUR_API_KEY")

Usage Examples

Using the Charge Stability Diagram Segmenter

The Charge Stability Diagram Segmenter is a model that can segment a given measurement into different charge stability regimes: no dot (0), single dot (1), and double dot (2).

You can download an example file to follow along with the example:

Python
1from dotenv import load_dotenv
2import os
3import numpy as np
4from conductorquantum import ConductorQuantum
5
6
7# Load API key from .env file
8load_dotenv()
9TOKEN = os.getenv("CONDUCTOR_API_KEY")
10
11# Initialize client
12client = ConductorQuantum(token=TOKEN)
13
14# Load Charge Stability Diagram data
15data = np.load("charge-stability-diagram-segmenter-v0.npy") # shape (128, 128)
16
17# Segment the Charge Stability Diagram
18result = client.models.execute(
19 model="charge-stability-diagram-segmenter-v0",
20 data=data
21)
22
23# Access the segmentation result
24segmentation = result.output["segmentation"]
25print(f"Segments: {segmentation}")
Output
1Segments: [
2 [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
3 ...,
4 [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
5]
Charge Stability Diagram Input Data
Input Data
Charge Stability Diagram Segmenter
Charge Stability Diagram Segmenter v0 Output

Using the Charge Transition Line Detector

The Charge Transition Line Detector is a model that detects the locations of charge transition lines in a charge stability diagram.

You can download an example file to follow along with the example:

Python
1from dotenv import load_dotenv
2import os
3import numpy as np
4from conductorquantum import ConductorQuantum
5
6
7# Load API key from .env file
8load_dotenv()
9TOKEN = os.getenv("CONDUCTOR_API_KEY")
10
11# Initialize client
12client = ConductorQuantum(token=TOKEN)
13
14# Load Charge Stability Diagram data
15data = np.load("charge-stability-diagram-transition-detector-v0.npy") # shape (n, m)
16
17# Detect the transition lines in the Charge Stability Diagram
18result = client.models.execute(
19 model="charge-stability-diagram-transition-detector-v0",
20 data=data
21)
22
23# Access the transition lines result
24transition_lines = result.output["transition_lines"]
25print(f"Transition lines: {transition_lines}")
Output
1Transition lines: [
2 [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0],
3 ...,
4 [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
5]
Charge Stability Diagram Input Data
Input Data
Charge Transition Line Detector
Charge Transition Line Detector v0 Output

Using the Charge Stability Diagram Binary Classifier

There are two versions of the Charge Stability Diagram (CSD) binary classifier available: one for 16x16 input arrays and one for 48x48 arrays. Both models classify a CSD as either “double dot” (1) or “not double dot” (0).

Charge Stability Diagram Data Requirements

  • Input shape: (16, 16) or (48, 48)
  • Data: 2D numpy array representing transport current or charge sensor signal

To choose the appropriate model, use the suffix in the model string:

  • For 48x48 data: charge-stability-diagram-binary-classifier-v0-48x48
  • For 16x16 data: charge-stability-diagram-binary-classifier-v0-16x16

You can download a sample 48x48 input file here to follow along with the example.

Python
1from dotenv import load_dotenv
2import os
3import numpy as np
4from conductorquantum import ConductorQuantum
5
6
7# Load API key from .env file
8load_dotenv()
9TOKEN = os.getenv("CONDUCTOR_API_KEY")
10
11# Initialize client
12client = ConductorQuantum(token=TOKEN)
13
14# Load Charge Stability Diagram data
15data = np.load("charge-stability-diagram-classifier-v0-48x48.npy") # shape (48, 48)
16
17# Classify the number of dots in the Charge Stability Diagram
18result = client.models.execute(
19 model="charge-stability-diagram-classifier-v0-48x48",
20 data=data
21)
22
23# Access the classification result
24classification = result.output["classification"]
25print(f"Classification: {classification}")
Output
1{'classification': 1, 'score': 0.9598088264465332}
Charge Stability Diagram Binary Classifier Input Data
Input Data

Important Notes for Charge Stability Diagram Models

  • Input dimensions: Input dimensions should ideally match the specified resolution of the model for the best results. You may need to interpolate or downsample your data to match the required shape. You can find the required input shapes for each model on the models overview page.
  • Data format: Input data should be a 2D numpy array representing transport current or charge sensor signal values. Each value in the input array corresponds to a point in the charge stability diagram for a set of two plunger gate voltages.
  • Output format:
    • The segmenter outputs a 2D array with integer labels: 0 (no dot), 1 (single dot), or 2 (double dot).
    • The transition detector outputs a 2D array with binary values (0.0 or 1.0) indicating transition line locations.
    • The binary classifier outputs a classification (0 or 1) and a confidence score.
  • Model versions: Higher version numbers typically indicate improved accuracy and performance. Check the models overview for the latest available versions.