Metadata-Version: 2.1
Name: qibocal
Version: 0.0.2
Summary: 
Home-page: https://github.com/qiboteam/qibocal/
License: Apache-2.0
Author: andrea-pasquale
Author-email: andreapasquale97@gmail.com
Requires-Python: >=3.8,<3.12
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Scientific/Engineering :: Physics
Provides-Extra: classify
Provides-Extra: docs
Provides-Extra: viz
Requires-Dist: Pint-Pandas (>=0.3,<0.4)
Requires-Dist: Sphinx (>=5.0.0,<6.0.0) ; extra == "docs"
Requires-Dist: dash (>=2.6.0,<3.0.0)
Requires-Dist: furo (>=2023.3.27,<2024.0.0) ; extra == "docs"
Requires-Dist: keras-tuner (>=1.3.0,<1.3.1) ; (sys_platform == "linux" or sys_platform == "darwin") and (extra == "classify")
Requires-Dist: lmfit (>=1.0.3,<2.0.0)
Requires-Dist: matplotlib (>=3.7.0,<4.0.0) ; extra == "classify"
Requires-Dist: networkx (>=3.0,<4.0)
Requires-Dist: pandas (>=1.4.3,<2.0.0)
Requires-Dist: pint (>=0.20.1,<0.21.0)
Requires-Dist: pydantic (>=1.10.5,<2.0.0)
Requires-Dist: pydot (>=1.4.2,<2.0.0) ; extra == "viz"
Requires-Dist: qibo (>=0.1.9,<0.2.0)
Requires-Dist: qibolab (==0.0.3)
Requires-Dist: recommonmark (>=0.7.1,<0.8.0) ; extra == "docs"
Requires-Dist: scikit-learn (>=1.2.1,<2.0.0) ; extra == "classify"
Requires-Dist: seaborn (>=0.12.2,<0.13.0) ; extra == "classify"
Requires-Dist: sphinx_markdown_tables (>=0.0.17,<0.0.18) ; extra == "docs"
Requires-Dist: sphinxcontrib-bibtex (>=2.4.1,<3.0.0) ; extra == "docs"
Requires-Dist: tensorflow (>=2.12.0,<3.0.0) ; (sys_platform == "linux" or sys_platform == "darwin") and (extra == "classify")
Project-URL: Repository, https://github.com/qiboteam/qibocal/
Description-Content-Type: text/markdown

# Qibocal
![Tests](https://github.com/qiboteam/qibocal/workflows/Tests/badge.svg)
[![codecov](https://codecov.io/gh/qiboteam/qibocal/branch/main/graph/badge.svg?token=1EKZKVEVX0)](https://codecov.io/gh/qiboteam/qibocal)
[![Documentation Status](https://readthedocs.org/projects/qibocal/badge/?version=latest)](https://qibocal.readthedocs.io/en/latest/)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7662185.svg)](https://doi.org/10.5281/zenodo.7662185)

Qibocal provides Quantum Characterization Validation and Verification protocols using [Qibo](https://github.com/qiboteam/qibo) and [Qibolab](https://github.com/qiboteam/qibolab).

Qibocal key features:

- Automatization of calibration routines.

- Declarative inputs using runcard.

- Generation of a report.

## Installation

The package can be installed by source:
```sh
git clone https://github.com/qiboteam/qibocal.git
cd qibocal
pip install .
```


### Developer instructions
For development make sure to install the package using [`poetry`](https://python-poetry.org/) and to install the pre-commit hooks:
```sh
git clone https://github.com/qiboteam/qibocal.git
cd qibocal
poetry install
pre-commit install
```

## Minimal working example

This section shows the steps to perform a resonator spectroscopy with Qibocal.
### Write a runcard
A runcard contains all the essential information to run a specific task.
For our purposes, we can use the following:
```yml
platform: tii1q

qubits: [0]

format: csv

actions:
   resonator_spectroscopy:
     lowres_width: 5_000_000
     lowres_step: 2_000_000
     highres_width: 1_500_000
     highres_step: 200_000
     precision_width: 1_500_000
     precision_step: 100_000
     software_averages: 1
     points: 5
```
### Run the routine
To run all the calibration routines specified in the ```runcard```, Qibocal uses the `qq` command
```sh
qq <runcard> -o <output_folder>
```
if ```<output_folder>``` is specified, the results will be saved in it, otherwise ```qq``` will automatically create a default folder containing the current date and the username.

### Visualize the data

Qibocal gives the possibility to live-plotting with the `qq-live` command
```sh
qq-live <output_folder>
```
### Uploading reports to server

In order to upload the report to a centralized server, send to the server administrators your public ssh key (from the machine(s) you are planning to upload the report) and then use the `qq-upload <output_folder>` command. This program will upload your report to the server and generate an unique URL.

## Contributing

Contributions, issues and feature requests are welcome!
Feel free to check
<a href="https://github.com/qiboteam/qibocal/issues"><img alt="GitHub issues" src="https://img.shields.io/github/issues-closed/qiboteam/qibocal"/></a>

