This is the first official release of the **`qubit-discovery`** Python package, and associated scripts. Building on top of [SQcircuit](https://github.com/stanfordLINQS/SQcircuit), Qubit-Discovery provides a set of tools for easy optimization of superconducting circuits.
Main features
- Pre-implemented loss functions for qubit properties like anharmonicity or decoherence time, and straightforward methods to add new custom ones.
- Gradient-based algorithms for circuit optimization (BFGS and SGD), plus an interface to use other PyTorch optimizers.
- Handy utility features such as random circuit sampling and functions to automatically choose circuit truncation numbers.
- A set of command-line scripts to run repeatable parallelized optimization.
Getting started
We've provided a set of [tutorial notebooks ](https://github.com/stanfordLINQS/Qubit-Discovery/tree/main/tutorials) to help get you acquainted with the main features. Take a look at the [transmon optimization notebook](https://github.com/stanfordLINQS/Qubit-Discovery/blob/main/tutorials/QD_transmon-optim.ipynb) first to see what **`qubit-discovery`** can accomplish, and then the other ones for the finer details.
Future outlook
We hope that this library can be useful to a wide range of people interested in designing superconducting circuits. Although we've currently applied it only to qubit design, the possibility to optimize arbitrary loss functions goes well beyond that.
We're excited to get feedback, either on issues with the current code or new features that could be useful in your work! Please feel free to to submit these [on GitHub](https://github.com/stanfordLINQS/Qubit-Discovery/issues), or get in contact with us directly.