semvec/pypi-packages huggingface dataset:
task-manager 6.6.0
The TaskManager is a server that tracks and dispenses tasks for clients to perform.
License: Apache 2.0
Requires Python: >=3.8,

# TaskManager

The TaskManager keeps track of lists of tasks that users should perform. It
has a REST interface to access tasks and update them.

## Documentation

The TaskManager is documented at https://task-manager.readthedocs.io/

## Deployment

The TaskManager deployment typically uses either Kubernetes or
docker-compose. Documentation on how to deploy the TaskManager
can be found in the deployment section in the documentation at
https://task-manager.readthedocs.io/en/latest/static/howto.html#deployment

## Source Code

The TaskManager is open-source and licensed under an Apache 2.0 License.
The source code found be found at GitLab: https://gitlab.com/radiology/infrastructure/task-manager/
qiskit-qubit-reuse 0.0.2
A Qiskit's compiler plugin to reuse qubits using midcircuit measurement
License: Apache 2.0
Requires Python: >=3.8
Keywords: qiskit sdk quantum

# Qubit Reuse By Reset Plugin

This repository contains an experimental transpiler pass called `qubit_reuse` which is executed at the end of the `init` stage of transpilation. This pass is based on: Matthew DeCross et al. "Qubit-reuse compilation with mid-circuit measurement and reset" [arXiv:2210.0.08039v1](https://arxiv.org/abs/2210.08039v1)

### Background

Certain circuits can reduce the number of qubits required to produce results by resetting and re-using existent measured qubits. The order in which certain qubits are chosen is based on their **causal cones** and the order in which they are measured.

#### Causal Cones

Let's say we have qubit a x in a `DAGCircuit`. We can traverse the `DAGCircuit` from the output node of x by checking all its predecessor nodes. When checking every operation node found, if at any point x interacts with other qubits, via a multi-qubit gate, the qubits in that operation are added to a set. From that point we continue evaluating recursively all the predecessor nodes in that multi-qubit interaction and adding all qubits found into the set, until no more predecessor nodes are left. 

When the traversal ends, the set will contain **all the qubits whose interactions affect qubit x**. That is what we call the causal cone of x.

#### Order of Measurement

Qubits are re-arranged based on the length of their causal cones in ascending order, i.e. the first to be re-arranged are those with smaller causal cones. 

Before re-arranging a qubit, we need to check if there are any qubit that have been measured and is available to re-use. If so, we reset it and apply all operations onto its wire. Otherwise, a new qubit is added and the operations are passed on to that wire.

## Installation

This package is not available through pypi, but can be installed by cloning this repository:

```zsh
git clone https://github.com/qiskit-community/qiskit-qubit-reuse
```
And then installing locally:

```zsh
pip install ./qiskit-qubit-reuse
```
If you have the proper authentication keys, you can install it remotely by using:

```zsh
pip install git+https://github.com/qiskit-community/qiskit-qubit-reuse
```

## Usage

Once installed, Qiskit is able to detect the `qubit_reuse` plugin via an entry point. All that needs to be done is to specify the init method in your `transpile` call by using `init_method="qubit_reuse"`. Use the following example:

```py3
from qiskit.circuit.random import random_circuit
from qiskit import transpile
from qiskit.providers.fake_provider import FakeGuadalupeV2

qc = random_circuit(16, 4, measure=True)

transpiled_qc = transpile(qc, backend=FakeGuadalupeV2(), init_method="qubit_reuse")
```

This entry point provides the option with the least amount of qubits. If you want to specifically use the normal or dual circuit, you can specifcy that by using the `qubit_reuse_normal` or the `qubit_reuse_dual` endpoints.

**Warning: This plugin should only be used with circuits that contain measurements.**