Skip to main content

A Pulser-compatible package to connect to Azure Pasqal Cloud Services

Project description

Azure quantum provider for Pulser

Azure quantum provider implementation to use neutral atoms based quantum computers.

Pulser Azure is a Python package to run quantum sequence on Azure Quantum infrastructure, providing access to Pasqal neutral atom quantum computers.

Installation

pip install pulser-azure

Getting started

To instantiate the AzureConnection, you need to provide a resource_id

from pulser_azure import AzureConnection

connection = AzureConnection(
    resource_id="/subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group-name>/providers/Microsoft.Quantum/Workspaces/<your-workspace-name>",
)

Alternatively, the AzureConnection can discover your resource from environment variables:

export PULSER_AZURE_RESOURCE_ID="/subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group-name>/providers/Microsoft.Quantum/Workspaces/<your-workspace-name>"

Then you can instantiate the provider without any arguments:

from pulser_azure import AzureConnection

connection = AzureConnection()

Now you have access to the supported backends and can design your pulse sequence. See the technical documentation on how to write a sequence.

from pulser_azure import AzureConnection
from pulser.pulse import Pulse
from pulser import QPUBackend, Sequence, Register

connection = AzureConnection()

# Retrieve all QPU devices
devices = connection.fetch_available_devices()
device = devices["pasqal.qpu.fresnel-can1"]

# Create a register of trapped atoms before performing operation on them
register = Register.square(5, 5).with_automatic_layout(device)

# Declare the sequence of pulses to perform on the register
sequence = Sequence(register, device)
sequence.declare_channel("rydberg", "rydberg_global")
omega_max = sequence.declare_variable("omega_max")

# Add a pulse to that channel with the amplitude omega_max
generic_pulse = Pulse.ConstantPulse(100, omega_max, 2, 0.0)
sequence.add(generic_pulse, "rydberg")

# Declare a backend based on the sequence and remote connection
backend = QPUBackend(sequence=sequence, connection=connection)

# Run jobs with different arguments over the same sequence and register
results = backend.run(
    job_params=[
        {"runs": 5, "variables": {"omega_max": 12}},
        {"runs": 10, "variables": {"omega_max": 6}},
    ],
    wait=True,
)

Contributing

Prerequisites

This project uses uv for dependency and environment management.

Setting up your environment

Clone the repository and sync the dev environment (this installs the project plus all dev dependencies into a local .venv):

git clone https://github.com/pasqal-io/pulser-azure.git
cd pulser-azure
uv sync

Running the test suite

uv run pytest

Linting and formatting

This project uses ruff for both linting and formatting:

uv run ruff check .          # lint
uv run ruff check . --fix    # lint and auto-fix
uv run ruff format .         # format

Pre-commit hooks

To automatically run ruff (and other checks) before each commit, install the pre-commit hooks:

uv run pre-commit install

You can run all hooks manually against the whole repo with:

uv run pre-commit run --all-files

Releasing

git tag -a v1.2.3 -m "Release 1.2.3"
git push origin v1.2.3

License

License Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pulser_azure-0.1.dev20.tar.gz (181.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pulser_azure-0.1.dev20-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file pulser_azure-0.1.dev20.tar.gz.

File metadata

  • Download URL: pulser_azure-0.1.dev20.tar.gz
  • Upload date:
  • Size: 181.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for pulser_azure-0.1.dev20.tar.gz
Algorithm Hash digest
SHA256 3a2eb50c0ab1380e5a34956b15b198c4ba67cae3f73bcbbdea7340f86a49f53a
MD5 5933a6e9f8aa3da265a434f037651148
BLAKE2b-256 3577e3f9cdf3cd4b3ae262b2513d8f6e55d0b918b9c0228bd2a676e82c479b3f

See more details on using hashes here.

File details

Details for the file pulser_azure-0.1.dev20-py3-none-any.whl.

File metadata

  • Download URL: pulser_azure-0.1.dev20-py3-none-any.whl
  • Upload date:
  • Size: 11.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for pulser_azure-0.1.dev20-py3-none-any.whl
Algorithm Hash digest
SHA256 95af0699af1ec4e7fc0bace0b3cbc19d8d6a01d724390c971786b781ffc3ae80
MD5 5c1064b128aeeff35fe818d18f80c21a
BLAKE2b-256 524c82ad5c47ea18ee3c65f95dd19db3d64505219aa9b0c2e9e7648b2b4a0d6c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page