============= Release Notes ============= .. release-notes:: :earliest-version: 0.7.0 .. _Release Notes_0.7.0: 0.7.0 ===== .. _Release Notes_0.7.0_Prelude: Prelude ------- .. releasenotes/notes/0.7/0_7_release-96efcec2c45dcf74.yaml @ b'517532eb307897896d549f7e3de69485801d67a8' The Qiskit Experiments 0.7 release adds the Layer Fidelity experiment and makes some fixes and improvements. .. _Release Notes_0.7.0_New Features: New Features ------------ .. releasenotes/notes/0.7/layer-fidelity-1e09dea9e5b69515.yaml @ b'517532eb307897896d549f7e3de69485801d67a8' - Add a new experiment class :class:`.LayerFidelity` to measure `layer fidelity and EPLG (error per layered gate) `_, which is a holistic benchmark to characterize the full quality of the devices at scale. It has an experimental feature: its :meth:`circuits` exceptionally returns circuits on physical qubits (not virtual qubits as usual). Its analysis class :class:`.LayerFidelityAnalysis` returns :class:`.AnalysisResultData` which contains several ``extra`` entries to help additional analyses: e.g. ``qubits`` to ease the query of sub-analysis results and ``reason`` to tell users why the ``quality`` of the analysis was ``"bad"``. For example, the syntax for pulling out the individual fidelities looks like below. .. code-block:: python df = exp_data.analysis_results(dataframe=True) df[(df.name=="ProcessFidelity") & (df.qubits==(59, 60))].value See `an example notebook `_ for more examples such as how to select a best possible qubit chain to measure and how to plot EPLG as a function of (sub)chain length. .. releasenotes/notes/0.7/residuals_plot-377aabb9193a5a98.yaml @ b'517532eb307897896d549f7e3de69485801d67a8' - Added an option to plot residuals for single-figure experiments, which is enable by setting ``plot_residuals`` to ``True``. .. releasenotes/notes/0.7/residuals_plot-377aabb9193a5a98.yaml @ b'517532eb307897896d549f7e3de69485801d67a8' - Introduced ``sub_plot_heights_list`` and ``sub_plot_widths_list`` attributes in :class:`.PlotStyle` for customizable subplot sizes where each list needs to sum up to 1. This feature currently works only for experiments with no subplots. .. _Release Notes_0.7.0_Known Issues: Known Issues ------------ .. releasenotes/notes/0.7/0_6_deprecations-9a399c48c2d461f1.yaml @ b'517532eb307897896d549f7e3de69485801d67a8' - Fit parameters are not populated in composite curve analysis results and are found only in the fit summary artifact. In a future release, they will be removed from all analysis result objects and live in the artifacts only. .. _Release Notes_0.7.0_Upgrade Notes: Upgrade Notes ------------- .. releasenotes/notes/0.7/0_7_release-96efcec2c45dcf74.yaml @ b'517532eb307897896d549f7e3de69485801d67a8' - Changes in behavior that users should be aware of when upgrading Qiskit Experiments to this version are listed below in subsections by functional area. .. _Release Notes_0.7.0_Package Upgrades: Package Upgrades ^^^^^^^^^^^^^^^^ .. releasenotes/notes/0.7/0_6_deprecations-9a399c48c2d461f1.yaml @ b'517532eb307897896d549f7e3de69485801d67a8' - Several deprecated modules, methods, functions, and options have been removed and will no longer work: * The visualization module of :mod:`.CurveAnalysis` has been replaced by the standalone :mod:`.visualization` module. The ``LegacyCurveCompatDrawer`` has been removed from :mod:`.visualization`. * The ``curve_drawer`` option to :class:`.CompositeCurveAnalysis` has been replaced by the plotter in the visualization module. * The ``SeriesDef`` dataclass has been removed and replaced by the ``LMFIT`` module. * The ``CurveData`` dataclass has been removed and replaced by :class:`.ScatterTable`'s DataFrame representation. * ``random_cliffords()`` and ``random_clifford_circuits()`` have been removed from :class:`.CliffordUtils` and replaced by :meth:`.StandardRB.__sample_sequence`. * ``beta`` has been renamed to ``outcome_prior`` in the tomography utility function ``binomial_weights()``. * The ``return_data_points`` option has been removed from curve analysis. Data points are now automatically provided in :class:`.ExperimentData` objects via the ``curve_data`` artifact. * The default value of ``flatten_results`` in composite experiments has changed to ``True``. .. _Release Notes_0.7.0_Deprecation Notes: Deprecation Notes ----------------- .. releasenotes/notes/0.7/0_6_deprecations-9a399c48c2d461f1.yaml @ b'517532eb307897896d549f7e3de69485801d67a8' - Accessing experiment data artifacts by numerical index has been deprecated. Use the name or ID of the artifact instead. .. _Release Notes_0.7.0_Bug Fixes: Bug Fixes --------- .. releasenotes/notes/0.7/fix-ecr-epg-59c8db98494966b0.yaml @ b'7a0924c24549ab4f38819a86c0ac49214d819ba2' - Fixed a bug in EPG (error per gate) computation in :class:`~.RBAnalysis` where it fails with a ``TypeError`` for backends with ECR gate as a 2-qubit basis gate (e.g. IBM Eagle processors). See `#1419 `_. for the details of the bug. .. releasenotes/notes/0.7/fix-epg-gatecount-60777f7a3f3566bc.yaml @ b'517532eb307897896d549f7e3de69485801d67a8' - The gate counting for EPG in the RB analysis code was not including the inverse, so that the total number of operations per Clifford was incorrect, leading to incorrect reporting of EPG from EPC. Fixed by adding +1 for the inverse gate. .. _Release Notes_0.7.0_Other Notes: Other Notes ----------- .. releasenotes/notes/0.7/add-examples-to-characterization-experiments-e77d4d26c6b49694.yaml @ b'517532eb307897896d549f7e3de69485801d67a8' - Added minimal working code examples to many experiment API pages, especially characterization experiments. The minimal working code example is a code snippet which users can copy and paste to run the experiment. Users are required to specify a backend to use the code example. By default, the backend used in the examples is a simulator such as ``FakeManilaV2``. .. _Release Notes_0.6.1: 0.6.1 ===== .. _Release Notes_0.6.1_Prelude: Prelude ------- .. releasenotes/notes/0.6/0_6_1_release-9ccfd5dba7190c77.yaml @ b'5c6f4b2c8226bca2276c5eecfab5193748a8e524' Qiskit Experiments 0.6.1 is a minor bug fixes release. .. _Release Notes_0.6.1_Bug Fixes: Bug Fixes --------- .. releasenotes/notes/dynamics-0.5-0da56d1ef7d93e77.yaml @ b'1b416add73d70c58dfbd87042d7b75775305717a' - :class:`.SingleTransmonTestBackend` was updated to be compatible with :mod:`qiskit_dynamics` version 0.5.0. The updates accounted for changes in the expected arguments to Dynamics API's and did not change behavior. See `#1427 `__. .. releasenotes/notes/figure-names-inconsistency-afca1ac8e00fabac.yaml @ b'32813b86b04b956bb7b1334759a79af6ce9068df' - :class:`.ExperimentData` was updated so that running analysis a second time with ``replace_results=True`` does not result in the ``figure_names`` property having incorrect data (both old and new figure names if the names changed). See `#1430 `__. .. releasenotes/notes/figure-names-inconsistency-afca1ac8e00fabac.yaml @ b'32813b86b04b956bb7b1334759a79af6ce9068df' - :class:`.BaseAnalysis` was updated to respect ``figure_names`` as a keyword argument to the ``run()`` method. Previously, this argument was ignored and ``figure_names`` could only be set as an analysis option prior to calling ``run()``. See `#1430 `__. .. releasenotes/notes/mock-iq-backend-without-qiskit-runtime-20d2bf9edb48312d.yaml @ b'2045689df74b74a94f1f5e5a8d4598354c4e5385' - :class:`.MockIQBackend` was refactored so that it does not import ``qiskit_ibm_runtime`` since :external+qiskit_ibm_runtime:doc:`qiskit-ibm-runtime ` is not a required dependency of Qiskit Experiments. .. releasenotes/notes/remove_backendv2-b608a2f380698710.yaml @ b'5c6f4b2c8226bca2276c5eecfab5193748a8e524' - Removed a ``FakeBackendV2`` import path which would have been incompatible with Qiskit 1.1 and above. See `#1420 `_. .. _Release Notes_0.6.0: 0.6.0 ===== .. _Release Notes_0.6.0_Prelude: Prelude ------- .. releasenotes/notes/0.6/0.6_release-4d766733941ad57a.yaml @ b'3b039c5df784748597261d38599c1c7cb2074377' Qiskit Experiments 0.6 introduces numerous features and improvements. It is compatible with Qiskit 1.0. Notable changes include: refactoring the analysis results to a pandas :class:`~pandas:pandas.DataFrame`-based :class:`.AnalysisResultTable`, the ability to add artifacts of serializable data to :class:`.ExperimentData`, and refactoring curve fit data into a new :class:`~pandas:pandas.DataFrame`-based :class:`.ScatterTable` container that is stored by default as an artifact in :class:`.ExperimentData` along with the summary of fit results. New experiments include :class:`.StarkP1Spectroscopy`, :class:`.StarkRamseyXY`, and :class:`.StarkRamseyXYAmpScan`. :class:`.StandardRB` and :class:`.InterleavedRB` were significantly improved. The supported provider for running jobs on IBM backends is now :external+qiskit_ibm_runtime:doc:`qiskit-ibm-runtime `. Using ``qiskit-ibm-provider`` is still supported but its use is deprecated. .. _Release Notes_0.6.0_New Features: New Features ------------ .. releasenotes/notes/0.6/0.6_release-4d766733941ad57a.yaml @ b'3b039c5df784748597261d38599c1c7cb2074377' - New features are listed below in subsections by functional area. .. _Release Notes_0.6.0_New Experiments: New Experiments ^^^^^^^^^^^^^^^ .. releasenotes/notes/0.6/mod-stark-1f1afb538a94fe9a.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - New experiment :class:`.StarkRamseyXY` has been added. This is a variant of the :class:`.RamseyXY` experiment that characterizes the qubit frequency offset under a Stark tone drive. .. releasenotes/notes/0.6/mod-stark-1f1afb538a94fe9a.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - New experiment :class:`.StarkRamseyXYAmpScan` has been added. This is a variant of the :class:`.StarkRamseyXY` experiment to estimate the required tone amplitude to cause a particular Stark shift. This experiment scans tone amplitude while fixing the Stark tone length, and fits the result with the dedicated fitter :class:`.StarkRamseyXYAmpScanAnalysis`. .. releasenotes/notes/0.6/mod-stark-1f1afb538a94fe9a.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - New experiment :class:`.StarkP1Spectroscopy` has been added. This is a variant of :class:`.T1` experiment to conduct spectroscopy of qubit relaxation at different qubit frequencies. The spectroscopy data is just visualized with the dedicated analysis :class:`.StarkP1SpectAnalysis`. A developer may subclass this analysis class to perform custom analysis on the spectroscopy data. .. _Release Notes_0.6.0_Experiment Library Features: Experiment Library Features ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. releasenotes/notes/0.6/plugable-rb-clifford-synthesis-0e66c62fa3088fba.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Added a new experiment option ``clifford_synthesis_method`` to RB experiments, e.g. :class:`~.StandardRB` and :class:`~.InterleavedRB` so that users can plug in a custom Clifford synthesis algorithm used for generating RB circuits. Such a plugin should be implemented as a :class:`~.qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin` (see :class:`~.RBDefaultCliffordSynthesis` for example). .. releasenotes/notes/0.6/plugable-rb-clifford-synthesis-0e66c62fa3088fba.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Updated :class:`~.InterleavedRB` so that it only accepts ``interleaved_element`` consisting only of instructions supported by the backend of interest. .. _Release Notes_0.6.0_Experiment Class Features: Experiment Class Features ^^^^^^^^^^^^^^^^^^^^^^^^^ .. releasenotes/notes/0.6/circuit-count-method-a095bd74aaa1d2fb.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - A new method :meth:`.BaseExperiment.job_info` has been added that will output the number of jobs the experiment is expected to be split into based on the provided backend. Refer to issue `#1247 `_ for more details. .. releasenotes/notes/0.6/setter-methods-for-experiment-099074e59faffb49.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Added ``experiment_type`` as optional ``__init__`` kwarg in :class:`.BatchExperiment` and :class:`.ParallelExperiment`. .. releasenotes/notes/0.6/setter-methods-for-experiment-099074e59faffb49.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - ``experiment_type`` can now be easily set and retrieved from the experiment object post-construction using the ``experiment_type`` property and setter. .. _Release Notes_0.6.0_Analysis Class Features: Analysis Class Features ^^^^^^^^^^^^^^^^^^^^^^^ .. releasenotes/notes/0.6/broadcasting-option-8a3b72bfc1df9668.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Added a ``broadcast`` option to :class:`.CompositeAnalysis`. When ``broadcast=True`` is passed, this option will be applied to child experiment analyses within the class. This means it will iterate through the child analysis classes and apply the given option to each of them. .. releasenotes/notes/0.6/selective-figure-generation-0864216f34d3486f.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - The ``generate_figures`` parameter has been added to :class:`.CompositeAnalysis` to control figure generation. By default, ``generate_figures`` is ``always``, meaning figures will always be generated. If ``generate_figures`` is set to ``selective``, then only figures for analysis results of bad quality will be generated. If ``generate_figures`` is set to ``never``, then figures will never be generated. This behavior can be overridden for individual analyses by setting the analysis option ``plot`` for :class:`.CurveAnalysis`. .. _Release Notes_0.6.0_Experiment Data Features: Experiment Data Features ^^^^^^^^^^^^^^^^^^^^^^^^ .. releasenotes/notes/0.6/access_figure_without_extension-5b7438c19e223d6b.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Figures in :class:`.ExperimentData` objects can now be accessed without the ``.svg`` extension. .. releasenotes/notes/0.6/add-dataframe-analysis-results-ec8863e826a70621.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - :class:`.ExperimentData` has been upgraded to store analysis result data in a table format with the new inline container :class:`.AnalysisResultTable`. In this release, the :meth:`.ExperimentData.analysis_results` method still returns a conventional list of :class:`.AnalysisResult` for backward compatibility, however, when you call the method with new argument ``dataframe=True`` it returns analysis results all in one piece with the table format. For example, .. code-block:: python exp = StandardRB((0,), lengths, backend) experiment_data = exp.run().block_for_results() experiment_data.analysis_results(dataframe=True, columns="default") Information contained in the returned table can be filtered with ``columns`` argument, which may take either ``all``, ``default``, ``minimal``, or list of column names. Returning a list of :class:`.AnalysisResult` will be deprecated in a future release along with the ``dataframe`` option. Related to this update, :meth:`.ExperimentData.add_analysis_results` method now takes keyword arguments keyed on the table column names, in addition to the argument of ``results`` which is either :class:`.AnalysisResult` or a list of it. This allows users and developers to bypass creation of :class:`.AnalysisResult` instance for registering new entry in the :class:`.ExperimentData` instance. Note that the conventional :class:`.AnalysisResult` is originally a payload object for saving an analysis result in a remote database, as it implements a REST API for the IBM Experiment Service, which is not necessary at all in the context of experiment data analysis. In a future release, :class:`.AnalysisResult` will be hidden from Qiskit Experiments users. .. releasenotes/notes/0.6/experiment-artifacts-c481f4e07226ce9e.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - An artifact class has been introduced to store long-form data generated by experiments. The :class:`.CurveFitResult` and :class:`.ScatterTable` generated by experiments are now stored in artifacts in the :class:`.ExperimentData` class. :meth:`.add_artifacts` and :meth:`.delete_artifact` have been added to manipulate the artifacts. These will be uploaded to the cloud service in JSON form along with the rest of the :class:`.ExperimentData` object when saved. For more information, see the :doc:`artifacts how-to `. .. releasenotes/notes/0.6/experiment_data_fixes-f69c3569a8ba1342.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - :meth:`.ExperimentData.save` now uses the multithreading capability of the experiment service to enable faster saving times. .. releasenotes/notes/0.6/experiment_data_fixes-f69c3569a8ba1342.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - :class:`.ExperimentData` now supports the new method :meth:`.ExperimentData.get_service_from_provider` enabling the automatic setting of the experiment database service via passing the provider. .. releasenotes/notes/0.6/experiment_data_fixes-f69c3569a8ba1342.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - The ``start_datetime`` property of :class:`.ExperimentData` is now being set to the time the experiment data was created. .. releasenotes/notes/0.6/experiment_data_fixes-f69c3569a8ba1342.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - The ``end_datetime`` property of :class:`.ExperimentData` is now being set to the latest time a successful job terminated. .. releasenotes/notes/0.6/experiment_data_fixes-f69c3569a8ba1342.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - The ``creation_datetime`` and ``updated_datetime`` properties of :class:`.ExperimentData` are now being read from the server when saving the experiment. .. releasenotes/notes/0.6/experiment_data_fixes-f69c3569a8ba1342.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - All the datetime properties are now stored in UTC and converted to local time when using getters. .. releasenotes/notes/0.6/experiment_data_fixes-f69c3569a8ba1342.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - :meth:`.ExperimentData.save` can now raise exceptions when saving fails, unless the ``suppress_errors`` flag is set (on by default). .. releasenotes/notes/0.6/runtime-provider-support-5358b72ec0035419.yaml @ b'3b039c5df784748597261d38599c1c7cb2074377' - Experiments run via the :external+qiskit_ibm_runtime:doc:`qiskit-ibm-runtime ` provider can now be saved to and loaded from the cloud service. .. _Release Notes_0.6.0_Curve Fit Features: Curve Fit Features ^^^^^^^^^^^^^^^^^^ .. releasenotes/notes/0.6/add-dataframe-curve-data-a8905c450748b281.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - :class:`.ScatterTable` has been introduced as a drop-in replacement of :class:`.CurveData`. This is a data format to store intermediate data in curve analysis built on top of the pandas :class:`~pandas:pandas.DataFrame`. Each table row corresponds to a single data point, and the table contains all data points generated by the :class:`.CurveAnalysis`. All properties and methods of :class:`.CurveData` are implemented for backward compatibility, but these will be removed in the future release. .. releasenotes/notes/0.6/add-dataframe-curve-data-a8905c450748b281.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - New analysis option ``fit_category`` is added to :class:`.CurveAnalysis` subclasses. This option controls which data subset within the :class:`.ScatterTable` is used for the curve fitting. .. _Release Notes_0.6.0_Calibration Features: Calibration Features ^^^^^^^^^^^^^^^^^^^^ .. releasenotes/notes/0.6/feature-support-calibrations-roundtrip-47f09bd9ff803479.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - A JSON data format has been added for saving a :class:`.Calibrations` instance. This leverages a custom JSON encoder and decoder to serialize the entire calibration data including user provided schedule templates. Output JSON data is formatted into the standard data model which is intentionally agnostic to the calibration data structure. .. _Release Notes_0.6.0_Visualization Features: Visualization Features ^^^^^^^^^^^^^^^^^^^^^^ .. releasenotes/notes/0.6/add-support-for-visualization-with-unshared-axis-9f7bfe272353086b.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - The :class:`.MplDrawer` visualization backend has been upgraded so that it can take list of options for ``xlim``, ``ylim``, ``xval_unit``, ``yval_unit``, ``xval_unit_scale``, and ``yval_unit_scale``. New figure options ``sharex`` and ``sharey`` are also added. The new options are used to unkink the configuration of sub axes, and default to ``True`` for backward compatibility. By disabling these options, an experiment author can write an analysis class that generates a multi-axes figure with different plot ranges. .. releasenotes/notes/0.6/qvplotter-04efe280aaa9d555.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - An :meth:`~.BaseDrawer.hline` method was added to :class:`.BaseDrawer` for generating horizontal lines. See `#1348 `__. .. releasenotes/notes/0.6/qvplotter-04efe280aaa9d555.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - The :class:`~qiskit_experiments.library.quantum_volume.QuantumVolumeAnalysis` analysis class was updated to use :class:`~qiskit_experiments.library.quantum_volume.QuantumVolumePlotter` for its figure generation. The appearance of the figure should be the same as in previous releases, but now it is easier to customize the figure by setting options on the plotter object. See `#1348 `__. .. releasenotes/notes/0.6/scale_options-745ee6f8e560043f.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - New figure options were added to the visualization module: ``xscale`` and ``yscale``. They represent parameters to the Matplotlib functions ``set_xscale`` and ``set_yscale``: ``log``, ``linear``, ``symlog``, ``logit``, and ``quadratic`` (the latter is an additional support for quadratic scaling). .. _Release Notes_0.6.0_Known Issues: Known Issues ------------ .. releasenotes/notes/0.6/0.6_release-4d766733941ad57a.yaml @ b'3b039c5df784748597261d38599c1c7cb2074377' - Copied :class:`.ExperimentData` objects don't save their analysis results to the cloud service. See `#1396 `_. .. _Release Notes_0.6.0_Upgrade Notes: Upgrade Notes ------------- .. releasenotes/notes/0.6/0.6_release-4d766733941ad57a.yaml @ b'3b039c5df784748597261d38599c1c7cb2074377' - Changes in behavior that users should be aware of when upgrading Qiskit Experiments to this version are listed below in subsections by functional area. .. _Release Notes_0.6.0_Package Upgrades: Package Upgrades ^^^^^^^^^^^^^^^^ .. releasenotes/notes/0.6/0.5_deprecations-4188ada026cb682b.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Several deprecated methods and options have been removed and will no longer work: * Passing the ``qubits`` keyword argument or an integer qubit index to experiments is no longer allowed. Use ``physical_qubits`` keyword argument with a sequence type input. * The ``scipy_linear_lstsq`` and ``scipy_gaussian_lstsq`` fitters for the :class:`.StateTomographyAnalysis` and :class:`.ProcessTomographyAnalysis` classes have been removed. Use the :func:`.cvxpy_linear_lstsq` and :func:`.cvxpy_gaussian_lstsq` fitters instead. * Curve fit solvers ``curve_fit()`` and ``multi_curve_fit()`` as well as fit functions ``bloch_oscillation_x()``, ``bloch_oscillation_y()``, and ``bloch_oscillation_z()`` have been removed. Use the LMFIT library instead. * The ``flat_top_widths`` argument and experiment option of the :class:`.CrossResonanceHamiltonian` experiment and its subclass have been removed. Use ``durations`` instead. * The ``DumpedOscillationAnalysis`` class has been renamed to :class:`.DampedOscillationAnalysis`. .. releasenotes/notes/0.6/drop_python_3_7_support-0529a7122e94b004.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Dropped support for Python 3.7 and added support for Python 3.12. .. releasenotes/notes/0.6/qiskit-dependency-3f6b8d71cc4d2c31.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - The dependency on ``qiskit-terra`` was replaced with a dependency on ``qiskit``. This change follows the move in upstream Qiskit to rename ``qiskit-terra`` to ``qiskit``. The minimum required version was increased from 0.24 for ``qiskit-terra`` to 0.45 for ``qiskit``. For more information on the renaming of Qiskit, see the `Qiskit repository renaming plan `__ and the `Qiskit 1.0 migration guide `__. .. releasenotes/notes/0.6/runtime-provider-support-5358b72ec0035419.yaml @ b'3b039c5df784748597261d38599c1c7cb2074377' - With the impending deprecation of the ``qiskit-ibm-provider`` package, support for ``qiskit-ibm-provider`` is now deprecated and will be removed in the next release. Users should migrate to :external+qiskit_ibm_runtime:doc:`qiskit-ibm-runtime ` following the `runtime migration guide `_. :external+qiskit_ibm_runtime:doc:`qiskit-ibm-runtime ` is not listed as a dependency for compatibility reasons, but users will need it to run experiments on IBM backends. .. _Release Notes_0.6.0_Experiment Library Upgrades: Experiment Library Upgrades ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. releasenotes/notes/0.6/adjust-symbolic-pulses-amp-angle-representation-f5c40007416cf938.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - :class:`.HalfAngleCal` was changed from updating the complex amplitude of the pulse, to updating the angle in the (``amp``, ``angle``) representation. When used with the :class:`.FixedFrequencyTransmon` library, it will continue to work seamlessly in the new representation. However, when the experiment is used with custom built pulses, which rely on the old convention of complex ``amp`` (with no angle parameter) - the experiment will fail. Most reasonable cases will raise a detailed ``CalibrationError`` explaining the change and the way to adjust to it. Some edge cases - like a custom built pulse with an ``angle`` parameter which doesn't conform to the naming convention of Qiskit's ``ScalableSymbolicPulse`` class, or using a loaded calibration with ``complex`` ``amp`` - will result in updating the wrong parameter. .. _Release Notes_0.6.0_Experiment Class Upgrades: Experiment Class Upgrades ^^^^^^^^^^^^^^^^^^^^^^^^^ .. releasenotes/notes/0.6/upgrade-remove-circuit-metadata-ec7d3c6b08781184.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Removed unnecessary circuit metadata from the builtin experiment classes. Circuit metadata such as the associated qubit indices and experiment type are separately stored in the experiment metadata, and never used in the analysis. Removal of unnecessary circuit metadata compresses the job payload and thus is expected to benefit scalability. .. _Release Notes_0.6.0_Curve Fit Upgrades: Curve Fit Upgrades ^^^^^^^^^^^^^^^^^^ .. releasenotes/notes/0.6/add-dataframe-curve-data-a8905c450748b281.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - The behavior of :class:`.CurveAnalysis` data processing was changed. It used to raise ``DataProcessorError`` error when it encounters an experiment result which cannot be classified into any fit model, but this restriction was relaxed and the analysis continues with unclassified data. Unclassified data is just stored as-is in the :class:`.ScatterTable` with the null class ID assigned. Such data is ignored in the rest of analysis steps such as formatting, fitting, and visualization. .. _Release Notes_0.6.0_Calibration Upgrades: Calibration Upgrades ^^^^^^^^^^^^^^^^^^^^ .. releasenotes/notes/0.6/adjust-symbolic-pulses-amp-angle-representation-f5c40007416cf938.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - The representation of pulses in the :class:`.FixedFrequencyTransmon` library was changed from complex amplitude to (``amp``, ``angle``) representation. All pulses now include an ``angle`` parameter, and the default values of ``amp`` are set as type ``float`` instead of ``complex``. .. releasenotes/notes/0.6/params_without_schedule-20555d98875a626b.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - The variables ``__drive_freq_parameter__`` and ``__readout_freq_parameter__`` have been removed from :class:`.Calibrations`. These variables were given special treatment which is inconsistent with the framework. To replace them a mechanism to define and add parameters without a schedule has been added to the basis gate library. This has the added benefit of making the API of frequency calibration experiments more consistent with the other calibration experiments. Calibration developers can now add parameters to their library that are not attached to a schedule in a meaningful way. .. _Release Notes_0.6.0_Deprecation Notes: Deprecation Notes ----------------- .. releasenotes/notes/0.6/deprecate-flatten-result-false-026a89c09cc7a004.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Executing composite experiment and composite analysis with ``flatten_results=False`` by default was deprecated. To create child experiment data, please explicitly set ``flatten_results=False``. The default value of ``flatten_results`` will be changed to ``True`` in the next release. .. releasenotes/notes/0.6/deprecate-is-simulator-c101197a126e456f.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - :attr:`.BackendData.is_simulator` has been deprecated. :class:`~qiskit.providers.BackendV2` does not provide a standard interface for determining if a backend uses a simulator. Calling code must determine if a backend uses a simulator through some other means. Qiskit Experiments does not treat simulator-backed backends differently from hardware backed ones. .. releasenotes/notes/0.6/experiment-artifacts-c481f4e07226ce9e.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Setting the option ``return_data_points`` to ``True`` in curve analysis has been deprecated. Data points are now automatically provided in :class:`.ExperimentData` objects via the ``curve_data`` artifact. .. releasenotes/notes/0.6/experiment-artifacts-c481f4e07226ce9e.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Direct access to the curve fit summary in :class:`.ExperimentData` has moved from :meth:`.analysis_results` to :meth:`.artifacts`, where values are stored in the :attr:`~.ArtifactData.data` attribute of :class:`.ArtifactData` objects. For example, to access the chi-squared of the fit, ``expdata.analysis_results(0).chisq`` is deprecated in favor of ``expdata.artifacts("fit_summary").data.chisq``. In a future release, the curve fit summary will be removed from :meth:`.analysis_results` and the option ``return_fit_parameters`` will be removed. For more information on artifacts, see the :doc:`artifacts how-to `. .. releasenotes/notes/0.6/experiment-artifacts-c481f4e07226ce9e.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Using numerical indices with :meth:`.ExperimentData.analysis_results`, including both integers and slices, is now deprecated. Access analysis results by analysis result name or ID instead. .. releasenotes/notes/0.6/feature-support-calibrations-roundtrip-47f09bd9ff803479.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Saving :class:`.Calibrations` instance into CSV file was deprecated. This only provides serialization for limited set of calibration data, and loading from the local file is not supported. .. releasenotes/notes/0.6/feature-support-calibrations-roundtrip-47f09bd9ff803479.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - :meth:`.Calibrations.schedule_information` was deprecated. This method returns attached calibration templates in the string format, but this cannot be converted back to the original Qiskit representation. Now better serialization is provided with :meth:`.Calibrations.save` with JSON mode and it internally dumps these schedule in through QPY format. .. releasenotes/notes/0.6/feature-support-calibrations-roundtrip-47f09bd9ff803479.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - :meth:`.Calibrations.load_parameter_values` was deprecated. Since saving :class:`.Calibrations` instance into the CSV format was deprecated, the required data file to invoke this method will be no longer generated in future calibrations instance. Full calibration instance roundtrip is now supported with the save and load method. .. releasenotes/notes/0.6/feature-support-calibrations-roundtrip-47f09bd9ff803479.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - :meth:`.Calibrations.config` and :meth:`.Calibrations.from_config` were deprecated. Now canonical data representation is generated for calibration by the newly introduced :mod:`~qiskit_experiments.calibration_management.save_utils` module, and the legacy configuration dictionary is no longer used for JSON encoding. .. _Release Notes_0.6.0_Bug Fixes: Bug Fixes --------- .. releasenotes/notes/0.6/0.6_release-4d766733941ad57a.yaml @ b'3b039c5df784748597261d38599c1c7cb2074377' - Bug fixes are listed below in subsections by functional area. .. _Release Notes_0.6.0_Experiment Library Fixes: Experiment Library Fixes ^^^^^^^^^^^^^^^^^^^^^^^^ .. releasenotes/notes/0.6/fix-guess-rb-decay-f78e40a7d6d8dd67.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Fixed a bug in :func:`~.rb_decay` where it unintentionally raises an ``IndexError`` if all ``y`` values are below ``b`` value so that it returns ``0`` for the case. .. releasenotes/notes/0.6/half-angle-x-600debac368ce2c6.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - The :class:`.HalfAngle` experiment's circuits were changed so that they use combinations of ``rz`` and ``x`` instead of the less standard ``y`` gate. This change allows :class:`.HalfAngle` to be run on IBM backends directly. Previously, it could only be run through the :class:`.HalfAngleCal` subclass in combination with a :class:`.Calibrations` instance containing a custom calibration for the ``y`` gate. Fixes issue `#1233 `_. .. releasenotes/notes/0.6/plugable-rb-clifford-synthesis-0e66c62fa3088fba.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Fixed a bug in circuit generation for three or more qubit Randomized Benchmarking where sampled Cliffords may be changed during their circuits synthesis (in the worst case, the resulting circuits may use qubits not in ``physical_qubits``). See issue `#1279 `_ for additional details. .. releasenotes/notes/0.6/rabi-and-qv-bugfix-34636baee6651af1.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Resolved a serialization issue that affected Rabi experiments when running it through the backend provider using custom amplitudes provided as a numpy array. .. releasenotes/notes/0.6/rabi-and-qv-bugfix-34636baee6651af1.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Resolved an issue that caused QV experiments to fail when executed via the backend provider using Qiskit for calculating ideal probabilities instead of Aer. .. releasenotes/notes/0.6/rabi-and-qv-bugfix-34636baee6651af1.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Resolved a serialization issue that affected DRAG experiments with integral beta values specified. .. _Release Notes_0.6.0_Experiment Data Fixes: Experiment Data Fixes ^^^^^^^^^^^^^^^^^^^^^ .. releasenotes/notes/0.6/bugfix_expdata_copy-2c73a21ad720858d.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - The :meth:`.ExperimentData.copy` method now copies the provider. .. releasenotes/notes/0.6/exp-data-pickle-61511b6e926e3198.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Fixed :mod:`pickle` deserialization of :class:`.ExperimentData` objects. Previously, :class:`.ExperimentData` objects could be serialized and deserialized using Python's ``pickle`` module, but deserialized objects were not completely restored and an exception would be raised when doing some operations like running analysis on the restored object. See `#1326 `__. .. releasenotes/notes/0.6/experiment_data_fixes-f69c3569a8ba1342.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Fixed a bug in :meth:`.ExperimentData._add_job_data` that caused job id related test fails. .. releasenotes/notes/0.6/experiment_data_metadata_save_fix-912b7180a28cfb03.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Fixed a bug in :class:`.ExperimentData` which caused experiment saves to the cloud service to fail when the metadata is large. .. releasenotes/notes/0.6/experiment_data_save_bugfixes-48fe62bf2bfe38b8.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - The :attr:`.ExperimentData.auto_save` setter no longer saves sub-experiments twice. .. releasenotes/notes/0.6/experiment_data_save_bugfixes-48fe62bf2bfe38b8.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - :meth:`.ExperimentData.save` now handles correctly figures in sub-experiments when ``flatten_results=True``. .. _Release Notes_0.6.0_Visualization Fixes: Visualization Fixes ^^^^^^^^^^^^^^^^^^^ .. releasenotes/notes/0.6/figure_return_SVG-4ad72fc8a3bee3cb.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Figures loaded from the experiment service are now rendered correctly in Jupyter Notebook. .. _Release Notes_0.6.0_API Changes for Experiment Authors: API Changes for Experiment Authors ---------------------------------- .. releasenotes/notes/0.6/add-dataframe-curve-data-a8905c450748b281.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Added the :meth:`~.CurveAnalysis._create_figures` method to the :class:`.CurveAnalysis` base class. A curve analysis subclass can overwrite this method to customize the output figures. The method is called with the :class:`.ScatterTable` containing all intermediate data points generated during the curve analysis. .. releasenotes/notes/0.6/add-test-equality-checker-dbe5762d2b6a967f.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Added the :meth:`QiskitExperimentsTestCase.assertEqualExtended` method for generic equality checks of Qiskit Experiments class instances in unittests. This is a drop-in replacement of calling the assertTrue with :meth:`QiskitExperimentsTestCase.json_equiv`. Note that some Qiskit Experiments classes may not officially implement equality check logic, although objects may be compared during unittests. Extended equality check is used for such situations. .. releasenotes/notes/0.6/add-test-equality-checker-dbe5762d2b6a967f.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - The following unittest test case methods will be deprecated: * :meth:`QiskitExperimentsTestCase.json_equiv` * :meth:`QiskitExperimentsTestCase.ufloat_equiv` * :meth:`QiskitExperimentsTestCase.analysis_result_equiv` * :meth:`QiskitExperimentsTestCase.curve_fit_data_equiv` * :meth:`QiskitExperimentsTestCase.experiment_data_equiv` One can now use the :func:`~test.extended_equality.is_equivalent` function instead. This function internally dispatches the logic for equality check. .. releasenotes/notes/0.6/add-test-equality-checker-dbe5762d2b6a967f.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - The default behavior of :meth:`QiskitExperimentsTestCase.assertRoundTripSerializable` and :meth:`QiskitExperimentsTestCase.assertRoundTripPickle` when ``check_func`` is not provided was upgraded. These methods now compare the decoded instance with :func:`~test.extended_equality.is_equivalent`, rather than delegating to the native ``assertEqual`` unittest method. One writing a unittest for serialization no longer need to explicitly set checker function. .. releasenotes/notes/0.6/device-component-c9ec9011c529425c.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - A ``device_component`` field that contains a list of device components used in the experiment has been added to experiment metadata. Experiments with non-qubit components should override the default value of all qubit components. See the :doc:`custom experiments tutorial ` for more details. .. _Release Notes_0.6.0_Other Notes: Other Notes ----------- .. releasenotes/notes/0.6/add_warning_analysis_without_data-bfc802da52591f13.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Display a warning when running an analysis on :class:`.ExperimentData` objects which do not contain data. .. releasenotes/notes/0.6/adjust-symbolic-pulses-amp-angle-representation-f5c40007416cf938.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Qiskit 0.23.0 began phasing out support of complex parameters in the Pulse module. Mainly, all library symbolic pulses were converted from complex amplitude representation to a duo of real (float) parameters (``amp``, ``angle``). To avoid problems, Qiskit Experiments adopted this convention. Changes were made to :class:`.FixedFrequencyTransmon` and :class:`.HalfAngleCal` (see upgrade section). With the exception of :class:`.HalfAngleCal`, all library experiments should continue to function as they did before (even with complex ``amp``). When used with the :class:`.FixedFrequencyTransmon` library, :class:`.HalfAngleCal` will also continue working as before. Eventually, support for complex parameters will be dropped altogether, and it is thus pending deprecation - including for saving and loading calibration data with complex values. .. releasenotes/notes/0.6/requirements-extras-d5768794acbce467.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - A new set of optional dependencies have been split off from the developer dependencies and can be installed separately as ``qiskit-experiments[extras]``. These are packages that enable optional experiment features such as ``scikit-learn``-based discriminators. Qiskit Dynamics and Qiskit Aer have also been marked as optional in this manner. .. releasenotes/notes/0.6/update-figure-name-2db258c30ffe9912.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Figure names have been updated to include qubit indices up to the first five device components in the experiment, with format ``StandardRB_Q0_Q1_Q2_Q3_Q5_b4f1d8ad.svg``. For composite experiments where ``flatten_results`` is set to ``True``, the head of the figure name is now the class name of the experiment instead of ``ParallelExperiment`` or ``BatchExperiment``, such that the figure name is the same when ``flatten_results`` is ``False``. The behavior when a figure name is repeated and ``overwrite`` is ``False`` has changed from throwing an exception to appending a numerical suffix to the figure name like ``StandardRB_Q0_Q1_Q2_Q3_Q5_b4f1d8ad-1.svg``. .. releasenotes/notes/0.6/update-figure-name-2db258c30ffe9912.yaml @ b'e8531c4f6af9432827bc28c772c5a179737f0c3c' - Figure metadata now includes ``experiment_type`` and ``device_components``. .. _Release Notes_0.5.4: 0.5.4 ===== .. _Release Notes_0.5.4_Prelude: Prelude ------- .. releasenotes/notes/0.5/0_5_4_release-ed63a0651f74db28.yaml @ b'cb8341016e5100787611a10277866ddcab8d6fac' Qiskit Experiments 0.5.4 is a minor improvement and fixes release. .. _Release Notes_0.5.4_Bug Fixes: Bug Fixes --------- .. releasenotes/notes/fix-curve-fit-weights-fb43d3aa5ed1c91c.yaml @ b'8bf58e97a005fbdf10cf1eee8f455bd23d746177' - Fixed calculation of weight for curve fitting. Previously the weights of data points to obtain the residual of fit curve were computed by the inverse of the error bars of y data. This may yield significant weights on certain data points when their error bar is small or zero, and this can cause the local overfit to these data points. To avoid this edge case of small error bars, computed weights are now clipped at 90 percentile. This update might slightly change the outcome of fit. .. releasenotes/notes/rb-v2-none-coupling-fda2b22afdef507b.yaml @ b'ab07b8e3ddb8844a9a481c2c98688d9291d2edb6' - Changed :class:`.StandardRB` to treat two qubit operations in the :class:`qiskit.transpiler.Target` as having all-to-all connectivity if there is no set of specific pairs of coupled qubits. Most importantly, this change allows :class:`.StandardRB` to work with :class:`qiskit_aer.AerSimulator` for multi-qubit benchmarking after ``qiskit-aer`` 0.13.0. Version 0.13.0 of ``qiskit-aer`` changed the default :class:`qiskit_aer.AerSimulator` to have such a :class:`qiskit.transpiler.Target` without specific coupled pairs. See `#1292 `__. .. _Release Notes_0.5.4_Other Notes: Other Notes ----------- .. releasenotes/notes/remove-tomo-reset-3f21ec4d0dacba91.yaml @ b'cb8341016e5100787611a10277866ddcab8d6fac' - Removed the reset instruction from the beginning of tomography experiments. Since qubits are usually reset between circuits, this change should have no impact on tomography experiments, but it should allow backends that do not provide a reset instruction to run tomography experiments. See `#1250 `__. .. _Release Notes_0.5.3: 0.5.3 ===== .. _Release Notes_0.5.3_Prelude: Prelude ------- .. releasenotes/notes/0.5/0_5_3_release-71ba547279508401.yaml @ b'a77a57a24195c6b1a9a81c083c0e607cfa4d3e76' Qiskit Experiments 0.5.3 is a minor improvement and fixes release. .. _Release Notes_0.5.3_New Features: New Features ------------ .. releasenotes/notes/irb-circuit-order-619845a707519c44.yaml @ b'920c4a5793d97de6d5bb1c61a0884bb69fe07723' - A new experiment option ``circuit_order`` was added to :class:`~.InterleavedRB`. It allows to change the order of the reference and the interleaved circuits and hence slightly alter the impact of noise on interleaved RB results. The default value is set to ``"RIRIRI"`` that alternate a reference and an interleaved circuit. .. _Release Notes_0.5.3_Bug Fixes: Bug Fixes --------- .. releasenotes/notes/irb-circuit-order-619845a707519c44.yaml @ b'920c4a5793d97de6d5bb1c61a0884bb69fe07723' - Changed the ordering of circuits generated by :class:`~.InterleavedRB` back to RIRIRI (R: Reference, I: Interleaved) order. It was accidentally changed into RRRIII order in `#898 `_. Before that, it had been RIRIRI order. .. _Release Notes_0.5.2: 0.5.2 ===== .. _Release Notes_0.5.2_Prelude: Prelude ------- .. releasenotes/notes/0.5/0_5_2_release-3be0f1395ff73aed.yaml @ b'cc74e355d1e76f8903876c9a02baa190385cc685' Qiskit Experiments 0.5.2 is a minor bug fix and performance improvement release. .. _Release Notes_0.5.2_New Features: New Features ------------ .. releasenotes/notes/attach-other-cals-2f539e7799ceb6c8.yaml @ b'cc74e355d1e76f8903876c9a02baa190385cc685' - A new method :meth:`.qiskit_experiments.calibration_management.Calibrations.has_template` has been added to :class:`~.qiskit_experiments.calibration_management.Calibrations` to check if a template schedule exists for a particular set of qubits. .. _Release Notes_0.5.2_Bug Fixes: Bug Fixes --------- .. releasenotes/notes/attach-other-cals-2f539e7799ceb6c8.yaml @ b'cc74e355d1e76f8903876c9a02baa190385cc685' - :class:`.FineXDragCal` and :class:`.EFRoughXSXAmplitudeCal` were updated to attach ``sx`` and ``x`` calibrations to their circuits, respectively. Previously, they only attached the ``x`` and ``x12`` calibrations that they were calibrating. See issue `#1158 `_. .. _Release Notes_0.5.2_Other Notes: Other Notes ----------- .. releasenotes/notes/0.5/0_5_2_release-3be0f1395ff73aed.yaml @ b'cc74e355d1e76f8903876c9a02baa190385cc685' - The performance of experiment analysis for parallel experiments has been improved significantly due to improved results marginalization. See PR `#1144 `_ for more details. .. _Release Notes_0.5.1: 0.5.1 ===== .. _Release Notes_0.5.1_Prelude: Prelude ------- .. releasenotes/notes/0.5/0_5_1_release-e445b6cc64742cc0.yaml @ b'99105a682d0f14bb9b6046430d83a30b86168c25' Qiskit Experiments 0.5.1 is a minor bug fix release. .. _Release Notes_0.5.1_Bug Fixes: Bug Fixes --------- .. releasenotes/notes/backend-in-rough-frequency-cal-8582610249e2327b.yaml @ b'2a089243eb94dc11061e3682e6e6bb6c44d09fbe' - Added a missing ``backend`` parameter to :class:`~.RoughEFFrequencyCal` and exposed it in the experiment library. .. releasenotes/notes/cals-no-coupling-map-5114ae9faa2f9e69.yaml @ b'ccbd5123700573ed5cfb7abf187834bd0601206c' - Fixed error generating circuits for :class:`.BaseCalibrationExperiment` subclasses when the backend instance had no coupling map. Fixed `#1116 `_. .. releasenotes/notes/matplotlib-fix-58d938b49771cf17.yaml @ b'38f26aa40e31cf2f30f73b7ae44fc62bac096c49' - Fixed a deprecated Matplotlib ``MarkerStyle`` usage in the visualization module that was causing warnings in Matplotlib 3.6+. .. _Release Notes_0.5.0: 0.5.0 ===== .. _Release Notes_0.5.0_Prelude: Prelude ------- .. releasenotes/notes/0.5/0_5_release-89f59845afb19e89.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' The Qiskit Experiments 0.5 release brings various improvements and bug fixes. Notable changes include the visualization module for drawing figures, which replaces the previous plotting functionality. The speed of randomized benchmarking experiments has been significantly improved. The ``qubit`` and ``qubits`` input to experiments has been regularized to ``physical_qubits``, and support for ``qiskit-ibmq-provider`` has been deprecated in favor of ``qiskit-ibm-provider``. New experiments added include :class:`.MultiStateDiscrimination`, :class:`.ZZRamsey`, :class:`.MitigatedStateTomography`, and :class:`.MitigatedProcessTomography`, along with significant improvements to other tomography experiments. The documentation has been significantly refactored and introductory tutorials have been added. .. _Release Notes_0.5.0_New Features: New Features ------------ .. releasenotes/notes/0.5/T1_experiment_level_1_mesurment_analysis-078db79e3b0c16b9.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added new class :class:`.T1KerneledAnalysis`. This class is used for the :class:`.T1` experiment with the option ``meas_level=MeasLevel.KERNELED``. The analysis normalizes the data and fixes its orientation. .. releasenotes/notes/0.5/add-new-visualization-module-9c6a84f2813459a7.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a new visualization module to plot figures and draw onto figure canvases. The new module contains plotters and drawers, which integrate with :class:`.CurveAnalysis` but can be used independently of the analysis classes. This module replaces the old and now deprecated ``qiskit_experiments.curve_analysis.visualization`` submodule. .. releasenotes/notes/0.5/add-new-visualization-module-9c6a84f2813459a7.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a new IQ plotting class :class:`.IQPlotter` for plotting IQ/level-1 data (individual shots and their average) and a discriminator that classifies the data into states. .. releasenotes/notes/0.5/add-new-visualization-module-9c6a84f2813459a7.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a new ``image()`` method to :class:`.BaseDrawer` and :class:`.MplDrawer` to plot two-dimensional images on a figure canvas. .. releasenotes/notes/0.5/backend-timing-bc05fd3cc7b41a45.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Introduced a new class :class:`qiskit_experiments.framework.BackendTiming`, which provides helper methods for rounding pulse and delay times to values compatible with a backend's timing constraints. .. releasenotes/notes/0.5/curve-analysis-4bcc10cf3a39a85d.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - New :class:`.BaseCurveAnalysis` option ``average_method`` has been added. This option modifies an averaging technique for y values over the same x values. It defaults to ``sample`` for the RB experiments and ``shots_weighted`` for the rest of analysis. Previously the setup was hardcoded in the ``_format_data`` method of the analysis class, and no statistical difference has been introduced with introduction of this option. .. releasenotes/notes/0.5/ecr_lib-381cb18885e81abd.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - A new basis gate library called :class:`.EchoedCrossResonance` has been added. .. releasenotes/notes/0.5/initial_circuit_resonator_spectroscopy-38914d54655033da.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a new ``initial_circuit`` option to :class:`.ResonatorSpectroscopy` for appending before measurements. This can be used to run resonator spectroscopy with different qubit states. .. releasenotes/notes/0.5/multi-state-discrimination-experiment-59344a21f9e99ca3.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a new experiment :class:`.MultiStateDiscrimination` for classifying IQ clusters of multi-level energy states. .. releasenotes/notes/0.5/multi-state-discrimination-experiment-59344a21f9e99ca3.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a new sklearn discriminator class :class:`~qiskit_experiments.data_processing.SkQDA`. .. releasenotes/notes/0.5/pulse-backend-for-test-tutorials-fad8b77615ff09e5.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added pulse simulator backends :class:`.PulseBackend` and subclass :class:`.SingleTransmonTestBackend` that use Qiskit Dynamics to simulate pulse schedules included in the calibrations attached to transpiled quantum circuits. The backend is capable of simulating level one (IQ) and level two (counts) data. The main purpose of this backend is to make the test suite more realistic and allow for tutorials that do not require hardware backends. .. releasenotes/notes/0.5/py311-49f08e1e0350c6b7.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - qiskit-experiments has been marked as compatible with Python 3.11 in the package metadata. qiskit-experiments currently tests against Python 3.7, 3.8, 3.9, 3.10, and 3.11. .. releasenotes/notes/0.5/ramsey_xy-4123317b014db3b0.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The algorithm to estimate fit parameter guesses in :class:`.RamseyXYAnalysis` has been upgraded. The previous algorithm was not robust to experiment outcomes with low frequency, where Ramsey X and Y curves almost remain at P=1.0 and 0.5, respectively. The new algorithm also offers reliable initial guesses for such situations. In addition, the number of frequency guesses has been increased to cover the uncertainty of FFT. .. releasenotes/notes/0.5/readout-error-c95b99ae5a6ba7ac.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a ``backend`` init kwarg to the :class:`.LocalReadoutError` and :class:`.CorrelatedReadoutError` experiments, and the ``physical_qubits`` kwarg has been made optional. If a backend is supplied without specifying physical qubits, the experiment will be initialized on all qubits for the backend. .. releasenotes/notes/0.5/separate-jobs-686711fba530820d.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a new experiment option for batch experiments called ``separate_jobs``. If set to ``True``, then circuits of different sub-experiments will be routed to different jobs. Default value is ``False``. .. releasenotes/notes/0.5/separate-jobs-686711fba530820d.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a ``max_circuits`` experiment option to :class:`~.BaseExperiment` to allow specifying the max number of circuits per job when running an experiment. If set to ``None`` (default), the max circuits per job is determined by the backend. If both the option value and backend value are not ``None``, the miniminum of the two values will be used for job splitting. .. releasenotes/notes/0.5/tomography-b091ce13d6983bc1.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added ``backend``, ``analysis``, and ``target`` init kwargs to the :class:`~.StateTomography` and :class:`~.ProcessTomography` experiments. These allow specifying the intended backend, a custom analysis class, or a custom target for fidelity calculations when initializing the experiments. .. releasenotes/notes/0.5/tomography-b091ce13d6983bc1.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Improved :class:`.LocalMeasurementBasis` and :class:`.LocalPreparationBasis` tomography basis classes support for initializing a noisy basis for performing state preparation and measurement error mitigated :class:`.StateTomography` and :class:`.ProcessTomography` experiments. For preparation bases, a noisy reset operation on a specific qubit, or subset of qubits, can now be input as a quantum channel, and the noisy prepared states are generated by applying the ideal instructions to the noisy initial state. For measurement bases, a noisy POVM or quantum channel can be supplied for the 0-index basis (typically the Z-basis), and other bases index POVMs will be generated by applying the ideal inverse instructions to the noisy POVMS. .. releasenotes/notes/0.5/tomography-b091ce13d6983bc1.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added an optional ``mitigator`` kwarg to :class:`.PauliMeasurementBasis` which can be used to initialize the basis with a :class:`~qiskit.result.LocalReadoutMitigator` to construct a readout error mitigated basis for use with :class:`.StateTomography` and :class:`.ProcessTomography` experiments. The :class:`.LocalReadoutError` experiment can be run to obtain the :class:`~qiskit.result.LocalReadoutMitigator` from its analysis results. .. releasenotes/notes/0.5/tomography-b091ce13d6983bc1.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added readout error mitigated tomography experiments :class:`.MitigatedStateTomography` and :class:`.MitigatedProcessTomography`. These are both implemented as a :class:`.BatchExperiment` consisting of a :class:`.LocalReadoutError` characterization experiment followed by either a :class:`.StateTomography` or :class:`.ProcessTomography` experiment. .. releasenotes/notes/0.5/tomography-b091ce13d6983bc1.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added support for conditional tomographic reconstruction to the :class:`.StateTomography` and :class:`.ProcessTomography` experiments. There are three types of conditioning that can be used independently or together in any combination for reconstruction of a state or channel as a list of components conditional on these values. The ``conditional_circuit_clbits`` init option can be used to specify any subset of clbits in an tomography circuit containing clbits to be conditioned on when peforming the tomographic reconstruction. The conditioning outcome value of the clbits is stored in the analysis results ``extra`` field. The ``conditional_measurement_indices`` analysis option can be used to condition on the measurement basis index and outcome value of a specific subset of tomographic basis measurements. The conditioning basis index and outcome value are both stored in the analysis results ``extra`` field. The ``conditional_preparation_indices`` analysis option can be used to condition on the preparation basis index of a specific subset of tomographic basis preprations. The conditioning basis index is stored in the analysis results ``extra`` field. .. releasenotes/notes/0.5/tomography-b091ce13d6983bc1.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Adds an option to :class:`~.StateTomographyAnalysis` and :class:`~.ProcessTomographyAnalysis` to bootstrap error bars on state and process fidelity analysis results. This can be activated by setting the ``target_bootstrap_samples`` analysis option to a value. Note that bootstrapping involves re-running the full tomography fit on re-samples of tomography outcome data for each measurement basis and hence the total analysis time will increase linearly with the number of bootstrap samples. .. releasenotes/notes/0.5/update-cr-hamtomo-with-duration-380da3452045cd0c.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The :class:`.CrossResonanceHamiltonian` experiment and its subclass now accept ``durations`` with default values. Note that values should be provided in units of seconds rather than samples, and must include pulse ramps at edges. Default values with linear increment are generated according to new experiment options, ``min_duration``, ``max_duration``, and ``num_durations``, when the durations are not explicitly provided. The default values are chosen by assuming a ZX rate of around 1 MHz which is typical for IBM Quantum backends. User can update these option values as well as provide full ``durations`` to tailor experiment settings to their device. Total durations should be carefully chosen not to overflow the waveform memory when the experiment is run on a real hardware. With this update, the minimum example code to run this experiment might be .. code-block:: python from qiskit_experiments.library.characterization import CrossResonanceHamiltonian expr = CrossResonanceHamiltonian(qubits=(0, 1), amp=0.3, backend=backend) exp_data = expr.run() where the durations to scan are implicitly set by experiment options. .. releasenotes/notes/0.5/zz-220e3c0894dd9076.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - A new experiment :class:`.ZZRamsey` has been added to measure the ZZ coefficient between a pair of qubits. .. _Release Notes_0.5.0_Known Issues: Known Issues ------------ .. releasenotes/notes/0.5/pulse-backend-for-test-tutorials-fad8b77615ff09e5.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The :class:`.PulseBackend` only supports single qubit operations and will be upgraded in the future. .. _Release Notes_0.5.0_Upgrade Notes: Upgrade Notes ------------- .. releasenotes/notes/0.5/0_4_deprecations-6e5efbaeeb870184.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Several deprecated methods and options have been removed and will no longer work: * ``BaseExperiment.analysis_options`` has been removed. ``experiment.analysis.options`` should be used instead. * The ``__analysis_class__`` attribute of :class:`.BaseAnalysis` has been removed. Use the ``analysis`` kwarg of ``BaseExperiment.__init__`` to specify a default analysis class. * The ``component_experiment_data()`` method has been removed from :class:`.ExperimentData` and replaced by :meth:`.ExperimentData.child_data`. * The ``CompositeExperiment.component_analysis`` method has been removed. Component analysis classes should be directly accessed using :meth:`.CompositeAnalysis.component_analysis`. * The ``library`` argument to :class:`.Calibrations` has been removed and replaced by ``libraries``. * The class attribute ``CurveAnalysis.__fixed_parameters__`` has been removed. The ``fixed_parameters`` analysis option should be set instead. * The method ``CurveAnalysis._data()`` has been removed. * The :class:`.CurveAnalysis` attribute ``__series__`` has been removed and is replaced by the constructor argument. * The ``FineDragAnalysis``, ``FineFrequencyAnalysis``, and ``FineHalfAngleAnalysis`` analysis classes have been removed and replaced by :class:`.ErrorAmplificationAnalysis`. * Randomized benchmarking utility functions ``get_error_dict_from_backend()``, ``count_ops()``, ``gates_per_clifford()``, ``calculate_1q_epg()``, and ``calculate_2q_epg()`` have been removed from :class:`.RBUtils` and replaced by methods in the RB experiment and analysis themselves. * The ``error_dict`` analysis option of :class:`.RBAnalysis` has been removed and merged into the analysis option ``gate_error_ratio``. .. releasenotes/notes/0.5/cal_transpiling-467fa52cde966fbf.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Transpilation in the calibration experiments has been upgraded. Calibration experiments define a carefully chosen set of gates and pulses that the transpiler should not modify. If these gates are modified by transpilation the results may be unusable. :class:`.BaseCalibrationExperiment` now defines its own transpilation to ensure a proper execution of the experiments. Transpile options are no longer needed for calibration experiments. .. releasenotes/notes/0.5/change-rb-transpile-option-188fd196c0c0d983.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The default transpile option value of ``optimization_level`` for RB experiments (:class:`~.StandardRB` and :class:`~.InterleavedRB`) was changed from ``0`` to ``1`` in order to reduce the number of gates in transpiled circuit and hence circuit generation/excution time and circuit sample variance in P(0) value. This is not an API change but, after this change, you will observe slower decay curves than before if you use the default configuration. And if you want to reproduce the results you obtained before this change, you may need to set ``optimization_level=0`` with :meth:`set_transpile_options`. .. releasenotes/notes/0.5/removed-ibmq-provider-1c757ce5ef01fb19.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - ``qiskit-ibmq-provider`` is deprecated and has been dropped as a requirement. Interactions with IBM backends should use the ``qiskit-ibm-provider`` package instead (must be installed separately; see the `migration guide `_ for more details). .. releasenotes/notes/0.5/t2backend-554b3edd4862d334.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The :class:`qiskit_experiments.test.t2hahn_backend.T2HahnBackend` was refactored to use the simulator from qiskit-aer which provides better performance. As part of the refactoring, support was removed for passing qubit parameters (e.g. ``t2hahn``, ``frequency``, ``initialization_error``, etc.) as single element lists when the backend has more than one qubit. These arguments need to be passed as numbers that apply to all qubits or sequences of numbers with one entry for each qubit. If passing numbers for a backend to represent more than one qubit, at least one parameter must be passed as a sequence or the ``num_qubits`` parameter must be passed to indicate how many qubits the backend should simulate. Additionally, passing ``None`` for these arguments was deprecated. The value that makes that option have no effect should be used instead (for example, ``0.0`` for ``initialization_error``). .. releasenotes/notes/0.5/tomography-b091ce13d6983bc1.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Renamed the ``qubits``, ``measurement_qubits``, and ``preparation_qubits`` init kwargs of :class:`~.StateTomography`, :class:`~.ProcessTomography`, and :class:`.TomographyExperiment` to ``physical_qubits``, ``measurement_indices`` and ``preparation_indices`` respectively. This is to make the intended use of these kwargs more clear as the measurement and preparation args refer to the index of circuit qubits in the physical qubits list, not the physical qubit values themselves. .. releasenotes/notes/0.5/tomography-b091ce13d6983bc1.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The automatic overriding of the default CVXPY SDP solver for the :func:`.cvxpy_gaussian_lstsq` and :func:`.cvxpy_linear_lstsq` has been disabled and will now use the default SDP solver of CVXPY unless a custom solver is set using the ``fitter_options`` analysis options. .. releasenotes/notes/0.5/tomography-b091ce13d6983bc1.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The ``weights`` kwarg of the :func:`.cvxpy_linear_lstsq` and :func:`.scipy_linear_lstsq` tomography fitters has been changed to accept a weights array the same shape as the supplied ``outcome_data`` array. .. releasenotes/notes/0.5/tphi-option-025f02c2c843c74f.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The :class:`.Tphi` has been changed to use :class:`.T2Hahn` as the default T2 estimate because it provides a more meaningful measurement on superconducting devices. An option ``t2type`` has been added to allow the user to toggle between using :math:`T_2^*` from :class:`.T2Ramsey` by specifying "ramsey" or :math:`T_2` from :class:`.T2Hahn`, which is the default value "hahn". .. _Release Notes_0.5.0_Deprecation Notes: Deprecation Notes ----------------- .. releasenotes/notes/0.5/add-new-visualization-module-9c6a84f2813459a7.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Deprecated the :mod:`qiskit_experiments.curve_analysis.visualization` submodule and replaced it with the new :mod:`qiskit_experiments.visualization` submodule. .. releasenotes/notes/0.5/curve-analysis-4bcc10cf3a39a85d.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Providing ``data_sort_key`` directly to the LMFIT model to instantiate :class:`.CurveAnalysis` has been deprecated. This option is not officially supported by the LMFIT, and thus curve analysis cannot guarantee this option is properly managed in all LMFIT model subclasses. .. releasenotes/notes/0.5/pulse-backend-for-test-tutorials-fad8b77615ff09e5.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - :class:`~qiskit_experiments.test.mock_iq_helpers.MockIQRabiHelper` is now deprecated and should be replaced with :class:`.SingleTransmonTestBackend`. .. releasenotes/notes/0.5/qubit-deprecate-13f123c35f0a3535.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Experiment constructor arguments ``qubit`` and ``qubits`` have been renamed ``physical_qubits``. For the ``qubit`` case, the argument type has changed from an integer to a sequence with a single integer. For example, ``FineXAmplitude(0)`` becomes ``FineXAmplitude([0])``. .. releasenotes/notes/0.5/tomography-b091ce13d6983bc1.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The ``qubits``, ``measurement_qubits``, and ``preparation_qubits`` init kwargs of :class:`~.StateTomography`, :class:`~.ProcessTomography`, and :class:`~.TomographyExperiment` have been deprecated. They have been replaced with kwargs ``physical_qubits``, ``measurement_indices`` and ``preparation_indices`` respectively. The renamed kwargs have the same functionality as the deprecated kwargs. .. releasenotes/notes/0.5/update-cr-hamtomo-with-duration-380da3452045cd0c.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The ``flat_top_widths`` argument and experiment option of :class:`.CrossResonanceHamiltonian` experiment and its subclass have been deprecated and will be removed in Qiskit Experiments 0.6. .. releasenotes/notes/0.5/update-number-to-2q-clifford-mapping-c28f1f29b0205d57.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Two helper methods :meth:`.CliffordUtils.random_cliffords` and :meth:`.CliffordUtils.random_clifford_circuits` have been deprecated. Their functionality are now incorporated into :meth:`.StandardRB.__sample_sequence`. .. _Release Notes_0.5.0_Bug Fixes: Bug Fixes --------- .. releasenotes/notes/0.5/analysis-replace-results-bug-fix-2d1a77921f5ec22e.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed a bug where old analysis results were saved in the case of a failed analysis. Now analysis results will be cleared before running :meth:`~.BaseAnalysis._run_analysis`. As a result, when analysis fails, an empty analysis result will be saved to the database service. .. releasenotes/notes/0.5/calibration-backendv2-e564f466eb1c9999.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Updated querying of :class:`~qiskit.providers.Backend` metadata to support the look up of qubit T1 and measurement drive frequency, in order to support :class:`~qiskit.providers.BackendV2` backends. The look up of the latter is ``qiskit-ibm-provider`` specific. This change fixed errors failing to find these properties when using :class:`.ResonatorSpectroscopy` (issue `#1099 `_) and when using restless measurements with ``BackendV2`` backends. .. releasenotes/notes/0.5/fix-drag-reanalysis-46f4c6679555242d.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed a bug where redoing :meth:`.DragCalAnalysis.run` generated wrong fit models. .. releasenotes/notes/0.5/fix-matplotlib-3.6.0-failing-test-5a747f61a9c357b4.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed a bug where :class:`.CurveAnalysis` tests would fail with matplotlib 3.6.0 owing to a deprecated function call used in :class:`.MplCurveDrawer`. The new :class:`.MplCurveDrawer` no longer uses the deprecated function. .. releasenotes/notes/0.5/fix-missing_calibration_updator_call-a255b28dd1449ea4.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed a bug where :class:`.Calibrations` was not updated when calibration experiments were run through the composite experiment framework. .. releasenotes/notes/0.5/readout-error-c95b99ae5a6ba7ac.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed a bug in the :class:`~.LocalReadoutError` experiment where analysis would fail when run on an ideal simulator with no readout error. See `Issue #992 `_ for additional details. .. releasenotes/notes/0.5/sklearn-imports-c82155c0a2c81811.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The importing of ``scikit-learn`` was moved from module-level imports inside of ``try`` blocks to dynamic imports at first usage of the ``scikit-learn`` specific feature. This change should avoid errors in the installation of ``scikit-learn`` from preventing a user using features of ``qiskit-experiments`` that do not require ``scikit-learn``. See `#1050 `_. .. releasenotes/notes/0.5/target-none-properties-2190e45d5d69cc60.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed :meth:`.BackendData.coupling_map` and :meth:`.BackendData.drive_freqs` raising exceptions when the underlying backend has ``None`` for its coupling and qubit property entries. Also, changed :meth:`.BackendData.control_channel` to return an empty list rather than ``None`` when there is no control channel data. See `#1035 `__. .. releasenotes/notes/0.5/tomo-barriers-aae4aafedaca5c3d.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed qpy serialization and deserialization of tomography experiments. The barrier instructions in tomography experiments were created with the wrong Python type which qpy did not support. This issue was most acute when using ``qiskit-ibm-provider`` which submits circuits to the provider using qpy. There could have been subtler issues with circuit timing using a different provider if the barriers were not separating important circuit instructions. See `#1060 `_. .. releasenotes/notes/0.5/tomography-b091ce13d6983bc1.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed bug in :class:`~.StateTomography` and :class:`~.ProcessTomography` experiments where if the input circuit contained conditional instructions with multiple classical registers the tomography measurement circuits would contain incorrect conditionals due to a bug in the :meth:`qiskit.circuit.QuantumCircuit.compose` method. See `Issue #942 `_ for additional details. .. releasenotes/notes/0.5/uarray-warning-d4c38566a510e58f.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - A ``RuntimeWarning`` will no longer be generated by ``numpy`` when running a data processor on level one data. See `#1071 `_. .. releasenotes/notes/0.5/update-cr-hamtomo-with-duration-380da3452045cd0c.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed a bug where the :class:`.EchoedCrossResonanceHamiltonian` experiment overestimated Hamiltonian coefficients by a factor of 2. .. _Release Notes_0.5.0_API Changes for Experiment Authors: API Changes for Experiment Authors ---------------------------------- .. releasenotes/notes/0.5/curve-analysis-4bcc10cf3a39a85d.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - To map experiment result data to a particular LMFIT model in :class:`.CurveAnalysis`, an author must provide the ``data_subfit_map`` analysis option rather than directly binding ``data_sort_key`` with the target LMFIT model. The ``data_subfit_map`` option is a dictionary keyed on the model name. For example, .. code-block:: python3 class MyAnalysis(CurveAnalysis): def __init__(self): super().__init__( models=[ lmfit.models.ExpressionModel(expr="x+a0", name="expr1"), lmfit.models.ExpressionModel(expr="x+a1", name="expr2"), ] ) @classmethod def _default_options(cls) -> Options: options = super()._default_options() options.data_subfit_map = {"expr1": {"tag": "1"}, "expr2": {"tag": "2"}} return options As shown in above, the dictionary that had been attached to each LMFIT model is now moved to the ``data_subfit_map`` option. .. _Release Notes_0.5.0_Other Notes: Other Notes ----------- .. releasenotes/notes/0.5/docs-refactoring-9f46f6539f57e8bd.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The package documentation has been updated with introductory tutorials and how-tos for solving specific problems. It is now refactored into four sections: learning tutorials, how-to guides, experiment manuals, and the API references. .. releasenotes/notes/0.5/docs-refactoring-9f46f6539f57e8bd.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The internal curve analysis helper functions in ``curve_analysis.data_processing`` have been moved to ``curve_analysis.utils``. .. releasenotes/notes/0.5/ecr_lib-381cb18885e81abd.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The :class:`.Calibrations` class has been updated to use the reference mechanism in Qiskit Pulse in which a schedule can refer to another schedule only by name. .. releasenotes/notes/0.5/fix-drag-reanalysis-46f4c6679555242d.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - An analysis option ``reps`` in :class:`.DragCalAnalysis` was dropped. Now analysis is bootstrapped with circuit metadata and setting this value no longer impacts the analysis result. This upgrade doesn't introduce any breaking API change for existing experiments. .. releasenotes/notes/0.5/rb_using_transpiled_cliffords-cd1376000a2379c4.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Improved the performance of circuit generation in 1Q/2Q randomized benchmarking experiments (about 10x speedup). That is mainly achieved by the following two updates in their implementation: * Custom transpilation of circuits (mapping circuits to physical qubits without using transpile), * Integer-based Clifford operations (especially sparse lookup table with triplet decomposition for 2Q Clifford circuits). .. releasenotes/notes/0.5/suppress-runtime-warning-a741dc96f6a0ce7a.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - NumPy runtime warning for zero division has been suppressed in :class:`.CurveAnalysis`. This warning could occur in the edge case where the experiment data may contain data point with zero uncertainty. Such data point is safely ignored by LMFIT, since it may apply infinite fit weight. This runtime warning suppression makes standard error cleaner. .. releasenotes/notes/0.5/update-number-to-2q-clifford-mapping-c28f1f29b0205d57.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - :meth:`.CliffordUtils.clifford_2_qubit` (and :meth:`.CliffordUtils.clifford_2_qubit_circuit`) changed its mapping between integers and 2Q Cliffords. As a consequence, circuits sampled by 2Q RB experiments may have been changed, even if exactly the same arguments are used for their construction. .. releasenotes/notes/0.5/update-number-to-2q-clifford-mapping-c28f1f29b0205d57.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Removed unnecessary ``Barrier`` instructions in front of circuits generated by :class:`.StandardRB` and :class:`.InterleavedRB`. .. _Release Notes_0.4.0: 0.4.0 ===== .. _Release Notes_0.4.0_Prelude: Prelude ------- .. releasenotes/notes/0.4/0_4_release-5716aa7442b995b2.yaml @ b'e6636bee289005debdd3f9bfde6455fc7b42cf38' The Qiskit Experiments 0.4 release includes major improvements to the :class:`.CurveAnalysis` class and other bug fixes and improvements. The database service has switched to the `qiskit-ibm-experiment `_ provider. Several new data processing nodes have been added. .. _Release Notes_0.4.0_New Features: New Features ------------ .. releasenotes/notes/0.4/backend_data_class-270cec767b463e97.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a new class, :class:`.BackendData`, which provides a common access inferface for both :class:`~qiskit.providers.backend.BackendV1` and :class:`~qiskit.providers.backend.BackendV2` data fields, since those classes do not share the same interface. The :class:`.BackendData` can be called on a backend and used immediately, and it is also automatically stored as the ``_backend_data`` field of :class:`.BaseExperiment`. Note that not all data fields are currently accessible via :class:`.BackendData`; to access additional fields, the corresponding method should be added to :class:`.BackendData` with correct treatment for both V1 and V2 backends. .. releasenotes/notes/0.4/curve-analysis-02a702a81e014adf.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The :class:`.CurveAnalysis` class has been modified to delegate the core fitting functionality to the `LMFIT `_ package. Fit curves are specified using `LMFIT Model `_ objects. For multi-curve fitting a list of models can be used. A new analysis option ``fit_method`` has been added to allow a user to select the fitting algorithm used by the LMFIT `minimizer `_. The default fit method is ``"least_squares"``. Analysis class author can flexibly define new analysis instance with LMFIT ``Model`` objects. See LMFIT documentation for user guide. .. releasenotes/notes/0.4/curve-analysis-02a702a81e014adf.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - New curve analysis baseclass :class:`.CompositeCurveAnalysis` has been added. This curve analysis variant offers a framework to fit experiment outcomes with different independent fit models. For example, if you define an experiment scanning a parameter with different conditions, e.g. with different control qubit states in some two-qubit gate experiment, the composite curve analysis can implement the experiment with simpler code compared with writing a conventional batch experment. See class documentation for more details. .. releasenotes/notes/0.4/curve-analysis-02a702a81e014adf.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - New options ``filter_data`` has been added to :class:`.CurveAnalysis` and its subclass. This dictionary provides a set of required metadata so that the analysis can filter experiment results input to the fitter. Curve analysis checks experiment result metadata, originating in the experiment circuit metadata, and the measure outcomes with matched metadata are only used for the fitting. .. releasenotes/notes/0.4/curve-analysis-02a702a81e014adf.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - New options have been added to the :class:`.CurveAnalysis` curve drawer. .. releasenotes/notes/0.4/curve-analysis-02a702a81e014adf.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The ``figure_title`` option has been added. This allows user to show an arbitrary string in the output figure title. See the example code below to learn how to set the option. .. code-block:: python exp = MyExperiment(...) exp.analysis.drawer.set_options(figure_title="Qubit0") .. releasenotes/notes/0.4/curve-analysis-02a702a81e014adf.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - ``plot_options`` has been added. This was conventionally included in the :class:`.SeriesDef` dataclass, which was static and not configurable. Now end-user can update visual representation of curves through this option. This option is a dictionary that defines three properties, for example, .. code-block:: python exp = MyExperiment(...) exp.analysis.drawer.set_options( plot_options={ "curve1": {"color": "r", "symbol": "o", "canvas": 0}, "curve2": {"color": "b", "symbol": "x", "canvas": 1}, } ) The dictionary is keyed on the curve name that should match with the ``name`` property of the LMFIT models provided to the curve analysis. ``color`` and ``symbol`` are the color and marker of the curves and the scatter plots, respectively. ``canvas`` specifies the sub-axis index, which is available when multi-axis plot is enabled. .. releasenotes/notes/0.4/data-processor-e13a17d4c6b8dc99.yaml @ b'e6636bee289005debdd3f9bfde6455fc7b42cf38' - A new data processing node :class:`.DiscriminatorNode` is added. This node wraps a pre-trained discriminator so that discrimination can be built into the data processing chain. The discriminator node is initialialized from a discriminator or list thereof which are objects that must have a predict method ``predict(x) -> y`` as is common in SKlearn. Here, :code:`x` is a list of IQ points and :code:`y` are the labels assigned to each point. .. releasenotes/notes/0.4/data-processor-e13a17d4c6b8dc99.yaml @ b'e6636bee289005debdd3f9bfde6455fc7b42cf38' - A new data processing node :class:`.RestlessToIQ` is added to process restless level one data, i.e., IQ data, in addition to the existing abstract class :class:`.RestlessNode` and :class:`.RestlessToCounts` for processing restless counts. .. _Release Notes_0.4.0_Upgrade Notes: Upgrade Notes ------------- .. releasenotes/notes/0.4/0_3_deprecations-45cc3cbb0d175332.yaml @ b'e6636bee289005debdd3f9bfde6455fc7b42cf38' - Several deprecated methods and options have been removed and will no longer work: * :meth:`.BaseExperiment.set_analysis_options` has been removed and should be replaced with :meth:`.BaseAnalysis.set_options`. * The ``curve_plotter`` option for :meth:`.CurveAnalysis.set_options` has been removed and replaced with ``curve_drawer``. * The ``curve_fitter`` option for :meth:`.CurveAnalysis.set_options` has been removed, now you can directly override :meth:`~CurveAnalysis._run_curve_fit` instead. * Setting ``style`` and drawer options with :meth:`.CurveAnalysis.set_options` has been disabled. Analyses should use ``drawer.set_options`` instead. * The ``FitVal`` class has been removed and replaced with the uncertainties package. * Boolean values for the analysis kwarg in :meth:`.BaseExperiment.run` have been disabled. Use ``analysis=default`` instead of ``analysis=True``, and ``analysis=None`` instead of ``analysis=False``. * :meth:`.BaseExperiment.run_analysis` has been removed. Use :meth:`.BaseAnalysis.run` instead. * :meth:`.BaseExperiment._postprocess_transpiled_circuits` is removed. Use :meth:`.BaseExperiment._transpiled_circuits` instead. * :meth:`.BaseExperiment.set_analysis_options` method has been deprecated, use the :meth:`.BaseAnalysis.set_options` method for the experiments analysis class instead. * The ``timeout`` kwarg of :meth:`.ExperimentData.add_data` has been removed. Timeout for adding jobs is now handled by the :meth:`.ExperimentData.add_jobs` method. * Adding data from jobs using :meth:`.ExperimentData.add_data` has been disabled. This method should now only be used to add data from Qiskit :class:`~qiskit.result` objects or raw data dicts. Job data should now be added using :meth:`.ExperimentData.add_jobs` instead. .. releasenotes/notes/0.4/curve-analysis-02a702a81e014adf.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - A new result class :class:`.CurveFitResult` is introduced. This class stores a richer context of curve fitting overview with several extra statistics. This is the minimum attributes of the LMFIT ``MinimizerResult`` with some extention. Fit parameters in UFloat representation are also stored while keeping the correlation information, which is accessible with the ``.ufloat_params`` property. Note that the value of the first analysis result entry titled with ``@Parameters_*`` has been replaced with this data format. This entry had been just a list of fit values in Python float format with covariance matrix separately stored in ``.extra`` metadata. Comparing with the conventional data, new class :class:`.CurveFitResult` provides users with a better understanding of the analysis outcome. New object has prettyprint mechanism. .. releasenotes/notes/0.4/curve-analysis-02a702a81e014adf.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The :class:`~.library.characterization.RoughDrag` characterization experiment has been upgraded with more flexibility. This experiment combines multiple DRAG parameter scans (curves) for different unit sequence reptitions. Conventionally this number is limited to three curves, however, now we can define more than three curves. The corresponding fit model is dynamically generated based on new fit option ``reps`` in the associated analysis :class:`~.library.characterization.DragCalAnalysis`. This may sometimes provide better accuracy for estimating the DRAG ``beta`` parameter. .. releasenotes/notes/0.4/curve-analysis-02a702a81e014adf.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The implementations of several methods in :class:`.BaseCurveAnalysis` have been moved to its subclass :class:`.CurveAnalysis`. :meth:`.BaseCurveAnalysis._run_data_processing`, :meth:`.BaseCurveAnalysis._format_data`, and :meth:`.BaseCurveAnalysis._run_curve_fit` have been turned into abstract methods, and :meth:`.BaseCurveAnalysis._generate_fit_guesses` has been moved to :class:`CurveAnalysis`. There is no net upgrade on the behavior of curve analysis subclasses, since :class:`.BaseCurveAnalysis` is an abstract class. .. releasenotes/notes/0.4/experiment_data_refactor-1bb5ba366fb09bc5.yaml @ b'e6636bee289005debdd3f9bfde6455fc7b42cf38' - The handling of communication with the database has been transferred to the new `qiskit-ibm-experiment `_ package and does not rely on the soon to be deprecated `qiskit-ibmq-provider `_ package. In addition, The :class:`.ExperimentData` and :class:`.DbExperimentData` classes were merged, and the inner handling of experiment data was somewhat simplified. This should not have any effect on the current codebase and its usage of :class:`.ExperimentData`. .. releasenotes/notes/0.4/figure_data-ecf5a82c95844b6a.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a :class:`.FigureData` class for adding metadata to analysis result figures. Figures added to :class:`.ExperimentData` are now stored using this class. The raw image object (SVG or matplotlib.Figure) can be accessed using the :attr:`.FigureData.figure` attribute. Note that currently metadata is only stored locally and will be discarded when saved to the cloud experiment service database. .. releasenotes/notes/0.4/remove-DumpedOscillationAnalysis-c8eeb70bcc70e12a.yaml @ b'e6636bee289005debdd3f9bfde6455fc7b42cf38' - The ``DumpedOscillationAnalysis`` class has been deprecated and will be removed soon. Use the :class:`.DampedOscillationAnalysis` class going forward. .. _Release Notes_0.4.0_Deprecation Notes: Deprecation Notes ----------------- .. releasenotes/notes/0.4/curve-analysis-02a702a81e014adf.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Multiple methods, classes and functions in curve analysis have been deprecated and replaced with using functionality of the LMFIT library. These include: * Curve fit solver :func:`.curve_fit` and :func:`.multi_curve_fit` * Dataclass of the curve fit result :func:`.FitData` * Some fit functions dedicated to a particular curve analysis in the module :mod:`~qiskit_experiments.curve_analysis.fit_function`. Now curve analysis author can define arbitrary fit functions callable or string with LMFIT models, not limited to functions in this module. .. releasenotes/notes/0.4/tomography-fitters-4a12b2ca9dee2625.yaml @ b'e6636bee289005debdd3f9bfde6455fc7b42cf38' - The ``scipy_linear_lstsq`` and ``scipy_gaussian_lstsq`` fitters for the :class:`.StateTomographyAnalysis` and :class:`.ProcessTomographyAnalysis` classes have been deprecated. The unweighted, unconstrained least-squares fitting performed by ``scipy_linear_lstsq`` is equivalent to the :func:`.linear_inversion` fitter, but with worse performance and memory usage. For weighted least-squares fitting the CVXPY fitters :func:`.cvxpy_linear_lstsq` or :func:`.cvxpy_gaussian_lstsq`, which also support support PSD and CPTP constraints, should be used instead. .. _Release Notes_0.4.0_Bug Fixes: Bug Fixes --------- .. releasenotes/notes/0.4/after-job-fail-aaaa0de4f28ae40c.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed a bug that caused analysis to sometimes run after job or previous analysis failure. .. releasenotes/notes/0.4/curve-analysis-02a702a81e014adf.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The ``.init_params`` value of the :class:`.CurveFitResult` has been fixed. This value was copied from the LMFIT ``MinimizerResult.init_values``, however this is not the initial parameters set to the solver. Now correct initial parameters are set to :attr:`.CurveFitResult.init_params`. .. releasenotes/notes/0.4/fix-analysis-result-copy-failing-22b3aa3a9fef18f2.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed a bug when copying :class:`.AnalysisResult` (and thus copying :class:`.ExperimentData` and re-running some analyses) where an exception, regarding the ``extra`` attribute of the :class:`.AnalysisResult` instance, would be thrown. .. releasenotes/notes/0.4/fix-multi-series-plot-ac5ff39cabf5d578.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed broken curve analysis output figure when multi canvas mode is enabled. Currently this feature is only used by :class:`.CrossResonanceHamiltonianAnalysis`. It has been plotting all series data in the same canvas due to the bug. .. releasenotes/notes/0.4/fix_composite_data_setting-6fe361e91d5625e2.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed a bug with the way composite experiments set the ``experiment_id`` and ``experiment_type`` of :class:`.AnalysisResult` and :class:`.ExperimentData`. .. releasenotes/notes/0.4/randomized_benchmarking-de55fda43765c34c.yaml @ b'eca6ce2a9c64f0b0b02d7434acf44e299c361613' - Initial guess function for the randomized benchmarking analysis :func:`~.guess.rb_decay` has been upgraded to give accurate estimate of the decay function base. .. releasenotes/notes/0.4/restless_enable_option-3486b0b0d89c1cd7.yaml @ b'94531e620a1df41efa7bc105f4c5e50405686725' - The :meth:`~.RestlessMixin.enable_restless` method of the :class:`.RestlessMixin` class now has the non-default option to supress errors when T1 values are lower than the repetition dely. This allows users to accomodate cases when backends report erronous T1 values. .. releasenotes/notes/0.4/timing-constraints-3b41f024c0f1b37e.yaml @ b'e6636bee289005debdd3f9bfde6455fc7b42cf38' - Do not adjust timing constraints in experiments :class:`.T1`, :class:`.T2Hahn`, :class:`.T2Ramsey`, and :class:`.RamseyXY`. This adjustment was needed to supply missing timing constraints information for IBM backends but is not needed now and can lead to problems (see `#881 `_). .. _Release Notes_0.3.1: 0.3.1 ===== New Features ------------ .. releasenotes/notes/0.3/0_3_1_release-43f09573952ce3ee.yaml @ b'7be5697f22e78842c961ddf70e478ebe8c3de59a' - The class :class:`~MockIQBackend` for testing has been updated to support multiple qubits. It now takes lists of IQ cluster centers and widths as input, and specific backends are now defined as subclasses of :class:`.MockIQExperimentHelper`. .. _Release Notes_0.3.1_stable_0.3_Bug Fixes: Bug Fixes --------- .. releasenotes/notes/0.3/0_3_1_release-43f09573952ce3ee.yaml @ b'7be5697f22e78842c961ddf70e478ebe8c3de59a' - Fixes a bug where instantiating the :class:`.CrossResonanceHamiltonian` experiment without specifying the ``cr_gate`` and ``backend`` init kwargs raises an exception. .. releasenotes/notes/0.3/0_3_1_release-43f09573952ce3ee.yaml @ b'7be5697f22e78842c961ddf70e478ebe8c3de59a' - Fixes a visualization error in the figure produced during analysis of :class:`.CrossResonanceHamiltonian` when multi-canvas plotting mode is enabled. .. releasenotes/notes/0.3/0_3_1_release-43f09573952ce3ee.yaml @ b'7be5697f22e78842c961ddf70e478ebe8c3de59a' - Fixes an issue with marginalization of kerneled and discriminated memory in :class:`.CompositeAnalysis` not working correctly. This fixes :class:`.ParallelExperiments` not working correctly for level-1 measurement data. .. releasenotes/notes/0.3/0_3_1_release-43f09573952ce3ee.yaml @ b'7be5697f22e78842c961ddf70e478ebe8c3de59a' - Fixes a bug with JSON serialization of :class:`.ExperimentData` due to Qiskit ``backend`` and ``service`` objects not being JSON serializable. These properties are now set to ``None`` in the serialized experiment data. .. _Release Notes_0.3.0: 0.3.0 ===== .. _Release Notes_0.3.0_Prelude: Prelude ------- .. releasenotes/notes/0.3/0_3_release-ba3ac7fef95aa042.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' The Qiskit Experiments 0.3 release includes several bug fixes and improvements and several new experiments added to the :mod:`~qiskit_experiments.library`. Added experiments include readout error, resonator spectroscopy, two-qubit fine amplitude, and several characterization experiments. Experiments can now be run restlessly without resetting. There are also numerous changes and improvements to the :class:`.BaseExperiment`, :class:`.ExperimentData`, :class:`.CurveAnalysis`, and composite experiment classes to improve JSON serialization, handling of metadata, accessing the status of jobs and experiments, and the storing and loading of experiments to and from the IBM experiment database service. .. _Release Notes_0.3.0_New Features: New Features ------------ .. releasenotes/notes/0.3/0_3_release-ba3ac7fef95aa042.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added an ``analysis`` kwarg to :class:`.CompositeExperiment`, :class:`.BatchExperiment` and :class:`.ParallelExperiment` to allow a user to supply a custom :class:`.CompositeAnalysis` instance. .. releasenotes/notes/0.3/cleanup-rb-experiment-f17b6e674ae4e473.yaml @ b'eca6ce2a9c64f0b0b02d7434acf44e299c361613' - The curve fit parameter guess function :func:`~.guess.rb_decay` has been added. This improves the initial parameter estimation of randomized benchmark experiments. .. releasenotes/notes/0.3/composite-analysis-c3119d5d2e64ce78.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added :meth:`.CompositeAnalysis.component_analysis` method for accessing a component analysis class object from a composite analysis object. .. releasenotes/notes/0.3/composite-combine-results-7c07820d99bd1b72.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a ``flatten_results`` init kwarg to :class:`.CompositeAnalysis`, :class:`.CompositeExperiment`, :class:`.ParallelExperiment`, and :class:`.BatchExperiment` that if set to ``True`` flattens all analysis results and figures from component experiment analysis into the main :class:`.ExperimentData` container, and does not save the individual child data components. Note that for nested composite experiments setting ``flatten_results=True`` will recursively set the same value for all component experiments that are also composite experiments. .. releasenotes/notes/0.3/curve-analysis-drawer-instance-bcfa18570915db2c.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - :class:`MplCurveDrawer` has been added for curve analysis visualization. This class instance is JSON serializable with the experiment encoder and it implements public methods to draw analysis results in several different formats. Its instance is attached to :class:`CurveAnalysis` instance as an analysis options ``curve_plotter``. This class is a drop-in replacement of :class:`MplDrawSingleCanvas` and :class:`MplDrawMultiCanvasVstack`. This instance has dedicated drawing options. New option ``subplots``, which is a tuple of two integer representing ``(n_rows, n_cols)``, defines arbitrary 2D array subplots without using :class:`MplDrawMultiCanvasVstack`. .. releasenotes/notes/0.3/curve-analysis-drawer-instance-bcfa18570915db2c.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - Drawing options are moved from :attr:`CurveAnalysis.options` to :attr:`MplCurveDrawer.options`. .. releasenotes/notes/0.3/exp-finalize-b7ca0a139ad5f872.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a :meth:`.BaseExperiment._finalize` method to :class:`.BaseExperiment` which is after configuring any runtime options, backend, or analysis classes but before generation and execution of experiment circuits during :class:`.BaseExperiment.run`. This method is intended to be overridden in experiment subclasses if they need to configure any analysis or runtime options based on a combination of properties of the experiment, for example some combination of backend, experiment and run options. .. releasenotes/notes/0.3/expdata-futures-87a2ff561375e22b.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Improved handling of job and analysis processes in :meth:`.ExperimentData`. Verbose logging information on execution of analysis callbacks in an experiment can enabled by setting the ``qiskit_experiments`` log level to ``DEBUG``. .. releasenotes/notes/0.3/expdata-futures-87a2ff561375e22b.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added :meth:`.ExperimentData.jobs` method for returning a list of Qiskit Jobs for a running or finished experiment. .. releasenotes/notes/0.3/expdata-futures-87a2ff561375e22b.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added :meth:`.ExperimentData.job_status` method for returning the status of Qiskit Job execution for an experiment. This returns a :class:`.JobStatus` enum class value. .. releasenotes/notes/0.3/expdata-futures-87a2ff561375e22b.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added :meth:`.ExperimentData.analysis_status` method for returning the status of analysis callbacks for an experiment. This returns a :class:`.AnalysisStatus` enum class value. .. releasenotes/notes/0.3/expdata-futures-87a2ff561375e22b.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added :meth:`.ExperimentData.cancel_analysis` method to allow cancelling pending analysis callbacks. Note that analysis callbacks that have already started running cannot be cancelled. .. releasenotes/notes/0.3/expdata-futures-87a2ff561375e22b.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added :meth:`.ExperimentData.cancel` to cancel both jobs and analysis. .. releasenotes/notes/0.3/expdata-futures-87a2ff561375e22b.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added :meth:`.ExperimentData.add_jobs` method for adding one or more Qiskit jobs to experiment data. This method takes an optional ``timeout`` kwarg that when used will automatically cancel all non-finished jobs that exceed the alloted time. .. releasenotes/notes/0.3/expdata-futures-87a2ff561375e22b.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added enum classes for experiment, job, and analysis status. .. releasenotes/notes/0.3/fake-service-e8b22e1a3394c136.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - Exposed and expanded the class :class:`~qiskit_experiments.test.FakeService`. The fake service will allow enhanced testing of qiskit-experiments and external packages. .. releasenotes/notes/0.3/fineZXamp-restless-e0dbed212676957f.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - A new mixin class :mod:`~qiskit_experiments.framework.RestlessMixin` is added that enables experiments to run in restless measurement mode, where the qubits are not reset after each measurement. .. releasenotes/notes/0.3/fineZXamp-restless-e0dbed212676957f.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - A new data processing node to marginalize qubit counts is introduced. This node is, for instance, used in the data processing of a fine ZX amplitude experiment run with restless measurements. .. releasenotes/notes/0.3/generalize-fine-amp-63dbf0d8af33fb1c.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - A new fine amplitude experiment for two qubits is added. This experiment accepts a two-qubit gate with on rotation angle as parameter. .. releasenotes/notes/0.3/readout-mitigation-experiment-4ea5392ee955a54c.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - Added two new experiments (:class:`~qiskit_experiments.library.LocalReadoutError` and :class:`~qiskit_experiments.library.CorrelatedReadoutError`) for characterizing the readout error of devices. .. releasenotes/notes/0.3/resonator-spectroscopy-89f790412838ba5b.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - Added a new experiment :py:class:`~qiskit_experiments.library.ResonatorSpectroscopy` to run spectroscopy on readout resonators. This is done by attaching a custom pulse-schedule to the measure instruction. Note that the resonator spectroscopy experiment may cause errors on backends that do not support circuit instructions with measurement schedules attached to them. .. releasenotes/notes/0.3/resonator-spectroscopy-89f790412838ba5b.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - A new data processing node :py:class:`~qiskit_experiments.data_processing.nodes.ToAbs` is introduced to take the absolute value of IQ points. This node is needed to analyse readout resonator spectroscopy IQ data since it rotates around in the IQ plane but can also be used in other contexts. .. releasenotes/notes/0.3/serialize-expdata-47ad38c94bf479e1.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added support for JSON serialization of :class:`.ExperimentData` objects. These objects can be serialized using the :class:`.ExperimentEncoder` and :class:`.ExperimentDecoder` classes. Note that serialization of general experiment results requires that the individual option values and analysis result types are themselves JSON serializable using the encoder and decoder classes. .. releasenotes/notes/0.3/serialize-expdata-47ad38c94bf479e1.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added support for pickling :class:`.ExperimentData` objects using the Python ``pickle`` module. .. releasenotes/notes/0.3/t2-hahn-experiment-84fb05d71b5ef250.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a :class:`~qiskit_experiments.library.characterization.T2Hahn` class for composing and running Hahn Echo experiment to estimate T2. .. releasenotes/notes/0.3/t2-hahn-experiment-84fb05d71b5ef250.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a :class:`~qiskit_experiments.library.characterization.analysis.T2HahnAnalysis` class for analyzing experiment data from :class:`~qiskit_experiments.library.characterization.T2Hahn`. .. releasenotes/notes/0.3/t2-hahn-experiment-84fb05d71b5ef250.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a :class:`~qiskit_experiments.test.T2HahnBackend` class for testing which simulates T2 noise statistics. .. releasenotes/notes/0.3/tomo-bases-e702b4094d717047.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - Added new tomography basis classes :class:`.LocalPreparationBasis` and :class:`.LocalMeasurementBasis` for constructing N-qubit bases from the tensor product of 1-qubit instructions. These classes can optionally be initialized with custom qubit-specific density matrix or POVM element states for respectively for tomographic reconstruction. .. releasenotes/notes/0.3/tphi-757e15fcb24219f9.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - Added a new experiment Tphi. It computes the pure dephasing time and is computed as :math:`1/T_\varphi = 1/T_{2*} - 1/2T_1`. It is implemented as a composite experiment with sub-experiments T1 and T2Ramsey. The new classes are: :class:`~qiskit_experiments.library.characterization.Tphi` - class defining the Tphi experiment. :class:`~qiskit_experiments.library.characterization.analysis.TphiAnalysis` - class for Tphi analysis. :class:`~qiskit_experiments.test.TphiBackend` - fake backend for running a Tphi experiment, based on the fake backends for T1 and T2Ramsey. .. releasenotes/notes/0.3/transpile-617bd3a4e6f1c0d8.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added :meth:`.BaseExperiment._transpiled_circuits` which returns a list of experiment circuits, transpiled. It can be overridden to define custom transpilation. .. releasenotes/notes/0.3/upgrade-curve-fit-4dc01b1db55ee398.yaml @ b'eca6ce2a9c64f0b0b02d7434acf44e299c361613' - The all curve fit plot generated by the :class:`CurveAnalysis` shows a confidence interval properly computed with error propagation. By default it shows 1 sigma and 3 sigma region but you can customize this via the ``style`` option of the curve analysis subclass. The :class:`PlotterStyle` dataclass has been updated with new attribute :attr:`plot_sigma` which takes a list of ``tuple(float, float)`` specifying a pair of sigma and transparency. .. releasenotes/notes/0.3/upgrade-serialize-data-processor-a3358b2a5e2fdc5b.yaml @ b'2008d3391ca10586c0c819c2474760322e20ec9a' - :class:`~qiskit_experiments.data_processing.data_processor.DataProcessor` and :class:`~qiskit_experiments.data_processing.data_action.DataAction` are now JSON serializable with the qiskit experiments default encoder. This allows one to retrieve a configured processor from the record and re-analyze loaded data with the processor. Trained nodes are serialized with accquired parameters so that the loaded processor can continue to process new data. .. _Release Notes_0.3.0_Upgrade Notes: Upgrade Notes ------------- .. releasenotes/notes/0.3/cleanup-cr-hamiltonian-experiment-7f47c51d26941f16.yaml @ b'2008d3391ca10586c0c819c2474760322e20ec9a' - Experiment :class:`~qiskit_experiments.library.characterization.CrossResonanceHamiltonian` and its subclasses have been upgraded. Now its instance can generate circuits without setting backend for just checking experiment sequence. The sequence with actual parameters is generated after the backend is set. In addition, now experiments can take ``cr_gate`` in the constractor which is ``Gate`` type subclass taking a single parameter (flat-top width). If one inputs a :class:`~qiskit.extensions.hamiltonian_gate.HamiltonianGate` subclass with cross resonance Hamiltonian, experiment can be simulated with Aer QASM simulator. .. releasenotes/notes/0.3/cleanup-curve-analysis-96d7ff706cae5b4e.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - :class:`.BaseCurveAnalysis` class has been added as a superclass of :class:`.CurveAnalysis`. The new base class doesn't define the :meth:`_run_analysis` abstract method and it cannot conduct analysis by itself, however it defines several subroutines that can be combined to build a custom fitting process in the subclass. This allows more flexibility to write custom curve analysis by directly inheriting from the new base class. See :class:`.BaseCurveAnalysis` for details. See also `Issue 737 `_ for discussion. .. releasenotes/notes/0.3/cleanup-curve-analysis-96d7ff706cae5b4e.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - The method :meth:`CurveAnalysis._generate_fit_guesses` has been upgraded with a new method signature. Now this method is called with ``curve_data`` argument that provides dataset which is used for curve fitting. If you define custom :class:`.CurveAnalysis` subclass in your codestack, you may need to upgrade the method. See :class:`.BaseCurveAnalysis` for details. .. releasenotes/notes/0.3/cleanup-curve-analysis-96d7ff706cae5b4e.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - Arguments of :class:`.FitData` have been updated to take ``x_data`` and ``y_data`` instead of ``x_range`` and ``y_range``. .. releasenotes/notes/0.3/cleanup-rb-experiment-f17b6e674ae4e473.yaml @ b'eca6ce2a9c64f0b0b02d7434acf44e299c361613' - The computation of error per gates (EPGs) from EPC in :class:`RBAnalysis` has been upgraded. To compute these values from a single EPC value obtained by the experiment, we should provide a guess of contribution per basis gate to the depolarization. This ratio has been extracted from backend properties with :meth:`RBUtils.get_error_dict_from_backend`, but this approach may result in unreproducible EPG outcomes under certain circumstances. See `PR 762 `_ for more details. Not this error ratio is provided from a hard-coded lookup table, and the user can still provide custom values with analysis option ``gate_error_ratio``. One can skip computation of EPGs by setting the option to ``False``. .. releasenotes/notes/0.3/cleanup-rb-experiment-f17b6e674ae4e473.yaml @ b'eca6ce2a9c64f0b0b02d7434acf44e299c361613' - :class:`RBAnalysis` has been upgraded to compute corrected EPC for 2Q RB. When the analysis option ``epg_1_qubit`` is provided, it returns two EPG analysis results, with and without correction for underlying single qubit depolarization channels. New result is added under the name ``EPC_corrected``. .. releasenotes/notes/0.3/composite-analysis-c3119d5d2e64ce78.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - :class:`.CompositeAnalysis` initialization is changed to require a list of :class:`.BaseAnalysis` objects so that these are stored in the class, rather than being accessed later via a composite experiment. This initialization is handled automatically by :class:`.ParallelExperiment` and :class:`.BatchExperiment` composite experiments. .. releasenotes/notes/0.3/composite-combine-results-7c07820d99bd1b72.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Changed the :class:`.Tphi` experiment and :class:`.TphiAnalysis` to combine the component analysis results so that it runs as a single experiment returning :math:`T_\phi`, :math:`T_1`, and :math:`T_2^\ast` analysis results. .. releasenotes/notes/0.3/composite-exp-transpile-e37c257ba007ff40.yaml @ b'2008d3391ca10586c0c819c2474760322e20ec9a' - The component experiment circuits of :class:`.ParallelExperiment` and :class:`.BatchExperiment` are now explicitly transpiled using the respective component experiments :meth:`~.BaseExperiment.transpile_options` before being combined into the composite circuits returned by the :class:`.BaseExperiment.circuits` method. Any transpile options set directly on the :class:`.ParallelExperiment` or :class:`.BatchExperiment` will also be applied as a transpile option to each component experiment. .. releasenotes/notes/0.3/composite-exp-transpile-e37c257ba007ff40.yaml @ b'2008d3391ca10586c0c819c2474760322e20ec9a' - The circuits returned by the :meth:`.ParallelExperiment.circuits` method of parallel circuits will now always be the combined circuits circuits of the transpiled circuits of the individual component experiments transpiled with that experiments transpile options. .. releasenotes/notes/0.3/curve-analysis-fixed-parameters-5915a29db1e2628b.yaml @ b'eca6ce2a9c64f0b0b02d7434acf44e299c361613' - New default :class:`CurveAnalysis` analysis option ``fixed_parameters`` has been added. We can directly exclude parameters from the fit model of the particular analysis instance, rather than defining a new class to define the class attribute :attr:`CurveAnalysis.__fixed_parameters__`. .. releasenotes/notes/0.3/data-processor-creation-8c399c4a4be9dd6b.yaml @ b'2008d3391ca10586c0c819c2474760322e20ec9a' - The function :func:`get_processor` of the data processing package has an updated signature to make the method easy to extend. This will allow a more flexible creation of data processors. .. releasenotes/notes/0.3/expdata-futures-87a2ff561375e22b.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The value returned by :meth:`.ExperimentData.status` has been changed from a string to a :class:`.ExperimentStatus` enum class value. .. releasenotes/notes/0.3/fix-tomography-fitter-b144c0df24c30d68.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The signature of the ``outcome_data`` argument of the tomography fitter functions in :mod:`.library.tomography` has been changed from a list of NumPy ndarray vectors of non-zero observed frequencies into a single ndarray matrix containing the observed frequencies of all possible measurement outcomes for the measurement bases. .. releasenotes/notes/0.3/generalize-fine-amp-63dbf0d8af33fb1c.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - The FineAmplitude experiment is refactored for more flexibility. Furthermore, the FineAmplitudeAnalysis class is upgraded to accept 0/1 calibration circuits to better fit the amplitude A of the ping-pong pattern. .. releasenotes/notes/0.3/get-processor-multiple-qubits-dbf8767d22eadccc.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - The processing of ``meas_level=2`` data in the function :func:`get_processor` is generalized to data processing of experiments with more than one qubit. .. releasenotes/notes/0.3/kids-in-analysis-df7b4dcbeb5b3125.yaml @ b'2008d3391ca10586c0c819c2474760322e20ec9a' - The :class:`.ParallelExperiment` and :class:`.BatchExperiment` composite experiments have been changed to no longer return analysis results containing information about sub-experiments. Instead, use the :meth:`~.ParallelExperiment.child_data` method to retrieve sub-experiments of a given composite experiment. .. releasenotes/notes/0.3/rb-data-processing-5433dc0257bb603e.yaml @ b'2008d3391ca10586c0c819c2474760322e20ec9a' - The RB data processing flow is updated to align it with the recent refactoring of the :func:`get_processor` function. The RB analysis will now use the :func:`get_processor` function to choose the suitable data processor. .. releasenotes/notes/0.3/remove-job-metadata-74ecfaa02f6182e1.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - The ``job_metadata`` field has been removed from :class:`.BaseExperiment`. Experiments which needed job metadata for analysis should now directly override the ``.BaseExperiment._metadata`` method to store the required job metadata. Individual experiments using :class:`.CurveAnalysis` based analysis have been updated to store the ``meas_level`` and ``meas_return`` run options in metadata if they have been set in the experiment for use in setting the data processor during analysis. .. releasenotes/notes/0.3/remove-job-metadata-74ecfaa02f6182e1.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - The ``BaseExperiment._additional_metadata`` method has been removed, and experiments should now directly override the ``BaseExperiment._metadata`` method to add additional experiment metadata to the run experiment data. .. releasenotes/notes/0.3/tomo-bases-e702b4094d717047.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - The tomography experiment basis classes :class:`.PauliMeasurementBasis`, :class:`.PauliPreparationBasis`, and :class:`.Pauli6PreparationBasis` have been upgraded to be instances of the new tomography bases classes :class:`.LocalMeasurementBasis` and :class:`.LocalPreparationBasis`. .. releasenotes/notes/0.3/tomo-bases-e702b4094d717047.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - Changed the signature of the :meth:`~.MeasurementBasis.circuit` and :meth:`~.MeasurementBasis.matrix` methods of tomography basis classes to require a ``qubits`` kwarg for specifying the specific physical qubits that the basis is being applied to. .. releasenotes/notes/0.3/upgrade-curve-fit-4dc01b1db55ee398.yaml @ b'eca6ce2a9c64f0b0b02d7434acf44e299c361613' - The :class:`.CurveAnalysis` class has been updated to use the covariance between fit parameters in the error propagation. This will provide more accurate standard error for your fit values. .. releasenotes/notes/0.3/upgrade-curve-fit-4dc01b1db55ee398.yaml @ b'eca6ce2a9c64f0b0b02d7434acf44e299c361613' - The data format of analysis result data value has been replaced from :class:`FitVal` to ``uncertainties.ufloat`` from the Python `uncertainties `__ package to support error propatation for post analysis computation. .. code-block:: python expdata = T1(0, delays, backend).run() fit_t1 = expdata.analysis_results("T1").value assert isinstance(fit_t1, UFloat) new_value = fit_t1 / 2 new_value.std_dev # show new standard error value Now ``fit_t1`` value is an ``uncertainties.ufloat`` instance with new properties :attr:`.nominal_value` and :attr:`.std_dev`, and you can directly apply mathematical operation to this object. The new error value is predicted by linear error propagation theory. Note that you no longer need to separately compute the standard error. This computation is offered by the `uncertainties `__ package which is a requirement since from Qiskit Experiments v0.2. The functions supporting error propagation is also available in ``uncertainties.umath``. .. releasenotes/notes/0.3/upgrade-curve-fit-4dc01b1db55ee398.yaml @ b'eca6ce2a9c64f0b0b02d7434acf44e299c361613' - In the analysis result object, :attr:`FitVal.unit` property has been moved to :attr:`DbAnalysisResultV1.extra` as metadata. .. _Release Notes_0.3.0_Deprecation Notes: Deprecation Notes ----------------- .. releasenotes/notes/0.3/cleanup-curve-analysis-96d7ff706cae5b4e.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - Several protected methods of :class:`.CurveAnalysis` intended to be overriden or directly be used by subclass have been deprecated. :meth:`CurveAnalysis._data` has been deprecated without alternative method to make :class:`.CurveAnalysis` state cleaner. Now relevent curve analysis methods requiring curve data are called with the ``curve_data`` argument. :meth:`CurveAnalysis._extra_database_entry` has also been deprecated. This method becomes a part of :meth:`CurveAnalysis._create_analysis_results`. Analysis class author can override this method to inject a code to create custom analysis results. .. releasenotes/notes/0.3/cleanup-rb-experiment-f17b6e674ae4e473.yaml @ b'eca6ce2a9c64f0b0b02d7434acf44e299c361613' - Calling :class:`RBUtils` methods have been deprecated and will be removed after 0.4. .. releasenotes/notes/0.3/composite-analysis-c3119d5d2e64ce78.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The :meth:`.CompositeExperiment.component_analysis` method has been deprecated. Component analysis classes should now be directly accessed from a :meth:`.CompositeAnalysis` object using the :meth:.`CompositeAnalysis.component_analysis` method. .. releasenotes/notes/0.3/curve-analysis-drawer-instance-bcfa18570915db2c.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - Conventional curve visualization classes :class:`MplDrawSingleCanvas`, :class:`MplDrawMultiCanvasVstack` and the stylesheet :class:`PlotterStyle` have been deprecated and now replaced with :class:`MplCurveDrawer`. These classes had been attached to the analysis instance as a ``curve_plotter`` which is a string and mapped to the class method ``.draw`` at runtime via :FitResultPlotters: Enum. It was almost impossible to track the code and hurted the readability. In addition, this implementation was problematic due to dependency on the raw data points saved in an instance variable. See qiskit-experiments/#737 for details. .. releasenotes/notes/0.3/curve-analysis-fixed-parameters-5915a29db1e2628b.yaml @ b'eca6ce2a9c64f0b0b02d7434acf44e299c361613' - Class attribute :attr:`CurveAnalysis.__fixed_parameters__` has been deprecated and support for the instantiation of the class with this attribute will be dropped soon. In addition, the fixed parameter value defined as a standalone analysis option has been deprecated. Please set `fixed_parameters` option instead. This is a python dictionary of fixed parameter values keyed on the fit parameter names. .. releasenotes/notes/0.3/curve-analysis-fixed-parameters-5915a29db1e2628b.yaml @ b'eca6ce2a9c64f0b0b02d7434acf44e299c361613' - Analysis class ``FineDragAnalysis`` has been deprecated. Now you can directly set fixed parameters to the :class:`.ErrorAmplificationAnalysis` instance as an analysis option. .. releasenotes/notes/0.3/curve-analysis-fixed-parameters-5915a29db1e2628b.yaml @ b'eca6ce2a9c64f0b0b02d7434acf44e299c361613' - Analysis class ``FineFrequencyAnalysis`` has been deprecated. Now you can directly set fixed parameters to the :class:`.ErrorAmplificationAnalysis` instance as an analysis option. .. releasenotes/notes/0.3/curve-analysis-fixed-parameters-5915a29db1e2628b.yaml @ b'eca6ce2a9c64f0b0b02d7434acf44e299c361613' - Analysis class ``FineHalfAngleAnalysis`` has been deprecated. Now you can directly set fixed parameters to the :class:`.ErrorAmplificationAnalysis` instance as an analysis option. .. releasenotes/notes/0.3/deprecate-cals-library-128909c1379330fe.yaml @ b'2008d3391ca10586c0c819c2474760322e20ec9a' - The library argument to :class:`.Calibrations` has been deprecated in favour of a new argument called libraries. .. releasenotes/notes/0.3/expdata-futures-87a2ff561375e22b.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Adding data from jobs using :meth:`.ExperimentData.add_data` has been deprecated. This method should now only be used to add data from Qiskit :class:`.Result` objects or raw data dicts. Job data should now be added using the new :meth:`.ExperimentData.add_jobs` method instead. .. releasenotes/notes/0.3/expdata-futures-87a2ff561375e22b.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The ``timeout`` kwarg of :meth:`.ExperimentData.add_data` has been deprecated. Timeout for adding jobs is now handled by the :meth:`.ExperimentData.add_jobs` method. .. releasenotes/notes/0.3/transpile-617bd3a4e6f1c0d8.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - ``BaseExperiment._postprocess_transpiled_circuits`` is deprecated and will be removed in the 0.4.0 release. Use :meth:`.BaseExperiment._transpiled_circuits` instead. .. releasenotes/notes/0.3/upgrade-curve-fit-4dc01b1db55ee398.yaml @ b'eca6ce2a9c64f0b0b02d7434acf44e299c361613' - The :class:`FitVal` class had been deprecated and being replaced with the uncertainties package. When loading saved experiments or analysis results any :class:`FitVal` s will be implicitly converted into :class:`UFloat` which should be re-saved to ensure these experiments can be reloaded in the future. .. _Release Notes_0.3.0_Bug Fixes: Bug Fixes --------- .. releasenotes/notes/0.3/add-delay-support-in-irb-ae090968aadd7a54.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed a bug in the :class:`.InterleavedRB` experiment where a :class:`.Delay` instruction, or a Clifford circuit containing delay instructions, could not be used as the interleaved element. .. releasenotes/notes/0.3/cvxpy-utils-10ad67668aea82fe.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed built-in tomography fitter functions :func:`.cvxpy_linear_lstsq`, :func:`.cvxpy_gaussian_lstsq`, :func:`.scipy_linear_lstsq`, :func:`.scipy_gaussian_lstsq`, :func:`.linear_inversion` to make the ``measurement_basis`` kwarg optional so that these functions could be used for fitting raw tomography fitter data with preparation data but no measurement data. .. releasenotes/notes/0.3/cvxpy-utils-10ad67668aea82fe.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed bug in :class:`.TomographyAnalysis` when accumulating count data from repeated circuits using the same preparation and measurement basis configuration. .. releasenotes/notes/0.3/expdata-futures-87a2ff561375e22b.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed an issue with :meth:`.ExperimentData.block_for_results` sometimes having a race issue with all analysis callbacks finishing. .. releasenotes/notes/0.3/experiment_service_fixes-94730fd6bab83956.yaml @ b'eca6ce2a9c64f0b0b02d7434acf44e299c361613' - :meth:`.ExperimentData.save` should now fail gracefully when experiment metadata failed to save instead of crashing. .. releasenotes/notes/0.3/experiment_service_fixes-94730fd6bab83956.yaml @ b'eca6ce2a9c64f0b0b02d7434acf44e299c361613' - The link to the experiment entry in the database service shown after saving is now by default obtained from the service, not hard-coded. .. releasenotes/notes/0.3/fineZXamp-restless-e0dbed212676957f.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - The FineZXAmplitude now works properly with restless measurements. .. releasenotes/notes/0.3/fix-asymmetric-qpt-3107ef95e8c117c6.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed a bug with the :class:`.ProcessTomography` where the default target channel analysis option was computed incorrectly if not all qubits were prepared and measured, and the preparations and measurements were applied to different subsets of qubits. See `Issue 758 `_ for details. .. releasenotes/notes/0.3/fix-asymmetric-qpt-3107ef95e8c117c6.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed a bug with the :class:`.ProcessTomographyAnalysis` where analysis would raise an exception if the number of prepared and measurement qubits are not equal. See `Issue 757 `_ for details. .. releasenotes/notes/0.3/fix-composite-copy-a869e9773f6a4d48.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed :meth:`.ParallelExperiment.copy` and :meth:`.BatchExperiment.copy` so that the copies preserves any references between the original component experiments analysis classes and the :class:`.CompositeAnalysis` classes component analysis classes. .. releasenotes/notes/0.3/fix-composite-copy-a869e9773f6a4d48.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed :meth:`.CompositeAnalysis.copy` to recursively make a copy of the component analysis classes. .. releasenotes/notes/0.3/fix-decay-init-guess-22903624c6b7490e.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - The initial guess function :func:`exp_decay`, which estimates an exponent of the decay curve by taking the natural logarithm of the y values, has been updated to handle exceptions when some y values are negative. .. releasenotes/notes/0.3/fix-json-main-bedf4b9b18c851ac.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed a bug with JSON deserialization using the :class:`.ExperimentDecoder` failing to decode custom user classes defined in the ``__main__`` scope of python scripts and notebooks. .. releasenotes/notes/0.3/fix-nested-comp-66a2b8b6e3b404be.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed bug in :class:`.CompositeAnalysis` where analysis of nested composite experiments could raise a RuntimeError. .. releasenotes/notes/0.3/fix-tomography-fitter-b144c0df24c30d68.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed a bug in :class:`.TomographyAnalysis` where the basis elements of unobserved measurement outcomes were not being included in the fitter objective function for least-squares fitters (CVXPY and SciPy). This would lead to lower than expected fit fidelities when fitting data with many zero count outcomes (typically synthetic data from ideal simulation). .. releasenotes/notes/0.3/fix-tomography-fitter-b144c0df24c30d68.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed issue with the CVXPY :class:`.ProcessTomography` analysis fitter functions :func:`.cvxpy_linear_lstsq` and :func:`cvxpy_gaussian_lstsq` where the trace preserving constraint was not being applied to the fit functions by default and required being explicitly passed as a ``solver_option``. Now all CVXPY process tomography experiments will have this option set to True by default unless a user explicitly disables it by setting the solver_option to False. .. releasenotes/notes/0.3/fixed-experiment-link-87a7059830c140e6.yaml @ b'2008d3391ca10586c0c819c2474760322e20ec9a' - Cloud database experiment links no longer display when there was an error saving to the API. .. releasenotes/notes/0.3/improve-cancel-a1e7b6dc331014cd.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed some issues with :meth:`.ExperimentData.cancel_analysis` and :meth:`.ExperimentData.cancel` to make cancelling analysis callbacks more robust. .. releasenotes/notes/0.3/improve-cancel-a1e7b6dc331014cd.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed :meth:`.ExperimentData.block_for_results` to handle blocking in recursive cases where an analysis callback adds another job or analysis callback. .. releasenotes/notes/0.3/resonator-spectroscopy-89f790412838ba5b.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - The ResonanceAnalysis class has been switched from a Gaussian fit to a Lorentzian fit function. Furthermore, the Gaussian fitting capability is preserved by moving the Gaussian fitting to a new class called GaussianAnalysis. Note that the previous analysis can be used by doing: .. code:: python spec = ResonatorSpectroscopy(qubit, backend) spec.analysis = GaussianAnalysis() where :code:`GaussianAnalysis` is imported from ``curve_analysis``. .. releasenotes/notes/0.3/svd-node-fix-bec02332e1db96ec.yaml @ b'2008d3391ca10586c0c819c2474760322e20ec9a' - A bug related to single-shot data in the SVD data processing node is fixed. .. releasenotes/notes/0.3/upgrade-serialize-data-processor-a3358b2a5e2fdc5b.yaml @ b'2008d3391ca10586c0c819c2474760322e20ec9a' - Poor python instance representation of :class:`~qiskit_experiments.data_processing.data_action.DataAction` has been upgraded to show all information contained in the class instance. .. _Release Notes_0.3.0_API Changes for Experiment Authors: API Changes for Experiment Authors ---------------------------------- .. releasenotes/notes/0.3/cvxpy-utils-10ad67668aea82fe.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Refactored some of the internal CVXPY code in ``qiskit_experiments.library.tomography.fitters.cvxpy_utils`` used by the CVXPY tomography fitters to make it easier to generate complex variable SDP optimization problems. .. releasenotes/notes/0.3/developer_add_success_check-5ddd1d56be29a329.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - The :py:func:`assertExperimentDone` function has been added to :py:class:`test.base.QiskitExperimentsTestCase`. This assertion will check if all threads in the experiment data are successfuly completed. This function calls :meth:`block_for_results` and then checks if the experiment status returns ``DONE`` after execution. It is `highly recommended` to use this test right after each experiment execution to detect program malfunction, which is particularly relevant to python multi-threading in multi-platform. .. releasenotes/notes/0.3/feature-warnings-helper-c44bfb654345f437.yaml @ b'2008d3391ca10586c0c819c2474760322e20ec9a' - New module :mod:`qiskit_experiments.warnings` has been added. This module implements several decorator functions to raise user-friendly deprecation warning and some also patch the decorated logic to implements new logic for backport. See decorator function documentations for details. .. releasenotes/notes/0.3/tomo-bases-e702b4094d717047.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - Streamlined the tomography experiment basis base classes into two abstract base classes :class:`.PreparationBasis` and :class:`.MeasurementBasis`. .. releasenotes/notes/0.3/upgrade-serialize-data-processor-a3358b2a5e2fdc5b.yaml @ b'2008d3391ca10586c0c819c2474760322e20ec9a' - Data handling of training parameters in :class:`~qiskit_experiments.data_processing.data_action.TrainableDataAction` has been upgraded for the JSON serialization. Updated class implements :meth:`_default_parameters`, :meth:`set_parameters`, and :meth:`parameters` methods, where the training parameters are managed with :class:`Options` instance. A node developer must implement :meth:`_default_parameters` class method to automatically populate the JSON configuration dictionary. .. _Release Notes_0.3.0_Other Notes: Other Notes ----------- .. releasenotes/notes/0.3/fix-error-amp-analysis-bounds-784f3aa66d16048a.yaml @ b'2008d3391ca10586c0c819c2474760322e20ec9a' - Default fit bounds for ``d_theta`` parameter of :py:class:`qiskit_experiments.curve_analysis.ErrorAmplificationAnalysis` class has been updated from [-pi, pi] to [-0.8 pi, 0.8 pi]. This change will improve the bad fit when the error value is really close to zero. This has sometimes yielded in ``d_theta`` ~ pi rather than zero. Though 0.8 is the empirical factor, this is okey for most situations since the amplification analysis is applied to experiments in the small error regime (this is often sufficiently smaller than pi). .. _Release Notes_0.2.0: 0.2.0 ===== .. _Release Notes_0.2.0_Prelude: Prelude ------- .. releasenotes/notes/0.2/0_2_release-eef5e3ba256fc750.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' The Qiskit Experiments 2.0 release includes several bug fixes and improvements and many new experiments added to the :mod:`~qiskit_experiments.library`. Added experiments include a full suite of single-qubit gate calibration and characterization experiments, and two-qubit Cross-resonance Hamiltonian characterization experiments. There are also numerous changes and improvements to the base classes in :mod:`~qiskit_experiments.framework` and :mod:`~qiskit_experiments.calibration_management` to make developing new experiments easier, to improve JSON serialization, and to improve storing and loading experiments for the IBM experiment database service. .. _Release Notes_0.2.0_New Features: New Features ------------ .. releasenotes/notes/0.2/0_2_release-eef5e3ba256fc750.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - You can now change the default ``matplotlib`` backend used for generated figures by setting ``qiskit_experiments.framework.matplotlib.default_figure_canvas`` to the desired canvas. Note that it has to be a canvas for one of the `non-interactive backend `_. For example, you can set ``default_figure_canvas`` to :class:`~matplotlib.backends.backend_agg.FigureCanvasAgg` to use the ``AGG`` backend. .. releasenotes/notes/0.2/base-analysis-b261afaa40518b53.yaml @ b'770a3dffd30d9093ec20ad85676f0b2f92393c4a' - Added the ``replace_results`` kwarg to :meth:`~qiskit_experiments.framework.BaseAnalysis.run` with default value of ``replace_results=False``. If analysis is run with ``replace_results=True`` then any analysis results and figures in the experiment data will be cleared and replaced with the new analysis results. Saving this experiment data will replace any previously saved data in a database service using the same experiment ID. If analysis is run with ``replace_results=False`` and the experiment data being analyzed has already been saved to a database service, or already contains analysis results or figures, a copy with a unique experiment ID will be returned containing only the new analysis results and figures. This data can then be saved as its own experiment to a database service. .. releasenotes/notes/0.2/base-analysis-b261afaa40518b53.yaml @ b'770a3dffd30d9093ec20ad85676f0b2f92393c4a' - Added a :meth:`~qiskit_experiments.framework.BaseAnalysis.set_options` method and :meth:`~qiskit_experiments.framework.BaseAnalysis.options` property to the :class:`qiskit_experiments.framework.BaseAnalysis` class to store and retrieve any analysis options in the state of the analysis instance. .. releasenotes/notes/0.2/base-experiment-14eba2646ef0f0b9.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The ``analysis`` kwarg of :meth:`qiskit_experiments.framework.BaseExperiment.run` can now optionally be passed a :class:`qiskit_experiments.framework.BaseAnalysis` instance to use for analysis of that single execution. If no instance is provided the current stored :meth:`~qiskit_experiments.framework.BaseExperiment.analysis` instance for that experiment will be used. Setting ``analysis=None`` disables analysis for the specific execution. .. releasenotes/notes/0.2/base-experiment-14eba2646ef0f0b9.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added ``backend`` as an optional ``__init__`` kwarg for all experiments to allow setting the backend at initialization. The backand can also be set and retrieved from the experiment object after construction using the :meth:`~qiskit_experiments.framework.BaseExperiment.backend` property and setter. When using the ``backend`` kwarg of :meth:`~qiskit_experiments.framework.BaseExperiment.run` to specify a backend this will temporarily override any currently set backends for that single execution. .. releasenotes/notes/0.2/base-experiment-14eba2646ef0f0b9.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added :class:`~qiskit_experiments.framework.ExperimentConfig` dataclass for storing the configuration of an experiment. This configuration can be obtained by using the :meth:`~qiskit_experiments.framework.BaseExperiment.config` property. Experiments can also be reconstructed from their configuration using the :meth:`~qiskit_experiments.framework.BaseExperiment.from_config` class method. .. releasenotes/notes/0.2/base-experiment-14eba2646ef0f0b9.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added automatic job splitting to :class:`~qiskit_experiments.framework.BaseExperiment` for execution of experiments with a larger number of circuits than can be run in a single job on the target backend. This enables running large experiments on legacy and non-IBM backends that don't handle job splitting automatically. .. releasenotes/notes/0.2/calibrations-97c6ae807d54015d.yaml @ b'770a3dffd30d9093ec20ad85676f0b2f92393c4a' - Added support for JSON serialization to :class:`qiskit_experiments.calibration_management.BasisGateLibrary`. .. releasenotes/notes/0.2/calibrations-97c6ae807d54015d.yaml @ b'770a3dffd30d9093ec20ad85676f0b2f92393c4a' - Simplified the update library for calibration experiments by merging this functionality into the :class:`qiskit_experiments.calibration_management.BaseCalibrationExperiment`. Future releases may fully deprecate the :class:`qiskit_experiments.calibration_management.update_library.BaseUpdater` in favour of moving its functionality into the :class:`~qiskit_experiments.calibration_management.BaseCalibrationExperiment`. .. releasenotes/notes/0.2/data-processors-d6430844d2701eb1.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - The :class:`qiskit_experiments.data_processing.Probability` data processing node has been enhanced to compute the estimated mean and standard deviation of a measured outcome probability using a Bayesian update of a a Beta distribution prior from the observed measurement outcomes. The default prior is an uninformative prior. The user can also provide a custom prior for the probability distribution. .. releasenotes/notes/0.2/experiment-data-5465208160fe6b6a.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added :meth:`~qiskit_experiments.database_service.DbExperimentData.add_analysis_callback` method to :class:`~qiskit_experiments.framework.ExperimentData` for adding a post-processing analysis function to run as a callback after currently executing experiment jobs are finished. .. releasenotes/notes/0.2/experiment-data-5465208160fe6b6a.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a ``block`` kwarg with default value ``block=True`` to the :meth:`qiskit_experiments.framework.ExperimentData.analysis_results` method. If this is True then calling :meth:`~qiskit_experiments.framework.ExperimentData.analysis_results` will block to wait for all running analysis callbacks to finish before returning results. This prevents issues where trying to retrieve analysis results before analysis was finished would raise an error that the result could not be found. Note that in the case of :class:`~qiskit-experiments.framework.ParallelExperiment` and :class:`~qiskit-experiments.framework.BatchExperiment` blocking or calling ``analysis_results`` on the parent experiment should be performed before attempting to access results in the component experiment data containers to ensure the component analysis callbacks have been initialized. .. releasenotes/notes/0.2/experiment-data-5465208160fe6b6a.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The :class:`~qiskit_experiments.framework.ExperimentData` class can now store child ``ExperimentData`` containers. Child data can either be added at initialization using the ``child_data`` kwarg or added later using the :meth:`~qiskit_experiments.framework.ExperimentData.add_child_data` method. Child ``ExperimentData`` can be accessed using the :meth:`~qiskit_experiments.framework.ExperimentData.child_data` method. .. releasenotes/notes/0.2/experiment-data-5465208160fe6b6a.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a :meth:`~qiskit_experiments.framework.ExperimentData.copy` method to :class:`~qiskit_experiments.framework.ExperimentData` which allows making a copy of an experiment data container with a new experiment ID, new result IDs, and new figure names, generated for the copy. This method has a kwarg option ``copy_results`` that can be set to ``False`` to only copy the experiment :meth:`~qiskit_experiments.framework.ExperimentData.data` and metadata, but not the analysis results and figures. .. releasenotes/notes/0.2/experiment-data-5465208160fe6b6a.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added methods :meth:`~qiskit_experiments.framework.ExperimentData.add_tags_recursive` and :meth:`~qiskit_experiments.framework.ExperimentData.remove_tags_recursive` to :class:`qiskit_experiments.framework.ExperimentData` for adding and removing tags of an experiment data object and all its :meth:`~qiskit_experiments.framework.ExperimentData.child_data`. .. releasenotes/notes/0.2/experiment-data-5465208160fe6b6a.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added support for saving and loading :class:`qiskit_experiments.framework.ParallelExperiment` and :class:`qiskit_experiments.framework.BatchExperiment` experiment data and all component experiment data and results from the IBM experiments database service. Changing the share level of the parent composite experiment will also change the share level of all component experiments. When saving composite experiments each component experiment analysis results and figures will be saved under a unique experiment ID. Note that these component experiments do not save any of the marginalized circuit result data. The unmarginalized circuit result data is saved in the parent componsite experiments. .. releasenotes/notes/0.2/library-26e6cf3dfbc3acb3.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a collection of experiments for performing single-qubit gate :mod:`~qiskit_experiments.library.characterization` and :mod:`~qiskit_experiments.library.calibration`. The new experiments are * :class:`~qiskit_experiments.library.characterization.Rabi`: This experiment scans the amplitude of a pulse and measures the qubit population. This allows us to determine the amplitude that creates, for example, an ``X`` gate and/or a ``SX`` gate. * :class:`~qiskit_experiments.library.calibration.RoughXSXAmplitudeCal`: The calibration version of :class:`~qiskit_experiments.library.characterization.Rabi`. It extracts the amplitudes needed to implement an ``X`` gate an a ``SX`` gate. This type of calibration is a rough amplitude calibration since the resulting parameter value is typically not very precises. * :class:`~qiskit_experiments.library.characterization.FineAmplitude`: This experiment repeats a rotation a variable number of times to amplify over- and under-rotations. The resulting ping-pong pattern in the qubit population is fit to determine the error in the rotation angle. This experiment has specializations for X (:class:`~qiskit_experiments.library.characterization.FineXAmplitude`) and SX (:class:`~qiskit_experiments.library.characterization.FineSXAmplitude`) gates. * :class:`~qiskit_experiments.library.calibration.FineAmplitudeCal`: The calibration version of :class:`~qiskit_experiments.library.characterization.FineAmplitude`. It will update the amplitude of the pulse according to the measurred deviation. This experiment has specializations for X (:class:`~qiskit_experiments.library.calibration.FineXAmplitudeCal`) and SX (:class:`~qiskit_experiments.library.calibration.FineSXAmplitudeCal`) gates. * :class:`~qiskit_experiments.library.characterization.RoughDrag`: This experiment scans the DRAG parameter of a repeated sequence of rotation and anti-rotation. If the DRAG parameter does not have the correct value phase errors will accumulate and the repeated sequece of gates will not return the qubit to the ground state. * :class:`~qiskit_experiments.library.calibration.RoughDragCal`: The calibration version of :class:`~qiskit_experiments.library.characterization.RoughDrag`. * :class:`~qiskit_experiments.library.characterization.FineDrag`: This experiment iterates the gate sequence Rp - Rm where Rp is a rotation around an axis and Rm is the same rotation but in the opposite direction. This sequence amplifies phase errors due to the presence of higher excited states. This experiment has specializations for X (:class:`~qiskit_experiments.library.characterization.FineXDrag`) and SX (:class:`~qiskit_experiments.library.characterization.FineSXDrag`) gates. * :class:`~qiskit_experiments.library.calibration.FineDragCal`: The calibration version of :class:`~qiskit_experiments.library.characterization.FineDrag`. This will update the DRAG parameter in the instance of the :class:`:class:`~qiskit_experiments.calibration_management.Calibrations` class. This experiment has specializations for X (:class:`~qiskit_experiments.library.calibration.FineXDragCal`) and SX (:class:`~qiskit_experiments.library.calibration.FineSXDragCal`) gates. * :class:`~qiskit_experiments.library.characterization.QubitSpectroscopy`: This experiment performs spectroscopy by applying a frequency shift to a long pulse. This experiment is typically used to identify the resonance frequency of the qubit. * :class:`~qiskit_experiments.library.calibration.RoughFrequencyCal` the calibration version of :class:`~qiskit_experiments.library.characterization.QubitSpectroscopy`. This gives us a first rough estimate of the qubits frequency. * :class:`~qiskit_experiments.library.characterization.RamseyXY`: This experiment performs a Ramsey-XY experiment which allows us to measure the frequency of the qubit. This experiment is sensitive to the sign of the frequency offset from the main transition. It is a more precise measurement than spectroscopy. * :class:`~qiskit_experiments.library.calibration.FrequencyCal`: This is the calibration version of :class:`~qiskit_experiments.library.characterization.RamseyXY`. * :class:`~qiskit_experiments.library.characterization.FineFrequency`: This experiment performs an error amplifying sequence to measure the frequency of the qubit. This is done with delay instructions with a variable length and RZ gates. * :class:`~qiskit_experiments.library.calibration.FineFrequencyCal`: This is the calibration version of :class:`~qiskit_experiments.library.characterization.FineFrequency`. * :class:`~qiskit_experiments.library.characterization.HalfAngle`: This experiment measures the amount by which the SX and X gates are not parallel. Such errors can occur due to phase errors. For example, the non-linearities in the mixer's skew for :math:`\pi/2` pulses may be different from the :math:`\pi` pulse. * :class:`~qiskit_experiments.library.calibration.HalfAngleCal`: This is the calibration version of :class:`~qiskit_experiments.library.characterization.HalfAngle`. .. releasenotes/notes/0.2/library-26e6cf3dfbc3acb3.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Two cross-resonance Hamiltonian tomography experiments have been added to the :mod:`qiskit_experiments.library`. * :class:`qiskit_experiments.library.CrossResonanceHamiltonian` * :class:`qiskit_experiments.library.EchoedCrossResonanceHamiltonian` These experiments estimates the IX, IY, IZ, ZX, ZY, ZZ Hamiltonian term coefficients of the cross-resonance Hamiltonian, using either a single-tone cross-resonance gate (:class:`~qiskit_experiments.library.CrossResonanceHamiltonian`) or an echoed cross-resonance gate (:class:`~qiskit_experiments.library.EchoedResonanceHamiltonian`). .. releasenotes/notes/0.2/library-26e6cf3dfbc3acb3.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a :class:`qiskit_experiments.library.ReadoutAngle` characterization experiment. This experiment computes the average of the angles of the IQ clusters of the ground and excited states. .. releasenotes/notes/0.2/library-26e6cf3dfbc3acb3.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - :class:`~qiskit_experiments.library.StandardRb` and :class:`~qiskit_experiments.library.InterleavedRb` experiments now compute error as part of the error-per-gate computation. .. _Release Notes_0.2.0_Known Issues: Known Issues ------------ .. releasenotes/notes/0.2/curve-analysis-f4d62e011815c5c3.yaml @ b'140480e060e2fff2c010a4a4bdc2bd0cffa2cd1c' - Curve analysis may have imperfection in the uncertainty propagation computation. Fit paramters consist of the nominal part and standard error, however, the correlation of these paramters are not precisely taken into account. This sometimes result in the overestimation of the confidence interval of fit curves, or overestimation of the standard error of some analysis values computed with multiple fitting parameters. This issue will be solved in the version 0.3. See `qiskit-experiments/#551 `_ for details. .. _Release Notes_0.2.0_Upgrade Notes: Upgrade Notes ------------- .. releasenotes/notes/0.2/0_2_release-eef5e3ba256fc750.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The default ``matplotlib`` backend used for generated figures was changed from `AGG` to `SVG`. .. releasenotes/notes/0.2/0_2_release-eef5e3ba256fc750.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Due to changes in JSON serialization it is possible that some experiments saved to the IBM Experiments database service using the Qiskit Experiments 0.1 API may not be able to be loaded using Qiskit Experiments 0.2. .. releasenotes/notes/0.2/base-analysis-b261afaa40518b53.yaml @ b'770a3dffd30d9093ec20ad85676f0b2f92393c4a' - Changed :meth:`~qiskit_experiments.framework.BaseAnalysis.run` to run asynchronously using the :meth:`~qiskit_experiments.framework.ExperimentData.add_analysis_callback`. Previously analysis was only run asynchronously if it was done as part of an experiments :meth:`~qiskit_experiments.framework.BaseExperiment.run`. .. releasenotes/notes/0.2/base-experiment-14eba2646ef0f0b9.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The :meth:`qiskit_experiments.framework.BaseExperiment.analysis` property has been changed to return a :class:`qiskit_experiments.framework.BaseAnalysis` *instance* rather than a class type. This method also now has a setter which allows setting an analysis instance for use by an experiment. .. releasenotes/notes/0.2/calibrations-97c6ae807d54015d.yaml @ b'770a3dffd30d9093ec20ad85676f0b2f92393c4a' - The ``BackendCalibrations`` class has bas been removed and its functionality has been merged into the :class:`qiskit_experiments.calibration_management.Calibrations` class. Users should now use the :class:`Calibrations` class which can be instantiated from a backend by using the :meth:`~qiskit_experiments.calibration_management.Calibrations.from_backend` method. .. releasenotes/notes/0.2/data-processors-d6430844d2701eb1.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - Data format used in the :class:`qiskit_experiments.data_processing.DataProcessor` has been changed from `Tuple[Any, Any]` to `np.ndarray`. .. releasenotes/notes/0.2/data-processors-d6430844d2701eb1.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - Uncertainty propagation in the :class:`qiskit_experiments.data_processing.DataProcessor` class is now computed using the `uncertainties `_ package. See :mod:`qiskit_experiments.data_processing` module documentation for details. .. releasenotes/notes/0.2/experiment-data-5465208160fe6b6a.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The ``CompositeExperimentData`` class has been removed and its functionality integrated into the :class:`~qiskit_experiments.framework.ExperimentData` class. A composite :class:`~qiskit_experiments.framework.ExperimentData` can now be created by initializing with a list of child ``ExperimentData`` containers using the ``child_data`` kwarg. .. releasenotes/notes/0.2/experiment-data-5465208160fe6b6a.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - :class:`~qiskit_experiments.framework.ParallelExperiment` and :class:`~qiskit_experiments.framework.BatchExperiment` now return a :class:`~qiskit_experiments.framework.ExperimentData` object which no longer contains a ``component_experiment_data`` method. This method has been replaced by the :meth:`~qiskit_experiments.framework.ExperimentData.child_data` method. .. releasenotes/notes/0.2/experiment-data-5465208160fe6b6a.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The :meth:`qiskit_experiments.framework.ExperimentData.analysis_results` method has been changed to block on analysis callbacks finishing by default, this means it is no longer necessary to call the :meth:`~qiskit_experiments.framework.ExperimentData.block_for_results` method first before accessing analysis results. To disable blocking this can be set to run with ``block=False``. This should be used :meth:`~qiskit_experiments.framework.ExperimentData.analysis_results` needs to be called during another analysis callback to prevent that callback from blocking. .. releasenotes/notes/0.2/experiment-data-5465208160fe6b6a.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The ``callback`` and ``**kwarg`` arguments have been removed from :meth:`~qiskit_experiments.framwork.ExperimentData.add_data` To add a callback function to run after experiment jobs have finished executing use the :meth:`~qiskit_experiments.framework.ExperimentData.add_analysis_callback` method instead. .. releasenotes/notes/0.2/library-26e6cf3dfbc3acb3.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - All :mod:`qiskit_experiments.library` experiments have been changed to work with fixed SI units: `Hz` for frequency, `seconds` for delays, and backend `dt` for pulse widths and durations. Previous experiments with ``unit`` kwargs in their init functions have had this kwarg removed. .. releasenotes/notes/0.2/library-26e6cf3dfbc3acb3.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The ``qubits`` intitialization argument for :class:`~qiskit_experiments.library.StandardRb`, :class:`~qiskit_experiments.library.InterleavedRb`, :class:`~qiskit_experiments.library.QuantumVolume`, :class:`~qiskit_experiments.library.StateTomography`, and :class:`~qiskit_experiments.library.ProcessTomography` no longer accepts interger values for specifying a range of qubits. and must now contain an explicit sequence of qubits. .. releasenotes/notes/0.2/library-26e6cf3dfbc3acb3.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The behavior of the ``seed`` initialization kwarg of the :class:`~qiskit_experiments.library.StandardRB`, :class:`~qiskit_experiments.library.InterleavedStandardRB`, :class:`~qiskit_experiments.library.QuantumVolume` experiments has been modified. In the new version the ``seed`` value is used as to initialize a Numpy random number generator object as ``numpy.random.default_rng(seed=seed)`` each time the experiments ``circuits`` method is called. This change means that using a fixed seed value will result in the same circuits being generated each time an experiment is run, if no other experiment options are changed. To generate different new random circuits each time an experiment is run the (default) value of ``seed=None`` should be used. To reproduce equivalent functionality to the previous version behavior of differnet circuits being generated each time ``run`` is called with a fixed seed you must now set a new fixed seed value between each call to ``run`` using ``experiment.set_experiment_options(seed=value)``. .. _Release Notes_0.2.0_Deprecation Notes: Deprecation Notes ----------------- .. releasenotes/notes/0.2/base-experiment-14eba2646ef0f0b9.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The :meth:`qiskit_experiments.framework.BaseExperiment.set_analysis_options` method has been deprecated, use the :meth:`qiskit_experiments.framework.BaseAnalysis.set_options` method for the experiments analysis class instead. This can be accessed from the experiment instance using the :meth:`qiskit_experiments.framework.BaseExperiment.analysis` property as ``experiment.analysis.set_options(**options)``. .. releasenotes/notes/0.2/base-experiment-14eba2646ef0f0b9.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The :meth:`qiskit_experiments.framework.BaseExperiment.analysis_options` property has been deprecated, use the :meth:`qiskit_experiments.framework.BaseAnalysis.options` property for the experiments analysis class instead. This can be accessed from the experiment instance using the :meth:`qiskit_experiments.framework.BaseExperiment.analysis` property as ``experiment.analysis.options``. .. releasenotes/notes/0.2/base-experiment-14eba2646ef0f0b9.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The :meth:`qiskit_experiments.framework.BaseExperiment.run_analysis` and method has been deprecated, use the :meth:`qiskit_experiments.framework.BaseAnalysis.run` method for the experiments analysis class instead. This can be accessed from the experiment instance using the :meth:`qiskit_experiments.framework.BaseExperiment.analysis` property as ``experiment.analysis.run(**kwargs)``. .. releasenotes/notes/0.2/base-experiment-14eba2646ef0f0b9.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Boolean values for the ``analysis`` kwarg in :meth:`qiskit_experiments.framework.BaseExperiment.run` have been deprecated. Use ``analysis="default"`` instead of ``analysis=True``, and ``analysis=None`` instead of ``analysis=False``. .. releasenotes/notes/0.2/base-experiment-14eba2646ef0f0b9.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Using the ``__analysis_class__`` class attrbiute to define a default :class:`~qiskit_experiments.framework.BaseAnalysis` class in a :class:`~qiskit_experiments.framework.BaseExperiment` subclass has been deprecated. A default analysis class instance should now be passed to the initialization method of :class:`~qiskit_experiments.framework.BaseExperiment` instead. .. _Release Notes_0.2.0_Bug Fixes: Bug Fixes --------- .. releasenotes/notes/0.2/data-processors-d6430844d2701eb1.yaml @ b'a03eb85832e5b10ff32e71e9725b307fd0f1ada4' - The :class:`qiskit_experiments.data_processing.Probability` data processing node will no longer return exactly 0 or 1 for a probability estimate. This fixes an issue where this could cause division by 0 when computing weights during curve fitting analysis. .. releasenotes/notes/0.2/experiment-data-5465208160fe6b6a.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed a bug where the :meth:`qiskit_experiments.framework.ExperimentData.load` method would return an :class:`~qiskit_experiments.database_service.DbExperimentDataV1` object instead of a :class:`~qiskit_experiments.framework.ExperimentData` object. .. releasenotes/notes/0.2/experiment-data-5465208160fe6b6a.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed bug in :class:`qiskit_experiments.framework.ExperimentData` where trying to load saved job data from a backend using ``ExperimentData(backend=backend, job_ids=job_ids)`` resulted in an error. .. releasenotes/notes/0.2/library-26e6cf3dfbc3acb3.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Fixed a bug in :class:`~qiskit_experiments.library.StandardRB` and :class:`~qiskit_experiments.library.InterleavedRB` where the variance in the estimated error per Clifford did not scale correctly with the number of sampled RB sequences. See `Issue 428 `_ for details. .. _Release Notes_0.2.0_API Changes for Experiment Authors: API Changes for Experiment Authors ---------------------------------- .. releasenotes/notes/0.2/0_2_release-eef5e3ba256fc750.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added hooks for serialization and deserialization of custom classes to the JSON :class:`qiskit_experiments.framework.ExperimentEncoder` and :class:`qiskit_experiments.framework.ExperimentDecoder`. To enable serialization classes must implement a method ``__json_encode__(self) -> Any`` that returns a JSON serializable object, and a class method ``_json_decode__(cls, value: Any)__ -> cls`` that can reconstruct the object from the JSON deserialized value. .. releasenotes/notes/0.2/base-analysis-b261afaa40518b53.yaml @ b'770a3dffd30d9093ec20ad85676f0b2f92393c4a' - The :class:`qiskit_experiments.framework.BaseAnalysis` class has been changed to be an initialized class. This class now stores its set analysis options using the :meth:`~qiskit_experiments.framework.BaseAnalysis.set_options` and :meth:`~qiskit_experiments.framework.BaseAnalysis.options` and ``_default_options`` methods. The signature of the abstract method ``_run_analysis`` that must be implemented by subclasses has been changed to remove the ``**kwargs``. Note that the state of this class should only be used to store option values and derived configuration. The :meth:`~qiskit_experiments.framework.BaseAnalysis.run` and ``_run_analysis`` methods should not change the state of the instance. .. releasenotes/notes/0.2/base-experiment-14eba2646ef0f0b9.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - The :class:`qiskit_experiments.framework.BaseExperiment` class has been changed to optionally store an instance of a :class:`qiskit_experiments.framework.BaseAnalysis` class during its initialization. Any default analysis options specific to a particular experiment subclass should be set during that experiments init method, or as default options of the analysis subclass used by that experiment. .. releasenotes/notes/0.2/base-experiment-14eba2646ef0f0b9.yaml @ b'd04d99e73a6eee1af570cecc45bab8a3e8abc687' - Added a ``_set_backend`` method to :class:`~qiskit_experiments.framework.BaseExperiment` that is called when a backend is set via initalization or the ``backend`` setter. This can be overridden in experiment subclasses if required. For example this could be used to extract any needed configuration or properties from the specified backend, or to update experiment options of configuration based on the backend. .. releasenotes/notes/0.2/calibrations-97c6ae807d54015d.yaml @ b'770a3dffd30d9093ec20ad85676f0b2f92393c4a' - :mod:`~qiskit_experiments.library.calibration` experiments have been changed so that each experiment is a subclass of a :mod:`~qiskit_experiments.library.characterization` experiment. Calibration experiments should now be constructed as subclasses of both the relevant characterization experiment and the new :class:`qiskit_experiments.calibration_management.BaseCalibrationExperiment` abstract base class. This new base class implements the functionality to manage schedules stored in instances of the :class:`qiskit_experiments.calibration_management.Calibrations` class and implements a framework where calibration experiments can specify an :meth:`~qiskit_experiments.calibration_management.BaseCalibrationExperiment.update` method to update the parameters that they are designed to calibrate. .. releasenotes/notes/0.2/curve-analysis-f4d62e011815c5c3.yaml @ b'140480e060e2fff2c010a4a4bdc2bd0cffa2cd1c' - There have been several changes to the :class:`qiskit_experiments.curve_analysis.CurveAnalysis` class which may effect developers implementing experiments using curve analysis. These include: * Default data pre-processing for curve fit data has been added to :class:`~qiskit_experiments.curve_analysis.CurveAnalysis`. The input data to the analysis is averaged over the same x values and sorted by x values. This processing is necessary to correctly analyze an experimental data which has duplicate x values. * The handling of user provided initial guesses and fit boundaries has been changed so that subclasses no longer need to use user provided option values. Propagation of user values is now handled by the base class. * The subclass method name to provide these initial guesses for curve fitting has bee changed from ``_setup_fitting`` to :meth:`~qiskit_experiments.curve_analysis.CurveAnalysis._generate_fit_guesses`. See the documentation for more details. * Tick labels and fit parameters shown in the fit result plot generated by :class:`qiskit_experiments.curve_analysis.CurveAnalysis` subclasses are formatted with unit with prefactor scalings. For example, 1e7 can now be displayed as 10 MHz. To enable this change, all experiments using :class:`~qiskit_experiments.curve_analysis.CurveAnalysis` or a subclass analysis class should set analysis options ``xval_unit`` and ``yval_unit``. .. releasenotes/notes/0.2/curve-analysis-f4d62e011815c5c3.yaml @ b'140480e060e2fff2c010a4a4bdc2bd0cffa2cd1c' - A ``model_description`` fields has been added to the :class:`qiskit_experiments.curve_analysis.SeriesDef` dataclass. This field stores the string representation of the fit model of the curve and will be stored in the experiments analysis result extra field.