Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Full Documentation #34

Merged
merged 29 commits into from
May 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
eebb1fb
minor title changes
nulinspiratie Apr 19, 2024
3b8c8dc
doc: QM styling
nulinspiratie Apr 22, 2024
ef055ae
Merge branch 'main' into documentation-beta
nulinspiratie Apr 22, 2024
f8a7318
adding channels documentation
nulinspiratie Apr 22, 2024
6f252ee
doc: more info on channels
nulinspiratie Apr 23, 2024
da45f37
doc: discussing pulses + channels
nulinspiratie Apr 23, 2024
51b6e89
doc: finished analog output channels
nulinspiratie Apr 23, 2024
1b06648
doc: channels.md done!
nulinspiratie Apr 23, 2024
e4fab5d
added info on pulses
nulinspiratie Apr 24, 2024
b745c69
doc: Finished-ish pulses
nulinspiratie Apr 24, 2024
5407323
doc: rename titel
nulinspiratie Apr 25, 2024
66e24de
working on migration document
nulinspiratie Apr 25, 2024
ef689b7
Capitalization of titles
nulinspiratie Apr 25, 2024
cbda490
using flex rows
nulinspiratie Apr 25, 2024
86bdb8f
rewriting quam migration
nulinspiratie Apr 28, 2024
a77a687
docs: added section on converting pulses
nulinspiratie Apr 30, 2024
25f3835
finished version on migration
nulinspiratie Apr 30, 2024
02a80e1
docs: rewrote overview section
nulinspiratie Apr 30, 2024
700e9b5
docs: added index pages
nulinspiratie Apr 30, 2024
9c01d99
Update readme
nulinspiratie Apr 30, 2024
b6aac59
docs: Add readme and code example
nulinspiratie Apr 30, 2024
9400469
docs: allow html in div
nulinspiratie May 1, 2024
dc2433c
reference fixes
nulinspiratie May 2, 2024
c0e7630
docs: add quamroot
nulinspiratie May 3, 2024
14efc60
Merge commit '371a2170f12352ac7997ef2a070c3ec5595abb4d' into document…
nulinspiratie May 4, 2024
edfe048
rewriting example code
nulinspiratie May 4, 2024
23368cd
docs: Update QuAM demonstration
nulinspiratie May 4, 2024
72d47c7
docs: went through all docs
nulinspiratie May 6, 2024
23be0f0
docs: add FrequencyConverter
nulinspiratie May 6, 2024
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
79 changes: 63 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,64 @@
# QuAM (Quantum Abstract Machine)

Welcome to QuAM!
The documentation is currently being added to the QM documentation. In the mean time,
you can view the documentation files in `docs`.
In particular, this includes installation instructions at `docs/getting-started.md`.

You can also run the documentation website locally as follows:
1. Open terminal / Powershell and navigate to the root QuAM folder
2. Ensure you are in a virtual environment.
See installation instructions in `docs/getting-started.md` for details
2. Run the following commands:
```
pip install ".[docs]"
mkdocs serve
Here's a README template for the QuAM GitHub repository front page. This README provides a concise overview of QuAM, useful links, installation instructions, and a placeholder for code examples:

---

# QuAM: Quantum Abstract Machine

## Overview
QuAM (Quantum Abstract Machine) is an innovative software framework designed to provide an abstraction layer over the QUA programming language, facilitating a more intuitive interaction with quantum computing platforms. Aimed primarily at physicists and researchers, QuAM allows users to think and operate in terms of qubits and quantum operations rather than the underlying hardware specifics.

Explore detailed documentation and get started with QuAM here: [QuAM Documentation](ENTER_URL_HERE).
<!-- TODO -->

## Key Features
- **Abstraction Layer**: Simplifies quantum programming by providing higher-level abstractions for qubit operations.
- **Component-Based Structure**: Utilize modular components like Mixers and IQChannels for flexible quantum circuit design.
- **Automated Configuration**: Generate QUA configurations from QuAM setups seamlessly.
- **Extensibility**: Extend QuAM with custom classes to handle complex quantum computing scenarios.
- **State Management**: Features robust tools for saving and loading your quantum states, promoting reproducibility and consistency.

## Installation
To install QuAM, follow these simple steps:

1. Ensure you have Python ≥ 3.8 installed on your system.
2. Clone the repository:
```bash
git clone https://github.com/qua-platform/quam.git
```
3. Navigate to the cloned directory and install the required dependencies:
```bash
cd quam
pip install .
```

## Quick Start
Here’s a basic example to get you started with QuAM:

```python
from quam.components import BasicQuAM, SingleChannel, pulses

