Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 62 additions & 29 deletions qiskit/pulse/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,56 +13,78 @@
# that they have been altered from the originals.

"""
===============================
OpenPulse (:mod:`qiskit.pulse`)
===============================

.. currentmodule:: qiskit.pulse

Channels
========
===========================
Pulse (:mod:`qiskit.pulse`)
===========================

.. autosummary::
:toctree: ../stubs/
Qiskit-Pulse is a pulse-level quantum programming kit. This lower level of programming offers the
user more control than programming with :py:class:`~qiskit.circuit.QuantumCircuit` s.

DriveChannel
MeasureChannel
AcquireChannel
ControlChannel
RegisterSlot
MemorySlot
Extracting the greatest performance from quantum hardware requires real-time pulse-level
instructions. Pulse answers that need: it enables the quantum physicist *user* to specify the
exact time dynamics of an experiment. It is especially powerful for error mitigation techniques.

The input is given as arbitrary, time-ordered signals (see: :ref:`pulse-commands`) scheduled in
parallel over multiple virtual hardware or simulator resources (see: :ref:`pulse-channels`). The
system also allows the user to recover the time dynamics of the measured output.

This is sufficient to allow the quantum physicist to explore and correct for noise in a quantum
system.

Commands
========
.. _pulse-commands:

Commands (:mod:`~qiskit.pulse.commands`)
================================================

.. autosummary::
:toctree: ../stubs/

Instruction
Acquire
AcquireInstruction
FrameChange
PersistentValue
SamplePulse
Snapshot
Kernel
Discriminator
Delay
ParametricPulse
ParametricInstruction
FrameChange
Gaussian
GaussianSquare
Drag
ConstantPulse
Acquire
Snapshot

.. _pulse-channels:

Channels (:mod:`~qiskit.pulse.channels`)
========================================

Pulse is meant to be agnostic to the underlying hardware implementation, while still allowing
low-level control. Therefore, our signal channels are *virtual* hardware channels. The backend
which executes our programs is responsible for mapping these virtual channels to the proper
physical channel within the quantum control hardware.

Channels are characterized by their type and their index. See each channel type below to learn more.

.. autosummary::
:toctree: ../stubs/

DriveChannel
MeasureChannel
AcquireChannel
ControlChannel
RegisterSlot
MemorySlot

Schedules
=========

Schedules are Pulse programs. They describe instruction sequences for the control hardware.
An :class:`~qiskit.pulse.Instruction` is a :py:class:`~qiskit.pulse.commands.Command` which has
been assigned to its :class:`~qiskit.pulse.channels.Channel` (s).

.. autosummary::
:toctree: ../stubs/

Schedule
ScheduleComponent
Instruction

Configuration
=============
Expand All @@ -71,8 +93,18 @@
:toctree: ../stubs/

InstructionScheduleMap
LoConfig
LoRange

Rescheduling Utilities
======================

These utilities return modified :class:`~qiskit.pulse.Schedule` s.

.. autosummary::
:toctree: ../stubs/

~reschedule.align_measures
~reschedule.add_implicit_acquires
~reschedule.pad

Pulse Library
=============
Expand All @@ -89,6 +121,7 @@
:toctree: ../stubs/

PulseError

"""

from .channels import (DriveChannel, MeasureChannel, AcquireChannel,
Expand Down
4 changes: 2 additions & 2 deletions qiskit/pulse/channels.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"""
This module defines Pulse Channels. Channels include:

- transmit channels, which should subclass``PulseChannel``
- transmit channels, which should subclass ``PulseChannel``
- receive channels, such as ``AcquireChannel``
- non-signal "channels" such as ``SnapshotChannel``, ``MemorySlot`` and ``RegisterChannel``.

Expand All @@ -31,7 +31,7 @@
class Channel(metaclass=ABCMeta):
"""Base class of channels. Channels provide a Qiskit-side label for typical quantum control
hardware signal channels. The final label -> physical channel mapping is the responsibility
of the hardware backend. For instance,``DriveChannel(0)`` holds instructions which the backend
of the hardware backend. For instance, ``DriveChannel(0)`` holds instructions which the backend
should map to the signal line driving gate operations on the qubit labeled (indexed) 0.
"""

Expand Down