---
title: Call (v0.46)
description: API reference for qiskit.pulse.instructions.Call in qiskit v0.46
source: https://eu-de.quantum.cloud.ibm.com/docs/en/api/qiskit/0.46/qiskit.pulse.instructions.Call
---

# Call

*class* `qiskit.pulse.instructions.Call(subroutine, value_dict=None, name=None)`

[GitHub](https://github.com/qiskit/qiskit/tree/stable/0.46/qiskit/pulse/instructions/call.py)

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

Pulse `Call` instruction.

The `Call` instruction represents the calling of a referenced subroutine (schedule). It enables code reuse both within the pulse representation and hardware (if supported).

Define new subroutine.

> **Note**
>
> Inline subroutine is mutable. This requires special care for modification.

> **Deprecated since version 0.25.0**
>
> The class `qiskit.pulse.instructions.call.Call` is deprecated as of qiskit-terra 0.25.0. It will be removed in the Qiskit 1.0 release. Instead, use the pulse builder function qiskit.pulse.builder.call(subroutine) within an active building context.

**Parameters**

- **subroutine** (*Union\[*[*Schedule*](/docs/api/qiskit/0.46/qiskit.pulse.Schedule "qiskit.pulse.Schedule")*,* [*ScheduleBlock*](/docs/api/qiskit/0.46/qiskit.pulse.ScheduleBlock "qiskit.pulse.ScheduleBlock")*]*) – A program subroutine to be referred to.
- **value\_dict** ([*Dict*](https://docs.python.org/3/library/typing.html#typing.Dict)*\[*[*ParameterExpression*](/docs/api/qiskit/0.46/qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression")*,* [*ParameterExpression*](/docs/api/qiskit/0.46/qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression")  *|*[*float*](https://docs.python.org/3/library/functions.html#float)*] | None*) – Mapping of parameter object to assigned value.
- **name** ([*str*](https://docs.python.org/3/library/stdtypes.html#str) *| None*) – Unique ID of this subroutine. If not provided, this is generated based on the subroutine name.

**Raises**

[**PulseError**](/docs/api/qiskit/0.46/pulse#qiskit.pulse.PulseError "qiskit.pulse.PulseError") – If subroutine is not valid data format.

## Attributes

### arguments

Parameters dictionary to be assigned to subroutine.

### 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

Unassigned parameters which determine the instruction behavior.

### prefix

Default value: `'call'`

### start\_time

Relative begin time of this instruction.

### stop\_time

Relative end time of this instruction.

### subroutine

Return attached subroutine.

**Returns**

The program referenced by the call.

**Return type**

program (Union\[[Schedule](/docs/api/qiskit/0.46/qiskit.pulse.Schedule "qiskit.pulse.Schedule"), [ScheduleBlock](/docs/api/qiskit/0.46/qiskit.pulse.ScheduleBlock "qiskit.pulse.ScheduleBlock")])

## Methods

### append

`append(schedule, name=None)`

Return a new [`Schedule`](/docs/api/qiskit/0.46/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/0.46/qiskit.pulse.Schedule "qiskit.pulse.Schedule")

### assigned\_subroutine

`assigned_subroutine()`

Returns this subroutine with the parameters assigned.

> **Note**
>
> This function may be often called internally for class equality check despite its overhead of parameter assignment. The subroutine with parameter assigned is cached based on `.argument` hash. Once this argument is updated, new assigned instance will be returned. Note that this update is not mutable operation.

**Returns**

Attached program.

**Return type**

program (Union\[[Schedule](/docs/api/qiskit/0.46/qiskit.pulse.Schedule "qiskit.pulse.Schedule"), [ScheduleBlock](/docs/api/qiskit/0.46/qiskit.pulse.ScheduleBlock "qiskit.pulse.ScheduleBlock")])

### ch\_duration

`ch_duration(*channels)`

Return duration of the supplied channels in this Instruction.

**Parameters**

**\*channels** ([*List*](https://docs.python.org/3/library/typing.html#typing.List)*\[*[*Channel*](/docs/api/qiskit/0.46/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)`

Return minimum start time for supplied channels.

**Parameters**

**\*channels** ([*List*](https://docs.python.org/3/library/typing.html#typing.List)*\[*[*Channel*](/docs/api/qiskit/0.46/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)`

Return maximum start time for supplied channels.

**Parameters**

**\*channels** ([*List*](https://docs.python.org/3/library/typing.html#typing.List)*\[*[*Channel*](/docs/api/qiskit/0.46/pulse#qiskit.pulse.channels.Channel "qiskit.pulse.channels.Channel")*]*) – Supplied channels

**Return type**

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

### draw

`draw(dt=1, style=None, filename=None, interp_method=None, scale=1, plot_all=False, plot_range=None, interactive=False, table=True, label=False, framechange=True, channels=None)`

Plot the instruction.

> **Deprecated since version 0.23.0**
>
> The method `qiskit.pulse.instructions.instruction.Instruction.draw()` is deprecated as of qiskit-terra 0.23.0. It will be removed in the Qiskit 1.0 release. No direct alternative is being provided to drawing individual pulses. But, instructions can be visualized as part of a complete schedule using `qiskit.visualization.pulse_drawer`.

**Parameters**

- **dt** ([*float*](https://docs.python.org/3/library/functions.html#float)) – Time interval of samples
- **style** (*Optional\[SchedStyle]*) – A style sheet to configure plot appearance
- **filename** ([*str*](https://docs.python.org/3/library/stdtypes.html#str) *| None*) – Name required to save pulse image
- **interp\_method** ([*Callable*](https://docs.python.org/3/library/typing.html#typing.Callable) *| None*) – A function for interpolation
- **scale** ([*float*](https://docs.python.org/3/library/functions.html#float)) – Relative visual scaling of waveform amplitudes
- **plot\_all** ([*bool*](https://docs.python.org/3/library/functions.html#bool)) – Plot empty channels
- **plot\_range** ([*Tuple*](https://docs.python.org/3/library/typing.html#typing.Tuple)*\[*[*float*](https://docs.python.org/3/library/functions.html#float)*] | None*) – A tuple of time range to plot
- **interactive** ([*bool*](https://docs.python.org/3/library/functions.html#bool)) – When set true show the circuit in a new window (this depends on the matplotlib backend being used supporting this)
- **table** ([*bool*](https://docs.python.org/3/library/functions.html#bool)) – Draw event table for supported instructions
- **label** ([*bool*](https://docs.python.org/3/library/functions.html#bool)) – Label individual instructions
- **framechange** ([*bool*](https://docs.python.org/3/library/functions.html#bool)) – Add framechange indicators
- **channels** ([*List*](https://docs.python.org/3/library/typing.html#typing.List)*\[*[*Channel*](/docs/api/qiskit/0.46/pulse#qiskit.pulse.channels.Channel "qiskit.pulse.channels.Channel")*] | None*) – A list of channel names to plot

**Returns**

A matplotlib figure object of the pulse schedule

**Return type**

matplotlib.figure

### insert

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

Return a new [`Schedule`](/docs/api/qiskit/0.46/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/0.46/qiskit.pulse.Schedule "qiskit.pulse.Schedule")

### is\_parameterized

`is_parameterized()`

Return True iff the instruction is parameterized.

**Return type**

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

### shift

`shift(time, name=None)`

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/0.46/qiskit.pulse.Schedule "qiskit.pulse.Schedule")
