Giter Club home page Giter Club logo

qibocal's People

Contributors

alecandido avatar alejandrosopena avatar andrea-pasquale avatar aorgazf avatar davidsarlle avatar dependabot[bot] avatar edoardo-pedicillo avatar gabrielepalazzo avatar igres26 avatar ingoroth avatar jacfomg avatar matteorobbiati avatar maxhant avatar pre-commit-ci[bot] avatar rodolfocarobene avatar scarrazza avatar stavros11 avatar vodovozovaliza avatar wilkensj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qibocal's Issues

Update installation instructions for developers

@scarrazza @stavros11 @andrea-pasquale After trying to install qcvv for developers I have found some issues during the installation. Maybe it is interesting to update the installation instructions for developers in the repo with the following:

  1. Create new conda env with python=3.9 (with python 3.10 qcvv doesn't work):

  2. create a new ssh key in the machine where you are installing qcvv:
    $ ssh-keygen -t ed25519 -C "[email protected]" (the email should be the one used as a user on github)

  • maybe the ssh type ed25519 type does not work because your machine is using legacy mode. If so, use the command:
    $ ssh-keygen -t rsa -b 4096 -C "[email protected]"
  1. upload the ssh key to your github account:
  • Log in in your github account
  • Go to settings - SSH and GPS keys - New ssh keys
  • Write a tittle for your ssh key (ex: "ssh qcvv saadiyat")
  • Copy and paste your ssh key generated in step 1:
    windows: $ clip < ~/.ssh/id_ed25519.pub or $ clip < ~/.ssh/id_rsa.pub (depending on the type of ssh key created)
    linux: $ cat ~/.ssh/id_ed25519.pub or $ cat ~/.ssh/id_rsa.pub (epending on the type of ssh key created)
  1. Follow the qcvv installation steps:

       $ git clone https://github.com/qiboteam/qcvv.git
       $ cd qcvv
       $ poetry install
       $ pre-commit install
       
       - test the installation typing qq in the command line and if the "qq" is recognized
    
  2. clone the qibolab repo
    $ git clone https://github.com/qiboteam/qibolab.git

To use a different branch of qibolab with qcvv, be sure that you are inside the qibolab branch you want to sue:
$ cd qibolab
$ git checkout "name_of_the_branch_to_used_by_qcvv"

Platform is loaded twice on every qibocal action

As shown below, the platform seems to be loaded twice on every calibration routine, wasting unnecessary time.

[Qibocal 0.0.1.dev0|WARNING|2022-10-14 00:55:27]: Deleting previous directory reports/-_latest_5q-.
[Qibocal 0.0.1.dev0|INFO|2022-10-14 00:55:28]: Creating directory reports/-_latest_5q-.
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:28]: Loading platform tii5q from runcard /nfs/users/alvaro.orgaz/qibolab/src/qibolab/runcards/tii5q.yml
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:28]: Connecting to tii5q instrument cluster.
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:30]: Connecting to tii5q instrument qrm_rf.
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:30]: Connecting to tii5q instrument qcm_rf1.
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:30]: Connecting to tii5q instrument qcm_rf2.
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:30]: Connecting to tii5q instrument qcm_rf3.
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:31]: Connecting to tii5q instrument qcm_bb1.
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:31]: Connecting to tii5q instrument qcm_bb2.
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:31]: Connecting to tii5q instrument SPI.
S4g module 2: current 0.000000 mA too low for set span,current set to min value: 0.000000 mA
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:32]: Using qibolab (tii5q) backend on /CPU:0
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:32]: Loading platform tii5q from runcard reports/-_latest_5q-/new_platform.yml
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:32]: Connecting to tii5q instrument cluster.
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:34]: Connecting to tii5q instrument qrm_rf.
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:34]: Connecting to tii5q instrument qcm_rf1.
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:34]: Connecting to tii5q instrument qcm_rf2.
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:34]: Connecting to tii5q instrument qcm_rf3.
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:35]: Connecting to tii5q instrument qcm_bb1.
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:35]: Connecting to tii5q instrument qcm_bb2.
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:35]: Connecting to tii5q instrument SPI.
S4g module 2: current 0.000000 mA too low for set span,current set to min value: 0.000000 mA
S4g module 2: current 0.000000 mA too low for set span,current set to min value: 0.000000 mA
[Qibo 0.1.9.dev0|INFO|2022-10-14 00:55:36]: WARNING: S4g module 1 - port 3 current was: -0.011260032653808594, now setting current to: -0.01126
S4g module 2: current 0.000000 mA too low for set span,current set to min value: 0.000000 mA

Removing directory prints

Hi @andrea-pasquale

Could we remove this print please?

