Exploring the Features of Pulser Studio

Published by

Mourad Beji


January 6, 2023

PASQAL Software Interface

We are excited to announce the release of Pulser Studio, the first zero-code development platform for neutral atoms quantum computers. Our goal is to unlock the potential of quantum computing for all users and enable them to accelerate their applications by discovering novel insights into quantum computing. At PASQAL, we believe in a full stack approach to support the unique capabilities of neutral atoms quantum processors. Pulser Studio is the latest addition to that stack.

Neutral atoms

Individual neutral atoms trapped in optical tweezers can be used today as a platform for quantum information processing. In such setups, the quantum information is encoded in different electronic states, and laser pulses are used to drive transitions between the states. Entanglement can then be generated using Rydberg interactions between the different atoms of the quantum register. More detailed information on quantum computing with neutral atoms can be found in [PASQAL's whitepaper](
By using different electronic transitions, we can implement various Hamiltonians depending on the task of interest. This allows for working with different modes of operation. Gate-based digital quantum computing is already well-known, and multiple applications have already been developed by different actors in the domain. Thanks to the universality of the digital approach, these algorithms should be implementable on any digital QPU, including neutral atoms-based ones. On the other hand, one can also work in the analog mode, leveraging NISQ devices to reach an early quantum advantage. To know more about the differences between the two approaches, you can read this [previous post](


PASQAL has previously developed Pulser, an open-source Python library for programming neutral atoms quantum processing units (QPUs) at the pulse level. The low-level nature of Pulser makes it a versatile framework for quantum control both in digital and analog settings. The library also contains simulation routines for studying and exploring the outcome of pulse sequences for small systems. Pulser is also used today as the main interface for writing quantum jobs meant for PASQAL QPUs.

Building Blocks of a Pulser Sequence

Individual trapped atoms are the fundamental elements of any neutral-atom QPU. For each atom, quantum information is encoded in the quantum state describing its excitation. In particular, these atoms can be excited to the Rydberg state, |r⟩, where they strongly interact with neighboring Rydberg atoms – it is through this interaction that entanglement is shared throughout the system.

A Register is simply a set of neutral atoms arranged in a specific configuration. This arrangement is crucial because the strength of the interaction between neighboring Rydberg atoms strongly depends on their distance. Remarkably, neutral atoms QPUs permit the arrangement of its atoms in arbitrary configuration, giving the user an extra degree of control over the system. As such, it is up to the user to choose where each atom will be placed when creating the Register.

Pulses are responsible for driving the coherent transition between two atomic energy levels. They describe the modulation of a signal's amplitude, frequency, and phase over a finite duration. In particular, the amplitude and frequency correspond to the Rabi frequency and detuning driving the evolution of the quantum state and are depicted as waveforms.

In turn, pulses are allocated to channels. A channel defines:

1. The targeted atoms: a channel is Global when it targets the whole Register or Local when it targets an individual atom.</p>
2. The basis, which defines the two energy levels addressed by the pulses.


Finally, the measurement terminates a sequence by measuring the state of all the atoms. As the measurement is binary, it must be specified with respect to a chosen basis.

Pulser Studio lets you control all the "knobs" and parameters available from the hardware with great freedom and expressivity. But we wanted to go further and visualize those knobs for you and their effects on the dynamics of the system. With Pulser Studio, you can create your pulse sequences step by step with an accessible graphical interface and get immediate feedback on your pulse sequences.

With Pulser Studio, you are able to easily understand the technology or explore its capabilities. Using state-of-the-art practices in terms of user experience, you can intuitively prototype your algorithms without writing a single line of code. Every step of the process of creating a pulse sequence can be done with user-friendly graphical widgets that provide you with interactive information.

Next is a step-by-step guide showing how to create a pulse sequence using Pulser Studio.

Device selection

Start by selecting a device. This is done in the panel on the right. Currently, only mock devices are available, and their specs are tunable (physical constraints, available channels, …). Once our QPUs are released for public access, they will also appear in the selectable options.

<div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-3">
<div class="col-span-2"><h4>Register creation</h4>
<p>You can then create a new experiment by clicking on the + Register tab. A set of predefined patterns can be used to generate a regular layout for the register. Once created, you can also entirely customize the geometry of the register by dragging-and-dropping the atoms in desired positions, as long as it matches the specs of the selected device. The Register tab also displays very useful interactive information during the execution of the sequence, such as Rydberg interactions between the atoms, targeted qubits, or specific measurement results.

Next, you can use the Channels tab to design a pulse sequence to be applied to the register. Pulses are created in specific channels and customized in the right-hand side panel. The amplitude and the detuning can be defined using a set of predefined waveforms. The phase and post-phase shifts can also be specified. Each waveform type will have a set of parameters that will let the user define its shape in multiple ways. For local channels, it is also important to make sure the right qubit is selected.


The local simulations are currently limited to registers up to 6 qubits. The simulation engine is written in Rust and compiled to WASM, thus allowing the simulation to run locally in your browser. In next updates of the platform, you will be able to run local simulations up to 10 qubits and use remote backends such as PASQAL QPUs or PASQAL QPU emulators. When using the local engine, the intermediary states of the system are accessible at any point in time between the beginning and the end of the sequence allowing you to effectively explore the dynamics of the system and the effects of each parameter change. This is particularly important when using the analog paradigm in order to help you understand and build an intuition on the effects of your inputs on the resulting Hamiltonian and on the system.


With the currently available local simulation, you can explore a sequence's results in the Histogram and Quantum State tabs. Hovering a specific result will show you the graphical representation of the state in the Register tab. You can then choose between different measurement basis or representations. By default, the simulation uses the 3 possible states available: two hyperfine states and a Rydberg state. Each mode of operation is then going to have its own representation:
Analog: uses the ground-Rydberg basis. The ground level is considered the |0⟩ qubit and the Rydberg level is the |1⟩. Any remaining hyperfine state will be projected on |0⟩
Digital: uses the digital (hyperfine) basis. The two hyperfine states are mapped to |0⟩ and |1⟩. Any remaining qubit in the Rydberg will be projected on |0⟩.


Pulser is central in our software stack. It defines the base format for all pulse sequences that are created and exchanged across the different components of the stack. Using the Code panel, you can view the Pulser code that is generated from the sequence being created. If a given element of the Register or the pulse sequence is selected, the generated Pulser code is highlighted in the Code panel. The Pulser sequence can also be exported and imported from the left panel actions. We believe that helping you see what's happening in terms of Pulser code will make it easier for you to move that code to real production use cases.

A good starting point is the gallery of examples available from the left panel. These are particularly useful for people who want to learn more about the applications of our technology. The gallery contains basic examples for now and is meant to grow in time.

How to get started

Pulser Studio is publicly available today by signing up with your corporate or academic account at