qiskit-community / qiskit-dynamics

Tools for building and solving models of quantum systems in Qiskit
https://qiskit-community.github.io/qiskit-dynamics/
Apache License 2.0
105 stars 61 forks source link

Upgrades for `DynamicsBackend.from_backend` #298

Open rupeshknn opened 11 months ago

rupeshknn commented 11 months ago

Information

What is the current behavior?

  1. Instantiating a DynamicsBackend using DynamicsBackend.from_backend has an incorrect Target object and a redundant subsystem list. Since the only open-access ibmq backends are 127 qubits, backend info is lengthy.
  2. DynamicsBackend.target.qubit_properties is empty when Instantiated using DynamicsBackend.from_backend. Qubit frequencies are needed to run calibration experiments. The information is available in Solver through an internal attribute _channel_carrier_freqs.

Steps to reproduce the problem

from qiskit_ibm_provider import ibm_provider
from qiskit_dynamics import DynamicsBackend

provider = ibm_provider.IBMProvider()
kyoto = provider.get_backend('ibm_kyoto')
sim_backend = DynamicsBackend.from_backend(kyoto,subsystem_list=[0])

# 1.)
print("num of qubits = ", sim_backend.num_qubits) # or sim_backend.target.num_qubits
# num of qubits = 127
print("subsystem dims = ", sim_backend.options.subsystem_dims`)
# subsystem dims = [3,1,1,1.....(127 times)]

2.)
print(kyoto.target.qubit_properties[0].frequency)
# 4908834667.169063
print(sim_backend.target.qubit_properties[0].frequency)
# TypeError: 'NoneType' object is not subscriptable

Suggested solutions

  1. DynamicsBackend.from_backend must assign a Target with the unused qubits instructions removed.`
  2. The qubit frequencies estimate as available in the Hardware should be available in DynamicsBackend.target.qubit_properties or alternatively, it can be demonstrated in the tutorial on how to access and add the qubit frequencies to target.