qml.wires.Wires

class Wires(wires, _override=False)[source]

Bases: collections.abc.Sequence

A bookkeeping class for wires, which are ordered collections of unique objects.

If the input wires can be iterated over, it is interpreted as a sequence of wire labels that have to be unique and hashable. Else it is interpreted as a single wire label that has to be hashable. The only exception are strings which are interpreted as wire labels.

The hash function of a wire label is considered the source of truth when deciding whether two wire labels are the same or not.

Indexing an instance of this class will return a wire label.

Parameters

wires (Any) – the wire label(s)

labels

Get a tuple of the labels of this Wires object.

labels

Get a tuple of the labels of this Wires object.

all_wires(list_of_wires[, sort])

Return the wires that appear in any of the Wires objects in the list.

contains_wires(wires)

count(value)

index(wire)

Overwrites a Sequence’s index() function which returns the index of wire.

indices(wires)

Return the indices of the wires in this Wires object.

map(wire_map)

Returns a new Wires object with different labels, using the rule defined in mapping.

select_random(n_samples[, seed])

Returns a randomly sampled subset of Wires of length ‘n_samples’.

shared_wires(list_of_wires)

Return only the wires that appear in each Wires object in the list.

subset(indices[, periodic_boundary])

Returns a new Wires object which is a subset of this Wires object.

toarray()

Returns a numpy array representation of the Wires object.

tolist()

Returns a list representation of the Wires object.

toset()

Returns a set representation of the Wires object.

unique_wires(list_of_wires)

Return the wires that are unique to any Wire object in the list.

static all_wires(list_of_wires, sort=False)[source]

Return the wires that appear in any of the Wires objects in the list.

This is similar to a set combine method, but keeps the order of wires as they appear in the list.

Parameters
  • list_of_wires (List[Wires]) – List of Wires objects

  • sort (bool) – Toggle for sorting the combined wire labels. The sorting is based on value if all keys are int, else labels’ str representations are used.

Returns

combined wires

Return type

Wires

Example

>>> wires1 = Wires([4, 0, 1])
>>> wires2 = Wires([3, 0, 4])
>>> wires3 = Wires([5, 3])
>>> list_of_wires = [wires1, wires2, wires3]
>>> Wires.all_wires(list_of_wires)
<Wires = [4, 0, 1, 3, 5]>
contains_wires(wires)[source]
count(value)integer return number of occurrences of value
index(wire)[source]

Overwrites a Sequence’s index() function which returns the index of wire.

Parameters

wire (Any) – Object whose index is to be found. If this is a Wires object of length 1, look for the object representing the wire.

Returns

index of the input

Return type

int

indices(wires)[source]

Return the indices of the wires in this Wires object.

Parameters

wires (Iterable[Number, str], Number, str, Wires) – Wire(s) whose indices are to be found

Returns

index list

Return type

List

Example

>>> wires1 =  Wires([4, 0, 1])
>>> wires2 = Wires([1, 4])
>>> wires1.indices(wires2)
[2, 0]
>>> wires1.indices([1, 4])
[2, 0]
map(wire_map)[source]

Returns a new Wires object with different labels, using the rule defined in mapping.

Parameters

wire_map (dict) – Dictionary containing all wire labels used in this object as keys, and unique new labels as their values

Example

>>> wires = Wires(['a', 'b', 'c'])
>>> wire_map = {'a': 4, 'b':2, 'c': 3}
>>> wires.map(wire_map)
<Wires = [4, 2, 3]>
select_random(n_samples, seed=None)[source]

Returns a randomly sampled subset of Wires of length ‘n_samples’.

Parameters
  • n_samples (int) – number of subsampled wires

  • seed (int) – optional random seed used for selecting the wires

Returns

random subset of wires

Return type

Wires

static shared_wires(list_of_wires)[source]

Return only the wires that appear in each Wires object in the list.

This is similar to a set intersection method, but keeps the order of wires as they appear in the list.

Parameters

list_of_wires (List[Wires]) – list of Wires objects

Returns

shared wires

Return type

Wires

Example

>>> wires1 =  Wires([4, 0, 1])
>>> wires2 = Wires([3, 0, 4])
>>> wires3 = Wires([4, 0])
>>> Wires.shared_wires([wires1, wires2, wires3])
<Wires = [4, 0]>
>>> Wires.shared_wires([wires2, wires1, wires3])
<Wires = [0, 4]>
subset(indices, periodic_boundary=False)[source]

Returns a new Wires object which is a subset of this Wires object. The wires of the new object are the wires at positions specified by ‘indices’. Also accepts a single index as input.

Parameters
  • indices (List[int] or int) – indices or index of the wires we want to select

  • periodic_boundary (bool) – controls periodic boundary conditions in the indexing

Returns

subset of wires

Return type

Wires

Example

>>> wires = Wires([4, 0, 1, 5, 6])
>>> wires.subset([2, 3, 0])
<Wires = [1, 5, 4]>
>>> wires.subset(1)
<Wires = [0]>

If periodic_boundary is True, the modulo of the number of wires of an index is used instead of an index, so that wires.subset(i) == wires.subset(i % n_wires) where n_wires is the number of wires of this object.

>>> wires = Wires([4, 0, 1, 5, 6])
>>> wires.subset([5, 1, 7], periodic_boundary=True)
<Wires = [4, 0, 1]>
toarray()[source]

Returns a numpy array representation of the Wires object.

Returns

array representing Wires object

Return type

ndarray

tolist()[source]

Returns a list representation of the Wires object.

Returns

list of wire labels

Return type

List

toset()[source]

Returns a set representation of the Wires object.

Returns

set of wire labels

Return type

Set

static unique_wires(list_of_wires)[source]

Return the wires that are unique to any Wire object in the list.

Parameters

list_of_wires (List[Wires]) – list of Wires objects

Returns

unique wires

Return type

Wires

Example

>>> wires1 = Wires([4, 0, 1])
>>> wires2 = Wires([0, 2, 3])
>>> wires3 = Wires([5, 3])
>>> Wires.unique_wires([wires1, wires2, wires3])
<Wires = [4, 1, 2, 5]>