Skip to content

Commit

Permalink
Remove RestlessMixin and deprecate restless nodes
Browse files Browse the repository at this point in the history
This change removes the previously deprecated `RestlessMixin` class and
deprecates the restless processing nodes `RestlessToIQ` and
`RestlessToCounts`. The motivation for the removals is to streamline the
remaining code base. The restless features are little used and it
remains possible to set up experiments to run in restless mode by using
a custom data processor even without support in the base package.
  • Loading branch information
wshanks committed Mar 1, 2025
1 parent 18f5486 commit fdd2ccf
Show file tree
Hide file tree
Showing 20 changed files with 81 additions and 798 deletions.
1 change: 0 additions & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,6 @@
"manuals/verification/quantum_volume": "_images/quantum_volume_2_0.png",
"manuals/measurement/readout_mitigation": "_images/readout_mitigation_4_0.png",
"manuals/verification/randomized_benchmarking": "_images/randomized_benchmarking_3_1.png",
"manuals/measurement/restless_measurements": "_images/restless_shots.png",
"manuals/verification/state_tomography": "_images/state_tomography_3_0.png",
"manuals/characterization/t1": "_images/t1_0_0.png",
"manuals/characterization/t2ramsey": "_images/t2ramsey_4_0.png",
Expand Down
2 changes: 1 addition & 1 deletion docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ We've divided up the documentation into four sections with different purposes:
these manuals:

* How to analyze 1- and 2-qubit errors in :doc:`randomized benchmarking </manuals/verification/randomized_benchmarking>`
* How to calculate the speedup from using :doc:`restless measurements </manuals/measurement/restless_measurements>`
* How to characterize a quantum circuit using :doc:`state tomography </manuals/verification/state_tomography>`

+++

Expand Down
241 changes: 0 additions & 241 deletions docs/manuals/measurement/restless_measurements.rst

This file was deleted.

Binary file removed docs/manuals/measurement/restless_shots.png
Binary file not shown.
5 changes: 0 additions & 5 deletions docs/tutorials/custom_experiment.rst
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,6 @@ Optionally, to allow configuring experiment and execution options, you can overr
metadata["device_components"] = list(map(Resonator, self.physical_qubits))
return metadata

Furthermore, some characterization and calibration experiments can be run with restless
measurements, i.e. measurements where the qubits are not reset and circuits are executed
immediately after the previous measurement. Here, the :class:`.RestlessMixin` class
can help to set the appropriate run options and data processing chain.

Analysis subclassing
--------------------

Expand Down
8 changes: 1 addition & 7 deletions docs/tutorials/data_processor.rst
Original file line number Diff line number Diff line change
Expand Up @@ -192,8 +192,7 @@ processing connects the data returned by the backend to the data that
the analysis classes need. Typically, you will not need to implement
the data processing yourself since Qiskit Experiments has built-in
methods that determine the correct instance of :class:`.DataProcessor` for
your data. More advanced data processing includes, for example, handling
:doc:`restless measurements </manuals/measurement/restless_measurements>`.
your data.

References
----------
Expand All @@ -202,8 +201,3 @@ References
Christopher J. Wood, Ali Javadi-Abhari, David McKay, Qiskit Pulse:
Programming Quantum Computers Through the Cloud with Pulses, Quantum
Science and Technology **5**, 044006 (2020). https://arxiv.org/abs/2004.06755.
See also
--------

- Experiment manual: :doc:`/manuals/measurement/restless_measurements`
12 changes: 12 additions & 0 deletions qiskit_experiments/data_processing/nodes.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
from uncertainties import unumpy as unp, ufloat

from qiskit.result.postprocess import format_counts_memory
from qiskit.utils import deprecate_func
from qiskit_experiments.data_processing.data_action import DataAction, TrainableDataAction
from qiskit_experiments.data_processing.exceptions import DataProcessorError
from qiskit_experiments.data_processing.discriminator import BaseDiscriminator
Expand Down Expand Up @@ -910,6 +911,17 @@ class RestlessNode(DataAction, ABC):
Once the shots have been ordered in this fashion the data can be post-processed.
"""

@deprecate_func(
since="0.9",
additional_msg=(
"Restless data processing nodes will be removed from "
"qiskit-experiments. Refer to the RestlessMixin code of "
"qiskit-experiment 0.8 and the code for RestlessToIQ and "
"RestlessToCounts for the way to use a custom restless "
"processor on an experiment."
),
package_name="qiskit-experiments",
)
def __init__(
self, validate: bool = True, memory_allocation: ShotOrder = ShotOrder.circuit_first
):
Expand Down
2 changes: 1 addition & 1 deletion qiskit_experiments/data_processing/processor_library.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def get_kerneled_processor(
one dimension.
meas_return: Type of data returned by the backend, i.e., averaged data or single-shot data.
normalize: If True then normalize the output data to the interval ``[0, 1]``.
pre_nodes: any nodes to be applied first in the data processing chain such as restless nodes.
pre_nodes: any nodes to be applied first in the data processing chain
Returns:
An instance of DataProcessor capable of processing `meas_level=MeasLevel.KERNELED` data for
Expand Down
2 changes: 0 additions & 2 deletions qiskit_experiments/framework/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,6 @@
BackendData
BackendTiming
RestlessMixin
"""
from qiskit.providers.options import Options
Expand Down Expand Up @@ -161,4 +160,3 @@
)
from .json import ExperimentEncoder, ExperimentDecoder
from .provider_interfaces import BaseJob, BaseProvider, ExtendedJob, IBMProvider, Job, Provider
from .restless_mixin import RestlessMixin
Loading

0 comments on commit fdd2ccf

Please sign in to comment.