# Create a root-level QuAM instance
machine = BasicQuAM()

# Add an OPX output channel
channel = SingleChannel(opx_output=("con1", 1))
machine.channels["output"] = channel

# Add a Gaussian pulse to the channel
channel.operations["gaussian"] = pulses.Gaussian(
length=100, # Pulse length in ns
amplitude=0.5, # Peak amplitude of Gaussian pulse
sigma=20, # Standard deviation of Guassian pulse
)

# Play the Gaussian pulse on the channel within a QUA program
with program() as prog:
channel.play("gaussian")

# Generate the QUA configuration from QuAM
qua_configuration = machine.generate_config()
```
3. Navigate to `127.0.0.1:8000`


## License
QuAM is released under the BSD-3 License. See the LICENSE file for more details.
3 changes: 3 additions & 0 deletions docs/API_references/components/basic_quam_API.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# BasicQuAM API

::: quam.components.basic_quam
3 changes: 3 additions & 0 deletions docs/API_references/components/channels_API.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# QuAM Channels API

::: quam.components.channels
3 changes: 3 additions & 0 deletions docs/API_references/components/hardware_API.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# QuAM Hardware API

::: quam.components.hardware
11 changes: 11 additions & 0 deletions docs/API_references/components/octave_API.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Welcome to the QuAM Octave API Documentation

The Octave component in the Quantum Abstract Machine (QuAM) manages signal upconversion and downconversion through its frequency converters. This section provides an API guide for setting up and customizing the Octave, detailing its integration with quantum processors for efficient signal processing. Explore the capabilities, configuration options, and practical examples to enhance your quantum operations with Octave's advanced functionalities.

::: quam.components.octave
options:
members:
- Octave
- OctaveFrequencyConverter
- OctaveUpConverter
- OctaveDownConverter
9 changes: 9 additions & 0 deletions docs/API_references/components/pulses_API.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# QuAM Pulses API

Welcome to the QuAM Pulses API Documentation.
The QuAM Pulses module offers a versatile framework for creating and controlling pulse schemes essential for quantum operations.
Information can be found in [QuAM Pulses Documentation](/components/pulses) in the User Guide.

This section provides detailed API references for various pulse types—ranging from simple waveforms to complex modulated pulses—tailored for precise quantum state manipulation and measurement. Explore the properties, methods, and examples to effectively integrate these pulse components into your quantum experiments.

::: quam.components.pulses
11 changes: 11 additions & 0 deletions docs/API_references/core/quam_classes_API.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# QuAM Classes API

::: quam.core.quam_classes
handler: python
options:
members:
- QuamBase
- QuamRoot
- QuamComponent
- QuamDict
- QuamList
Empty file.
24 changes: 24 additions & 0 deletions docs/API_references/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# QuAM API Reference

Welcome to the API Reference section of the Quantum Abstract Machine (QuAM) documentation. Here, you'll find comprehensive details on all components, classes, and methods that make up the QuAM framework. This documentation is designed to help developers understand and effectively utilize the powerful capabilities of QuAM for quantum computing applications.

## Quick Links

- [**Core Components**](/API_references/core/quam_classes_API)
Details on fundamental building blocks like [QuamBase][quam.core.quam_classes.QuamBase], [QuamComponent][quam.core.quam_classes.QuamComponent] and [QuamRoot][quam.core.quam_classes.QuamRoot].
[QuamBase][quam.core.quam_classes.QuamBase]

- [**Channel Components**](/API_references/components/channels_API)
Learn about channel configurations and their operations within the QuAM framework.

- [**Pulse Components**](/API_references/components/pulses_API)
A detailed look at various pulse types and their properties used in quantum operations.

- [**Hardware Components**](/API_references/components/hardware_API)
Explore the hardware-related classes such as [Mixer][quam.components.hardware.Mixer], [LocalOscillator][quam.components.hardware.LocalOscillator], and [FrequencyConverter][quam.components.hardware.FrequencyConverter].

- [**Octave Components**](/API_references/components/octave_API)
Documentation on the `Octave` component and its associated up and down converters.

- [**BasicQuAM Class**](/API_references/components/basic_quam_API)
Details on the `BasicQuAM` class, the root-level QuAM instance that serves as the entry point for QuAM configurations.
197 changes: 197 additions & 0 deletions docs/assets/qm_logo_white.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading