SymbolicCircuit#

class scqubits.core.symbolic_circuit.SymbolicCircuit(nodes_list, branches_list, branch_var_dict, basis_completion='heuristic', use_dynamic_flux_grouping=False, initiate_sym_calc=True, input_string='')[source]#

Describes a circuit consisting of nodes and branches.

Examples

For a transmon qubit, the input file reads:

` # file_name: transmon_num.inp nodes: 2 branches: C       1,2     1 JJ      1,2     1       10 `

The Circuit object can be initiated using:

Circuit.from_input_file(“transmon_num.inp”)

Parameters:
  • nodes_list (List[Nodes]) – List of nodes in the circuit

  • branches_list (List[Branch]) – List of branches connecting the above set of nodes.

  • basis_completion (str) – choices are: “heuristic” (default) or “canonical”; selects type of basis for completing the transformation matrix.

  • use_dynamic_flux_grouping (bool) – set to False by default. Indicates if the flux allocation is done by assuming that flux is time dependent. When set to True, it disables the option to change the closure branches.

  • initiate_sym_calc (bool) – set to True by default. Initiates the object attributes by calling the function initiate_symboliccircuit method when set to True.

Return type:

SerializableType

Methods

SymbolicCircuit.__init__(nodes_list, ...[, ...])

SymbolicCircuit.are_branchsets_disconnected(...)

Determines whether two sets of branches are disconnected.

SymbolicCircuit.check_transformation_matrix(...)

Method to identify the different modes in the transformation matrix provided by the user.

SymbolicCircuit.configure([...])

Method to initialize the CustomQCircuit instance and initialize all the attributes needed before it can be passed on to AnalyzeQCircuit.

SymbolicCircuit.create_from_file(filename)

Read initdata and spectral data from file, and use those to create a new SpectrumData object.

SymbolicCircuit.default_params()

rtype:

Dict[str, Any]

SymbolicCircuit.deserialize(io_data)

Take the given IOData and return an instance of the described class, initialized with the data stored in io_data.

SymbolicCircuit.filewrite(filename)

Convenience method bound to the class.

SymbolicCircuit.from_yaml(input_string[, ...])

Constructs the instance of Circuit from an input string.

SymbolicCircuit.generate_symbolic_hamiltonian([...])

Returns the Hamiltonian of the circuit in terms of the new variables \(\theta_i\).

SymbolicCircuit.generate_symbolic_lagrangian([...])

Returns four symbolic expressions: lagrangian_θ, potential_θ, lagrangian_φ, potential_φ, where θ represents the set of new variables and φ represents the set of node variables

SymbolicCircuit.is_any_branch_parameter_symbolic()

SymbolicCircuit.purely_harmonic_transformation()

rtype:

Tuple[ndarray, ndarray]

SymbolicCircuit.serialize()

Convert the content of the current class instance into IOData format.

SymbolicCircuit.update_param_init_val(...)

Updates the param init val for param_name

SymbolicCircuit.variable_transformation_matrix()

Evaluates the boundary conditions and constructs the variable transformation matrix, which is returned along with the dictionary var_categories which classifies the types of variables present in the circuit.

static are_branchsets_disconnected(branch_list1, branch_list2)[source]#

Determines whether two sets of branches are disconnected.

Parameters:
  • branch_list1 (List[Branch]) – first list of branches

  • branch_list2 (List[Branch]) – second list of branches

Returns:

Returns True if the branches have a connection, else False

Return type:

bool

check_transformation_matrix(transformation_matrix, enable_warnings=True)[source]#

Method to identify the different modes in the transformation matrix provided by the user.

Parameters:
  • transformation_matrix (ndarray) – numpy ndarray which is a square matrix having the dimensions of the number of nodes present in the circuit.

  • warnings – If False, will not raise the warnings regarding any unidentified modes. It is set to True by default.

  • enable_warnings (bool) –

Return type:

