Made by me for Hack At Home. Devpost here!
StoreQ can upload and retrieve information from a quantum computer using quantum circuits. This entire process is done by simulation of qbits and quantum processes on my personal computer(which is obviously not quantum).
StoreQ can successfully demonstrate encoding normal (classical) data into a quantum simulation, and is also capable of extracting the data's information from the probability distribution of the qBits. It thus demonstrates a one-of-a-kind quantum data storage and backup system.
I think this project has huge extensability beyond what I was able to do in a day. Here's a few:
- Because the storage media is via quantum circuits, we can use entanglement and superposition to represent all the data we accumulate into a single qbit superposition. [sorry for the jargon :(!] What it means is that we can represent a big chunk of information in a single quantum bit, and get the information we want from it by "measuring" it in certain ways.
- Because of the API I created to link the backend to the frontend, it can actually be triggered from your google home! Say: Ok Google, ask StoreQ to launch demonstration
- Because it's not all theory and jargon, with nothing to show. I'm proud to have implemented a working concept!
Art! I initially was thinking of a way to link quantum computing principles with art. Art led to images, and quantum computing led to quantum circuitry. And bam, the idea was born.
The frontend is linked with the core backend via a python RESTful API using flask.
- The
Upload
button uploads the image (in greyscale, and resized to not overload my computer) to the quantum computer simulation. - The
Download
button downloads the image by reconstructing the data from the probability distributions stored in the qbits.
This is how the backend core works. I'll go in steps:
- Storage:
- The data used here is an image. Each row's values are firstly one-hot encoded using a LabelBinarizer(a concept borrowed from machine learning), so that the vector amplitude sum is 1. This is a quantum constraint we have to follow.
- Each binarized vector is stored in a qbit array via initialization of the values, which is the basis of out quantum circuit.
- Recovery
- the array of quantum circuits and the
LabelBinarizer
objects are used to recover each vector. - The vectors are converted to numbers.
- The numbers form the matrix, which Is the resultant image.
This was really, really, really fun. I learnt so much about how quantum computers work and was able to actually apply it to an idea that interested me. What gives me even more excitement is the possibilities this holds, that I haven't implemented yet due to time constraints. I learnt about the current quantum computing ecosystem and what tools researchers in the field use. I also got to whip up a quick web frontend for it, which I was also proud to learn and implement. Also, shoutout to my roommate for explaining to me fundamentals of quantum computing when my brain hurt from trying to understand too much at once. Like, a lot. He's got a bright future.
- Fixing weird LabelBinarizer with a custom class
- Quantum Circuits!
- Quantum physics and art
- Representing qbit states
- css font generator