Skip to main content

JSON Schema validation for cryowire configuration files

Project description

cryowire

cryowire

Python library for dilution refrigerator wiring configuration — data models, validation, diagram generation, and programmatic building.

Website Docs

Installation

pip install cryowire

Features

Module Description
models Pydantic v2 models (Stage, Component types, WiringConfig)
validate JSON Schema validation against cryowire-spec
loader YAML loading, module expansion, component catalog
builder Programmatic cooldown generation from Python code
summary Wiring summary tables (terminal, Markdown, HTML)
diagram Publication-quality wiring diagrams (matplotlib)

Quick Start

Build a cooldown

from cryowire import (
    Amplifier, Attenuator, ChipConfig, CooldownBuilder,
    CooldownMetadata, Filter, Isolator, Stage,
)

# 1. Component catalog
catalog = {
    "XMA-10dB": Attenuator(model="XMA-2082-6431-10", value_dB=10),
    "XMA-20dB": Attenuator(model="XMA-2082-6431-20", value_dB=20),
    "Eccosorb": Filter(model="XMA-EF-03", filter_type="Eccosorb"),
    "K&L-LPF": Filter(model="K&L-5VLF", filter_type="Lowpass"),
    "RT-AMP": Amplifier(model="MITEQ-AFS3", amplifier_type="RT", gain_dB=20),
    "LNF-HEMT": Amplifier(model="LNF-LNC03_14A", amplifier_type="HEMT", gain_dB=40),
    "LNF-ISO": Isolator(model="LNF-ISC4_12A"),
}

# 2. Build cooldown (reference components by key)
cooldown = (
    CooldownBuilder(
        chip=ChipConfig(name="sample-8q", num_qubits=8, qubits_per_readout_line=4),
        metadata=CooldownMetadata(cryo="your-cryo", cooldown_id="cd001", date="2026-03-06"),
        catalog=catalog,
        control={
            Stage.K50: ["XMA-10dB"],
            Stage.K4: ["XMA-20dB"],
            Stage.MXC: ["XMA-20dB", "Eccosorb"],
        },
        readout_send={Stage.K50: ["XMA-10dB"], Stage.K4: ["XMA-10dB"]},
        readout_return={
            Stage.RT: ["RT-AMP"],
            Stage.K50: ["LNF-HEMT"],
            Stage.CP: ["LNF-ISO", "LNF-ISO"],
        },
    )
    .add("C00", Stage.STILL, "K&L-LPF")
    .remove("RR00", Stage.CP, index=1)
    .build()
)

# 3. Per-line overrides (context manager)
with cooldown.for_lines("C03", "C05") as lines:
    lines.remove(Stage.MXC, component_type=Filter)
    lines.replace(Stage.K4, 0, "XMA-10dB")

# Summary (terminal / markdown / html)
cooldown.summary()
md = cooldown.summary(fmt="markdown")

# Publication-quality SVG diagram
cooldown.diagram(output="wiring.svg", representative=True)

# Export YAML files
cooldown.write("output/")

Load & inspect an existing cooldown

from cryowire import load_cooldown, print_summary, generate_diagram

metadata, control, readout_send, readout_return = load_cooldown("path/to/cooldown")

print_summary(control, readout_send, readout_return)
generate_diagram(control, readout_send, readout_return, output="wiring.svg")

Template-based generation

from cryowire import build_cooldown

build_cooldown(
    output_dir="your-cryo/2026/cd001",
    cryo="your-cryo",
    chip_name="sample-chip",
    num_qubits=16,
)

Validate YAML files

from cryowire import validate_wiring, validate_metadata
import yaml

with open("control.yaml") as f:
    data = yaml.safe_load(f)

validate_wiring(data)      # raises jsonschema.ValidationError on failure
validate_metadata(meta)

Component Types

Class Fields Diagram Label Example
Attenuator value_dB 10 dB Attenuator(model="XMA-10dB", value_dB=10)
Filter filter_type Lowpass / FLT Filter(model="K&L", filter_type="Lowpass")
Isolator ISO Isolator(model="LNF-ISC4_12A")
Amplifier amplifier_type, gain_dB +40 dB Amplifier(model="HEMT", gain_dB=40)

All components share model and serial fields, and expose label, summary_label, attenuation, gain properties.

Schemas

This package bundles JSON Schema files from cryowire-spec:

Schema Function Validates
wiring.schema.json validate_wiring() control.yaml, readout_send.yaml, readout_return.yaml
metadata.schema.json validate_metadata() metadata.yaml
components.schema.json validate_components() components.yaml
chip.schema.json validate_chip() chip.yaml

Documentation

Full documentation is available at cryowire.github.io/cryowire.

Examples

A Jupyter notebook tutorial is available in the examples/notebooks/ directory.

pip install cryowire jupyter
jupyter notebook examples/notebooks/tutorial.ipynb

The notebook covers builder usage, summary tables, SVG diagram rendering, and component add/remove/replace operations.

Try it online in the Playground — no installation required.

Development

uv sync
uv run pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cryowire-0.0.4.tar.gz (517.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cryowire-0.0.4-py3-none-any.whl (40.7 kB view details)

Uploaded Python 3

File details

Details for the file cryowire-0.0.4.tar.gz.

File metadata

  • Download URL: cryowire-0.0.4.tar.gz
  • Upload date:
  • Size: 517.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cryowire-0.0.4.tar.gz
Algorithm Hash digest
SHA256 8c8f726a83cb5522e46714167fa28f5f95375e3bfbd3f20a03e5f97605c8dda8
MD5 ffe63c9b291c1921d3befdfc4b11a12c
BLAKE2b-256 0fec14f1e5fa74f417fb0714e556797716d75cdf2e04e86a8adb77c5fdf448bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for cryowire-0.0.4.tar.gz:

Publisher: publish.yml on cryowire/cryowire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cryowire-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: cryowire-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 40.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cryowire-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 c59d955692c8aa8cde223785d9399a8c9345a23223faa8e16dd93b7d9c7c4ec4
MD5 dbe96adccfb9b1cc433358a813938d81
BLAKE2b-256 f2603a837b388f67d430702648e8a76ea6afabe669fca0daeb5d293dbb7b33ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for cryowire-0.0.4-py3-none-any.whl:

Publisher: publish.yml on cryowire/cryowire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page