Skip to content

pasqal-io/quantum-evolution-kernel

Folders and files

NameName
Last commit message
Last commit date
Feb 21, 2025
Feb 21, 2025
Mar 7, 2025
Mar 5, 2025
Feb 14, 2025
Mar 5, 2025
Feb 21, 2025
Jan 28, 2025
Feb 13, 2025
Feb 20, 2025
Mar 4, 2025
Mar 6, 2025
Jan 9, 2025

Repository files navigation

Quantum Evolution Kernel

The Quantum Evolution Kernel is a Python library designed for the machine learning community to help users design quantum-driven similarity metrics for graphs and to use them inside kernel-based machine learning algorithms for graph data.

The core of the library is focused on the development of a classification algorithm for molecular-graph dataset as it is presented in the published paper Quantum feature maps for graph machine learning on a neutral atom quantum processor.

Users setting their first steps into quantum computing will learn how to implement the core algorithm in a few simple steps and run it using the Pasqal Neutral Atom QPU. More experienced users will find this library to provide the right environment to explore new ideas - both in terms of methodologies and data domain - while always interacting with a simple and intuitive QPU interface.

Installation

Using hatch, uv or any pyproject-compatible Python manager

Edit file pyproject.toml to add the line

  "quantum-evolution-kernel"

to the list of dependencies.

Using pip or pipx

To install the pipy package using pip or pipx

  1. Create a venv if that's not done yet
$ python -m venv venv
  1. Enter the venv
$ . venv/bin/activate
  1. Install the package
$ pip install quantum-evolution-kernel
# or
$ pipx install quantum-evolution-kernel

QuickStart

# Load a dataset
import torch_geometric.datasets as pyg_dataset
og_ptcfm = pyg_dataset.TUDataset(root="dataset", name="PTC_FM")

# Setup a quantum feature extractor for this dataset.
# In this example, we'll use QutipExtractor, to emulate a Quantum Device on our machine.
import qek.data.graphs as qek_graphs
import qek.data.extractors as qek_extractors
extractor = qek_extractors.QutipExtractor(compiler=qek_graphs.PTCFMCompiler())

# Add the graphs, compile them and look at the results.
extractor.add_graphs(graphs=og_ptcfm)
extractor.compile()
processed_dataset = extractor.run().processed_data

# Prepare a machine learning pipeline with Scikit Learn.
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC

X = [data for data in processed_dataset]  # Features
y = [data.target for data in processed_dataset]  # Targets
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify = y, test_size=0.2, random_state=42)

# Train a kernel
from qek.kernel import QuantumEvolutionKernel as QEK
kernel = QEK(mu=0.5)
model = SVC(kernel=kernel, random_state=42)
model.fit(X_train, y_train)

Documentation

We have a two parts tutorial:

  1. Using a Quantum Device to extract machine-learning features;
  2. Machine Learning with the Quantum Evolution Kernel

See also the full API documentation.

Getting in touch