Boulder-Cryogenic-Quantum-Testbed / scresonators

Data analysis code for cryogenic resonator measurement
MIT License
28 stars 24 forks source link

Assess fitting and data from a variety of groups #9

Open joshmutus opened 5 years ago

joshmutus commented 5 years ago

Moving Matteo's suggestion here so we can discuss how to best implement it.

  1. Each group shares one dataset of one of their high-quality factor resonators.
  2. Each group independently fits the common dataset using their own fitting code.
  3. We plot all the resulting internal quality factors Q_i as a function of the fitting code (i.e., group).
joshmutus commented 5 years ago

I think this is a great idea to get started. I think we can break this down in a few ways,

  1. Start adding fitting code
  2. Start adding datasets to a quilt project (I'll start an account)
  3. Also add models so we can generate test datasets in different circuit regimes and see where different analysis code works/fails.
taohki commented 5 years ago

Matteo and Josh I think this is a nice idea. We would be happy to help contribute and fit. Reminder for those who want access our fitting routine https://github.com/BBN-Q/Qlab.jl

cary-earnest commented 5 years ago

Hey Josh, so the BBN fits are in julia, and ours are in matlab. Do you want everything in Python?

joshmutus commented 5 years ago

For languages I'm very reluctant to include Matlab as it is proprietary and requires users have a license to run. As for julia, I don't think there's a specific reason to not use it, it's open source and has a lot of the benefits of Python, I'm just not familiar with the tooling around it.

In terms of having the simplest repository configuration for setting up testing and deployment including julia means having more things for maintaining tools and for users to have installed on their local machines. I'm not against that but I would like to better understand what it gets us over Python (with numpy and scipy). @taohki what guided BBN to use julia? Would you advise continuing development in that?

taohki commented 5 years ago

Historically, we have had some serious developers working in the lab on our control software and this led to using the bleeding edge of languages emphasizing speed and elegance. Personally from my limited experience with Julia I would say not to use it for code that will not be maintained by someone as it can be unstable based on rapid evolution of the language. That being said if most of the Julia code can run with 1.1.0 it probably will be stable for a while. Also, these are pretty simple fitting routines and easily updated if the function are deprecated.

MartinWeides commented 5 years ago

Hi all,

here is a link to 'Qkit - a quantum measurement suite in python' https://github.com/qkitgroup/qkit. Recently there was a big push to i) easy installation, and ii) python 3, but this might not be fully included yet. The fitting routines for our paper 'Efficient and robust analysis of complex scattering data under noise in microwave resonators', https://arxiv.org/abs/1410.3365, are included.

joshmutus commented 5 years ago

@taohki That all makes sense. I think from the perspective of making the repo easier to maintain, it would be best to use python exclusively here. It'll be a bit of an overhead to translate from Julia, but that will be easier than supporting another language. @MartinWeides Thanks for linking to your repo. I could find the fitting code, but do you also have to circuit model code there as well? It would be nice to start compiling the different models as well to see how they behave.

cary-earnest commented 5 years ago

Hey guys,

So here's what Matteo was thinking: simplified data set (eg like the one attached), where we all fit and then add our Qi to some kind of comparison plot, eg the example here. We can determine a nicer plot format later... @joshmutus could you fit our data with your routine and provide a data point for this kind of plot?

image

DQMLAB_resonatorData.zip

cary-earnest commented 5 years ago

The data attached above is a csv with the first column frequency, next column normalized amplitude, next column angle.

joshmutus commented 5 years ago

@cary-earnest Sure, we can get started on this. Do you have any meta-data to go along with this csv? What were the VNA parameters? What's the power level? I'm going to make a folder for these trial datasets and make a pull request.

MartinWeides commented 5 years ago

@joshmutus With circuit-code you mean the Fano-correction from https://arxiv.org/abs/1807.09567, correct? This code is not included in QKit yet, and we prefer to wait till our resubmission in a couple of days as this carries some improvement.

joshmutus commented 5 years ago

@MartinWeides I mean for the Probst RSI paper. The code for generating the resonator dips with variable SNR.

cary-earnest commented 5 years ago

@joshmutus Yeah, a standard format and related standard metadata would be useful. The power is -86dBm at the chip, IFBW of 20 and 3 traces are averaged here. I thought that a quick example would motivate and also maybe tell us more about what info we want to collect. Also, sharing data and having people fit themselves and report back is a faster zeroth order collaborative test than rewriting everyone's fits in Python.

MartinWeides commented 5 years ago

Here is the link to another repository of resonator fits: https://github.com/sebastianprobst/resonator_tools. It contains code for gauss-distributed noise in resonator data, and GUI for data calibration.

MartinWeides commented 5 years ago

to follow up on my previous comments, both repositories share the same code. They are easy to use, and for a lot of cases gives good and relatively robust results. The current version of QKIT, https://github.com/qkitgroup/qkit, might be a bit newer.

Here is the link to another repository of resonator fits: https://github.com/sebastianprobst/resonator_tools. It contains code for gauss-distributed noise in resonator data, and GUI for data calibration.

joshmutus commented 5 years ago

Thanks for posting!

MartinWeides commented 5 years ago

quick update on the Fano correction paper: 1) it is published (Resonance inversion in a superconducting cavity coupled to artificial atoms and a microwave background, Juha Leppäkangas, Jan David Brehm, Ping Yang, Lingzhen Guo, Michael Marthaler, Alexey V. Ustinov, Martin Weides, Phys. Rev. A 99, 063804 (2019)) and 2) we are testing the python code on notch-type resonators now.