---
title: ShiftPhase (v1.0)
description: API reference for qiskit.pulse.instructions.ShiftPhase in qiskit v1.0
source: https://eu-de.quantum.cloud.ibm.com/docs/en/api/qiskit/1.0/qiskit.pulse.instructions.ShiftPhase
---

# ShiftPhase

*class* `qiskit.pulse.instructions.ShiftPhase(phase, channel, name=None)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.0/qiskit/pulse/instructions/phase.py#L26-L88)

Bases: [`Instruction`](/docs/api/qiskit/1.0/pulse#qiskit.pulse.instructions.Instruction "qiskit.pulse.instructions.instruction.Instruction")

The shift phase instruction updates the modulation phase of proceeding pulses played on the same [`Channel`](/docs/api/qiskit/1.0/pulse#qiskit.pulse.channels.Channel "qiskit.pulse.channels.Channel"). It is a relative increase in phase determined by the `phase` operand.

In particular, a PulseChannel creates pulses of the form

$$
Re[\exp(i 2\pi f jdt + \phi) d_j].


$$

The `ShiftPhase` instruction causes $\phi$ to be increased by the instruction’s `phase` operand. This will affect all pulses following on the same channel.

The qubit phase is tracked in software, enabling instantaneous, nearly error-free Z-rotations by using a ShiftPhase to update the frame tracking the qubit state.

Instantiate a shift phase instruction, increasing the output signal phase on `channel` by `phase` \[radians].

**Parameters**

- **phase** ([*complex*](https://docs.python.org/3/library/functions.html#complex)  *|*[*ParameterExpression*](/docs/api/qiskit/1.0/qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression")) – The rotation angle in radians.
- **channel** (*PulseChannel*) – The channel this instruction operates on.
- **name** ([*str*](https://docs.python.org/3/library/stdtypes.html#str) *| None*) – Display name for this instruction.

## Attributes

### channel

Return the [`Channel`](/docs/api/qiskit/1.0/pulse#qiskit.pulse.channels.Channel "qiskit.pulse.channels.Channel") that this instruction is scheduled on.

### channels

Returns the channels that this schedule uses.

### duration

Duration of this instruction.

### id

Unique identifier for this instruction.

### instructions

Iterable for getting instructions from Schedule tree.

### name

Name of this instruction.

### operands

Return instruction operands.

### parameters

Parameters which determine the instruction behavior.

### phase

Return the rotation angle enacted by this instruction in radians.

### start\_time

Relative begin time of this instruction.

### stop\_time

Relative end time of this instruction.

## Methods

### append

`append(schedule, name=None)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.0/qiskit/pulse/instructions/instruction.py#L185-L198)

Return a new [`Schedule`](/docs/api/qiskit/1.0/qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted at the maximum time over all channels shared between `self` and `schedule`.

**Parameters**

- **schedule** (*Union\['Schedule', 'Instruction']*) – Schedule or instruction to be appended
- **name** ([*str*](https://docs.python.org/3/library/stdtypes.html#str) *| None*) – Name of the new schedule. Defaults to name of self

**Returns**

A new schedule with `schedule` a this instruction at t=0.

**Return type**

[Schedule](/docs/api/qiskit/1.0/qiskit.pulse.Schedule "qiskit.pulse.Schedule")

### ch\_duration

`ch_duration(*channels)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.0/qiskit/pulse/instructions/instruction.py#L112-L118)

Return duration of the supplied channels in this Instruction.

**Parameters**

**\*channels** ([*Channel*](/docs/api/qiskit/1.0/pulse#qiskit.pulse.channels.Channel "qiskit.pulse.channels.Channel")) – Supplied channels

**Return type**

[int](https://docs.python.org/3/library/functions.html#int)

### ch\_start\_time

`ch_start_time(*channels)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.0/qiskit/pulse/instructions/instruction.py#L120-L127)

Return minimum start time for supplied channels.

**Parameters**

**\*channels** ([*Channel*](/docs/api/qiskit/1.0/pulse#qiskit.pulse.channels.Channel "qiskit.pulse.channels.Channel")) – Supplied channels

**Return type**

[int](https://docs.python.org/3/library/functions.html#int)

### ch\_stop\_time

`ch_stop_time(*channels)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.0/qiskit/pulse/instructions/instruction.py#L129-L137)

Return maximum start time for supplied channels.

**Parameters**

**\*channels** ([*Channel*](/docs/api/qiskit/1.0/pulse#qiskit.pulse.channels.Channel "qiskit.pulse.channels.Channel")) – Supplied channels

**Return type**

[int](https://docs.python.org/3/library/functions.html#int)

### insert

`insert(start_time, schedule, name=None)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.0/qiskit/pulse/instructions/instruction.py#L167-L183)

Return a new [`Schedule`](/docs/api/qiskit/1.0/qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted within `self` at `start_time`.

**Parameters**

- **start\_time** ([*int*](https://docs.python.org/3/library/functions.html#int)) – Time to insert the schedule schedule
- **schedule** (*Union\['Schedule', 'Instruction']*) – Schedule or instruction to insert
- **name** ([*str*](https://docs.python.org/3/library/stdtypes.html#str) *| None*) – Name of the new schedule. Defaults to name of self

**Returns**

A new schedule with `schedule` inserted with this instruction at t=0.

**Return type**

[Schedule](/docs/api/qiskit/1.0/qiskit.pulse.Schedule "qiskit.pulse.Schedule")

### is\_parameterized

`is_parameterized()`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.0/qiskit/pulse/instructions/instruction.py#L219-L221)

Return True iff the instruction is parameterized.

**Return type**

[bool](https://docs.python.org/3/library/functions.html#bool)

### shift

`shift(time, name=None)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.0/qiskit/pulse/instructions/instruction.py#L151-L165)

Return a new schedule shifted forward by time.

**Parameters**

- **time** ([*int*](https://docs.python.org/3/library/functions.html#int)) – Time to shift by
- **name** ([*str*](https://docs.python.org/3/library/stdtypes.html#str) *| None*) – Name of the new schedule. Defaults to name of self

**Returns**

The shifted schedule.

**Return type**

[Schedule](/docs/api/qiskit/1.0/qiskit.pulse.Schedule "qiskit.pulse.Schedule")
