quchip.devices.transmon.charge_basis

Transmon authored in a finite integer-charge basis.

Classes

ChargeBasisTransmon(E_C, E_J[, n_g, levels, ...])

Transmon with its Hamiltonian authored in the integer-charge basis.

class quchip.devices.transmon.charge_basis.ChargeBasisTransmon(E_C, E_J, n_g=0.0, levels=None, label=None, *, num_basis=61, basis=None, collapse_model='fermi_golden', coupling_channel=None, collapse_rate_threshold=1e-08, **noise)[source]

Bases: DeviceModel

Transmon with its Hamiltonian authored in the integer-charge basis.

Parameters:
  • E_C (Scalar)

  • E_J (Scalar)

  • n_g (Scalar)

  • levels (int | None)

  • label (str | None)

  • num_basis (int)

  • basis (Literal['native', 'eigen'] | None)

  • collapse_model (Literal['fermi_golden', 'ladder'])

  • coupling_channel (Literal['charge'] | None)

  • collapse_rate_threshold (float)

  • noise (Any)

tunable_param_names = ('E_C', 'E_J', 'n_g')

Bare parameters this device exposes as differentiable / tunable scalars. fit_a_dress walks this tuple to discover what it is allowed to optimize on each device, decoupling the inverse-design surface from any specific device model. Three states, keyed on whether the value is explicitly declared:

  • No explicit declaration anywhere in the DeviceModel lineage — the default is derived: every declared parameter() field, in declaration order (see DeviceModel.__init_subclass__).

  • Explicit tuple on the class or an ancestor — exact curation, validated at class-definition time; authoritative and inherited until a subclass explicitly replaces it.

  • Explicit empty tuple — deliberately freezes the device (and its subclasses, until one replaces it) out of inverse design.

On a plain (non-DeviceModel) BaseDevice subclass there is no derivation; the default stays empty unless the subclass declares its own tuple — e.g. Fluxonium uses ("E_C", "E_J", "E_L", "phi_ext").

approximation = 'Exact diagonalization in a finite integer-charge basis; accuracy is governed by num_basis.'

Declared approximation-regime statement surfaced by physics_notes() — the mechanism that keeps a model’s stated validity range attached to the class rather than buried in a docstring a caller may not read.

computational = True

Whether this device represents a computational qubit, as opposed to e.g. a bus resonator or a coupler element.

requires_projection_levels: ClassVar[bool] = True
structural_setting_names = ('num_basis', 'basis', 'projection_levels', 'collapse_model', 'coupling_channel', 'collapse_rate_threshold')
E_C: Scalar = Parameter(default=unbound, positive=True, nonnegative=False, serialize=True, unit='GHz', symbol='E_C', noise=False, kw_only=False, required=False)
E_J: Scalar = Parameter(default=unbound, positive=True, nonnegative=False, serialize=True, unit='GHz', symbol='E_J', noise=False, kw_only=False, required=False)
n_g: Scalar = Parameter(default=0.0, positive=False, nonnegative=False, serialize=True, unit=None, symbol='n_g', noise=False, kw_only=False, required=False)
dissipation(op, p)[source]

Return device-local Lindblad channels.

The base channels implement T1, T2, and thermal occupation. Subclasses may append channels with super().dissipation(op, p).

Parameters:
Return type:

tuple[CollapseChannel, …]

local_space()[source]

Return the authored integer-charge space.

Return type:

ChargeSpace

local_hamiltonian(op, p)[source]

Return 4 E_C (n - n_g)^2 - E_J cos(phi).

Parameters:
Return type:

PhysicsExpr

property freq: Any

Return the isolated 0-to-1 transition in GHz.

eigenenergies()[source]

Return isolated energies shifted to zero at the ground state.

Return type:

Any

eigenvectors()[source]

Return the isolated energy-ordered eigenvectors in the charge basis.

Return type:

Any

charge_coupling_operator()[source]

Return the authored charge operator.

Return type:

Any

phase_coupling_operator()[source]

Return sin(phi) in the authored charge basis.

Return type:

Any

tunable_param_bounds(name, value)[source]

Return the physical charge period for n_g.

Parameters:
Return type:

tuple[float, float]

physics_notes()[source]

Return base device notes plus the declared approximation, if any.

Return type:

list[str]

classmethod from_frequency(freq, anharmonicity, n_g=0.0, levels=None, label=None, *, num_basis=61, basis=None, **kwargs)[source]

Construct from the leading transmon-regime inversion.

Parameters:
Return type:

ChargeBasisTransmon

to_dict()[source]

Serialize common device state plus declared parameter values.

Return type:

dict[str, Any]

classmethod from_dict(data)[source]

Reconstruct the device from to_dict() output.

Parameters:

data (dict[str, Any])

Return type:

ChargeBasisTransmon