Dict[str, list]

Returns:

A dictionary of lists which has the variable indices classified with var indices corresponding to the rows of the transformation matrix

configure(transformation_matrix=None, closure_branches=None, use_dynamic_flux_grouping=None)[source]#

Method to initialize the CustomQCircuit instance and initialize all the attributes needed before it can be passed on to AnalyzeQCircuit.

Parameters:
  • transformation_matrix (Optional[ndarray]) – array used to set a transformation matrix other than the one generated by the method variable_transformation_matrix.

  • closure_branches (Optional[List[Branch]]) – List of branches for which the external flux variables will be defined.

  • use_dynamic_flux_grouping (bool | None) –

classmethod create_from_file(filename)#

Read initdata and spectral data from file, and use those to create a new SpectrumData object.

Returns:

new SpectrumData object, initialized with data read from file

Return type:

SpectrumData

Parameters:

filename (str) –

classmethod deserialize(io_data)#

Take the given IOData and return an instance of the described class, initialized with the data stored in io_data.

Return type:

TypeVar(SerializableType, bound= Serializable)

Parameters:

io_data (IOData) –

filewrite(filename)#

Convenience method bound to the class. Simply accesses the write function.

Return type:

None

Parameters:

filename (str) –

classmethod from_yaml(input_string, from_file=True, basis_completion='heuristic', use_dynamic_flux_grouping=None, initiate_sym_calc=True)[source]#

Constructs the instance of Circuit from an input string. Here is an example of an input string that is used to initiate an object of the class SymbolicCircuit:

` #zero-pi.yaml nodes    : 4 # zero-pi branches: - [JJ, 1,2, EJ = 10, 20] - [JJ, 3,4, 10, 20] - [L, 2,3, 0.008] - [L, 4,1, 0.008] - [C, 1,3, 0.02] - [C, 2,4, 0.02] `

Parameters:
  • input_string (str) – String describing the number of nodes and branches connecting then along with their parameters

  • from_file (bool) – Set to True by default, when a file name should be provided to input_string, else the circuit graph description in YAML should be provided as a string.

  • basis_completion (str) – choices: “heuristic” or “canonical”; used to choose a type of basis for completing the transformation matrix. Set to “heuristic” by default.

  • use_dynamic_flux_grouping (bool) – set to False by default. Indicates if the flux allocation is done by assuming that flux is time dependent. When set to True, it disables the option to change the closure branches.

  • initiate_sym_calc (bool) – set to True by default. Initiates the object attributes by calling the function initiate_symboliccircuit method when set to True. Set to False for debugging.

Returns:

Instance of the class SymbolicCircuit

generate_symbolic_hamiltonian(substitute_params=False, reevaluate_lagrangian=False)[source]#

Returns the Hamiltonian of the circuit in terms of the new variables \(\theta_i\).

Parameters:
  • substitute_params – When set to True, the symbols defined for branch parameters will be substituted with the numerical values in the respective Circuit attributes.

  • reevaluate_lagrangian (bool) –

Return type:

Expr

generate_symbolic_lagrangian(substitute_params=False)[source]#

Returns four symbolic expressions: lagrangian_θ, potential_θ, lagrangian_φ, potential_φ, where θ represents the set of new variables and φ represents the set of node variables

Return type:

Tuple[Expr, Expr, Expr, Expr]

Parameters:

substitute_params (bool) –

serialize()#

Convert the content of the current class instance into IOData format.

Return type:

IOData

update_param_init_val(param_name, value)[source]#

Updates the param init val for param_name

variable_transformation_matrix()[source]#

Evaluates the boundary conditions and constructs the variable transformation matrix, which is returned along with the dictionary var_categories which classifies the types of variables present in the circuit.

Return type:

Tuple[ndarray, Dict[str, List[int]]]

Returns:

tuple of transformation matrix for the node variables and var_categories dict which classifies the variable types for each variable index