Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 39 additions & 29 deletions CHANGELOG.md

Large diffs are not rendered by default.

39 changes: 8 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,18 @@
# QProgram

[![Tests](https://github.com/qilimanjaro-tech/qprogram/actions/workflows/tests.yml/badge.svg)](https://github.com/qilimanjaro-tech/qprogram/actions/workflows/tests.yml)
[![Code Quality](https://github.com/qilimanjaro-tech/qprogram/actions/workflows/code_quality.yml/badge.svg)](https://github.com/qilimanjaro-tech/qprogram/actions/workflows/code_quality.yml)
[![Python](https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-blue)](https://www.python.org/)
[![License](https://img.shields.io/badge/license-Apache%202.0-blue)](LICENSE)
[![Tests](https://github.com/qilimanjaro-tech/qprogram/actions/workflows/tests.yml/badge.svg)](https://github.com/qilimanjaro-tech/qprogram/actions/workflows/tests.yml) [![Code Quality](https://github.com/qilimanjaro-tech/qprogram/actions/workflows/code_quality.yml/badge.svg)](https://github.com/qilimanjaro-tech/qprogram/actions/workflows/code_quality.yml) [![Python](https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-blue)](https://www.python.org/) [![License](https://img.shields.io/badge/license-Apache%202.0-blue)](LICENSE)

QProgram is a Python DSL for describing pulse-level quantum experiments. You
write what you want the chip to do; the platform decides how to run it.
QProgram is a Python DSL for describing pulse-level quantum experiments. You write what you want the chip to do; the platform decides how to run it.

The core package knows nothing about any particular instrument. It defines the
language, the AST, a text file format, a capability protocol platforms validate
programs against, and the extension hooks vendor packages plug into. Its only
runtime dependencies are `numpy` and `xarray`.
The core package knows nothing about any particular instrument. It defines the language, the AST, a text file format, a capability protocol platforms validate programs against, and the extension hooks vendor packages plug into. Its only runtime dependencies are `numpy` and `xarray`.

## Installation

```bash
pip install qprogram
```

Optional extras: `qprogram[viz]` adds `Waveform.plot()`, and `qprogram[lsp]`
adds the language server used by editor integrations.
Optional extras: `qprogram[viz]` adds `Waveform.plot()`, and `qprogram[lsp]` adds the language server used by editor integrations.

## A first program

Expand Down Expand Up @@ -55,28 +47,15 @@ result = qp.simulate(resolved)
data = result.get(m0) # xarray.DataArray with named dimensions
```

`data` comes back with dimensions `("gain", "IQ")` and shape `(101, 2)`:
dimensions are named after the enclosing loops, outermost first, and the 1000
shots of the `average` block are reduced rather than kept. The reference
executor is the executable definition of the language's semantics.
`data` comes back with dimensions `("gain", "IQ")` and shape `(101, 2)`: dimensions are named after the enclosing loops, outermost first, and the 1000 shots of the `average` block are reduced rather than kept. The reference executor is the executable definition of the language's semantics.

## What the package does

Nothing in the package reaches an instrument. A program is a description: it is
built, checked, and handed over. Turning it into instrument code, placing it on
a timeline, and calibrating its pulses all happen behind `qp.PlatformProtocol`,
which is why the same program runs wherever that protocol is implemented. The
core stays small for that reason: it holds only what any platform could be
asked to do. Instrument-specific work (markers, active reset, triggers,
slow-control parameters) comes from optional vendor packages that register
themselves on import, and a `.qp` file that uses one records the dependency as
a `require` line and refuses to load without it.
Nothing in the package reaches an instrument. A program is a description: it is built, checked, and handed over. Turning it into instrument code, placing it on a timeline, and calibrating its pulses all happen behind `qp.PlatformProtocol`, which is why the same program runs wherever that protocol is implemented. The core stays small for that reason: it holds only what any platform could be asked to do. Instrument-specific work (markers, active reset, triggers, slow-control parameters) comes from optional vendor packages that register themselves on import, and a `.qp` file that uses one records the dependency as a `require` line and refuses to load without it.

## Documentation

Full documentation, including the user guide, the `.qp` format reference, and
the generated API reference, lives at
<https://qilimanjaro-tech.github.io/qprogram/>.
Full documentation, including the user guide, the `.qp` format reference, and the generated API reference, lives at <https://qilimanjaro-tech.github.io/qprogram/>.

## Development

Expand All @@ -93,9 +72,7 @@ uv run --group docs zensical serve # preview the documentation

## Reference

The design is described in *"QProgram: A Hardware-Agnostic DSL for Portable
Pulse-Level Quantum Programming"* by Vyron Vasileiadis, Flavie Le Bars, and
David Arcos (Qilimanjaro Quantum Tech, Barcelona, Spain).
The design is described in *"QProgram: A Hardware-Agnostic DSL for Portable Pulse-Level Quantum Programming"* by Vyron Vasileiadis, Flavie Le Bars, and David Arcos (Qilimanjaro Quantum Tech, Barcelona, Spain).

## License

Expand Down
1 change: 0 additions & 1 deletion changelog/25.changed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog/26.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog/27.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog/28.added.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog/28.changed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog/28.fixed.1.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog/28.fixed.2.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog/29.changed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog/34.added.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog/35.added.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog/36.changed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog/41.changed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog/42.changed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog/43.added.md

This file was deleted.

3 changes: 0 additions & 3 deletions changelog/43.changed.md

This file was deleted.

Loading
Loading