Skip to content

Feat quantinuum provider integration - #209

Open
MoHermes wants to merge 86 commits into
devfrom
feat-quantinuum-provider
Open

Feat quantinuum provider integration#209
MoHermes wants to merge 86 commits into
devfrom
feat-quantinuum-provider

Conversation

@MoHermes

@MoHermes MoHermes commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

Adds Quantinuum backend support to MPQP using both Quantinuum Nexus and local TKET simulators.

What’s included

  • Added the optional Quantinuum dependencies, installable with pip install mpqp[quantinuum]
  • Added QUANTINUUMDevice with support for simulators and emulators
    • Local TKET Aer, Aer State and Qulacs simulators
    • Quantinuum H-Series noiseless simulators and noisy emulators
    • Nexus-hosted Aer and Qulacs simulators
  • Added Quantinuum Nexus account configuration through setup_connections, then authentication using qnx.login()
  • Added MPQP Qcircuit conversion to TKET circuits for Quantinuum execution
  • Added TKET translation for MPQP Pauli strings and observables using QubitPauliOperator

Supported job types

  • SAMPLE jobs
  • STATE_VECTOR jobs
  • OBSERVABLE jobs
    • Exact observables
    • Shot-based observables
    • Remote observable submission and retrieval

@github-actions github-actions Bot added the enhancement New feature or request label Aug 5, 2026

@hJaffaliColibritd hJaffaliColibritd left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Partial review, will continue later

Comment thread mpqp/core/instruction/measurement/expectation_value.py
Comment thread mpqp/execution/devices.py
Comment thread mpqp/execution/remote_handler.py Outdated
Comment thread mpqp/execution/providers/quantinuum.py Outdated
Comment thread mpqp/execution/providers/quantinuum.py
@MoHermes
MoHermes marked this pull request as ready for review August 25, 2026 11:23
Comment thread mpqp/execution/providers/quantinuum.py Outdated
assert isinstance(backend_result, BackendResult)
state = backend_result.get_state()
expectation_values = {
label: float(np.vdot(state, observable.matrix @ state).real)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/!\

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed it to the same computation we do with P grouping 3571952

Comment thread mpqp/execution/providers/quantinuum.py Outdated
grouped_probabilities.append(probabilities)
return extract_sampled_observable_result(job, grouped_probabilities)

if job is None and job_ref.annotations.description == "mpqp:observable":

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How do we do if the user wants to retrive result from jobs he launched without using MPQP ? he will not have the annotations rigth ?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes but they can still provide the MPQP equivalent of the job (the same observables and targets).
It's not very good but I can't think of anything else 3571952

MathieuG-Colibri and others added 28 commits September 3, 2026 19:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request maintenance testing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants