Quantum in the Cloud full documentation

Quantum in the Cloud provides a free, open web interface to a small-scale quantum photonic chip. Devices similar to this one will one day form the building blocks for full-scale photonic quantum computers. We are providing access to the device in order to learn how people from different fields might use a quantum computer. We hope that by doing so we can demystify the basics of quantum mechanics and make the fundamental phenomena of superposition and entanglement accessible to universities, schools, hackers, kids, and interested people around the world.

Tutorial

A tutorial on the basic theory behind the device, including example experiments, is here.

Taking data from the lab

The web interface can be operated in two modes: simulation and experiment. In simulation mode, the behaviour of the chip is simulated on our servers, this is useful to quickly learn how the device works and plan experiments. In experiment mode, Quantum in the Cloud gives direct access to a real physical chip in our lab, with real entanglement, real superposition, and real lasers. In order to use Quantum in the Cloud in experimental mode, you must first request an access token from us.

You must provide your name, email address, organization and a brief outline of what you want to do with the chip. We will assess your request and send a token via email.

Licensing

You are free to use simulated or experimental data under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. If you are doing something interesting with either, we want to know about it!

API

The web interface to Quantum in the Cloud provides a graphical user interface, which draws the chip layout and graphs data. This is useful for simple experiments and learning exercises, but for more complex algorithms it is more convenient to program the chip using a script. We provide a JSON web API which gives full access to Quantum in the Cloud. You can use any modern programming language (Mathematica, Python, Javascript, MATLAB ...) to talk to our servers through this API and get data from Quantum in the Cloud.

simulate

Simulate the behaviour of up to four photons in particular device, returning probabilities of all possible events.

Arguments:

Returns:

A JSON object representing the waveguide structure of a particular chip. Includes cartesian coordinates of each coupler and phaseshifter, mode count, and device name.

Example usage:

Below is an example API call, simulating a two-photon experiment with the CNOT-MZ chip, in Mathematica. The probabilities=Import[" part is Mathematica code which constructs the variable probabilities. Following this is the Qloud URL. "JSON" tells Mathematica that the data is returned in JSON form.

probabilities=Import["
http://cnotmz.appspot.com/simulate?
chipName=cnot_mz&
quantumClassical=quantum&
noiseMode=false&
sortMode=false&
inputs=0,1&
phases=0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
", "JSON"];

Returns:

{"probabilities": [["0,0", 0.0], ["0,1", 0.11111111108888899], ["0,2", 0.0], ["0,3", 0.11111111110555566], ["0,4", 0.11111111110555566], ["0,5", 0.0], ["1,1", 0.0], ["1,2", 0.22222222221111146], ["1,3", 0.0], ["1,4", 0.0], ["1,5", 0.0], ["2,2", 0.0], ["2,3", 0.22222222224444474], ["2,4", 0.22222222224444474], ["2,5", 0.0], ["3,3", 0.0], ["3,4", 0.0], ["3,5", 0.0], ["4,4", 0.0], ["4,5", 0.0], ["5,5", 0.0]], "max": 0.22222222224444474, "sum": 1.0000000000000013}

This is a JSON object containing a list of probabilities of finding the two input photons at particular output modes. We also throw in the maximum and sum over these probabilities.

experiment

This is your interface to a real quantum chip. Writes phases to the CNOT-MZ device in the lab at Bristol, and returns detected photon coincidence counts.

Arguments:

Returns:

A JSON object listing accidental-corrected two-photon count rates, measured in 1 second, for a subset of all possible two-photon events. Using this function requires that you have a valid access token.

Example usage:

Below is an example API call, getting counts from the chip with all phases set to zero. Here we are using Mathematica to make the call.

counts=Import["
http://cnotmz.appspot.com/experiment?
phases=0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0&accessToken=XXXXXXXXXXXXXXX
", "JSON"];

Returns:

{"counts": {"2,3": 0, "1,3": 80, "1,4": 0, "2,4": 28}, "max": 80, "sum": 108}
chip

Get a JSON object modelling the structure of a particular chip, including beamsplitter/phaseshifter layout, splitting ratios, mode count, name etc.

Arguments:

Returns:

A JSON object modelling the structure of a particular chip.

Example usage:

Below is an example API call in Mathematica

chip=Import["http://cnotmz.appspot.com/chip?chipName=cnot", "JSON"];

Returns:

{"couplers": [{"y": 3, "x": 1, "ratio": 0.5}, {"y": 0, "x": 2, "ratio": 0.3333333333}, {"y": 2, "x": 2, "ratio": 0.3333333333}, {"y": 4, "x": 2, "ratio": 0.3333333333}, {"y": 3, "x": 3, "ratio": 0.5}], "width": 5, "shifters": [], "name": "cnot", "modes": 6}