qermit.utils#
- class qermit.taskgraph.utils.SymbolsDict[source]#
A helper class for standardising interfacing with Circuit Symbolics in qermit. Methods take different containers that hold some kind of symbols representation and return a SymbolsDict object. Methods access self._symbolic_map or use other accessors to modify or add new symbols.
- __init__() None [source]#
Default constructor, creates an empty OrderedDict() object for future symbols to be added to.
- __weakref__#
list of weak references to the object (if defined)
- add_symbol(symbol: str | Symbol)[source]#
Adds any passed Symbol (in string form or sympy Symbol type) as a key to dictionary with None value assigned.
- Parameters:
symbol (Union[str, Symbol]) – Symbol to be added to self._symbolic_map
- add_value(symbol: Symbol, value: float)[source]#
Assigns value to self._symbolic_map[symbol]. If symbol not in object then throws an error.
- Parameters:
symbol (Symbol) – Symbol to have value assigned.
value (float) – Value to assign to symbol.
- get_symbolic_map(symbol_values: ndarray) Dict[Symbol, float] [source]#
Assigns given values in parameters to keys in self._symbolic_map in order, for a new dictionary object. Returns just this dictionary type.
- Parameters:
symbol_values (ndarray) – Ordered values to match to ordered keys for new dict object.
- Returns:
New dict object mapping symbol to value.
- Return type:
Dict[Symbol, float]
- set_values(symbol_values: ndarray)[source]#
Assigns given values in parameters to keys in self._symbolic_map in order, for a new dictionary object.
- Parameters:
symbol_values (ndarray) – Orderd values to match to ordered keys for new dict object.
- Returns:
New dict object mapping symbol to value.
- Return type:
Dict[Symbol, float]
- classmethod symbols_from_circuit(circuit: Circuit) SymbolsDict [source]#
Given a pytket Circuit, returns a SymbolsDict object capturing given circuits free symbols.
- Parameters:
circuit (Circuit) – Pytket circuit with potential symbols.
- classmethod symbols_from_dict(symbol_dict: Dict[Symbol, None | float]) SymbolsDict [source]#
Assigns to mit_symbols attribute _symbolic_map straight from passed dictionary of Symbol to None/float.
- Parameters:
symbol_dict (Dict[Symbol, Union[None, float]) – Dictionary from Circuit symbolics to values.
- classmethod symbols_from_list(symbols_list: Iterable[Symbol | str]) SymbolsDict [source]#
Adds all symbols (or string representing Symbol) as dict entries with no value.
- Parameters:
symbols_list (Iterable[Union[Symbol, str]) – A list of strings representing Symbols or Symbols.
- property symbols_list: Iterable[Symbol]#
Returns all symbols held in dictionary of symbols in SymbolsDict object.
- Returns:
Iterable containing all keys from _symbolic_map, i.e. all Symbols
- Return type:
Iterable[Symbol]
- class qermit.taskgraph.utils.MeasurementCircuit(symbolic_circuit: Circuit, symbols: SymbolsDict | None = None)[source]#
Stores a single measurement circuit that captures one or multiple observable estimations for some Ansatz Circuit.
- __init__(symbolic_circuit: Circuit, symbols: SymbolsDict | None = None)[source]#
Stores information required to instantiate any MeasurementCircuit with parameterised symbols.
- Parameters:
symbolic_circuit (Circuit) – Measurement circuit, may or may not have symbolics.
symbols (SymbolsDict) – SymbolsDict object holding symbols and values for all symbols in Circuit. Default none if circuit not symbolic.
- __weakref__#
list of weak references to the object (if defined)
- property circuit: Circuit#
Returns measurement circuit stored in oracle.
- Returns:
Circuit in oracle
- Return type:
Circuit
- get_parametric_circuit() Circuit [source]#
Substitutes parameters held in SymbolDict into copy of circuit and returns.
- Returns:
Substituted circuit
- Return type:
Circuit
- property symbols: Tuple[Symbol, ...]#
Converts symbols_list property held in SymbolsDict to a tuple and returns it.
- Returns:
All Symbols in object
- Return type:
Tuple[List[Symbol]]
- class qermit.taskgraph.utils.ObservableTracker(qubit_pauli_operator: QubitPauliOperator = {})[source]#
Stores all measurement circuits required to get observable expectations for each QubitPauliString in a given QubitPauliOperator.
- __init__(qubit_pauli_operator: QubitPauliOperator = {})[source]#
Default constructor, creates an empty dict object for mapping QubitPauliStrings to measurement circuits and the qubits measured to get expectation, along with an empty list for storing measurement circuits and a list for storing partitions.
- Parameters:
qubit_pauli_operator – QubitPauliOperator for which given ObservableTracker is expected to retain measurement circuits all QubitPauliString keys for before any Backend execution.
- __weakref__#
list of weak references to the object (if defined)
- add_measurement_circuit(circuit: MeasurementCircuit, measurement_info: List[Tuple[QubitPauliString, List[Bit], bool]])[source]#
Adds given measurement circuit to stored _measurement_circuits attribute and for each qubit pauli string and qubits in associated strings, updates dictionary between string and its measurement circuit + bit to measure and whether result should be inverted.
- Parameters:
circuit (MeasurementCircuit) – Measurement circuit to run to get results.
measurement_info (List[MeasurementInfo] i.e. List[Tuple[QubitPauliString, List[Bit], bool]]) – Each entry contains a QubitPauliString, the bits required to take expectation over in resulting result and a bool signifying whether expectation should be inverted when taking result.
- check_string(string: QubitPauliString) bool [source]#
Returns true if given QubitPauliString has a measurement circuit stored in self._measurement_circuits.
- Parameters:
string (QubitPauliString) – Operator measurement circuit existence being checked for.
- Returns:
True if string has measurement circuit, false if not.
- Return type:
bool
- extend_operator(new_operator: QubitPauliOperator)[source]#
Extends self._qubit_pauli_operator to include tuples in passed operator.
- Parameters:
new_operator (QubitPauliOperator) – Each QubitPauliString and coefficient added to held operator.
- from_ObservableTracker() ObservableTracker [source]#
Copies each class attribute from to_copy to self. Returns self.
- Parameters:
to_copy ('ObservableTracker') – An alternative ObservableTracker for making a copy of.
- Returns:
New ObservableTracker object
- get_empty_strings() List[QubitPauliString] [source]#
Returns all strings in operator that don’t have some assigned MeasurementCircuit.
- Returns:
Strings that require some MeasurementCircuit to be set
- Return type:
List[QubitPauliString]
- get_expectations(results: List[BackendResult]) QubitPauliOperator [source]#
For given list of results, returns a QubitPauliOperator giving an expectation for each QubitPauliString held in self._qps_to_indices. Expectation derived by taking parity of counts.
- Parameters:
results – Result objects to derive counts and then an expectation from.
- Returns:
Expectation for each QubitPauliString in self._qps_to_indices
- Type:
QubitPauliOperator
- get_measurement_circuits(string: QubitPauliString) List[MeasurementCircuit] [source]#
Returns the measurements required to be run for a single QubitPauliString’s expectation.
- Parameters:
string (QubitPauliString) – QubitPauliString of interest.
- Returns:
Measurement Circuit run to find expection of QubitPauliString for some undefined ansatz circuit.
- Return type:
- property measurement_circuits: List[MeasurementCircuit]#
Returns all measurement circuits aded to ObservableTracker via get_measurement_circuit.
- Returns:
All measurement circuits held in ObservableTracker self._measurement_circuits attirbute.
- Return type:
List[MeasurementCircuit]
- modify_coefficients(new_coefficients: List[Tuple[QubitPauliString, float]])[source]#
Updates coefficients in held QubitPauliOperator with new coefficients. Each QubitPauliString must already be in self._qubit_pauli_operator
- Parameters:
new_coefficients (List[Tuple[QubitPauliString, float]]) – Each Tuple contains a QubitPauliString a new coefficient.
- property qubit_pauli_operator#
Returns stored qubit pauli operator
- Returns:
QubitPauliOperator object stored in class
- Return type:
QubitPauliOperator