[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-000-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-001-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-001-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-002-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-002-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-003-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-003-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-004-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-004-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-005-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-005-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-006-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-006-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-007-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-007-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-008-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-008-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-009-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-009-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-010-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-010-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-011-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-011-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-012-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-012-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-013-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-013-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-014-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-014-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-015-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-015-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-016-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-016-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-017-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-017-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-018-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-018-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-019-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-019-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-020-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-020-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-021-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-021-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-022-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-022-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-023-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-023-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-024-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-024-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-025-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-025-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-026-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-026-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-027-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-027-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-028-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-028-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-029-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-029-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-030-maxime-hantute
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Directory 2022-09-23-030-maxime-hantute already exists.
[Qcvv 0.0.1.dev0|WARNING|2022-09-23 19:17:35]: Trying to create directory 2022-09-23-031-maxime-hantute

Adding strings in results

Hi Andrea,
In branch, maxime/allxy_drag, I am trying to have an x axis with strings. However, it seems that I cannot do that. What would you advise?
Check file, allxy_drag.py in calibration for the example.

[Qcvv 0.0.1.dev0|WARNING|2022-08-26 03:40:06]: Directory 2022-08-26-000-maxime-hantute already exists. [Qcvv 0.0.1.dev0|WARNING|2022-08-26 03:40:06]: Trying to create directory 2022-08-26-001-maxime-hantute [Qcvv 0.0.1.dev0|WARNING|2022-08-26 03:40:06]: Directory 2022-08-26-001-maxime-hantute already exists. [Qcvv 0.0.1.dev0|WARNING|2022-08-26 03:40:06]: Trying to create directory 2022-08-26-002-maxime-hantute [Qcvv 0.0.1.dev0|WARNING|2022-08-26 03:40:06]: Directory 2022-08-26-002-maxime-hantute already exists. [Qcvv 0.0.1.dev0|WARNING|2022-08-26 03:40:06]: Trying to create directory 2022-08-26-003-maxime-hantute [Qcvv 0.0.1.dev0|WARNING|2022-08-26 03:40:06]: Directory 2022-08-26-003-maxime-hantute already exists. [Qcvv 0.0.1.dev0|WARNING|2022-08-26 03:40:06]: Trying to create directory 2022-08-26-004-maxime-hantute [Qcvv 0.0.1.dev0|WARNING|2022-08-26 03:40:06]: Directory 2022-08-26-004-maxime-hantute already exists. [Qcvv 0.0.1.dev0|WARNING|2022-08-26 03:40:06]: Trying to create directory 2022-08-26-005-maxime-hantute [Qcvv 0.0.1.dev0|INFO|2022-08-26 03:40:06]: Creating directory 2022-08-26-005-maxime-hantute. [Qibo 0.1.8rc1.dev0|INFO|2022-08-26 03:40:06]: Loading platform tii1q from runcard /nfs/users/maxime.hantute/qibolab/src/qibolab/runcards/tii1q.yml [Qibo 0.1.8rc1.dev0|INFO|2022-08-26 03:40:07]: Connecting to tii1q instrument cluster. [Qibo 0.1.8rc1.dev0|INFO|2022-08-26 03:40:08]: Connecting to tii1q instrument qrm_rf. [Qibo 0.1.8rc1.dev0|INFO|2022-08-26 03:40:08]: Connecting to tii1q instrument qcm_rf. Traceback (most recent call last): File "/home/users/maxime.hantute/.conda/envs/qcvv/bin/qq", line 5, in <module> command() File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/click/core.py", line 1130, in __call__ return self.main(*args, **kwargs) File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/click/core.py", line 1055, in main rv = self.invoke(ctx) File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/click/core.py", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/click/core.py", line 760, in invoke return __callback(*args, **kwargs) File "/nfs/users/maxime.hantute/qcvv/src/qcvv/cli/_base.py", line 41, in command action_builder.execute() File "/nfs/users/maxime.hantute/qcvv/src/qcvv/cli/_base.py", line 212, in execute results = self.get_result(routine, args) File "/nfs/users/maxime.hantute/qcvv/src/qcvv/cli/_base.py", line 221, in get_result results = routine.final_action(results, self.output, self.format) File "/nfs/users/maxime.hantute/qcvv/src/qcvv/decorators.py", line 21, in save for data in results: File "/nfs/users/maxime.hantute/qcvv/src/qcvv/calibrations/allxy_drag.py", line 67, in drag_pulse_tuning data.add(results) File "/nfs/users/maxime.hantute/qcvv/src/qcvv/data.py", line 60, in add self.df.loc[l + l // len(list(data.keys())), name] = value * ureg(unit) File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/pandas/core/indexing.py", line 716, in __setitem__ iloc._setitem_with_indexer(indexer, value, self.name) File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/pandas/core/indexing.py", line 1688, in _setitem_with_indexer self._setitem_with_indexer_split_path(indexer, value, name) File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/pandas/core/indexing.py", line 1743, in _setitem_with_indexer_split_path raise ValueError( ValueError: Must have equal len keys and value when setting with an iterable

Script crashing if unsuccessful fitting

Hi @andrea-pasquale,
From one routine to the next, if the fitting is unsuccessful, the routine will crash because of the saving of parameters in the runcard.

https://github.com/qiboteam/qcvv/blob/7e35bf50a8602dddfca94454b9d51db8726a5329/src/qcvv/cli/builders.py#L159

Error bellow:
Traceback (most recent call last): File "/home/users/maxime.hantute/.conda/envs/qcvv_fix/bin/qq", line 8, in <module> sys.exit(command()) File "/home/users/maxime.hantute/.conda/envs/qcvv_fix/lib/python3.9/site-packages/click/core.py", line 1130, in __call__ return self.main(*args, **kwargs) File "/home/users/maxime.hantute/.conda/envs/qcvv_fix/lib/python3.9/site-packages/click/core.py", line 1055, in main rv = self.invoke(ctx) File "/home/users/maxime.hantute/.conda/envs/qcvv_fix/lib/python3.9/site-packages/click/core.py", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File "/home/users/maxime.hantute/.conda/envs/qcvv_fix/lib/python3.9/site-packages/click/core.py", line 760, in invoke return __callback(*args, **kwargs) File "/nfs/users/maxime.hantute/qcvv/src/qcvv/cli/_base.py", line 52, in command action_builder.execute() File "/nfs/users/maxime.hantute/qcvv/src/qcvv/cli/builders.py", line 130, in execute self._execute_single_action(routine, args, path) File "/nfs/users/maxime.hantute/qcvv/src/qcvv/cli/builders.py", line 145, in _execute_single_action self.update_platform_runcard(qubit, routine.__name__) File "/nfs/users/maxime.hantute/qcvv/src/qcvv/cli/builders.py", line 160, in update_platform_runcard settings["characterization"]["single_qubit"][qubit][param] = int( ValueError: cannot convert float NaN to integer

This happened while running a Rabi.

Btw, another issue would be that both the phase and MSR should be fitted. So one needs to save the parameter that best fits its corresponding data.

Let me know if you need an example to run, but it won't be easy for me to provide.

More installation problems on Windows

Hi @andrea-pasquale ,
After the recent repository name change (qcvv->qibocal) I've been trying to create new environments in both saadiyat and my local computer.
I managed to install it in saadiyat using:

conda create -n qibocal python=3.9
conda activate qibocal
git clone ssh://github.com/qiboteam/qibocal.git
cd qibocal
pip install poetry
pip install -e .
cd ..
pip uninstall qibolab
git clone ssh://github.com/qiboteam/qibolab.git
cd qibolab
pip install -e .[tiiq]
cd ..
pip install pre-commit

in windows however, the installation of qibocal with pip install -e . fails, when trying to install qibolab. The error is
Permission denied (publickey) despite of the fact that I can successfully establish a connection using ssh -vT [email protected] and the keys are successfully installed. I can confirm that because I can also clone the reporsitory using git clone ssh://github.com/qiboteam/qibocal.git
I am not sure if poetry has its own separate .ssh configuration.

I also tried installing qibocal using poetry install and it gives the following errors:

(qibocal) D:\Alvaro\Projects\GitHub\qibocal>poetry install
Installing dependencies from lock file

Package operations: 148 installs, 6 updates, 0 removals

  • Installing pycparser (2.21)
  • Installing cffi (1.15.1)
  • Updating certifi (2022.9.24 C:/b/abs_ac29jvt43w/croot/certifi_1665076682579/work/certifi -> 2022.9.24)
  • Updating charset-normalizer (2.1.1 -> 2.0.12)
  • Installing cryptography (38.0.1)
  • Installing types-cryptography (3.3.23)
  • Installing pyasn1 (0.4.8)
  • Updating urllib3 (1.26.12 -> 1.22)
  • Installing asttokens (2.0.8)
  • Installing cachetools (3.1.1)
  • Installing parso (0.8.3)
  • Installing pure-eval (0.2.2)
  • Installing pyjwt (2.5.0)
  • Installing pyasn1-modules (0.2.8)
  • Installing protobuf (4.21.7)
  • Updating requests (2.28.1 -> 2.27.1)
  • Installing rsa (4.4)
  • Installing executing (1.1.0)
  • Installing wcwidth (0.2.5)
  • Installing pywin32 (304)
  • Installing traitlets (5.4.0)
  • Installing backcall (0.2.0)
  • Installing colorama (0.4.5)
  • Installing decorator (5.1.1)
  • Installing googleapis-common-protos (1.56.4)
  • Installing google-auth (2.12.0)
  • Installing nest-asyncio (1.5.6)
  • Installing numpy (1.23.3)
  • Installing portalocker (2.5.1)
  • Installing entrypoints (0.4)
  • Installing pyzmq (24.0.1)
  • Installing jedi (0.18.1)
  • Installing pickleshare (0.7.5)
  • Installing python-dateutil (2.8.2)
  • Installing msal (1.19.0)
  • Installing matplotlib-inline (0.1.6)
  • Installing stack-data (0.5.1)
  • Installing prompt-toolkit (3.0.31)
  • Installing jupyter-core (4.11.1)
  • Installing pygments (2.13.0)
  • Installing tomli (2.0.1)
  • Installing tornado (6.2)
  • Installing typing-extensions (4.3.0)
  • Updating zipp (3.9.0 -> 3.8.1)
  • Installing azure-core (1.25.1)
  • Installing contextlib2 (21.6.0)
  • Installing contourpy (1.0.5)
  • Installing cycler (0.11.0)
  • Installing google-api-core (2.10.1)
  • Installing ipython (8.5.0)
  • Installing kiwisolver (1.4.4)
  • Installing msal-extensions (1.0.0)
  • Installing jupyter-client (7.3.5)
  • Installing psutil (5.9.2)
  • Installing fonttools (4.37.4)
  • Installing opencensus-context (0.1.2)
  • Installing markupsafe (2.1.1)
  • Updating importlib-metadata (4.13.0 -> 5.0.0)
  • Installing pytz (2022.4)
  • Installing pillow (9.2.0)
  • Installing setuptools-scm (7.0.5)
  • Installing debugpy (1.6.3)
  • Installing azure-identity (1.11.0)
  • Installing future (0.18.2)
  • Installing click (8.1.3)
  • Installing itsdangerous (2.1.2)
  • Installing jupyterlab-widgets (3.0.3)
  • Installing matplotlib (3.6.0)
  • Installing mpmath (1.2.1)
  • Installing pandas (1.5.0)
  • Installing ruamel-yaml-clib (0.2.6)
  • Installing versioningit (2.0.1)
  • Installing werkzeug (2.2.2)
  • Installing pyyaml (6.0)
  • Installing jinja2 (3.1.2)
  • Installing opencensus (0.8.0)
  • Installing schema (0.7.5)
  • Installing widgetsnbextension (4.0.3)
  • Installing h5py (3.7.0)
  • Installing latexcodec (2.0.1)
  • Installing ipykernel (6.16.0)
  • Installing alabaster (0.7.12)
  • Installing asteval (0.9.27)
  • Installing babel (2.10.3)
  • Installing broadbean (0.11.0)
  • Installing brotli (1.0.9)
  • Installing cma (3.2.2)
  • Installing h5netcdf (1.0.2)
  • Installing docutils (0.17.1)
  • Installing joblib (1.2.0)
  • Installing lazy-object-proxy (1.7.1)
  • Installing opencensus-ext-azure (1.1.4)
  • Installing iniconfig (1.1.1)
  • Installing ipywidgets (8.0.2)
  • Installing flask (2.2.2)
  • Installing py (1.11.0)
  • Installing imagesize (1.4.1)
  • Installing pybtex (0.24.0)
  • Installing pluggy (1.0.0)
  • Installing pyvisa (1.11.3)
  • Installing ruamel-yaml (0.17.21)
  • Installing scipy (1.6.1)
  • Installing snowballstemmer (2.2.0)
  • Installing sphinxcontrib-applehelp (1.0.2)
  • Installing sphinxcontrib-devhelp (1.0.2)
  • Installing sphinxcontrib-htmlhelp (2.0.0)
  • Installing sphinxcontrib-jsmath (1.0.1)
  • Installing sphinxcontrib-qthelp (1.0.3)
  • Installing sphinxcontrib-serializinghtml (1.1.5)
  • Installing sympy (1.11.1)
  • Installing tabulate (0.8.10)
  • Installing tenacity (8.1.0)
  • Installing tqdm (4.64.1)
  • Installing uncertainties (3.1.7)
  • Installing websockets (10.3)
  • Installing wrapt (1.13.3)
  • Installing xarray (2022.9.0)
  • Installing astroid (2.9.3)
  • Installing cfgv (3.3.1)
  • Installing commonmark (0.9.1)
  • Installing dash-core-components (2.0.0)
  • Installing flask-compress (1.13)
  • Installing dash-table (5.0.0)
  • Installing dash-html-components (2.0.0)
  • Installing mccabe (0.6.1)
  • Installing isort (4.3.21)
  • Installing nodeenv (1.7.0)
  • Installing markdown (3.4.1)
  • Installing identify (2.5.6)
  • Installing pybtex-docutils (1.0.2)
  • Installing pastel (0.2.1)
  • Installing plotly (5.10.0)
  • Installing pathspec (0.10.1)
  • Installing mypy-extensions (0.4.3)
  • Installing pint (0.19.2)
  • Installing coverage (6.5.0)
  • Installing lmfit (1.0.3)
  • Installing pytest (7.1.3)
  • Installing qcodes (0.32.0)
  • Installing qibo (0.1.9.dev0 3a48025)
  • Installing sphinx (4.5.0)
  • Installing toml (0.10.2)

  OSError

  [WinError 1314] A required privilege is not held by the client: '../../../../../examples/3_tangle/README.md' -> 'C:\\Users\\Alvaro\\anaconda3\\envs\\qibocal\\src\\qibo\\doc\\source\\code-examples\\tutorials\\3_tangle\\README.md'

  at ~\anaconda3\envs\qibocal\lib\site-packages\dulwich\index.py:602 in build_file_from_blob
      598│         if sys.platform == "win32":
      599│             # os.readlink on Python3 on Windows requires a unicode string.
      600│             contents = contents.decode(tree_encoding)
      601│             target_path = target_path.decode(tree_encoding)
    → 602│         os.symlink(contents, target_path)
      603│     else:
      604│         if oldstat is not None and oldstat.st_size == len(contents):
      605│             with open(target_path, "rb") as f:
      606│                 if f.read() == contents:

Warning: The file chosen for install of rsa 4.4 (rsa-4.4-py2.py3-none-any.whl) is yanked. Reason for being yanked: Made a mistake

This error interrupts the installation, and qibolab does not get installed.

poetry install fails linux 27/10/2022

Hi @andrea-pasquale
I've tried creating a fresh new environment in Saadiyat and poetry install fails:

conda create -n qiboteam python=3.9
conda activate qiboteam
git clone https://github.com/qiboteam/qibocal.git
pip install poetry
pip install pre-commit
pip install pytest
pip install pytest-cov
clear
cd qibocal
poetry install

Output:

Installing types-cryptography (3.3.23): Failed

  DBusErrorResponse

  [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

  at /opt/anaconda3/lib/python3.9/site-packages/jeepney/wrappers.py:214 in unwrap_msg
      210│     This is to be used with replies to method_call messages, which may be
      211│     method_return or error.
      212│     """
      213│     if msg.header.message_type == MessageType.error:
    → 214│         raise DBusErrorResponse(msg)
      215│ 
      216│     return msg.body
      217│ 

The following error occurred when trying to handle this error:


  ItemNotFoundException

  Item does not exist!

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/util.py:49 in send_and_get_reply
       45│              try:
       46│                      return self._connection.send_and_get_reply(msg, unwrap=True)
       47│              except DBusErrorResponse as resp:
       48│                      if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
    →  49│                              raise ItemNotFoundException('Item does not exist!') from resp
       50│                      elif resp.name in (DBUS_SERVICE_UNKNOWN, DBUS_EXEC_FAILED,
       51│                                         DBUS_NO_REPLY):
       52│                              data = resp.data
       53│                              if isinstance(data, tuple):

The following error occurred when trying to handle this error:


  PromptDismissedException

  Prompt dismissed.

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/collection.py:145 in create_collection
      141│      if len(collection_path) > 1:
      142│              return Collection(connection, collection_path, session=session)
      143│      dismissed, result = exec_prompt(connection, prompt)
      144│      if dismissed:
    → 145│              raise PromptDismissedException('Prompt dismissed.')
      146│      signature, collection_path = result
       61│                 collection = secretstorage.get_default_collection(bus)
  • Installing pyasn1 (0.4.8): Failed

  DBusErrorResponse

  [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

  at /opt/anaconda3/lib/python3.9/site-packages/jeepney/wrappers.py:214 in unwrap_msg
      210│     This is to be used with replies to method_call messages, which may be
      211│     method_return or error.
      212│     """
      213│     if msg.header.message_type == MessageType.error:
    → 214│         raise DBusErrorResponse(msg)
      215│ 
      216│     return msg.body
      217│ 

The following error occurred when trying to handle this error:


  ItemNotFoundException

  Item does not exist!

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/util.py:49 in send_and_get_reply
       45│              try:
       46│                      return self._connection.send_and_get_reply(msg, unwrap=True)
       47│              except DBusErrorResponse as resp:
       48│                      if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
    →  49│                              raise ItemNotFoundException('Item does not exist!') from resp
       50│                      elif resp.name in (DBUS_SERVICE_UNKNOWN, DBUS_EXEC_FAILED,
       51│                                         DBUS_NO_REPLY):
       52│                              data = resp.data
       53│                              if isinstance(data, tuple):

The following error occurred when trying to handle this error:


  PromptDismissedException

  Prompt dismissed.

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/collection.py:145 in create_collection
      141│      if len(collection_path) > 1:
      142│              return Collection(connection, collection_path, session=session)
      143│      dismissed, result = exec_prompt(connection, prompt)
      144│      if dismissed:
    → 145│              raise PromptDismissedException('Prompt dismissed.')
      146│      signature, collection_path = result
      147│      assert signature == 'o'
      148│      return Collection(connection, collection_path, session=session)
      149│ 

The following error occurred when trying to handle this error:


  InitError

  Failed to create the collection: Prompt dismissed..

  at /opt/anaconda3/lib/python3.9/site-packages/keyring/backends/SecretService.py:63 in get_preferred_collection
       59│                 collection = secretstorage.Collection(bus, self.preferred_collection)
       60│             else:
       61│                 collection = secretstorage.get_default_collection(bus)
       62│         except exceptions.SecretStorageException as e:
    →  63│             raise InitError("Failed to create the collection: %s." % e)
       64│         if collection.is_locked():
       65│             collection.unlock()
       66│             if collection.is_locked():  # User dismissed the prompt
       67│                 raise KeyringLocked("Failed to unlock the collection!")

  • Installing types-cryptography (3.3.23): Failed

  DBusErrorResponse

  [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

  at /opt/anaconda3/lib/python3.9/site-packages/jeepney/wrappers.py:214 in unwrap_msg
      210│     This is to be used with replies to method_call messages, which may be
      211│     method_return or error.
      212│     """
      213│     if msg.header.message_type == MessageType.error:
    → 214│         raise DBusErrorResponse(msg)
      215│ 
      216│     return msg.body
      217│ 

The following error occurred when trying to handle this error:


  ItemNotFoundException

  Item does not exist!

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/util.py:49 in send_and_get_reply
       45│              try:
       46│                      return self._connection.send_and_get_reply(msg, unwrap=True)
       47│              except DBusErrorResponse as resp:
       48│                      if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
    →  49│                              raise ItemNotFoundException('Item does not exist!') from resp
       50│                      elif resp.name in (DBUS_SERVICE_UNKNOWN, DBUS_EXEC_FAILED,
       51│                                         DBUS_NO_REPLY):
       52│                              data = resp.data
       53│                              if isinstance(data, tuple):

The following error occurred when trying to handle this error:


  PromptDismissedException

  Prompt dismissed.

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/collection.py:145 in create_collection
      141│      if len(collection_path) > 1:
      142│              return Collection(connection, collection_path, session=session)
      143│      dismissed, result = exec_prompt(connection, prompt)
      144│      if dismissed:
    → 145│              raise PromptDismissedException('Prompt dismissed.')
      146│      signature, collection_path = result
       62│         except exceptions.SecretStorageException as e:
  • Installing pyasn1 (0.4.8): Failed

  DBusErrorResponse

  [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

  at /opt/anaconda3/lib/python3.9/site-packages/jeepney/wrappers.py:214 in unwrap_msg
      210│     This is to be used with replies to method_call messages, which may be
      211│     method_return or error.
      212│     """
      213│     if msg.header.message_type == MessageType.error:
    → 214│         raise DBusErrorResponse(msg)
      215│ 
      216│     return msg.body
      217│ 

The following error occurred when trying to handle this error:


  ItemNotFoundException

  Item does not exist!

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/util.py:49 in send_and_get_reply
       45│              try:
       46│                      return self._connection.send_and_get_reply(msg, unwrap=True)
       47│              except DBusErrorResponse as resp:
       48│                      if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
    →  49│                              raise ItemNotFoundException('Item does not exist!') from resp
       50│                      elif resp.name in (DBUS_SERVICE_UNKNOWN, DBUS_EXEC_FAILED,
       51│                                         DBUS_NO_REPLY):
       52│                              data = resp.data
       53│                              if isinstance(data, tuple):

The following error occurred when trying to handle this error:


  PromptDismissedException

  Prompt dismissed.

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/collection.py:145 in create_collection
      141│      if len(collection_path) > 1:
      142│              return Collection(connection, collection_path, session=session)
      143│      dismissed, result = exec_prompt(connection, prompt)
      144│      if dismissed:
    → 145│              raise PromptDismissedException('Prompt dismissed.')
      146│      signature, collection_path = result
      147│      assert signature == 'o'
      148│      return Collection(connection, collection_path, session=session)
      149│ 

The following error occurred when trying to handle this error:


  InitError

  Failed to create the collection: Prompt dismissed..

  at /opt/anaconda3/lib/python3.9/site-packages/keyring/backends/SecretService.py:63 in get_preferred_collection
       59│                 collection = secretstorage.Collection(bus, self.preferred_collection)
       60│             else:
       61│                 collection = secretstorage.get_default_collection(bus)
       62│         except exceptions.SecretStorageException as e:
    →  63│             raise InitError("Failed to create the collection: %s." % e)
       64│         if collection.is_locked():
       65│             collection.unlock()
       66│             if collection.is_locked():  # User dismissed the prompt
       67│                 raise KeyringLocked("Failed to unlock the collection!")

  • Installing types-cryptography (3.3.23): Failed

  DBusErrorResponse

  [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

  at /opt/anaconda3/lib/python3.9/site-packages/jeepney/wrappers.py:214 in unwrap_msg
      210│     This is to be used with replies to method_call messages, which may be
      211│     method_return or error.
      212│     """
      213│     if msg.header.message_type == MessageType.error:
    → 214│         raise DBusErrorResponse(msg)
      215│ 
      216│     return msg.body
      217│ 

The following error occurred when trying to handle this error:


  ItemNotFoundException

  Item does not exist!

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/util.py:49 in send_and_get_reply
       45│              try:
       46│                      return self._connection.send_and_get_reply(msg, unwrap=True)
       47│              except DBusErrorResponse as resp:
       48│                      if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
    →  49│                              raise ItemNotFoundException('Item does not exist!') from resp
       50│                      elif resp.name in (DBUS_SERVICE_UNKNOWN, DBUS_EXEC_FAILED,
       51│                                         DBUS_NO_REPLY):
       52│                              data = resp.data
       53│                              if isinstance(data, tuple):

The following error occurred when trying to handle this error:


  PromptDismissedException

  Prompt dismissed.

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/collection.py:145 in create_collection
      141│      if len(collection_path) > 1:
      142│              return Collection(connection, collection_path, session=session)
      143│      dismissed, result = exec_prompt(connection, prompt)
      144│      if dismissed:
    → 145│              raise PromptDismissedException('Prompt dismissed.')
      146│      signature, collection_path = result
    →  63│             raise InitError("Failed to create the collection: %s." % e)
  • Installing pyasn1 (0.4.8): Failed

  DBusErrorResponse

  [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

  at /opt/anaconda3/lib/python3.9/site-packages/jeepney/wrappers.py:214 in unwrap_msg
      210│     This is to be used with replies to method_call messages, which may be
      211│     method_return or error.
      212│     """
      213│     if msg.header.message_type == MessageType.error:
    → 214│         raise DBusErrorResponse(msg)
      215│ 
      216│     return msg.body
      217│ 

The following error occurred when trying to handle this error:


  ItemNotFoundException

  Item does not exist!

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/util.py:49 in send_and_get_reply
       45│              try:
       46│                      return self._connection.send_and_get_reply(msg, unwrap=True)
       47│              except DBusErrorResponse as resp:
       48│                      if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
    →  49│                              raise ItemNotFoundException('Item does not exist!') from resp
       50│                      elif resp.name in (DBUS_SERVICE_UNKNOWN, DBUS_EXEC_FAILED,
       51│                                         DBUS_NO_REPLY):
       52│                              data = resp.data
       53│                              if isinstance(data, tuple):

The following error occurred when trying to handle this error:


  PromptDismissedException

  Prompt dismissed.

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/collection.py:145 in create_collection
      141│      if len(collection_path) > 1:
      142│              return Collection(connection, collection_path, session=session)
      143│      dismissed, result = exec_prompt(connection, prompt)
      144│      if dismissed:
    → 145│              raise PromptDismissedException('Prompt dismissed.')
      146│      signature, collection_path = result
      147│      assert signature == 'o'
      148│      return Collection(connection, collection_path, session=session)
      149│ 

The following error occurred when trying to handle this error:


  InitError

  Failed to create the collection: Prompt dismissed..

  at /opt/anaconda3/lib/python3.9/site-packages/keyring/backends/SecretService.py:63 in get_preferred_collection
       59│                 collection = secretstorage.Collection(bus, self.preferred_collection)
       60│             else:
       61│                 collection = secretstorage.get_default_collection(bus)
       62│         except exceptions.SecretStorageException as e:
    →  63│             raise InitError("Failed to create the collection: %s." % e)
       64│         if collection.is_locked():
       65│             collection.unlock()
       66│             if collection.is_locked():  # User dismissed the prompt
       67│                 raise KeyringLocked("Failed to unlock the collection!")

  • Installing types-cryptography (3.3.23): Failed

  DBusErrorResponse

  [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

  at /opt/anaconda3/lib/python3.9/site-packages/jeepney/wrappers.py:214 in unwrap_msg
      210│     This is to be used with replies to method_call messages, which may be
      211│     method_return or error.
      212│     """
      213│     if msg.header.message_type == MessageType.error:
    → 214│         raise DBusErrorResponse(msg)
      215│ 
      216│     return msg.body
      217│ 

The following error occurred when trying to handle this error:


  ItemNotFoundException

  Item does not exist!

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/util.py:49 in send_and_get_reply
       45│              try:
       46│                      return self._connection.send_and_get_reply(msg, unwrap=True)
       47│              except DBusErrorResponse as resp:
       48│                      if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
    →  49│                              raise ItemNotFoundException('Item does not exist!') from resp
       50│                      elif resp.name in (DBUS_SERVICE_UNKNOWN, DBUS_EXEC_FAILED,
       51│                                         DBUS_NO_REPLY):
       52│                              data = resp.data
       53│                              if isinstance(data, tuple):

The following error occurred when trying to handle this error:


  PromptDismissedException

  Prompt dismissed.

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/collection.py:145 in create_collection
      141│      if len(collection_path) > 1:
      142│              return Collection(connection, collection_path, session=session)
      143│      dismissed, result = exec_prompt(connection, prompt)
      144│      if dismissed:
    → 145│              raise PromptDismissedException('Prompt dismissed.')
      146│      signature, collection_path = result
       64│         if collection.is_locked():
  • Installing pyasn1 (0.4.8): Failed

  DBusErrorResponse

  [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

  at /opt/anaconda3/lib/python3.9/site-packages/jeepney/wrappers.py:214 in unwrap_msg
      210│     This is to be used with replies to method_call messages, which may be
      211│     method_return or error.
      212│     """
      213│     if msg.header.message_type == MessageType.error:
    → 214│         raise DBusErrorResponse(msg)
      215│ 
      216│     return msg.body
      217│ 

The following error occurred when trying to handle this error:


  ItemNotFoundException

  Item does not exist!

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/util.py:49 in send_and_get_reply
       45│              try:
       46│                      return self._connection.send_and_get_reply(msg, unwrap=True)
       47│              except DBusErrorResponse as resp:
       48│                      if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
    →  49│                              raise ItemNotFoundException('Item does not exist!') from resp
       50│                      elif resp.name in (DBUS_SERVICE_UNKNOWN, DBUS_EXEC_FAILED,
       51│                                         DBUS_NO_REPLY):
       52│                              data = resp.data
       53│                              if isinstance(data, tuple):

The following error occurred when trying to handle this error:


  PromptDismissedException

  Prompt dismissed.

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/collection.py:145 in create_collection
      141│      if len(collection_path) > 1:
      142│              return Collection(connection, collection_path, session=session)
      143│      dismissed, result = exec_prompt(connection, prompt)
      144│      if dismissed:
    → 145│              raise PromptDismissedException('Prompt dismissed.')
      146│      signature, collection_path = result
      147│      assert signature == 'o'
      148│      return Collection(connection, collection_path, session=session)
      149│ 

The following error occurred when trying to handle this error:


  InitError

  Failed to create the collection: Prompt dismissed..

  at /opt/anaconda3/lib/python3.9/site-packages/keyring/backends/SecretService.py:63 in get_preferred_collection
       59│                 collection = secretstorage.Collection(bus, self.preferred_collection)
       60│             else:
       61│                 collection = secretstorage.get_default_collection(bus)
       62│         except exceptions.SecretStorageException as e:
    →  63│             raise InitError("Failed to create the collection: %s." % e)
       64│         if collection.is_locked():
       65│             collection.unlock()
       66│             if collection.is_locked():  # User dismissed the prompt
       67│                 raise KeyringLocked("Failed to unlock the collection!")

  • Installing types-cryptography (3.3.23): Failed

  DBusErrorResponse

  [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

  at /opt/anaconda3/lib/python3.9/site-packages/jeepney/wrappers.py:214 in unwrap_msg
      210│     This is to be used with replies to method_call messages, which may be
      211│     method_return or error.
      212│     """
      213│     if msg.header.message_type == MessageType.error:
    → 214│         raise DBusErrorResponse(msg)
      215│ 
      216│     return msg.body
      217│ 

The following error occurred when trying to handle this error:


  ItemNotFoundException

  Item does not exist!

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/util.py:49 in send_and_get_reply
       45│              try:
       46│                      return self._connection.send_and_get_reply(msg, unwrap=True)
       47│              except DBusErrorResponse as resp:
       48│                      if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
    →  49│                              raise ItemNotFoundException('Item does not exist!') from resp
       50│                      elif resp.name in (DBUS_SERVICE_UNKNOWN, DBUS_EXEC_FAILED,
       51│                                         DBUS_NO_REPLY):
       52│                              data = resp.data
       53│                              if isinstance(data, tuple):

The following error occurred when trying to handle this error:


  PromptDismissedException

  Prompt dismissed.

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/collection.py:145 in create_collection
      141│      if len(collection_path) > 1:
      142│              return Collection(connection, collection_path, session=session)
      143│      dismissed, result = exec_prompt(connection, prompt)
      144│      if dismissed:
    → 145│              raise PromptDismissedException('Prompt dismissed.')
      146│      signature, collection_path = result
       65│             collection.unlock()
  • Installing pyasn1 (0.4.8): Failed

  DBusErrorResponse

  [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

  at /opt/anaconda3/lib/python3.9/site-packages/jeepney/wrappers.py:214 in unwrap_msg
      210│     This is to be used with replies to method_call messages, which may be
      211│     method_return or error.
      212│     """
      213│     if msg.header.message_type == MessageType.error:
    → 214│         raise DBusErrorResponse(msg)
      215│ 
      216│     return msg.body
      217│ 

The following error occurred when trying to handle this error:


  ItemNotFoundException

  Item does not exist!

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/util.py:49 in send_and_get_reply
       45│              try:
       46│                      return self._connection.send_and_get_reply(msg, unwrap=True)
       47│              except DBusErrorResponse as resp:
       48│                      if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
    →  49│                              raise ItemNotFoundException('Item does not exist!') from resp
       50│                      elif resp.name in (DBUS_SERVICE_UNKNOWN, DBUS_EXEC_FAILED,
       51│                                         DBUS_NO_REPLY):
       52│                              data = resp.data
       53│                              if isinstance(data, tuple):

The following error occurred when trying to handle this error:


  PromptDismissedException

  Prompt dismissed.

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/collection.py:145 in create_collection
      141│      if len(collection_path) > 1:
      142│              return Collection(connection, collection_path, session=session)
      143│      dismissed, result = exec_prompt(connection, prompt)
      144│      if dismissed:
    → 145│              raise PromptDismissedException('Prompt dismissed.')
      146│      signature, collection_path = result
      147│      assert signature == 'o'
      148│      return Collection(connection, collection_path, session=session)
      149│ 

The following error occurred when trying to handle this error:


  InitError

  Failed to create the collection: Prompt dismissed..

  at /opt/anaconda3/lib/python3.9/site-packages/keyring/backends/SecretService.py:63 in get_preferred_collection
       59│                 collection = secretstorage.Collection(bus, self.preferred_collection)
       60│             else:
       61│                 collection = secretstorage.get_default_collection(bus)
       62│         except exceptions.SecretStorageException as e:
    →  63│             raise InitError("Failed to create the collection: %s." % e)
       64│         if collection.is_locked():
       65│             collection.unlock()
       66│             if collection.is_locked():  # User dismissed the prompt
       67│                 raise KeyringLocked("Failed to unlock the collection!")

  • Installing types-cryptography (3.3.23): Failed

  DBusErrorResponse

  [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

  at /opt/anaconda3/lib/python3.9/site-packages/jeepney/wrappers.py:214 in unwrap_msg
      210│     This is to be used with replies to method_call messages, which may be
      211│     method_return or error.
      212│     """
      213│     if msg.header.message_type == MessageType.error:
    → 214│         raise DBusErrorResponse(msg)
      215│ 
      216│     return msg.body
      217│ 

The following error occurred when trying to handle this error:


  ItemNotFoundException

  Item does not exist!

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/util.py:49 in send_and_get_reply
       45│              try:
       46│                      return self._connection.send_and_get_reply(msg, unwrap=True)
       47│              except DBusErrorResponse as resp:
       48│                      if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
    →  49│                              raise ItemNotFoundException('Item does not exist!') from resp
       50│                      elif resp.name in (DBUS_SERVICE_UNKNOWN, DBUS_EXEC_FAILED,
       51│                                         DBUS_NO_REPLY):
       52│                              data = resp.data
       53│                              if isinstance(data, tuple):

The following error occurred when trying to handle this error:


  PromptDismissedException

  Prompt dismissed.

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/collection.py:145 in create_collection
      141│      if len(collection_path) > 1:
      142│              return Collection(connection, collection_path, session=session)
      143│      dismissed, result = exec_prompt(connection, prompt)
      144│      if dismissed:
    → 145│              raise PromptDismissedException('Prompt dismissed.')
      146│      signature, collection_path = result
       66│             if collection.is_locked():  # User dismissed the prompt
  • Installing pyasn1 (0.4.8): Failed

  DBusErrorResponse

  [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

  at /opt/anaconda3/lib/python3.9/site-packages/jeepney/wrappers.py:214 in unwrap_msg
      210│     This is to be used with replies to method_call messages, which may be
      211│     method_return or error.
      212│     """
      213│     if msg.header.message_type == MessageType.error:
    → 214│         raise DBusErrorResponse(msg)
      215│ 
      216│     return msg.body
      217│ 

The following error occurred when trying to handle this error:


  ItemNotFoundException

  Item does not exist!

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/util.py:49 in send_and_get_reply
       45│              try:
       46│                      return self._connection.send_and_get_reply(msg, unwrap=True)
       47│              except DBusErrorResponse as resp:
       48│                      if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
    →  49│                              raise ItemNotFoundException('Item does not exist!') from resp
       50│                      elif resp.name in (DBUS_SERVICE_UNKNOWN, DBUS_EXEC_FAILED,
       51│                                         DBUS_NO_REPLY):
       52│                              data = resp.data
       53│                              if isinstance(data, tuple):

The following error occurred when trying to handle this error:


  PromptDismissedException

  Prompt dismissed.

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/collection.py:145 in create_collection
      141│      if len(collection_path) > 1:
      142│              return Collection(connection, collection_path, session=session)
      143│      dismissed, result = exec_prompt(connection, prompt)
      144│      if dismissed:
    → 145│              raise PromptDismissedException('Prompt dismissed.')
      146│      signature, collection_path = result
      147│      assert signature == 'o'
      148│      return Collection(connection, collection_path, session=session)
      149│ 

The following error occurred when trying to handle this error:


  InitError

  Failed to create the collection: Prompt dismissed..

  at /opt/anaconda3/lib/python3.9/site-packages/keyring/backends/SecretService.py:63 in get_preferred_collection
       59│                 collection = secretstorage.Collection(bus, self.preferred_collection)
       60│             else:
       61│                 collection = secretstorage.get_default_collection(bus)
       62│         except exceptions.SecretStorageException as e:
    →  63│             raise InitError("Failed to create the collection: %s." % e)
       64│         if collection.is_locked():
       65│             collection.unlock()
       66│             if collection.is_locked():  # User dismissed the prompt
       67│                 raise KeyringLocked("Failed to unlock the collection!")

  • Installing types-cryptography (3.3.23): Failed

  DBusErrorResponse

  [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

  at /opt/anaconda3/lib/python3.9/site-packages/jeepney/wrappers.py:214 in unwrap_msg
      210│     This is to be used with replies to method_call messages, which may be
      211│     method_return or error.
      212│     """
      213│     if msg.header.message_type == MessageType.error:
    → 214│         raise DBusErrorResponse(msg)
      215│ 
      216│     return msg.body
      217│ 

The following error occurred when trying to handle this error:


  ItemNotFoundException

  Item does not exist!

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/util.py:49 in send_and_get_reply
       45│              try:
       46│                      return self._connection.send_and_get_reply(msg, unwrap=True)
       47│              except DBusErrorResponse as resp:
       48│                      if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
    →  49│                              raise ItemNotFoundException('Item does not exist!') from resp
       50│                      elif resp.name in (DBUS_SERVICE_UNKNOWN, DBUS_EXEC_FAILED,
       51│                                         DBUS_NO_REPLY):
       52│                              data = resp.data
       53│                              if isinstance(data, tuple):

The following error occurred when trying to handle this error:


  PromptDismissedException

  Prompt dismissed.

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/collection.py:145 in create_collection
      141│      if len(collection_path) > 1:
      142│              return Collection(connection, collection_path, session=session)
      143│      dismissed, result = exec_prompt(connection, prompt)
      144│      if dismissed:
    → 145│              raise PromptDismissedException('Prompt dismissed.')
      146│      signature, collection_path = result
       67│                 raise KeyringLocked("Failed to unlock the collection!")
  • Installing pyasn1 (0.4.8): Failed

  DBusErrorResponse

  [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

  at /opt/anaconda3/lib/python3.9/site-packages/jeepney/wrappers.py:214 in unwrap_msg
      210│     This is to be used with replies to method_call messages, which may be
      211│     method_return or error.
      212│     """
      213│     if msg.header.message_type == MessageType.error:
    → 214│         raise DBusErrorResponse(msg)
      215│ 
      216│     return msg.body
      217│ 

The following error occurred when trying to handle this error:


  ItemNotFoundException

  Item does not exist!

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/util.py:49 in send_and_get_reply
       45│              try:
       46│                      return self._connection.send_and_get_reply(msg, unwrap=True)
       47│              except DBusErrorResponse as resp:
       48│                      if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
    →  49│                              raise ItemNotFoundException('Item does not exist!') from resp
       50│                      elif resp.name in (DBUS_SERVICE_UNKNOWN, DBUS_EXEC_FAILED,
       51│                                         DBUS_NO_REPLY):
       52│                              data = resp.data
       53│                              if isinstance(data, tuple):

The following error occurred when trying to handle this error:


  PromptDismissedException

  Prompt dismissed.

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/collection.py:145 in create_collection
      141│      if len(collection_path) > 1:
      142│              return Collection(connection, collection_path, session=session)
      143│      dismissed, result = exec_prompt(connection, prompt)
      144│      if dismissed:
    → 145│              raise PromptDismissedException('Prompt dismissed.')
      146│      signature, collection_path = result
      147│      assert signature == 'o'
      148│      return Collection(connection, collection_path, session=session)
      149│ 

The following error occurred when trying to handle this error:


  InitError

  Failed to create the collection: Prompt dismissed..

  at /opt/anaconda3/lib/python3.9/site-packages/keyring/backends/SecretService.py:63 in get_preferred_collection
       59│                 collection = secretstorage.Collection(bus, self.preferred_collection)
       60│             else:
       61│                 collection = secretstorage.get_default_collection(bus)
       62│         except exceptions.SecretStorageException as e:
    →  63│             raise InitError("Failed to create the collection: %s." % e)
       64│         if collection.is_locked():
       65│             collection.unlock()
       66│             if collection.is_locked():  # User dismissed the prompt
       67│                 raise KeyringLocked("Failed to unlock the collection!")

  • Installing types-cryptography (3.3.23): Failed

  DBusErrorResponse

  [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

  at /opt/anaconda3/lib/python3.9/site-packages/jeepney/wrappers.py:214 in unwrap_msg
      210│     This is to be used with replies to method_call messages, which may be
      211│     method_return or error.
      212│     """
      213│     if msg.header.message_type == MessageType.error:
    → 214│         raise DBusErrorResponse(msg)
      215│ 
      216│     return msg.body
      217│ 

The following error occurred when trying to handle this error:


  ItemNotFoundException

  Item does not exist!

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/util.py:49 in send_and_get_reply
       45│              try:
       46│                      return self._connection.send_and_get_reply(msg, unwrap=True)
       47│              except DBusErrorResponse as resp:
       48│                      if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
    →  49│                              raise ItemNotFoundException('Item does not exist!') from resp
       50│                      elif resp.name in (DBUS_SERVICE_UNKNOWN, DBUS_EXEC_FAILED,
       51│                                         DBUS_NO_REPLY):
       52│                              data = resp.data
       53│                              if isinstance(data, tuple):

The following error occurred when trying to handle this error:


  PromptDismissedException

  Prompt dismissed.

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/collection.py:145 in create_collection
      141│      if len(collection_path) > 1:
      142│              return Collection(connection, collection_path, session=session)
      143│      dismissed, result = exec_prompt(connection, prompt)
      144│      if dismissed:
    → 145│              raise PromptDismissedException('Prompt dismissed.')
      146│      signature, collection_path = result

  • Installing pyasn1 (0.4.8): Failed

  DBusErrorResponse

  [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

  at /opt/anaconda3/lib/python3.9/site-packages/jeepney/wrappers.py:214 in unwrap_msg
      210│     This is to be used with replies to method_call messages, which may be
      211│     method_return or error.
      212│     """
      213│     if msg.header.message_type == MessageType.error:
    → 214│         raise DBusErrorResponse(msg)
      215│ 
      216│     return msg.body
      217│ 

The following error occurred when trying to handle this error:


  ItemNotFoundException

  Item does not exist!

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/util.py:49 in send_and_get_reply
       45│              try:
       46│                      return self._connection.send_and_get_reply(msg, unwrap=True)
       47│              except DBusErrorResponse as resp:
       48│                      if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
    →  49│                              raise ItemNotFoundException('Item does not exist!') from resp
       50│                      elif resp.name in (DBUS_SERVICE_UNKNOWN, DBUS_EXEC_FAILED,
       51│                                         DBUS_NO_REPLY):
       52│                              data = resp.data
       53│                              if isinstance(data, tuple):

The following error occurred when trying to handle this error:


  PromptDismissedException

  Prompt dismissed.

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/collection.py:145 in create_collection
      141│      if len(collection_path) > 1:
      142│              return Collection(connection, collection_path, session=session)
      143│      dismissed, result = exec_prompt(connection, prompt)
      144│      if dismissed:
    → 145│              raise PromptDismissedException('Prompt dismissed.')
      146│      signature, collection_path = result
      147│      assert signature == 'o'
      148│      return Collection(connection, collection_path, session=session)
      149│ 

The following error occurred when trying to handle this error:


  InitError

  Failed to create the collection: Prompt dismissed..

  at /opt/anaconda3/lib/python3.9/site-packages/keyring/backends/SecretService.py:63 in get_preferred_collection
       59│                 collection = secretstorage.Collection(bus, self.preferred_collection)
       60│             else:
       61│                 collection = secretstorage.get_default_collection(bus)
       62│         except exceptions.SecretStorageException as e:
    →  63│             raise InitError("Failed to create the collection: %s." % e)
       64│         if collection.is_locked():
       65│             collection.unlock()
       66│             if collection.is_locked():  # User dismissed the prompt
       67│                 raise KeyringLocked("Failed to unlock the collection!")

  • Installing types-cryptography (3.3.23): Failed

  DBusErrorResponse

  [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

  at /opt/anaconda3/lib/python3.9/site-packages/jeepney/wrappers.py:214 in unwrap_msg
      210│     This is to be used with replies to method_call messages, which may be
      211│     method_return or error.
      212│     """
      213│     if msg.header.message_type == MessageType.error:
    → 214│         raise DBusErrorResponse(msg)
      215│ 
      216│     return msg.body
      217│ 

The following error occurred when trying to handle this error:


  ItemNotFoundException

  Item does not exist!

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/util.py:49 in send_and_get_reply
       45│              try:
       46│                      return self._connection.send_and_get_reply(msg, unwrap=True)
       47│              except DBusErrorResponse as resp:
       48│                      if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
    →  49│                              raise ItemNotFoundException('Item does not exist!') from resp
       50│                      elif resp.name in (DBUS_SERVICE_UNKNOWN, DBUS_EXEC_FAILED,
       51│                                         DBUS_NO_REPLY):
       52│                              data = resp.data
       53│                              if isinstance(data, tuple):

The following error occurred when trying to handle this error:


  PromptDismissedException

  Prompt dismissed.

  at /opt/anaconda3/lib/python3.9/site-packages/secretstorage/collection.py:145 in create_collection
      141│      if len(collection_path) > 1:
      142│              return Collection(connection, collection_path, session=session)
      143│      dismissed, result = exec_prompt(connection, prompt)
      144│      if dismissed:
    → 145│              raise PromptDismissedException('Prompt dismissed.')
      146│      signature, collection_path = result
      147│      assert signature == 'o'
      148│      return Collection(connection, collection_path, session=session)
      149│ 

The following error occurred when trying to handle this error:


  InitError

  Failed to create the collection: Prompt dismissed..

  at /opt/anaconda3/lib/python3.9/site-packages/keyring/backends/SecretService.py:63 in get_preferred_collection
       59│                 collection = secretstorage.Collection(bus, self.preferred_collection)
       60│             else:
       61│                 collection = secretstorage.get_default_collection(bus)
       62│         except exceptions.SecretStorageException as e:
    →  63│             raise InitError("Failed to create the collection: %s." % e)
       64│         if collection.is_locked():
       65│             collection.unlock()
       66│             if collection.is_locked():  # User dismissed the prompt
       67│                 raise KeyringLocked("Failed to unlock the collection!")

Flux Dependence Matrix

  • Resonator spectroscopies
  • Qubit spectroscopes
  • Validation test (confirm qubit freq doesn't change when changing other qubit's freqs)
  • PR
  • Tests
  • Documentation
  • Examples

grouping into folders

Hi,

I can run maybe 40 actions in one day on busy days. This is messy when I open my file system to look for a report "index.html" or just to look at the raw data. To avoid that, I started creating experiments folder like "binning", "multiplex", "debug" every few days.... However, I am starting to run out of naming ideas.
I would suggest that we group reports in folders every day to avoid that problem. qq-live would just have to unpack all the days (or even better create tabs).
I would add some utils functions for post-analysis/ debugging. I made an example to save data in PR #71 with https://github.com/qiboteam/qcvv/blob/16de9fa4e5164d43a431224edbcee9d0f8aa51ae/src/qcvv/calibrations/utils/data.py#L21

Actions and acyclique graphs

Hi,
QCVV is well designed to do no-code diagnostics. However, this design choice makes it hard to link routines together.

Example of dummy acyclic graph

This logic between routines is what I refer to as an acyclic graph. Let's take a simplified example to get an idea:

To characterize the chip, we would do:

  1. Resonator spectroscopy
  2. Qubit spectroscopy
  3. Rabi

From there, we have a 1 qubit gate. However, the next step is to refine the qubit's frequency with Ramsey.

  1. Ramsey

If for any reason, the qubit's frequency shifts. The detection of this frequency shift would be done by a check_state function which is a quick scan that verifies that the chip is in spec.
Once it is triggered, it would see which node is the acyclic graph needs repair with check_data. In the case of qubit's frequency, it will depend on Step 2 and 4, so it will run this quick scan on step 2 and 4. If Step 2 is ok, then Step 4 should not be (and you check), you then run calibrate all the later nodes.

This dependence between nodes is the reason why it is called acyclic.

Anyway, please read this paper which is much more detailed while being very short:

https://arxiv.org/pdf/1803.03226.pdf

Server to host it

I imagine that we would have a server running on Reem that would continuously send check_state to various tolerances' values. It will then update the report. This report could look like an acyclic graph, showing different colours depending on the state of the nodes. (see example in the paper).
One could click on the node to see the data and history.

It could also alert users if their program ran while the chip might have been out-of-spec. It could also alert experimentalists if the calibration is unsuccessful.

Architecture of QCVV for that

One could imagine the server/ algorithm creating ONE action runcard, that I will now call actioncard, that will include many pre-saved indivividual action runcards, that I will now call actions, based on the acyclic graph. This could be check_state, check_data or calibrate actions.

These actions will include fitting, saving and updating the runcard (the qibolab one). The runcard will contain a lot more information like thresholds, tolerances etc... It will also need to contain the data last registered to each node because check_data will overlay its points and check if they are within an acceptable range.

At this stage, I will then dissociate this runcard into the instrument runcard from the qcvv runcard. The former, in qibolab, will contain the instruments parameters and the native gates. It will be lite. The latter, in qcvv, will contain the data from the nodes, the thresholds for each node, the thresholds for the specs etc...

We need the code to generate that master actioncard, and a way to store the dependence between nodes.

Remarks

I am probably missing a few things.
Maybe it is best if we start from something existing to avoid missing out on features. Here are a few non-exhaustive examples that I found online very quickly:
https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9477114
https://github.com/climech/grit
https://airflow.apache.org/docs/apache-airflow/2.3.2/concepts/dags.html

creativity with names

Hi @scarrazza
I was discussing with @andrea-pasquale about not losing the data that I was generating along the way. He told me that I had to create a folder with a new name for every experiment (else overwrite it). However, I am running 100 things daily, and I will quickly run out of naming ideas.
This is why I was proposing one data folder per node of the acyclic graph (eg. Rabi), then we would save the raw data in a timestamp format.
We could then have a background process that would generate HTML plots on a website for the last data only for each node, but also a way to visualize historically run data by selecting it.

We could have the same locally by having functions to retrieve the latest data for a given node (or general) in a given time period for a given experiment name.

Quantify does this well with all the functions here.

I am not sure what are your motivations against this, but I am open to anything which helps experiments, and I think we share the same goal here!

updating plot layout for multiple qubits

Following #33 we should consider the template layout upgrade where information is grouped by actions and then qubits rather the opposite, e.g.:

Resonator punchout
  - Attenuation vs Frequency
    - Qubit 0
    - Qubit 1
  - MSR vs Frequency
    - Qubit 0
    - Qubit 1

Frequency Estimators

Introduction

I would like to propose and compare some methods for finding the peak given a set of uniformly sampled, non-repeating frequency-MSR pairs coming from resonator spectroscopy.

The data for this analysis comes from resonator spectroscopy with 80 frequency-MSR couples, which can be seen in the following plot.
freq-MSR

Model fit

We fit the data with a combination of a Lorentzian and a linear model, using the lmfit library. The peak of the Lorentzian model is considered the “true value” of the peak and it is used as benchmark for the following algorithms.

fit

Methods

1. Fit

The peak is the Lorentzian's center of the Lorentzian+linear model.

from lmfit.models import LorentzianModel,LinearModel

def Lorentzian_fit (X,Y):
    
    lor_mod = LorentzianModel(prefix = 'lor')

    pars = lor_mod.guess(Y, x=X)

    # linear model
    lin_mod = LinearModel(prefix = 'lin')

    pars.update(lin_mod.make_params(intercept=Y.max(), slope=0))

    # the used model is the sum of the two models 

    mod = lor_mod + lin_mod
    out = mod.fit(Y, pars, x=X)
    
    return out.best_values

def fit_model (msr,freq):
    parameters = Lorentzian_fit (np.array(freq),np.array(msr))
    return parameters['lorcenter']

2. Min

Given a set of frequency-MSR couples, the peak corresponds to the frequency with the lowest MSR value. It is implemented as benchmark.

def min_method (msr,freq):
    
    return freq[msr.index(min(msr))]

3. Quadratic method

Looking at the picture below, the main idea of this method and the following ones is to find the $m_k$ value, between the sampled data, that maximizes the function $X(m)$, and evaluate the position of the peak ( $m_{peak}$ ) with a formula depending on the nearest values ( $m_{k+1}$ and $m_{k-1}$).

peak

def quadratic_method(msr,freq):
   
    msr = [1-i for i in msr]
    k = msr.index(max(msr))
    if k<len(msr)-1:
        delta = (msr[k+1]-msr[k-1])/(2*msr[k]-msr[k-1]-msr[k+1])
        peak = freq[k]+delta
        
    else:
        peak = msr[k]
    
    return peak

4. Quinn's method

def quinn_method(msr,freq):
    # freq must be sorted
    msr=[1-i for i in msr]
    k = msr.index(max(msr))
   
    if k<len(msr)-2:
     
        alpha_1 = msr[k-1]/msr[k]
        alpha_2 = msr[k+1]/msr[k]
        
        if alpha_1 == 1:
            return (freq[k-1]+freq[k])/2
            
        if alpha_2 == 1:
            return (freq[k+1]+freq[k])/2
            
        delta_1 = alpha_1/(1-alpha_1)
       
        delta_2 = -1*alpha_2/(1-alpha_2)
    
        if delta_1>0 and delta_2>0:
            
            delta = delta_2
            
        else:
            
            delta = delta_1

        peak = freq[k]+delta
        
    else:
        peak = msr[k]
    
    return peak

5. Grandke's method

def grandke_method (msr,freq):
    # freq must be sorted
    msr=[1-i for i in msr]
    k = msr.index(max(msr))
    
    if k < len(msr)-1:
        
        msr_max_neighbor = max(msr[k-1],msr[k+1])
        alpha = abs(msr_max_neighbor / msr[k])
        delta = (2*alpha - 1) / (alpha + 1)

        peak = freq[k]-delta
        
    else: 
        peak = freq[k]
        
    return peak 

6. Macleod method

def macleod_method (msr,freq):
    
    # freq must be sorted
    msr = [1-i for i in msr]
    k = msr.index(max(msr))
    if k<len(msr)-1:
        delta = (msr[k+1]-msr[k-1])/(4*msr[k]-2*msr[k-1]-2*msr[k+1])
        peak = freq[k]+delta
        
    else:
        peak = msr[k]
    
    return peak

Comparison

For each algorithm, the peak is evaluated several times with different data, sampled from the initial dataset, containing a different number of elements. Performance is evaluated in terms of the mean of the peaks, the standard deviation and the MSE with the 'true value' of the peak.

The fit method is the worst one, and the other ones assure better results than the min method when the number of samples is low ( 20 samples circa)

comparison

Let me know if you like this approach or have any suggestions. @scarrazza

References

[1] E. Jacobsen and P. Kootsookos, "Fast, Accurate Frequency Estimators [DSP Tips & Tricks]," in IEEE Signal Processing Magazine, vol. 24, no. 3, pp. 123-125, May 2007, doi: 10.1109/MSP.2007.361611.

[2] https://www.researchgate.net/publication/253597963_On_Local_Interpolation_of_DFT_Outputs

[3] B. G. Quinn, "Estimating frequency by interpolation using Fourier coefficients," in IEEE Transactions on Signal Processing, vol. 42, no. 5, pp. 1264-1268, May 1994, doi: 10.1109/78.295186.

poetry install not working on fresh install

Hi @andrea-pasquale ,
Alvaro was trying to install qcvv in my computer and we stumbled upon the error below:

poetry install
Installing dependencies from lock file

Package operations: 160 installs, 10 updates, 0 removals

  • Installing traitlets (5.3.0): Failed

  DBusErrorResponse

  [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

  at ~/.conda/envs/qcvv38/lib/python3.8/site-packages/secretstorage/util.py:48 in send_and_get_reply
       44│     def send_and_get_reply(self, msg: Message) -> Any:
       45│         try:
       46│             resp_msg: Message = self._connection.send_and_get_reply(msg)
       47│             if resp_msg.header.message_type == MessageType.error:
    →  48│                 raise DBusErrorResponse(resp_msg)
       49│             return resp_msg.body
       50│         except DBusErrorResponse as resp:
       51│             if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
       52│                 raise ItemNotFoundException('Item does not exist!') from resp

The following error occurred when trying to handle this error:


  ItemNotFoundException

  Item does not exist!

  at ~/.conda/envs/qcvv38/lib/python3.8/site-packages/secretstorage/util.py:52 in send_and_get_reply
       48│                 raise DBusErrorResponse(resp_msg)
       49│             return resp_msg.body
       50│         except DBusErrorResponse as resp:
       51│             if resp.name in (DBUS_UNKNOWN_METHOD, DBUS_NO_SUCH_OBJECT):
    →  52│                 raise ItemNotFoundException('Item does not exist!') from resp
       53│             elif resp.name in (DBUS_SERVICE_UNKNOWN, DBUS_EXEC_FAILED,
       54│                                DBUS_NO_REPLY):
       55│                 data = resp.data
       56│                 if isinstance(data, tuple):

The following error occurred when trying to handle this error:


  PromptDismissedException

  Prompt dismissed.

  at ~/.conda/envs/qcvv38/lib/python3.8/site-packages/secretstorage/collection.py:159 in create_collection
      155│     if len(collection_path) > 1:
      156│         return Collection(connection, collection_path, session=session)
      157│     dismissed, result = exec_prompt(connection, prompt)
      158│     if dismissed:
    → 159│         raise PromptDismissedException('Prompt dismissed.')
      160│     signature, collection_path = result
      161│     assert signature == 'o'
      162│     return Collection(connection, collection_path, session=session)
      163│

The following error occurred when trying to handle this error:


  InitError

  Failed to create the collection: Prompt dismissed..

  at ~/.conda/envs/qcvv38/lib/python3.8/site-packages/keyring/backends/SecretService.py:63 in get_preferred_collection
       59│                 collection = secretstorage.Collection(bus, self.preferred_collection)
       60│             else:
       61│                 collection = secretstorage.get_default_collection(bus)
       62│         except exceptions.SecretStorageException as e:
    →  63│             raise InitError("Failed to create the collection: %s." % e)
       64│         if collection.is_locked():
       65│             collection.unlock()
       66│             if collection.is_locked():  # User dismissed the prompt
       67│                 raise KeyringLocked("Failed to unlock the collection!")

new installation issue on windows

Hi Andrea,
I've tried setting up a new environment and I get the following error:

  • Installing pastel (0.2.1)
  • Installing sphinx (4.5.0)
  • Installing uncertainties (3.1.7)

  OSError

  [WinError 1314] A required privilege is not held by the client: '../../../../../examples/3_tangle/README.md' -> 'C:\\Users\\Alvaro\\anaconda3\\envs\\qibo11\\src\\qibo\\doc\\source\\code-examples\\tutorials\\3_tangle\\README.md'

  at ~\anaconda3\envs\qibo11\lib\site-packages\dulwich\index.py:606 in symlink
       602│                 filename)
       603│
       604│     def symlink(src, dst, target_is_directory=False, *, dir_fd=None):
       605│         try:
    →  606│             return os.symlink(
       607│                 src, dst, target_is_directory=target_is_directory,
       608│                 dir_fd=dir_fd)
       609│         except PermissionError as e:
       610│             raise WindowsSymlinkPermissionError(

the code executed is:

conda create -n qibo11 python=3.9
conda activate qibo11
git clone https://github.com/qiboteam/qibo
cd qibo
pip install -e .
cd ..
pip install poetry
pip install pre-commit
git clone https://github.com/qiboteam/qibocal
cd qibocal
poetry install

Software average behavior

Software average plots the new data points that are obtained during the following scans. It would be greatly helpful to plot the average of new and old data points on the same graph.

Cheers and thanks.

Commit Hash / qrclsuter webpage filters

Hi,

As I was suggesting earlier this week, it would be nice to have the hash of a commit in the QCVV report (meta.yml ). As an experimentalist, we want to know which version of the script was working. It is never a matter of release, but more commits.

Some scans are very long, and you sometimes cannot re-run them to have them on the same report. It would be nice if we could merge reports in some way. However, don't spend too much time on it if it is not trivial.

Would it be possible to have the option of arranging the qq-upload webpage as per routines and not reports?

Pandas error when adding an iterable to data.Data object

When adding an array or list to an Data object an error is raised.

from qibocal.data import Data
import numpy as np

mydata = Data('testpandas', quantities=[1, 2])
test_data = ['hello', 'Andrea']
mydata.add({
    1:test_data[0], 2:test_data[1]
})

Works fine, but if the data to add would be an array for example:

from qibocal.data import Data
import numpy as np

mydata = Data('testpandas', quantities=[1, 2])
test_data = [np.array([2,5]), np.array([10,20])]
mydata.add({
    1:test_data[0], 2:test_data[1]
})

an error is raised

  File "/nfs/users/jadwiga.wilkens/qibocal/src/qibocal/data.py", line 273, in add
    self.df.loc[l, key] = value
  File "/home/users/jadwiga.wilkens/.conda/envs/testenv/lib/python3.9/site-packages/pandas/core/indexing.py", line 818, in __setitem__
    iloc._setitem_with_indexer(indexer, value, self.name)
  File "/home/users/jadwiga.wilkens/.conda/envs/testenv/lib/python3.9/site-packages/pandas/core/indexing.py", line 1795, in _setitem_with_indexer
    self._setitem_with_indexer_split_path(indexer, value, name)
  File "/home/users/jadwiga.wilkens/.conda/envs/testenv/lib/python3.9/site-packages/pandas/core/indexing.py", line 1850, in _setitem_with_indexer_split_path
    raise ValueError(
ValueError: Must have equal len keys and value when setting with an iterable

Data formating and optimization for characterization

Hi @andrea-pasquale,

First, thank you very much for working on this project as I think it will be very useful. I have been doing some very primitive things in my branch. The latest one is qibolab/maxime_ultimate_fix. You can find all my primitive work in examples/QW_5Q/characterization.

As you know, we were using Quantify before for data handeling, live plotting and measurement control (and instrument control). Your solution will probably replace all that.

We didn't really appreciate the measurement control as it can be limiting. If you are not familiar with what it is, it is just three lines of code implementing data saving/plotting and setting/retreiving data. One example where it is limiting is when adding feedback within the loop - eg of eg when tracking a peak moving.

The live plotting is very useful because you want to interupt a measurement if it is not going accordingly. I am doing it in a silly way currently, but it allows me to have live plotting while using the slurm queue. I have not preference in how this should be done, but I think that it is very important to have it. I was using plotly to do it because I like the library, and you can then make nice html reports.

Regarding data handling, there are two things: data format and data saving. Data saving is quite straightforward, we should have TUIDs and data folders with nice functions like get_latest_tuid or get_tuids_contraining("experiment_name"). For this Quantify does a good job in my opinion.

Regarding the data formatting, it is tricky because you want to constraint your data format to have efficient data handling (eg. for user not to use numpy.savetxt) but you also want to be flexible to allow the platform to return anything, and the data saving would accomodate. The way that I did it so far is that my characterization script would take care of organizing the data sent by the plaform, hence not platform agnostic.
If you want your characterization libary to be platform agnostic, you will have to constraint your platform in returning a standardised data format. It would be an array for all the bins for example.
However, can you really be platform agnostic? I don't think so. For example, some instruments have functions like sweeping a frequency directly in the hardware and return the corresponding array of voltages. I see in only one way to be kinda platform agnostic. We could have in the abstract platform a list of functionalities that platforms could have like binning, frequency sweep, feedback...., and the characterization script would check if the platform has them if their runcards, and it would choose the fastest option and adjust the way it sets/gets data accordingly. This means that the data formatting can be included in the abstract platform directly. This will be the only bridge between Qibolab and Qcvv. All the post-processing will higly rely on that (fitting, plotting, etc).

Regarding this formatting, we are now constraning the platform to return data. We could force them to use a certain type of data like Xarrays, panda frames etc... I have no preference but I beleive that it would be better for live plotting if they are forced to have units and labels. In Qcvv, we can then wrap around the data object with functions like plot/ peak search/ etc... Ideally, the experimentalist would import qcvv, load the latest run, and analyse it with qcvv tools.

I had tried creating a format for the data (in characterization/ abstract.py), but it was a failure. I like xarrays for the *html vizualization in jupyter notebook but I don't like their coords/ dims confusing system.

Regarding the architecture of Qccv, I have made a primitive one (clearly not to copy) where I was calling this class that had children classes when initialized were running the script and putting as attributes relevantes parameters (this last thing that I found useful). I would then know what would my characterization script return before even running it. I could then print certain values along the way and adjust the following scripts.

I am not the best writer so I might not have conveyed my message properly. Feel free to ask me anything! It would be fantastic if we could work closely together. I am looking forward to hearing your feedback.

Maxime

Non-systematic bug

I get (and Stavros too) get this bug non-systematically.

I am not sure why.

Traceback (most recent call last): File "/home/users/maxime.hantute/.conda/envs/qcvv/bin/qq", line 5, in <module> command() File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/click/core.py", line 1130, in __call__ return self.main(*args, **kwargs) File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/click/core.py", line 1055, in main rv = self.invoke(ctx) File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/click/core.py", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/click/core.py", line 760, in invoke return __callback(*args, **kwargs) File "/nfs/users/maxime.hantute/qcvv/src/qcvv/cli/_base.py", line 41, in command action_builder.execute() File "/nfs/users/maxime.hantute/qcvv/src/qcvv/cli/_base.py", line 195, in execute results = self.get_result(routine, args) File "/nfs/users/maxime.hantute/qcvv/src/qcvv/cli/_base.py", line 204, in get_result results = routine.final_action(results, self.output, self.format) File "/nfs/users/maxime.hantute/qcvv/src/qcvv/decorators.py", line 21, in save for data in results: File "/nfs/users/maxime.hantute/qcvv/src/qcvv/calibrations/resonator_spectroscopy.py", line 65, in resonator_spectroscopy lo_qrm_frequency = data.df.frequency[data.df.MSR.argmin()].magnitude File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/pandas/core/series.py", line 958, in __getitem__ return self._get_value(key) File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/pandas/core/series.py", line 1069, in _get_value loc = self.index.get_loc(label) File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/pandas/core/indexes/base.py", line 3623, in get_loc raise KeyError(key) from err KeyError: 23

Randomized benchmarking and gate-set shadow estimation

Roadmap from @ingoroth:

  • port existing qiborb functionality to qibocal to restore standard (single qubit Clifford) RB implementation #92
  • Make scheme executable on quantum hardware
  • Implement error bars
    • for standard RB
    • for filtered RB
  • implement ‘filtered' randomized benchmarking for non-self-inverting sequences (single qubit Clifford group)
  • implement (higher-order) simultaneous RB via filtering for all irreps (novel publishable scheme)
    • (graphical plot/report for (higher-order) simultaneous RB)
  • random Gate classes for other groups {1, X}, ... , Heisenberg-Weyl, Dihedral
  • non-uniform generator RB (random gate classes that draw from generators)
    • (spectral gap computing tools for determining minimal required length for non-uniform RB)
  • multi-qubit Clifford RB
  • universal random-circuit RB (XEB and so on)
  • cross-talk tomography (novel publishable scheme)
    • (single exponential decay fitting for hetero-skedastic data + error bars (e.g. weighted linear least-squares) + statistical tests)

Completing documentation

In order to provide an useful documentation please find below my wishlist (be free to include more features):

  • complete installation instructions. Include CI tests for linux, mac and windows for multiple version of python. So we can tell which configurations are supported.
  • complete qq-upload docs
  • include references to real actions names, cleanup examples, include links to examples. Add step by step instructions explaining how to run the code.
  • complete all calibrations by adding proper docstrings with explanation and references and including examples. If possible include some example of plots so people are aware of what expect. Someone new to the topic should understand what each action is doing.
  • add documentation about live plotting, with some examples
  • talk about the output data structure, show examples
  • update README

Plot displaying issues

Hi, several of us have experienced issues with live plotting. On reports with many figures or with a lot of data to plot, dash is not able to render the plots. I noticed this problem on low-bandwidth connections, but I expect the same problem on plots that require intense data processing.

I suspect what is happening is that dash is set to refresh the plots once every second and if qibocal takes longer than that to respond, a new call is made for a new plot that terminates the previous one.
Increasing the refresh rate in app.py line 26 from 1000 (milliseconds) to 2000 fixes the issue for the plot I was testing.

However, this solution of increasing the refresh time is not ideal, because it degrades the user experience in some simpler plots.
Ideally, dash should wait for qibocal to respond (for as much as it takes, save for a timeout). Once the response is received form qibolab, dash can then launch a new request.

readthedocs documentation

In order to generate documentation for readthedocs, qibolab must be public, I had just setup the building process but it crashes due to access to qibolab code repo.

On the other hand, I believe at some point qibolab could be a simple dependency.
@andrea-pasquale and @stavros11 any thoughts?

Pint only supporting numpy array

I get this error if I use an integer in Dataset.add(results

Traceback (most recent call last): File "/home/users/maxime.hantute/.conda/envs/qcvv/bin/qq", line 5, in <module> command() File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/click/core.py", line 1130, in _call_ return self.main(*args, **kwargs) File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/click/core.py", line 1055, in main rv = self.invoke(ctx) File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/click/core.py", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/click/core.py", line 760, in invoke return __callback(*args, **kwargs) File "/nfs/users/maxime.hantute/qcvv/src/qcvv/cli/_base.py", line 41, in command action_builder.execute() File "/nfs/users/maxime.hantute/qcvv/src/qcvv/cli/_base.py", line 205, in execute results = self.get_result(routine, args) File "/nfs/users/maxime.hantute/qcvv/src/qcvv/cli/_base.py", line 214, in get_result results = routine.final_action(results, self.output, self.format) File "/nfs/users/maxime.hantute/qcvv/src/qcvv/decorators.py", line 21, in save for data in results: File "/nfs/users/maxime.hantute/qcvv/src/qcvv/calibrations/qubit_spectroscopy.py", line 242, in qubit_attenuation data.add(results) File "/nfs/users/maxime.hantute/qcvv/src/qcvv/data.py", line 60, in add self.df.loc[l + l // len(list(data.keys())), name] = value * ureg(unit) File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/pint/quantity.py", line 1325, in _mul_ return self._mul_div(other, operator.mul) File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/pint/quantity.py", line 139, in wrapped return f(self, *args, **kwargs) File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/pint/quantity.py", line 119, in wrapped result = f(self, *args, **kwargs) File "/home/users/maxime.hantute/.conda/envs/qcvv/lib/python3.9/site-packages/pint/quantity.py", line 1273, in _mul_div raise OffsetUnitCalculusError(self._units, getattr(other, "units", "")) pint.errors.OffsetUnitCalculusError: Ambiguous operation with offset unit (decibel, ). See https://pint.readthedocs.io/en/latest/nonmult.html for guidance.

Using numpy array solves the problem

Fitting crashes due to the absence of fit results.

Sometimes qq crashes if a routine tries to use a fitting result when none is available yet.
If the fitting data file is empty, data_fit.df[param][0] returns key error.
Thanks!

    def update_platform_runcard(self, qubit, routine):

        try:
            data_fit = Data.load_data(
                self.folder, routine, self.format, f"fit_q{qubit}"
            )
        except:
            data_fit = Data()

        params = [i for i in list(data_fit.df.keys()) if "fit" not in i]
        settings = load_yaml(f"{self.folder}/platform.yml")

        for param in params:
            settings["characterization"]["single_qubit"][qubit][param] = int(
                data_fit.df[param][0]
            ) # FIXME: if none of the attempts of fitting succeed, the df is empty and it crashes here

        with open(f"{self.folder}/data/{routine}/platform.yml", "a+") as file:
            yaml.dump(
                settings, file, sort_keys=False, indent=4, default_flow_style=None
            )

Refactor plotting methods

Now in qibocal (add_routines branch), all the plotting methods are saved in scatters.py and heatmaps.py. These file are becoming quite long. It could be useful to re-organize them, as noted my @maxhant in #78.
Given that we almost have 1:1 correspondence between calibration routines and plotting methods:

  • frequency_msr_phase__fast_precision:
    • resonator_spectroscopy
    • qubit_spectroscopy
  • frequency_flux_msr_phase:
    - resonator_spectroscopy_flux
    - qubit_spectroscopy_flux
  • frequency_attenuation_msr_phase:
    • resonator_punchout
  • frequency_attenuation_msr_phase__cut
    • resonator_punchout
  • frequency_flux_msr_phase__matrix
    • resonator_spectroscopy_flux_matrix
  • time_msr
    • ramsey_frequency_detuned
    • ramsey
  • t1_time_msr_phase
    • t1
  • time_msr_phase
    • rabi_pulse_length
  • gain_msr_phase
    • rabi_pulse_gain
  • amplitude_msr_phase
    • rabi_pulse_amplitude
  • duration_gain_msr_phase
    • rabi_pulse_length_and_gain
  • duration_amplitude_msr_phase
    • rabi_pulse_length_and_amplitude
  • flips_msr_phase
    • flipping
  • exc_gnd
    • calibrate_qubit_states_binning
  • prob_gate
    • allXY
  • prob_gate_iteration
    • allXY_iteration
  • msr_beta
    • drag_pulse_tunning

A possible solution is to have a structure similar to what we have for the calibration routines.

plots/
* spectroscopy.py (with all the plots that referred to the resonator and the qubit spectroscopy)
* ramsey.py (with all the plots regarding ramsey)
* rabis.py (with all the plots regarding rabi oscillations)

and so on.
For some of the plotting methods we can also try to simplify the code where it is possible.
I don't think that this is a priority right now, since in add_routines all the plots are already working.
However, at some point we should see if we an simplify this structure.

Action builder for multiple qubits on quantum hardware UnboundLocalError

When running a job on the qpu5q the index.html page cannot be build because of that line in builders.py:

if self.platform is not None:
self.update_platform_runcard(qubit, routine.__name__)

The error looks like this

File "/nfs/users/jadwiga.wilkens/qibocal/src/qibocal/cli/builders.py", line 169, in _execute_single_action
    self.update_platform_runcard(qubit, routine.__name__)
UnboundLocalError: local variable 'qubit' referenced before assignment

Commenting it out works.

Request for being able to return multiple figures in a plot function

Hi all,
While working on the cryoscope I have been wanting to display several plots: on the left, the phase and the derivative of the phase as a function of the flux pulse amplitude and duration; on the right, the cross sections for a particular flux pulse amplitude.
In order to do so I tried adding more subplots to the current figure, but the results are squeezed vertically, since the space allocated in the web page is constant. I guess it is possible, but I wasn't able to change the vertical size and location of the colorbar so that they are adjacent to its plot.
image

@andrea-pasquale would it be possible to change the interface so that the plotting functions can return more than one figure? perhaps a list, perhaps a custom collection of figures in which we could return additional information about how we would like them displayed.
This is less important, but I am thinking that one may want to see additional plots that we may not want to show by default, for example the pulse sequence, the final position of the qubits in the blochsphere, polar plots of the evolution of the quadrature components of the received pulse, etc. The interface could provide either tabs or checkboxes to alternate between plots or to show/hide them.

Add instructions on how to automatize the connection for live-plotting

In order to automatically forward the port it should be sufficient to add the following line in .ssh/config under the appropriate host

LocalForward 127.0.0.1:8050 127.0.0.1:8050

since by default dash will run on http://127.0.0.1:8050/.
I selected the same port so that the user should be able to see the plots by directly clicking on the link that dash generates after launching the server.
However, if there is already a server running on the default port dash will open another port, and the user will need to re-edit the .ssh/config file. Isn't this a problem?
@scarrazza is this what you meant by document how to edit the .ssh/config file?

Btw, vscode has already this feature in the remote ssh extension.
When you launch qq-live it will automatically forward the port that dash is using.
Isn't this what we need in order to fully automatize the port forwarding or are we happy with the first solution?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.