qml.wires.Wires

class Wires(wires)[source]

Bases: collections.abc.Sequence

A bookkeeping class for wires, which are ordered collections of unique objects. The \(i\mathrm{th}\) object addresses the \(i\mathrm{th}\) quantum subsystem.

There is no conceptual difference between registers of multiple wires and single wires, which are just wire registers of length one.

Indexing and slicing this sequence will return another Wires object.

Parameters

wires (Iterable[Number,str], Number) – If iterable, interpreted as an ordered collection of unique objects representing wires. If a Number, the input is converted into an iterable of a single entry, and hence interpreted as a single wire.

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.

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.

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

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