Skip to content

Commit

Permalink
Remove need of PulseDefaults
Browse files Browse the repository at this point in the history
  • Loading branch information
kt474 committed Feb 3, 2025
1 parent 12b8181 commit 0c1eca3
Show file tree
Hide file tree
Showing 4 changed files with 1 addition and 54 deletions.
6 changes: 0 additions & 6 deletions qiskit_ibm_runtime/fake_provider/fake_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -245,14 +245,10 @@ def target(self) -> Target:
props = None
if self._props_dict is not None:
props = BackendProperties.from_dict(self._props_dict) # type: ignore
defaults = None
if self._defs_dict is not None:
defaults = PulseDefaults.from_dict(self._defs_dict) # type: ignore

self._target = convert_to_target(
configuration=conf,
properties=props,
defaults=defaults,
# Fake backends use the simulator backend.
# This doesn't have the exclusive constraint.
include_control_flow=True,
Expand Down Expand Up @@ -479,12 +475,10 @@ def refresh(self, service: QiskitRuntimeService) -> None:

updated_configuration = BackendConfiguration.from_dict(self._conf_dict)
updated_properties = BackendProperties.from_dict(self._props_dict)
updated_defaults = PulseDefaults.from_dict(self._defs_dict)

self._target = convert_to_target(
configuration=updated_configuration,
properties=updated_properties,
defaults=updated_defaults,
include_control_flow=True,
include_fractional_gates=True,
)
Expand Down
3 changes: 0 additions & 3 deletions qiskit_ibm_runtime/ibm_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,6 @@ def _convert_to_target(self, refresh: bool = False) -> None:
self._target = convert_to_target(
configuration=self._configuration, # type: ignore[arg-type]
properties=self._properties,
defaults=self._defaults,
)

@classmethod
Expand Down Expand Up @@ -308,12 +307,10 @@ def target_history(self, datetime: Optional[python_datetime] = None) -> Target:
Returns:
Target with properties found on `datetime`
"""
self.defaults()

return convert_to_target(
configuration=self._configuration, # type: ignore[arg-type]
properties=self.properties(datetime=datetime), # pylint: disable=unexpected-keyword-arg
defaults=self._defaults,
)

def refresh(self) -> None:
Expand Down
43 changes: 1 addition & 42 deletions qiskit_ibm_runtime/utils/backend_converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
from qiskit.providers.exceptions import BackendPropertyError
from qiskit.transpiler.target import InstructionProperties, Target

from ..models import BackendConfiguration, BackendProperties, PulseDefaults
from ..models import BackendConfiguration, BackendProperties

# is_fractional_gate used to be defined in this module and might be referenced
# from here externally
Expand All @@ -45,7 +45,6 @@
def convert_to_target(
configuration: BackendConfiguration,
properties: BackendProperties = None,
defaults: PulseDefaults = None,
*,
include_control_flow: bool = True,
include_fractional_gates: bool = True,
Expand All @@ -59,7 +58,6 @@ def convert_to_target(
Args:
configuration: Backend configuration as ``BackendConfiguration``
properties: Backend property dictionary or ``BackendProperties``
defaults: Backend pulse defaults dictionary or ``PulseDefaults``
include_control_flow: Set True to include control flow instructions.
include_fractional_gates: Set True to include fractioanl gates.
Expand Down Expand Up @@ -260,45 +258,6 @@ def _get_value(prop_dict: Dict, prop_name: str) -> Any:
if not filter_faulty or (q not in faulty_qubits)
}

if defaults:
inst_sched_map = defaults.instruction_schedule_map

for name in inst_sched_map.instructions:
for qubits in inst_sched_map.qubits_with_instruction(name):

if not isinstance(qubits, tuple):
qubits = (qubits,)

if (
name not in all_instructions
or name not in prop_name_map
or prop_name_map[name] is None
or qubits not in prop_name_map[name]
):
logger.debug(
"Gate calibration for instruction %s on qubits %s is found "
"in the PulseDefaults payload. However, this entry is not defined in "
"the gate mapping of Target. This calibration is ignored.",
name,
qubits,
)
continue

if (name, qubits) in faulty_ops:
continue

entry = inst_sched_map._get_calibration_entry(name, qubits)

try:
prop_name_map[name][qubits].calibration = entry
except AttributeError:
logger.info(
"The PulseDefaults payload received contains an instruction %s on "
"qubits %s which is not present in the configuration or properties payload.",
name,
qubits,
)

# Add parsed properties to target
target = Target(**in_data)
for inst_name in all_instructions:
Expand Down
3 changes: 0 additions & 3 deletions test/unit/test_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
BackendConfiguration,
BackendProperties,
BackendStatus,
PulseDefaults,
)
from qiskit_ibm_runtime.utils.backend_converter import convert_to_target

Expand Down Expand Up @@ -268,7 +267,6 @@ def test_control_flow_converter(self):
target = convert_to_target(
BackendConfiguration.from_dict(backend._conf_dict),
BackendProperties.from_dict(backend._props_dict),
PulseDefaults.from_dict(backend._defs_dict),
)
self.assertTrue(target.instruction_supported("if_else", ()))
self.assertTrue(target.instruction_supported(operation_class=IfElseOp))
Expand All @@ -288,7 +286,6 @@ def test_reset(self):
target = convert_to_target(
BackendConfiguration.from_dict(backend._conf_dict),
BackendProperties.from_dict(backend._props_dict),
PulseDefaults.from_dict(backend._defs_dict),
)
self.assertTrue(target.instruction_supported("reset"))
self.assertTrue(target.instruction_supported(operation_class=Reset))
Expand Down

0 comments on commit 0c1eca3

Please sign in to comment.