{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "# Quantum Learning Machine: jupyter notebooks tutorial\n",
        "<span style=\"color:green\">myQLM-1.11.2</span>\n",
        "\n",
        "The Quantum Learning Machine provides a software environment to program, compile and execute quantum programs, either on one of the provided simulators or on an actual chip whose interface has been implemented.\n",
        "\n",
        "It comes with a python software stack named \"*Quantum Application Toolset*\" (QAT), available under the general namespace ``qat``."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## Getting started\n",
        "\n",
        "The [getting started](getting_started.ipynb) notebook provides the basic steps to write and simulate your first quantum circuit."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## Tutorial notebooks: overview per theme\n",
        "- ### [Basics](tutorials/basic/overview_basic.ipynb)\n",
        "- ### [AQASM: the quantum programming language of the QLM](tutorials/lang/overview.ipynb)\n",
        "- ### [Ideal (noise-less) circuit simulation](tutorials/simulation/simulation_overview.ipynb)\n",
        "- ### [Customizing computational stack with **Plugins**](tutorials/plugins/overview.ipynb)\n",
        "- ### [Interoperability](tutorials/interoperability/interoperations.ipynb)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "# Full table of contents\n",
        "\n",
        "- ## [Basics](tutorials/basic/overview_basic.ipynb)\n",
        "\n",
        "    * [EPR pair circuit creation and simulation](tutorials/basic/epr_pair.ipynb)\n",
        "    * [Asking a simulator for an observable average](tutorials/basic/observables.ipynb)\n",
        "    * [Asking a simulator results on a subset of the qubits](tutorials/basic/partial_measures.ipynb)\n",
        "    \n",
        "- ## [AQASM: the quantum programming language of the qlm](tutorials/lang/overview.ipynb)\n",
        "\n",
        "    * [Writing a basic Quantum Program](tutorials/lang/writing_quantum_program.ipynb)\n",
        "    * [PyAQASM fundamental features](tutorials/lang/py_aqasm.ipynb)\n",
        "    * [Creating your custom gate set](tutorials/lang/custom_gate_set.ipynb)\n",
        "        * [Creating abstract gates and black-boxing routines](tutorials/lang/gate_sets.ipynb)\n",
        "    * [AQASM Language: text format](tutorials/lang/aqasm.ipynb)\n",
        "    \n",
        "- ## [Ideal (noise-less) circuit simulation](tutorials/simulation/simulation_overview.ipynb)\n",
        "   * [Demonstration of available execution options](tutorials/simulation/simulation_overview.ipynb)\n",
        "   * [Analyzing the output of a run](tutorials/simulation/run_analysis.ipynb)\n",
        "   \n",
        "- ## [Variational Algorithms (QAOA)](tutorials/variational_algorithms/overview.ipynb)\n",
        "    * [A presentation of the QAOA circuit generation routines](tutorials/variational_algorithms/qaoa.ipynb)\n",
        "    * [Adaptative plugins and variational optimizers](tutorials/plugins/junctions_and_optimizers.ipynb)\n",
        "    * [Fun and interactive plugins for variational optimization](tutorials/variational_algorithms/displaying_informations.ipynb)\n",
        "    * [Binding with Scipy optimizers](tutorials/variational_algorithms/scipy_optimize_binder.ipynb)\n",
        "    \n",
        "- ## [Customizing computational stack with **Plugins**](tutorials/plugins/overview.ipynb)\n",
        "    * [Splitting observables using the ObservableSplitter](tutorials/plugins/observable_splitter.ipynb)\n",
        "    * [Inlining circuit inside the execution stack via the CircuitInliner](tutorials/plugins/circuit_inliner.ipynb)\n",
        "    * [Writing your own plugin](tutorials/plugins/plugins.ipynb)\n",
        "    * [Example: emulating constrained connectivity](tutorials/plugins/emulating_custom_hardware_specs.ipynb)\n",
        "\n",
        "- ## [Circuit optimization and compilation](tutorials/circuit_optimization/overview.ipynb)\n",
        "    * [All-in-one NISQ Compiler](tutorials/circuit_optimization/generic_compiler.ipynb)\n",
        "    * [SWAP insertion tools for constrained connectivities](tutorials/circuit_optimization/satisfying_connectivity_constraints.ipynb)\n",
        "    * [Generic pattern-based rewriting](tutorials/circuit_optimization/graph_circuit.ipynb)\n",
        "    * [Example: Pattern-based optimization of QAOA](tutorials/circuit_optimization/pattern_manager.ipynb)\n",
        "    * [KAKCompression: single qubit gate compression](tutorials/circuit_optimization/single_qubit_gates_compression.ipynb)\n",
        "    * [Synthopline: General purpose quantum circuit synthesis and optimization library](tutorials/circuit_optimization/synthopline/overview.ipynb)\n",
        "    * [Fusion: Gate fusion](tutorials/circuit_optimization/fusion_plugin.ipynb)\n",
        "\n",
        "- ## [Interoperability](tutorials/interoperability/interoperations.ipynb)\n",
        "    * [Qiskit: interoperability](tutorials/interoperability/Qiskit.ipynb)\n",
        "    * [Qiskit: connect to IBMQ backend](tutorials/interoperability/using_qiskit_qpus.ipynb)\n",
        "    * [Pyquil (deprecated for python 3.6)](tutorials/interoperability/Pyquil.ipynb)\n",
        "    * [Cirq](tutorials/interoperability/Cirq.ipynb)\n",
        "    * [Projectq](tutorials/interoperability/Projectq.ipynb)\n",
        "    * [Openqasm](tutorials/interoperability/Openqasm.ipynb)\n",
        "    \n",
        "- ## [Annealing on myQLM](tutorials/combinatorial_optimization/overview_combinatorial_optimization_myqlm.ipynb)\n",
        "\n",
        "    * [Basic example with Ising Antiferromagnet](tutorials/combinatorial_optimization/getting_started_with_sa.ipynb)\n",
        "    * [Arithmetic with schedules](tutorials/schedule_arithmetic.ipynb)\n",
        "\n",
        "    - #### Unconstrained Graph Problems\n",
        "        * [Max Cut](tutorials/combinatorial_optimization/max_cut_myqlm.ipynb)\n",
        "        * [Graph Partitioning](tutorials/combinatorial_optimization/graph_partitioning_myqlm.ipynb)\n",
        "\n",
        "    - #### Constrained Graph Problems\n",
        "        * [K-Clique](tutorials/combinatorial_optimization/k_clique_myqlm.ipynb)\n",
        "        * [Vertex Cover](tutorials/combinatorial_optimization/vertex_cover_myqlm.ipynb)\n",
        "\n",
        "    - #### Other NP Problems\n",
        "        * [Number Partitioning](tutorials/combinatorial_optimization/number_partitioning_myqlm.ipynb)\n",
        "\n",
        "- ## [Digital quantum simulation for spin and fermionic systems](tutorials/digital_quantum_simulations_spin_fermion/qat_fermion_overview.ipynb)\n",
        "    * [Spin-fermions transforms](tutorials/digital_quantum_simulations_spin_fermion/qat_fermion_spin_fermion_transforms.ipynb)\n",
        "    * [Variational Quantum Eigensolver for fermions](tutorials/digital_quantum_simulations_spin_fermion/qat_fermion_vqe_hubbard.ipynb)\n",
        "    * [Quantum Phase Estimation on the Hubbard molecule](tutorials/digital_quantum_simulations_spin_fermion/qat_fermion_qpe_hubbard_molecule.ipynb)\n",
        "    * [VQE for a H2 molecule using the UCC ansatz](tutorials/digital_quantum_simulations_spin_fermion/qat_fermion_vqe_ucc_example_1_h2.ipynb)\n",
        "    * [VQE for a LiH molecule using the UCC ansatz](tutorials/digital_quantum_simulations_spin_fermion/qat_fermion_vqe_ucc_example_2_lih.ipynb)\n",
        "    * [Advanced VQE: Quantum Subspace Expansion](tutorials/digital_quantum_simulations_spin_fermion/qat_fermion_quantum_subspace_expansion_h2.ipynb)\n",
        "    * [Natural gradient-based optimizer](tutorials/digital_quantum_simulations_spin_fermion/qat_fermion_natural_gradient_vqe.ipynb)\n",
        "    * [Optimizing circuits with the sequential optimization plugin](tutorials/digital_quantum_simulations_spin_fermion/qat_fermion_sequential_optimization_plugin.ipynb)\n",
        "    * [Mitigating multiqubit gate noise](tutorials/digital_quantum_simulations_spin_fermion/qat_fermion_zero_noise_extrapolation_plugin.ipynb)\n",
        "    * [Running several optimizations and keeping the best one with MultipleLaunchesAnalyzer](tutorials/digital_quantum_simulations_spin_fermion/qat_fermion_multiple_launches_analyzer_plugin.ipynb)\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## Additional Information\n",
        "\n",
        "[Command-line usage](commands.ipynb)"
      ]
    }
  ],
  "metadata": {
    "authors": [
      "Simon Martiel"
    ],
    "kernelspec": {
      "display_name": "Python 3 (ipykernel)",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.12.3"
    },
    "nbsphinx-toctree": {
      "maxdepth": 3,
      "numbered": true
    },
    "vscode": {
      "interpreter": {
        "hash": "e7370f93d1d0cde622a1f8e1c04877d8463912d04d973331ad4851f04de6915a"
      }
    }
  },
  "nbformat": 4,
  "nbformat_minor": 2
}