> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.conductorquantum.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.conductorquantum.com/_mcp/server.

# stanza.routines.builtins.dqd_search.routine



## Module Contents

### Functions

| Name | Description |
|------|-------------|
| [`compute_peak_spacing`](#stanzaroutinesbuiltinsdqd_searchroutinecompute_peak_spacing) | Compute peak spacing by analyzing Coulomb blockade patterns in random sweeps. |
| [`run_dqd_search_fixed_barriers`](#stanzaroutinesbuiltinsdqd_searchroutinerun_dqd_search_fixed_barriers) | Run DQD search with fixed barrier voltages using adaptive grid sampling. |
| [`run_dqd_search`](#stanzaroutinesbuiltinsdqd_searchroutinerun_dqd_search) | Run peak spacing and DQD search over barrier voltage sweeps. |

### Data

`logger`

### API

```python
stanza.routines.builtins.dqd_search.routine.logger
```

**Value**: `getLogger(...)`


```python
stanza.routines.builtins.dqd_search.routine.compute_peak_spacing(
    ctx: stanza.routines.core.RoutineContext,
    gates: list[str],
    measure_electrode: str,
    min_search_scale: float,
    max_search_scale: float,
    current_trace_points: int,
    max_number_of_samples: int = 30,
    number_of_samples_for_scale_computation: int = 10,
    seed: int = 42,
    session: stanza.logger.session.LoggerSession | None = None,
    barrier_voltages: dict[str, float] | None = None,
    **kwargs: typing.Any
) -> dict[str, float]
```

Compute peak spacing by analyzing Coulomb blockade patterns in random sweeps.

**Parameters:**

<ParamField path="ctx" type="stanza.routines.core.RoutineContext">
  Routine context with device and models client
</ParamField>

<ParamField path="gates" type="list[str]">
  Gate electrode names
</ParamField>

<ParamField path="measure_electrode" type="str">
  Current measurement electrode
</ParamField>

<ParamField path="min_search_scale" type="float">
  Minimum voltage scale to test (V)
</ParamField>

<ParamField path="max_search_scale" type="float">
  Maximum voltage scale to test (V)
</ParamField>

<ParamField path="current_trace_points" type="int">
  Points per sweep trace
</ParamField>

<ParamField path="max_number_of_samples" type="int" default="30">
  Maximum sweep attempts per scale
</ParamField>

<ParamField path="number_of_samples_for_scale_computation" type="int" default="10">
  Target successful samples per scale
</ParamField>

<ParamField path="seed" type="int" default="42">
  Random seed for reproducibility
</ParamField>

<ParamField path="session" type="stanza.logger.session.LoggerSession | None">
  Logger session for telemetry
</ParamField>

<ParamField path="barrier_voltages" type="dict[str, float] | None">
  Barrier voltages to use
</ParamField>

**Returns:**

Median peak spacing in volts

**Raises:**

ValueError: If no valid peak spacings detected


```python
stanza.routines.builtins.dqd_search.routine.run_dqd_search_fixed_barriers(
    ctx: stanza.routines.core.RoutineContext,
    gates: list[str],
    measure_electrode: str,
    current_trace_points: int = 128,
    low_res_csd_points: int = 16,
    high_res_csd_points: int = 48,
    max_samples: int | None = None,
    num_dqds_for_exit: int = 1,
    include_diagonals: bool = False,
    seed: int = 42,
    session: stanza.logger.session.LoggerSession | None = None,
    barrier_voltages: dict[str, float] | None = None,
    **kwargs: typing.Any
) -> dict[str, list[dict[str, typing.Any]]]
```

Run DQD search with fixed barrier voltages using adaptive grid sampling.

**Parameters:**

<ParamField path="ctx" type="stanza.routines.core.RoutineContext">
  Routine context with device and models client
</ParamField>

<ParamField path="gates" type="list[str]">
  Gate electrode names
</ParamField>

<ParamField path="measure_electrode" type="str">
  Current measurement electrode
</ParamField>

<ParamField path="current_trace_points" type="int" default="128">
  Points in diagonal current trace
</ParamField>

<ParamField path="low_res_csd_points" type="int" default="16">
  Points per axis in low-res charge stability diagram
</ParamField>

<ParamField path="high_res_csd_points" type="int" default="48">
  Points per axis in high-res CSD
</ParamField>

<ParamField path="max_samples" type="int | None">
  Maximum grid squares to sample (default: 50% of grid)
</ParamField>

<ParamField path="num_dqds_for_exit" type="int" default="1">
  Exit after finding this many DQDs
</ParamField>

<ParamField path="include_diagonals" type="bool" default="False">
  Use 8-connected neighborhoods vs 4-connected
</ParamField>

<ParamField path="seed" type="int" default="42">
  Random seed for reproducibility
</ParamField>

<ParamField path="session" type="stanza.logger.session.LoggerSession | None">
  Logger session for telemetry
</ParamField>

<ParamField path="barrier_voltages" type="dict[str, float] | None">
  Barrier voltages to use
</ParamField>

**Returns:**

Dictionary with "dqd_squares" key containing list of all DQD squares found


```python
stanza.routines.builtins.dqd_search.routine.run_dqd_search(
    ctx: stanza.routines.core.RoutineContext,
    gates: list[str],
    measure_electrode: str,
    min_search_scale: float,
    max_search_scale: float,
    current_trace_points: int,
    outer_barrier_points: int = 5,
    inner_barrier_points: int = 5,
    num_dqds_for_exit: int = 1,
    session: stanza.logger.session.LoggerSession | None = None,
    **kwargs: typing.Any
) -> dict[str, typing.Any]
```

Run peak spacing and DQD search over barrier voltage sweeps.

Sweeps outer barriers (0, 2) from global turn-on to mean transition voltage.
Sweeps inner barrier (1) from transition to global turn-on voltage.
Runs compute_peak_spacing and run_dqd_search_fixed_barriers at each point.

**Parameters:**

<ParamField path="ctx" type="stanza.routines.core.RoutineContext">
  Routine context
</ParamField>

<ParamField path="gates" type="list[str]">
  Gate electrode names
</ParamField>

<ParamField path="measure_electrode" type="str">
  Current measurement electrode
</ParamField>

<ParamField path="outer_barrier_points" type="int" default="5">
  Number of sweep points for outer barriers
</ParamField>

<ParamField path="inner_barrier_points" type="int" default="5">
  Number of sweep points for inner barrier
</ParamField>

<ParamField path="min_search_scale" type="float">
  Minimum search scale for compute_peak_spacing
</ParamField>

<ParamField path="max_search_scale" type="float">
  Maximum search scale for compute_peak_spacing
</ParamField>

<ParamField path="num_dqds_for_exit" type="int" default="1">
  Number of DQDs for exit
</ParamField>

<ParamField path="current_trace_points" type="int">
  Points per current trace
</ParamField>

<ParamField path="session" type="stanza.logger.session.LoggerSession | None">
  Logger session
</ParamField>

**Returns:**

Dict with run_dqd_search results