Skip to content

Commit

Permalink
Merge pull request #34 from qua-platform/documentation-beta
Browse files Browse the repository at this point in the history
Full Documentation
  • Loading branch information
nulinspiratie authored May 6, 2024
2 parents 371a217 + 23be0f0 commit 5c575ee
Show file tree
Hide file tree
Showing 38 changed files with 2,546 additions and 1,056 deletions.
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

0 comments on commit 5c575ee

Please sign in to comment.